add default theme
This commit is contained in:
1 parent
3e178f6633
commit
c228a70468
331 files changed
+660
-29
No files matched your search
@@ -5,14 +5,17 @@ namespace kernel;
|
||||
use kernel\Controller;
|
||||
use kernel\helpers\Debug;
|
||||
use kernel\services\AdminThemeService;
|
||||
use kernel\services\ThemeService;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
protected AdminThemeService $adminThemeService;
|
||||
protected ThemeService $themeService;
|
||||
|
||||
protected function init(): void
|
||||
{
|
||||
$this->adminThemeService = new AdminThemeService();
|
||||
$this->themeService = new ThemeService();
|
||||
$active_theme = $this->adminThemeService->getActiveAdminThemeInfo();
|
||||
$this->cgView->layoutPath = getConst($active_theme['layout_path']);
|
||||
$this->cgView->layout = "/" . $active_theme['layout'];
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
"slug": "default",
|
||||
"description": "Default admin theme",
|
||||
"preview": "preview.png",
|
||||
"resource": "/resources/default",
|
||||
"resource_path": "{RESOURCES}/default",
|
||||
"resource": "/resources/admin_themes/default",
|
||||
"resource_path": "{RESOURCES}/admin_themes/default",
|
||||
"layout": "main.php",
|
||||
"layout_path": "{KERNEL_ADMIN_THEMES}/default/layout"
|
||||
}
|
||||
@@ -5,8 +5,8 @@
|
||||
"slug": "simple",
|
||||
"description": "Simple admin theme",
|
||||
"preview": "preview.png",
|
||||
"resource": "/resources/simple",
|
||||
"resource_path": "{RESOURCES}/simple",
|
||||
"resource": "/resources/admin_themes/simple",
|
||||
"resource_path": "{RESOURCES}/admin_themes/simple",
|
||||
"layout": "main.php",
|
||||
"layout_path": "{KERNEL_ADMIN_THEMES}/simple/layout"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\modules\themes;
|
||||
|
||||
use kernel\Module;
|
||||
use kernel\modules\menu\service\MenuService;
|
||||
|
||||
class ThemesModule extends Module
|
||||
{
|
||||
public MenuService $menuService;
|
||||
public function __construct()
|
||||
{
|
||||
$this->menuService = new MenuService();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function init(): void
|
||||
{
|
||||
$this->menuService->createItem([
|
||||
"label" => "Темы сайта",
|
||||
"url" => "/admin/settings/themes",
|
||||
"slug" => "themes",
|
||||
"parent_slug" => "settings"
|
||||
]);
|
||||
}
|
||||
|
||||
public function deactivate(): void
|
||||
{
|
||||
$this->menuService->removeItemBySlug("themes");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\modules\themes\controllers;
|
||||
|
||||
use DirectoryIterator;
|
||||
use JetBrains\PhpStorm\NoReturn;
|
||||
use kernel\AdminController;
|
||||
use kernel\helpers\Debug;
|
||||
use kernel\models\Option;
|
||||
use kernel\Request;
|
||||
|
||||
class ThemeController extends AdminController
|
||||
{
|
||||
protected function init(): void
|
||||
{
|
||||
parent::init();
|
||||
$this->cgView->viewPath = KERNEL_MODULES_DIR . "/themes/views/";
|
||||
}
|
||||
|
||||
public function actionIndex(): void
|
||||
{
|
||||
$themePaths = Option::where("key", "theme_paths")->first();
|
||||
|
||||
$dirs = [];
|
||||
if ($themePaths){
|
||||
$path = json_decode($themePaths->value);
|
||||
foreach ($path->paths as $p){
|
||||
$dirs[] = getConst($p);
|
||||
}
|
||||
}
|
||||
|
||||
$infoToTable = [];
|
||||
$meta = [];
|
||||
$meta['columns'] = [
|
||||
"preview" => "Превью",
|
||||
"name" => "Название",
|
||||
"author" => "Автор",
|
||||
"version" => "Версия",
|
||||
"description" => "Описание"
|
||||
];
|
||||
$meta['params'] = ["class" => "table table-bordered"];
|
||||
$meta['perPage'] = 10;
|
||||
$meta['baseUrl'] = "/admin/settings/themes";
|
||||
$meta['currentPage'] = 1;
|
||||
|
||||
$infoToTable['meta'] = $meta;
|
||||
|
||||
$themesInfo = [];
|
||||
foreach ($dirs as $dir){
|
||||
$i = 1;
|
||||
foreach (new DirectoryIterator($dir) as $fileInfo) {
|
||||
$info = [];
|
||||
if($fileInfo->isDot()) continue;
|
||||
$info['id'] = $i;
|
||||
$themesInfo[] = array_merge($info, $this->themeService->getThemeInfo($fileInfo->getPathname()));
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$infoToTable['meta']['total'] = count($themesInfo);
|
||||
$infoToTable['data'] = $themesInfo;
|
||||
|
||||
$this->cgView->render("index.php", ['json' => json_encode($infoToTable, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)]);
|
||||
}
|
||||
|
||||
#[NoReturn] public function actionActivate(): void
|
||||
{
|
||||
$request = new Request();
|
||||
$this->themeService->setActiveTheme($request->get("p"));
|
||||
|
||||
$this->cgView->render("view.php", ['data' => $this->themeService->getThemeInfo($request->get("p"))]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "Themes",
|
||||
"version": "0.1",
|
||||
"author": "ITGuild",
|
||||
"slug": "themes",
|
||||
"description": "Themes module",
|
||||
"module_class": "kernel\\modules\\themes\\ThemesModule",
|
||||
"module_class_file": "{KERNEL_MODULES}/themes/ThemesModule.php",
|
||||
"routs": "routs/themes.php"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
use kernel\App;
|
||||
use kernel\modules\admin_themes\controllers\AdminThemeController;
|
||||
use Phroute\Phroute\RouteCollector;
|
||||
|
||||
App::$collector->group(["prefix" => "admin"], function (RouteCollector $router){
|
||||
App::$collector->group(["before" => "auth"], function (RouteCollector $router) {
|
||||
App::$collector->group(["prefix" => "settings"], function (RouteCollector $router) {
|
||||
App::$collector->group(["prefix" => "themes"], function (RouteCollector $router) {
|
||||
App::$collector->get('/', [\kernel\modules\themes\controllers\ThemeController::class, 'actionIndex']);
|
||||
App::$collector->get('/activate', [\kernel\modules\themes\controllers\ThemeController::class, 'actionActivate']);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @var $json string
|
||||
*/
|
||||
|
||||
|
||||
$table = new \Itguild\Tables\ListJsonTable($json);
|
||||
$table->columns([
|
||||
'preview' => function ($data) {
|
||||
return "<img src='$data' width='200px'>";
|
||||
}
|
||||
]);
|
||||
$table->addAction(function ($row, $url){
|
||||
$active_admin_theme = \kernel\modules\option\service\OptionService::getItem('active_theme');
|
||||
|
||||
if ($row['path'] === $active_admin_theme){
|
||||
return "Активна";
|
||||
} else {
|
||||
$url = "$url/activate/?p=" . $row['path'];
|
||||
|
||||
return \kernel\widgets\IconBtn\IconBtnActivateWidget::create(['url' => $url])->run();
|
||||
}
|
||||
});
|
||||
$table->create();
|
||||
$table->render();
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @var array $data
|
||||
*/
|
||||
|
||||
$table_info = [
|
||||
"meta" => [
|
||||
"rows" => ["preview" => "Превью", "name" => "Название", "version" => "Версия", "description" => "Описание"],
|
||||
"params" => ["class" => "table table-bordered"],
|
||||
"baseUrl" => "/admin/settings/themes",
|
||||
],
|
||||
"data" => $data
|
||||
];
|
||||
|
||||
$table = new \Itguild\Tables\ViewJsonTable(json_encode($table_info, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
||||
$table->rows([
|
||||
'preview' => function ($data) {
|
||||
return "<img src='$data' width='500px'>";
|
||||
}
|
||||
]);
|
||||
$table->beforePrint(function () {
|
||||
return \kernel\widgets\IconBtn\IconBtnListWidget::create(['url' => '/admin/settings/themes'])->run();
|
||||
});
|
||||
$table->create();
|
||||
$table->render();
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace kernel\services;
|
||||
|
||||
use kernel\helpers\Manifest;
|
||||
use kernel\models\Option;
|
||||
|
||||
class ThemeService
|
||||
@@ -12,10 +13,10 @@ class ThemeService
|
||||
public function __construct()
|
||||
{
|
||||
$this->option = new Option();
|
||||
$this->findActiveAdminTheme();
|
||||
$this->findActiveTheme();
|
||||
}
|
||||
|
||||
public function findActiveAdminTheme(): void
|
||||
public function findActiveTheme(): void
|
||||
{
|
||||
$model = $this->option::where("key", "active_theme")->first();
|
||||
$this->active_theme = $model->value;
|
||||
@@ -38,4 +39,26 @@ class ThemeService
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getThemeInfo(string $theme): false|array|string
|
||||
{
|
||||
$info = [];
|
||||
$theme = getConst($theme);
|
||||
$info['path'] = $theme;
|
||||
if (file_exists($theme . "/manifest.json")) {
|
||||
$manifest = file_get_contents($theme . "/manifest.json");
|
||||
$manifest = Manifest::getWithVars($manifest);
|
||||
$manifest['preview'] = $manifest['resource'] . "/" . $manifest['preview'];
|
||||
$info = array_merge($info, $manifest);
|
||||
}
|
||||
|
||||
return $info;
|
||||
}
|
||||
|
||||
public function setActiveTheme(string $theme): void
|
||||
{
|
||||
$activeTheme = Option::where("key", "active_theme")->first();
|
||||
$activeTheme->value = getConst($theme);
|
||||
$activeTheme->save();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\themes\default\assets;
|
||||
|
||||
use kernel\Assets;
|
||||
|
||||
class DefaultThemesAssets extends Assets
|
||||
{
|
||||
protected function createCSS(): void
|
||||
{
|
||||
$this->registerCSS(slug: "main", resource: "some");
|
||||
}
|
||||
|
||||
protected function createJS(): void
|
||||
{
|
||||
$this->registerJS(slug: "webpack", resource: "some");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\themes\default\controllers;
|
||||
|
||||
use kernel\Controller;
|
||||
|
||||
class MainController extends Controller
|
||||
{
|
||||
|
||||
protected function init(): void
|
||||
{
|
||||
parent::init();
|
||||
$this->cgView->viewPath = APP_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");
|
||||
}
|
||||
|
||||
public function actionIndex(): void
|
||||
{
|
||||
$this->cgView->render("index.php");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Default",
|
||||
"slug": "default",
|
||||
"version": "0.1",
|
||||
"author": "ItGuild",
|
||||
"preview": "preview.png",
|
||||
"description": "Default theme",
|
||||
"resource": "/resources/themes/default",
|
||||
"resource_path": "{RESOURCES}/themes/default",
|
||||
"routs": "routs/default.php"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
use kernel\App;
|
||||
|
||||
|
||||
App::$collector->get('/', [\kernel\themes\default\controllers\MainController::class, 'actionIndex']);
|
||||
//App::$collector->get('/page/{page_number}', [\app\modules\tag\controllers\TagController::class, 'actionIndex']);
|
||||
//App::$collector->get('/create', [\app\modules\tag\controllers\TagController::class, 'actionCreate']);
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/**
|
||||
* @var string $content
|
||||
* @var string $resources
|
||||
* @var string $title
|
||||
* @var \kernel\CgView $view
|
||||
*/
|
||||
$assets = new \app\themes\gestalt\assets\GestaltThemeAssets($resources);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charSet="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<?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>
|
||||
<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>
|
||||
</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>
|
||||
</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"/>
|
||||
</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>
|
||||
<?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>
|
||||
@@ -0,0 +1,224 @@
|
||||
<?php
|
||||
/**
|
||||
* @var string $resources;
|
||||
* @var \kernel\CgView $view
|
||||
*/
|
||||
|
||||
$view->setTitle("Донецкое гештальт сообщество");
|
||||
$view->setMeta([
|
||||
'description' => 'Донецкое гештальт сообщество'
|
||||
]);
|
||||
?>
|
||||
<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&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&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&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&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&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&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&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75"/></div>
|
||||
<p class="text-blue font-[900] text-[26px]">+ 145 учасников</p></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>
|
||||
</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>
|
||||
Reference in new issue
Block a user