commit 10722da013e54f9472c03ace25b68a0879d77a35 Author: AK Delfin Date: Fri Mar 1 17:47:03 2024 +0300 Initial commit diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..87a616e Binary files /dev/null and b/.DS_Store differ diff --git a/404.php b/404.php new file mode 100644 index 0000000..7e9c5a0 --- /dev/null +++ b/404.php @@ -0,0 +1,104 @@ + + + + + + + + + <?php wp_title(); ?> + + + +
+ +
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+

Страница 404

+

+ Данной страницы не существует, перейдите на главную страницу + сайта +

+ На главную +
+
+
+
+ + + + + + diff --git a/500.php b/500.php new file mode 100644 index 0000000..374cb28 --- /dev/null +++ b/500.php @@ -0,0 +1,112 @@ + + + + + + + + + + + <?php wp_title(); ?> + + + +
+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+

Страница 500

+

+ Приносим свои извинения, но в данный момент наш сайт перегружен + запросами, попробуйте повторить попытку позже +

+ Попробовать снова +
+
+
+
+ + + + + + + + + diff --git a/acfe-php/group_65d0befc4dd22.php b/acfe-php/group_65d0befc4dd22.php new file mode 100644 index 0000000..6c55845 --- /dev/null +++ b/acfe-php/group_65d0befc4dd22.php @@ -0,0 +1,1120 @@ + 'group_65d0befc4dd22', + 'title' => 'Общие настройки', + 'fields' => array( + array( + 'key' => 'field_65d0befc01b4d', + 'label' => 'Логотип сайта', + 'name' => 'site_logo', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'return_format' => 'url', + 'library' => 'all', + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'uploader' => '', + 'acfe_thumbnail' => 0, + ), + array( + 'key' => 'field_65d2f5c51edf6', + 'label' => 'Копирайт', + 'name' => 'copyright', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => 'АгроЭксперт', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d609d4ee8f5', + 'label' => 'Email', + 'name' => 'email', + 'aria-label' => '', + 'type' => 'email', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d609e5ee8f6', + 'label' => 'Адрес', + 'name' => 'address', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d609ffee8f7', + 'label' => 'Телефон', + 'name' => 'phone', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d9c6d34f280', + 'label' => 'Политика конфиденциальности', + 'name' => 'privacy_policy', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65d9de4263d6b', + 'label' => 'Выводимый текст', + 'name' => 'output_text', + 'aria-label' => '', + 'type' => 'wysiwyg', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'tabs' => 'all', + 'toolbar' => 'full', + 'media_upload' => 1, + 'delay' => 0, + ), + array( + 'key' => 'field_65d9deef63d6c', + 'label' => 'Файл политики', + 'name' => 'file', + 'aria-label' => '', + 'type' => 'file', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'min_size' => '', + 'max_size' => '', + 'mime_types' => '', + 'library' => 'all', + ), + array( + 'key' => 'field_65e04e8a2cf58', + 'label' => 'Файл свидетельства', + 'name' => 'file_certificate', + 'aria-label' => '', + 'type' => 'file', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'min_size' => '', + 'max_size' => '', + 'mime_types' => '', + 'library' => 'all', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65d9c80255855', + 'label' => 'Параметры для Яндекс Карты', + 'name' => 'yandex_params', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65d9c9c53ab69', + 'label' => 'Широта', + 'name' => 'latitude', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d9c9f93ab6a', + 'label' => 'Долгота', + 'name' => 'longitude', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d9ca173ab6b', + 'label' => 'Наименование метки на карте', + 'name' => 'name_point', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d9ca263ab6c', + 'label' => 'Изображение метки', + 'name' => 'image_point', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65db65a892815', + 'label' => 'Баннеры правый сайдбар ПК', + 'name' => 'banners_right_sidebar', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65db664492817', + 'label' => 'Баннер №1', + 'name' => 'right_sidebar_first', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65de1288ecc58', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65de12b7ecc59', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65db667c92818', + 'label' => 'Баннер №2', + 'name' => 'right_sidebar_second', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65de130e128f8', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65de1327128f9', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65db68c251f51', + 'label' => 'Баннеры левый сайдбар ПК', + 'name' => 'banners_left_sidebar', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65db68c251f52', + 'label' => 'Баннер №1', + 'name' => 'left_sidebar_first', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65de13cc10dba', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65de13e510dbb', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65db68c251f53', + 'label' => 'Баннер №2', + 'name' => 'left_sidebar_second', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65de140210dbc', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65de150cf66ad', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65dcc369d882e', + 'label' => 'Баннер в хеддере ПК', + 'name' => 'banner_in_header', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65df510cf4080', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65df5124f4081', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65dc4de8dc91a', + 'label' => 'Баннеры между постами ПК', + 'name' => 'banner_between_posts', + 'aria-label' => '', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'acfe_repeater_stylised_button' => 0, + 'layout' => 'table', + 'pagination' => 0, + 'min' => 0, + 'max' => 0, + 'collapsed' => '', + 'button_label' => 'Добавить', + 'rows_per_page' => 20, + 'sub_fields' => array( + array( + 'key' => 'field_65dc4e00dc91b', + 'label' => 'image_banner', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + 'parent_repeater' => 'field_65dc4de8dc91a', + ), + array( + 'key' => 'field_65de14607bfc9', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + 'parent_repeater' => 'field_65dc4de8dc91a', + ), + ), + ), + array( + 'key' => 'field_65e05594c586e', + 'label' => 'Баннеры на мобильных устройствах', + 'name' => 'banners_right_sidebar_mobile', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65e05594c586f', + 'label' => 'Баннер №1', + 'name' => 'right_sidebar_first', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65e05594c5870', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65e05594c5871', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65e05594c5872', + 'label' => 'Баннер №2', + 'name' => 'right_sidebar_second', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65e05594c5873', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65e05594c5874', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + array( + 'key' => 'field_65e055c7c587c', + 'label' => 'Баннеры между постами Гаджет', + 'name' => 'banner_between_posts_mobile', + 'aria-label' => '', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'acfe_repeater_stylised_button' => 0, + 'layout' => 'table', + 'pagination' => 0, + 'min' => 0, + 'max' => 0, + 'collapsed' => '', + 'button_label' => 'Добавить', + 'rows_per_page' => 20, + 'sub_fields' => array( + array( + 'key' => 'field_65e055c7c587d', + 'label' => 'image_banner', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + 'parent_repeater' => 'field_65e055c7c587c', + ), + array( + 'key' => 'field_65e055c7c587e', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + 'parent_repeater' => 'field_65e055c7c587c', + ), + ), + ), + array( + 'key' => 'field_65e055d2c587f', + 'label' => 'Баннер в хеддере Гаджет', + 'name' => 'banner_in_header_mobile', + 'aria-label' => '', + 'type' => 'group', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'layout' => 'block', + 'acfe_seamless_style' => 0, + 'acfe_group_modal' => 0, + 'sub_fields' => array( + array( + 'key' => 'field_65e055d2c5880', + 'label' => 'Изображение', + 'name' => 'image_banner', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + array( + 'key' => 'field_65e055d2c5881', + 'label' => 'Ссылка', + 'name' => 'link', + 'aria-label' => '', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'default_value' => '', + 'placeholder' => '', + ), + ), + 'acfe_group_modal_close' => 0, + 'acfe_group_modal_button' => '', + 'acfe_group_modal_size' => 'large', + ), + ), + 'location' => array( + array( + array( + 'param' => 'options_page', + 'operator' => '==', + 'value' => 'theme-settings', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1709201281, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d0f1bb433fb.php b/acfe-php/group_65d0f1bb433fb.php new file mode 100644 index 0000000..2e74336 --- /dev/null +++ b/acfe-php/group_65d0f1bb433fb.php @@ -0,0 +1,92 @@ + 'group_65d0f1bb433fb', + 'title' => 'Поля категорий', + 'fields' => array( + array( + 'key' => 'field_65d0f1bb4fe44', + 'label' => 'Иконка', + 'name' => 'icon', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'return_format' => 'url', + 'library' => 'all', + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'uploader' => '', + 'acfe_thumbnail' => 0, + ), + array( + 'key' => 'field_65d0f5426d250', + 'label' => 'Фоновое изображение для хавера на главной', + 'name' => 'bg_image', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'return_format' => 'array', + 'library' => 'all', + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'uploader' => '', + 'acfe_thumbnail' => 0, + ), + ), + 'location' => array( + array( + array( + 'param' => 'taxonomy', + 'operator' => '==', + 'value' => 'category', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1708359196, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d108cf78656.php b/acfe-php/group_65d108cf78656.php new file mode 100644 index 0000000..8fc3efa --- /dev/null +++ b/acfe-php/group_65d108cf78656.php @@ -0,0 +1,134 @@ + 'group_65d108cf78656', + 'title' => 'Поля записей', + 'fields' => array( + array( + 'key' => 'field_65d3a3ce679bb', + 'label' => 'Ещё по теме', + 'name' => 'featured_posts', + 'aria-label' => '', + 'type' => 'relationship', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'post_type' => array( + 0 => 'post', + ), + 'post_status' => array( + 0 => 'publish', + ), + 'taxonomy' => '', + 'filters' => array( + 0 => 'search', + 1 => 'taxonomy', + ), + 'return_format' => 'object', + 'acfe_bidirectional' => array( + 'acfe_bidirectional_enabled' => '0', + ), + 'min' => '', + 'max' => '', + 'elements' => '', + 'bidirectional' => 0, + 'bidirectional_target' => array( + ), + ), + array( + 'key' => 'field_65d6156444160', + 'label' => 'Организатор', + 'name' => 'organizer', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d615b744161', + 'label' => 'Телефон', + 'name' => 'phone', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d61bf8f4e5e', + 'label' => 'Место проведения', + 'name' => 'location', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + ), + 'location' => array( + array( + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'post', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1709192901, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d1d4966a8df.php b/acfe-php/group_65d1d4966a8df.php new file mode 100644 index 0000000..39a8eb6 --- /dev/null +++ b/acfe-php/group_65d1d4966a8df.php @@ -0,0 +1,73 @@ + 'group_65d1d4966a8df', + 'title' => 'Главная страница', + 'fields' => array( + array( + 'key' => 'field_65d1d4965f407', + 'label' => 'Закрепленный материал на главной', + 'name' => 'pinned_post', + 'aria-label' => '', + 'type' => 'post_object', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'post_type' => array( + 0 => 'post', + ), + 'post_status' => array( + 0 => 'publish', + ), + 'taxonomy' => '', + 'return_format' => 'object', + 'multiple' => 0, + 'save_custom' => 0, + 'save_post_status' => 'publish', + 'acfe_bidirectional' => array( + 'acfe_bidirectional_enabled' => '0', + ), + 'allow_null' => 0, + 'bidirectional' => 0, + 'ui' => 1, + 'bidirectional_target' => array( + ), + 'save_post_type' => '', + ), + ), + 'location' => array( + array( + array( + 'param' => 'options_page', + 'operator' => '==', + 'value' => 'theme-settings', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1708963893, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d1d88898a0f.php b/acfe-php/group_65d1d88898a0f.php new file mode 100644 index 0000000..0b0dd22 --- /dev/null +++ b/acfe-php/group_65d1d88898a0f.php @@ -0,0 +1,116 @@ + 'group_65d1d88898a0f', + 'title' => 'Поля мероприятий', + 'fields' => array( + array( + 'key' => 'field_65d1d88809be9', + 'label' => 'Организатор', + 'name' => 'organizer', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field-65d1d8d6393e9', + 'label' => 'Дата мероприятия', + 'name' => 'date', + 'aria-label' => '', + 'type' => 'date_picker', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'display_format' => 'd/m/Y', + 'return_format' => 'Y-m-d', + 'first_day' => 1, + ), + array( + 'key' => 'field_65d1d9763cc52', + 'label' => 'Место проведения', + 'name' => 'location', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + array( + 'key' => 'field_65d1d9903d82f', + 'label' => 'Телефон', + 'name' => 'phone', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ), + ), + 'location' => array( + array( + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'events', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1708512800, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d2f68a0a54e.php b/acfe-php/group_65d2f68a0a54e.php new file mode 100644 index 0000000..7be5923 --- /dev/null +++ b/acfe-php/group_65d2f68a0a54e.php @@ -0,0 +1,65 @@ + 'group_65d2f68a0a54e', + 'title' => 'Соцсети', + 'fields' => array( + array( + 'key' => 'field_65d2f68a0c693', + 'label' => 'Иконка', + 'name' => 'icon', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'return_format' => 'url', + 'library' => 'all', + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'uploader' => '', + 'acfe_thumbnail' => 0, + ), + ), + 'location' => array( + array( + array( + 'param' => 'nav_menu_item', + 'operator' => '==', + 'value' => 'location/socials', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1708359200, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d3799141ac6.php b/acfe-php/group_65d3799141ac6.php new file mode 100644 index 0000000..b68a90e --- /dev/null +++ b/acfe-php/group_65d3799141ac6.php @@ -0,0 +1,59 @@ + 'group_65d3799141ac6', + 'title' => 'Юр. доки в подвале', + 'fields' => array( + array( + 'key' => 'field_65d37991191e6', + 'label' => 'Файл', + 'name' => 'file', + 'aria-label' => '', + 'type' => 'file', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'return_format' => 'url', + 'library' => 'all', + 'min_size' => '', + 'max_size' => '', + 'mime_types' => '', + 'uploader' => '', + ), + ), + 'location' => array( + array( + array( + 'param' => 'nav_menu_item', + 'operator' => '==', + 'value' => '16', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1708359202, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d3bd583159c.php b/acfe-php/group_65d3bd583159c.php new file mode 100644 index 0000000..cfda5eb --- /dev/null +++ b/acfe-php/group_65d3bd583159c.php @@ -0,0 +1,65 @@ + 'group_65d3bd583159c', + 'title' => 'Поля авторов', + 'fields' => array( + array( + 'key' => 'field_65d3bd5855304', + 'label' => 'Фото', + 'name' => 'image', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + ), + ), + 'location' => array( + array( + array( + 'param' => 'user_form', + 'operator' => '==', + 'value' => 'all', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'side', + 'style' => 'default', + 'label_placement' => 'left', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1709192431, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d513bb359a3.php b/acfe-php/group_65d513bb359a3.php new file mode 100644 index 0000000..0629d45 --- /dev/null +++ b/acfe-php/group_65d513bb359a3.php @@ -0,0 +1,223 @@ + 'group_65d513bb359a3', + 'title' => 'Рекламный формат', + 'fields' => array( + array( + 'key' => 'field-65d50ea759ef7', + 'label' => 'Документы', + 'name' => 'documents', + 'aria-label' => '', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'acfe_repeater_stylised_button' => 0, + 'layout' => 'table', + 'pagination' => 0, + 'min' => 0, + 'max' => 0, + 'collapsed' => '', + 'button_label' => 'Добавить', + 'rows_per_page' => 20, + 'sub_fields' => array( + array( + 'key' => 'field-65d511ba47bd7', + 'label' => 'Документ', + 'name' => 'document', + 'aria-label' => '', + 'type' => 'file', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'relevanssi_exclude' => 0, + 'uploader' => '', + 'return_format' => 'array', + 'min_size' => '', + 'max_size' => '', + 'mime_types' => '', + 'library' => 'all', + 'parent_repeater' => 'field-65d50ea759ef7', + ), + ), + ), + array( + 'key' => 'field-65d512380557a', + 'label' => 'Контакты', + 'name' => 'contacts', + 'aria-label' => '', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'acfe_repeater_stylised_button' => 0, + 'layout' => 'table', + 'pagination' => 0, + 'min' => 0, + 'max' => 0, + 'collapsed' => '', + 'button_label' => 'Добавить', + 'rows_per_page' => 20, + 'sub_fields' => array( + array( + 'key' => 'field-65d512f31f6e4', + 'label' => 'Фото', + 'name' => 'image', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + 'parent_repeater' => 'field-65d512380557a', + ), + array( + 'key' => 'field-65d512fd1f6e5', + 'label' => 'ФИО', + 'name' => 'name', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'parent_repeater' => 'field-65d512380557a', + ), + array( + 'key' => 'field-65d513031f6e6', + 'label' => 'Должность', + 'name' => 'position', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'parent_repeater' => 'field-65d512380557a', + ), + array( + 'key' => 'field-65d5130d1f6e7', + 'label' => 'Телефон', + 'name' => 'phone', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'parent_repeater' => 'field-65d512380557a', + ), + array( + 'key' => 'field-65d513131f6e8', + 'label' => 'Email', + 'name' => 'email', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'parent_repeater' => 'field-65d512380557a', + ), + ), + ), + ), + 'location' => array( + array( + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'advertiser', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'left', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1709227831, +)); + +endif; \ No newline at end of file diff --git a/acfe-php/group_65d5e33ea5255.php b/acfe-php/group_65d5e33ea5255.php new file mode 100644 index 0000000..6ca32f1 --- /dev/null +++ b/acfe-php/group_65d5e33ea5255.php @@ -0,0 +1,133 @@ + 'group_65d5e33ea5255', + 'title' => 'Редакция ( Для страницы о проекте )', + 'fields' => array( + array( + 'key' => 'field_65d5e33eb8886', + 'label' => 'Люди редакции', + 'name' => 'editorial-people', + 'aria-label' => '', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'acfe_repeater_stylised_button' => 0, + 'layout' => 'table', + 'pagination' => 0, + 'min' => 0, + 'max' => 0, + 'collapsed' => '', + 'button_label' => 'Добавить', + 'rows_per_page' => 20, + 'sub_fields' => array( + array( + 'key' => 'field_65d5e41fb8889', + 'label' => 'Изображение', + 'name' => 'image', + 'aria-label' => '', + 'type' => 'image', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'uploader' => '', + 'return_format' => 'array', + 'acfe_thumbnail' => 0, + 'min_width' => '', + 'min_height' => '', + 'min_size' => '', + 'max_width' => '', + 'max_height' => '', + 'max_size' => '', + 'mime_types' => '', + 'preview_size' => 'medium', + 'library' => 'all', + 'parent_repeater' => 'field_65d5e33eb8886', + ), + array( + 'key' => 'field_65d5e3e9b8887', + 'label' => 'ФИО', + 'name' => 'name', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'parent_repeater' => 'field_65d5e33eb8886', + ), + array( + 'key' => 'field_65d5e40db8888', + 'label' => 'Должность', + 'name' => 'position', + 'aria-label' => '', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'default_value' => '', + 'maxlength' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'parent_repeater' => 'field_65d5e33eb8886', + ), + ), + ), + ), + 'location' => array( + array( + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'page', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'left', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + 'acfe_display_title' => '', + 'acfe_autosync' => array( + 0 => 'php', + ), + 'acfe_form' => 0, + 'acfe_meta' => '', + 'acfe_note' => '', + 'modified' => 1708516426, +)); + +endif; \ No newline at end of file diff --git a/agroexpert-master.zip b/agroexpert-master.zip new file mode 100644 index 0000000..b83f26c Binary files /dev/null and b/agroexpert-master.zip differ diff --git a/archive.php b/archive.php new file mode 100644 index 0000000..4c00a03 --- /dev/null +++ b/archive.php @@ -0,0 +1,28 @@ + +
+ +
+ name : get_the_title(); + ?> +

+ +
+
+ 'post', + 'posts_per_page' => 10, + 'paged' => $paged + ); + $query = new WP_Query($args); + + ?> + $wp_query]); ?> +
+ +
+ diff --git a/category-events.php b/category-events.php new file mode 100644 index 0000000..6362a1d --- /dev/null +++ b/category-events.php @@ -0,0 +1,21 @@ + +slug); + +?> +
+ +
+

name ?>

+
+
+ $posts, 'category'=> get_queried_object()->term_id])?> +
+ + На главную +
+ + + diff --git a/category-interviews.php b/category-interviews.php new file mode 100644 index 0000000..691b331 --- /dev/null +++ b/category-interviews.php @@ -0,0 +1,67 @@ + 10, // Количество постов для вывода + 'post_type' => 'post', // Тип постов для выборки (например, 'post', 'page', 'custom_post_type') + 'orderby' => 'date', // Сортировка по дате + 'order' => 'DESC', // Направление сортировки (DESC - по убыванию, ASC - по возрастанию) + 'category_name' => get_queried_object()->slug +); +$counter = 0; +query_posts( $args ); + +?> + + +
+ + +
+

name?>

+
+ +
+ + + + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + + + + '; + } + } + } + ?> + + На главную +
+ +
+ \ No newline at end of file diff --git a/category-partners.php b/category-partners.php new file mode 100644 index 0000000..b236897 --- /dev/null +++ b/category-partners.php @@ -0,0 +1,34 @@ + + + +
+ +
+

name ?>

+
+
+ have_posts()) : + while ($partners->have_posts()) : + $partners->the_post(); + ?> + +
+ +
+
+

+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/category.php b/category.php new file mode 100644 index 0000000..db5a5a8 --- /dev/null +++ b/category.php @@ -0,0 +1,24 @@ + +
+ +
+ +

name ?>

+ +
+
+ 'post', + 'posts_per_page' => 5, + 'paged' => $paged, + 'category__in' => get_queried_object_id() + ); + $query = new WP_Query($args); + ?> + $query]); ?> +
+ +
+ \ No newline at end of file diff --git a/content-about.php b/content-about.php new file mode 100644 index 0000000..846b79d --- /dev/null +++ b/content-about.php @@ -0,0 +1,22 @@ +

+ +

+ + +

Редакция

+
+ +
+
+ +
+
+

+ +

+
+
+
+ +
+ diff --git a/content-advertiser.php b/content-advertiser.php new file mode 100644 index 0000000..5d708f3 --- /dev/null +++ b/content-advertiser.php @@ -0,0 +1,61 @@ + + + 'advert-item__icon_pdf', + 'docx' => 'advert-item__icon_doc', + 'doc' => 'advert-item__icon_doc', +]; +?> +have_posts()) : ?> + have_posts()) : ?> + + + + \ No newline at end of file diff --git a/content-category-events-post.php b/content-category-events-post.php new file mode 100644 index 0000000..fac244b --- /dev/null +++ b/content-category-events-post.php @@ -0,0 +1,37 @@ +have_posts()) : + $posts->the_post(); +?> +
+ +
+ +
+

+

+
+
+
+
+
+

Организатор

+

+
+
+

Дата

+

+
+
+

Место проведения

+

+
+
+

О конференции

+

+
+
+

Телефон

+

+
+
+
+ \ No newline at end of file diff --git a/content-post.php b/content-post.php new file mode 100644 index 0000000..5343936 --- /dev/null +++ b/content-post.php @@ -0,0 +1,20 @@ + +
+ + +
+
+
+
+ +
+ + +

+ +
+
\ No newline at end of file diff --git a/date.php b/date.php new file mode 100644 index 0000000..4d17529 --- /dev/null +++ b/date.php @@ -0,0 +1,32 @@ + +
+
+

Материалы

+
+
+ 'post', + 'posts_per_page' => 10, + 'paged' => $paged, + 'post_status' => array('publish', 'future'), + 'date_query' => array( + array( + 'year' => $year, + 'month' => $month, + 'day' => $day, + ), + ), + ); + $query = new WP_Query($args); + ?> + $query]); ?> +
+ +
+ \ No newline at end of file diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..c3c01c7 --- /dev/null +++ b/footer.php @@ -0,0 +1,71 @@ + +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/front-page.php b/front-page.php new file mode 100644 index 0000000..b4db670 --- /dev/null +++ b/front-page.php @@ -0,0 +1,17 @@ + +
+ +
+ 'post', // Или ваш пользовательский тип постов, если необходимо + 'posts_per_page' => 10, // Количество постов на странице + 'cat' => [-17, -20, -21] + ); + $query = new WP_Query($args); + ?> + false, 'query' => $query]); ?> +
+ +
+ \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..823fe07 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + + diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..5848d16 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,93 @@ +# Agroexpert + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://gitlab.com/oxemstudio/agroexpert.git +git branch -M master +git push -uf origin master +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://gitlab.com/oxemstudio/agroexpert/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README + +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..51cd420 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,934 @@ +{ + "name": "agroexpert", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "agroexpert", + "version": "0.0.0", + "dependencies": { + "reset-css": "^5.0.2", + "slim-select": "^2.8.1", + "vanilla-calendar-pro": "^2.9.3" + }, + "devDependencies": { + "@types/node": "^20.11.21", + "typescript": "^5.2.2", + "vite": "^5.1.0", + "vite-plugin-handlebars": "^2.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", + "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz", + "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz", + "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz", + "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz", + "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz", + "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz", + "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz", + "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz", + "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz", + "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz", + "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz", + "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz", + "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.21.tgz", + "integrity": "sha512-/ySDLGscFPNasfqStUuWWPfL78jompfIoVzLJPVVAHBh6rpG68+pI2Gk+fNLeI8/f1yPYL4s46EleVIc20F1Ow==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/reset-css": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/reset-css/-/reset-css-5.0.2.tgz", + "integrity": "sha512-YtgUGSq5z5W0NPSjsBW7ys7rtWa8P8AiE7S6Fg3d1TQCPpAodgYyLuZYlU0AOsLtprk/fC9ormHN/0pAavVIDw==" + }, + "node_modules/rollup": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", + "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.10.0", + "@rollup/rollup-android-arm64": "4.10.0", + "@rollup/rollup-darwin-arm64": "4.10.0", + "@rollup/rollup-darwin-x64": "4.10.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.10.0", + "@rollup/rollup-linux-arm64-gnu": "4.10.0", + "@rollup/rollup-linux-arm64-musl": "4.10.0", + "@rollup/rollup-linux-riscv64-gnu": "4.10.0", + "@rollup/rollup-linux-x64-gnu": "4.10.0", + "@rollup/rollup-linux-x64-musl": "4.10.0", + "@rollup/rollup-win32-arm64-msvc": "4.10.0", + "@rollup/rollup-win32-ia32-msvc": "4.10.0", + "@rollup/rollup-win32-x64-msvc": "4.10.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/slim-select": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/slim-select/-/slim-select-2.8.1.tgz", + "integrity": "sha512-/wi+4dau48edrPZ/ggD+R8qD6FbCLGv5zvrYh4rqp1RNEIbkb1pRYJbljLjvr7/QqBvX3Hjbnvdnw9FPzJ8o5Q==", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/vanilla-calendar-pro": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/vanilla-calendar-pro/-/vanilla-calendar-pro-2.9.3.tgz", + "integrity": "sha512-pRQpruEzM5ryZa80ZCuSXOBPcqzzBKif6sIUfemp+4SbG0srBGyL5+EGxNzzirikM/4HYZGLMsn9zSJ2BvJ6/w==" + }, + "node_modules/vite": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", + "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-handlebars": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vite-plugin-handlebars/-/vite-plugin-handlebars-2.0.0.tgz", + "integrity": "sha512-+J3It0nyhPzx4nT1I+fnWH+jShTEXzm6X0Tgsggdm9IYFD7/eJ6a3ROI13HTe0CVoyaxm/fPxH5HDAKyfz7T0g==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.6", + "vite": "^5.0.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..5c90327 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,22 @@ +{ + "name": "agroexpert", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@types/node": "^20.11.21", + "typescript": "^5.2.2", + "vite": "^5.1.0", + "vite-plugin-handlebars": "^2.0.0" + }, + "dependencies": { + "reset-css": "^5.0.2", + "slim-select": "^2.8.1", + "vanilla-calendar-pro": "^2.9.3" + } +} diff --git a/frontend/public/icons/arrow.svg b/frontend/public/icons/arrow.svg new file mode 100644 index 0000000..59c01b4 --- /dev/null +++ b/frontend/public/icons/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/icons/breadcrumbs_arrow.svg b/frontend/public/icons/breadcrumbs_arrow.svg new file mode 100644 index 0000000..1a3ec46 --- /dev/null +++ b/frontend/public/icons/breadcrumbs_arrow.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/frontend/public/icons/check.svg b/frontend/public/icons/check.svg new file mode 100644 index 0000000..b7089d9 --- /dev/null +++ b/frontend/public/icons/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/icons/doc.svg b/frontend/public/icons/doc.svg new file mode 100644 index 0000000..a3a936e --- /dev/null +++ b/frontend/public/icons/doc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/public/icons/menu_vertical1.svg b/frontend/public/icons/menu_vertical1.svg new file mode 100644 index 0000000..8060f3b --- /dev/null +++ b/frontend/public/icons/menu_vertical1.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/icons/menu_vertical10.svg b/frontend/public/icons/menu_vertical10.svg new file mode 100644 index 0000000..01401d1 --- /dev/null +++ b/frontend/public/icons/menu_vertical10.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/public/icons/menu_vertical11.svg b/frontend/public/icons/menu_vertical11.svg new file mode 100644 index 0000000..423b34d --- /dev/null +++ b/frontend/public/icons/menu_vertical11.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/icons/menu_vertical12.svg b/frontend/public/icons/menu_vertical12.svg new file mode 100644 index 0000000..94614e5 --- /dev/null +++ b/frontend/public/icons/menu_vertical12.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/frontend/public/icons/menu_vertical2.svg b/frontend/public/icons/menu_vertical2.svg new file mode 100644 index 0000000..796d343 --- /dev/null +++ b/frontend/public/icons/menu_vertical2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/icons/menu_vertical3.svg b/frontend/public/icons/menu_vertical3.svg new file mode 100644 index 0000000..e0d85ca --- /dev/null +++ b/frontend/public/icons/menu_vertical3.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/frontend/public/icons/menu_vertical4.svg b/frontend/public/icons/menu_vertical4.svg new file mode 100644 index 0000000..78fced9 --- /dev/null +++ b/frontend/public/icons/menu_vertical4.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/icons/menu_vertical5.svg b/frontend/public/icons/menu_vertical5.svg new file mode 100644 index 0000000..cabfa81 --- /dev/null +++ b/frontend/public/icons/menu_vertical5.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/icons/menu_vertical6.svg b/frontend/public/icons/menu_vertical6.svg new file mode 100644 index 0000000..8783bb4 --- /dev/null +++ b/frontend/public/icons/menu_vertical6.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/icons/menu_vertical7.svg b/frontend/public/icons/menu_vertical7.svg new file mode 100644 index 0000000..3b99cc8 --- /dev/null +++ b/frontend/public/icons/menu_vertical7.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/icons/menu_vertical8.svg b/frontend/public/icons/menu_vertical8.svg new file mode 100644 index 0000000..b1930ff --- /dev/null +++ b/frontend/public/icons/menu_vertical8.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/icons/menu_vertical9.svg b/frontend/public/icons/menu_vertical9.svg new file mode 100644 index 0000000..a386dd3 --- /dev/null +++ b/frontend/public/icons/menu_vertical9.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/icons/play.svg b/frontend/public/icons/play.svg new file mode 100644 index 0000000..c22cc83 --- /dev/null +++ b/frontend/public/icons/play.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/icons/sort_bottom.svg b/frontend/public/icons/sort_bottom.svg new file mode 100644 index 0000000..bc0ed8d --- /dev/null +++ b/frontend/public/icons/sort_bottom.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/icons/sort_top.svg b/frontend/public/icons/sort_top.svg new file mode 100644 index 0000000..6f20838 --- /dev/null +++ b/frontend/public/icons/sort_top.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/icons/time.svg b/frontend/public/icons/time.svg new file mode 100644 index 0000000..f95b84f --- /dev/null +++ b/frontend/public/icons/time.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/frontend/public/images/about.png b/frontend/public/images/about.png new file mode 100644 index 0000000..191eeec Binary files /dev/null and b/frontend/public/images/about.png differ diff --git a/frontend/public/images/article.jpg b/frontend/public/images/article.jpg new file mode 100644 index 0000000..0f4cbf1 Binary files /dev/null and b/frontend/public/images/article.jpg differ diff --git a/frontend/public/images/author.png b/frontend/public/images/author.png new file mode 100644 index 0000000..e526004 Binary files /dev/null and b/frontend/public/images/author.png differ diff --git a/frontend/public/images/bg_500.jpg b/frontend/public/images/bg_500.jpg new file mode 100644 index 0000000..673f776 Binary files /dev/null and b/frontend/public/images/bg_500.jpg differ diff --git a/frontend/public/images/burger.svg b/frontend/public/images/burger.svg new file mode 100644 index 0000000..83065ee --- /dev/null +++ b/frontend/public/images/burger.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/images/burger_close.svg b/frontend/public/images/burger_close.svg new file mode 100644 index 0000000..b4f1c59 --- /dev/null +++ b/frontend/public/images/burger_close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/images/contacts_1.png b/frontend/public/images/contacts_1.png new file mode 100644 index 0000000..68bebee Binary files /dev/null and b/frontend/public/images/contacts_1.png differ diff --git a/frontend/public/images/contacts_2.png b/frontend/public/images/contacts_2.png new file mode 100644 index 0000000..440465d Binary files /dev/null and b/frontend/public/images/contacts_2.png differ diff --git a/frontend/public/images/doc_icon.png b/frontend/public/images/doc_icon.png new file mode 100644 index 0000000..1ba547f Binary files /dev/null and b/frontend/public/images/doc_icon.png differ diff --git a/frontend/public/images/error_bg.jpg b/frontend/public/images/error_bg.jpg new file mode 100644 index 0000000..d253e3a Binary files /dev/null and b/frontend/public/images/error_bg.jpg differ diff --git a/frontend/public/images/event-preview.png b/frontend/public/images/event-preview.png new file mode 100644 index 0000000..1524e72 Binary files /dev/null and b/frontend/public/images/event-preview.png differ diff --git a/frontend/public/images/event_img_1.jpg b/frontend/public/images/event_img_1.jpg new file mode 100644 index 0000000..525cec9 Binary files /dev/null and b/frontend/public/images/event_img_1.jpg differ diff --git a/frontend/public/images/hero_banner_bg.jpg b/frontend/public/images/hero_banner_bg.jpg new file mode 100644 index 0000000..e7f7210 Binary files /dev/null and b/frontend/public/images/hero_banner_bg.jpg differ diff --git a/frontend/public/images/item-review.png b/frontend/public/images/item-review.png new file mode 100644 index 0000000..4db90fb Binary files /dev/null and b/frontend/public/images/item-review.png differ diff --git a/frontend/public/images/link_after.svg b/frontend/public/images/link_after.svg new file mode 100644 index 0000000..59c01b4 --- /dev/null +++ b/frontend/public/images/link_after.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/images/logo.svg b/frontend/public/images/logo.svg new file mode 100644 index 0000000..0f4f3e7 --- /dev/null +++ b/frontend/public/images/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/images/map_label.png b/frontend/public/images/map_label.png new file mode 100644 index 0000000..02ad659 Binary files /dev/null and b/frontend/public/images/map_label.png differ diff --git a/frontend/public/images/menu_link1.png b/frontend/public/images/menu_link1.png new file mode 100644 index 0000000..dd8079b Binary files /dev/null and b/frontend/public/images/menu_link1.png differ diff --git a/frontend/public/images/menu_link10.png b/frontend/public/images/menu_link10.png new file mode 100644 index 0000000..dd23dc8 Binary files /dev/null and b/frontend/public/images/menu_link10.png differ diff --git a/frontend/public/images/menu_link11.png b/frontend/public/images/menu_link11.png new file mode 100644 index 0000000..ef5c46b Binary files /dev/null and b/frontend/public/images/menu_link11.png differ diff --git a/frontend/public/images/menu_link12.png b/frontend/public/images/menu_link12.png new file mode 100644 index 0000000..6b11d3c Binary files /dev/null and b/frontend/public/images/menu_link12.png differ diff --git a/frontend/public/images/menu_link2.png b/frontend/public/images/menu_link2.png new file mode 100644 index 0000000..9edb17e Binary files /dev/null and b/frontend/public/images/menu_link2.png differ diff --git a/frontend/public/images/menu_link3.png b/frontend/public/images/menu_link3.png new file mode 100644 index 0000000..445d058 Binary files /dev/null and b/frontend/public/images/menu_link3.png differ diff --git a/frontend/public/images/menu_link4.png b/frontend/public/images/menu_link4.png new file mode 100644 index 0000000..4ce0117 Binary files /dev/null and b/frontend/public/images/menu_link4.png differ diff --git a/frontend/public/images/menu_link5.png b/frontend/public/images/menu_link5.png new file mode 100644 index 0000000..86ac733 Binary files /dev/null and b/frontend/public/images/menu_link5.png differ diff --git a/frontend/public/images/menu_link6.png b/frontend/public/images/menu_link6.png new file mode 100644 index 0000000..752913c Binary files /dev/null and b/frontend/public/images/menu_link6.png differ diff --git a/frontend/public/images/menu_link7.png b/frontend/public/images/menu_link7.png new file mode 100644 index 0000000..966f25f Binary files /dev/null and b/frontend/public/images/menu_link7.png differ diff --git a/frontend/public/images/menu_link8.png b/frontend/public/images/menu_link8.png new file mode 100644 index 0000000..e982346 Binary files /dev/null and b/frontend/public/images/menu_link8.png differ diff --git a/frontend/public/images/menu_link9.png b/frontend/public/images/menu_link9.png new file mode 100644 index 0000000..71fea13 Binary files /dev/null and b/frontend/public/images/menu_link9.png differ diff --git a/frontend/public/images/menu_link_icon1.svg b/frontend/public/images/menu_link_icon1.svg new file mode 100644 index 0000000..0a39a67 --- /dev/null +++ b/frontend/public/images/menu_link_icon1.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/images/menu_link_icon10.svg b/frontend/public/images/menu_link_icon10.svg new file mode 100644 index 0000000..3d7abad --- /dev/null +++ b/frontend/public/images/menu_link_icon10.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/frontend/public/images/menu_link_icon11.svg b/frontend/public/images/menu_link_icon11.svg new file mode 100644 index 0000000..816fcc4 --- /dev/null +++ b/frontend/public/images/menu_link_icon11.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/frontend/public/images/menu_link_icon12.svg b/frontend/public/images/menu_link_icon12.svg new file mode 100644 index 0000000..9662b86 --- /dev/null +++ b/frontend/public/images/menu_link_icon12.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/frontend/public/images/menu_link_icon2.svg b/frontend/public/images/menu_link_icon2.svg new file mode 100644 index 0000000..c489366 --- /dev/null +++ b/frontend/public/images/menu_link_icon2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/images/menu_link_icon3.svg b/frontend/public/images/menu_link_icon3.svg new file mode 100644 index 0000000..f05da61 --- /dev/null +++ b/frontend/public/images/menu_link_icon3.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/images/menu_link_icon4.svg b/frontend/public/images/menu_link_icon4.svg new file mode 100644 index 0000000..dffb926 --- /dev/null +++ b/frontend/public/images/menu_link_icon4.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/images/menu_link_icon5.svg b/frontend/public/images/menu_link_icon5.svg new file mode 100644 index 0000000..caab55b --- /dev/null +++ b/frontend/public/images/menu_link_icon5.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/public/images/menu_link_icon6.svg b/frontend/public/images/menu_link_icon6.svg new file mode 100644 index 0000000..3880199 --- /dev/null +++ b/frontend/public/images/menu_link_icon6.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/images/menu_link_icon7.svg b/frontend/public/images/menu_link_icon7.svg new file mode 100644 index 0000000..2f48254 --- /dev/null +++ b/frontend/public/images/menu_link_icon7.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/images/menu_link_icon8.svg b/frontend/public/images/menu_link_icon8.svg new file mode 100644 index 0000000..c9bc8d5 --- /dev/null +++ b/frontend/public/images/menu_link_icon8.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/public/images/menu_link_icon9.svg b/frontend/public/images/menu_link_icon9.svg new file mode 100644 index 0000000..7d6bbb8 --- /dev/null +++ b/frontend/public/images/menu_link_icon9.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/frontend/public/images/partner_01.png b/frontend/public/images/partner_01.png new file mode 100644 index 0000000..b29819e Binary files /dev/null and b/frontend/public/images/partner_01.png differ diff --git a/frontend/public/images/partner_02.png b/frontend/public/images/partner_02.png new file mode 100644 index 0000000..f81e570 Binary files /dev/null and b/frontend/public/images/partner_02.png differ diff --git a/frontend/public/images/partner_03.png b/frontend/public/images/partner_03.png new file mode 100644 index 0000000..6a52f59 Binary files /dev/null and b/frontend/public/images/partner_03.png differ diff --git a/frontend/public/images/partner_04.png b/frontend/public/images/partner_04.png new file mode 100644 index 0000000..b295525 Binary files /dev/null and b/frontend/public/images/partner_04.png differ diff --git a/frontend/public/images/partner_05.png b/frontend/public/images/partner_05.png new file mode 100644 index 0000000..fb99b4f Binary files /dev/null and b/frontend/public/images/partner_05.png differ diff --git a/frontend/public/images/pdf_icon.png b/frontend/public/images/pdf_icon.png new file mode 100644 index 0000000..9b35101 Binary files /dev/null and b/frontend/public/images/pdf_icon.png differ diff --git a/frontend/public/images/socials_tg.svg b/frontend/public/images/socials_tg.svg new file mode 100644 index 0000000..734f807 --- /dev/null +++ b/frontend/public/images/socials_tg.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/images/socials_vk.svg b/frontend/public/images/socials_vk.svg new file mode 100644 index 0000000..5498fef --- /dev/null +++ b/frontend/public/images/socials_vk.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/images/socials_yt.svg b/frontend/public/images/socials_yt.svg new file mode 100644 index 0000000..6e61e73 --- /dev/null +++ b/frontend/public/images/socials_yt.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/public/images/subscription_bg.png b/frontend/public/images/subscription_bg.png new file mode 100644 index 0000000..2c9300f Binary files /dev/null and b/frontend/public/images/subscription_bg.png differ diff --git a/frontend/public/images/subscription_bg_sm.png b/frontend/public/images/subscription_bg_sm.png new file mode 100644 index 0000000..52d6882 Binary files /dev/null and b/frontend/public/images/subscription_bg_sm.png differ diff --git a/frontend/public/images/video-preview.png b/frontend/public/images/video-preview.png new file mode 100644 index 0000000..0240315 Binary files /dev/null and b/frontend/public/images/video-preview.png differ diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/frontend/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/global.css b/frontend/src/global.css new file mode 100644 index 0000000..5e9ebc6 --- /dev/null +++ b/frontend/src/global.css @@ -0,0 +1,75 @@ +:root { + --primary: #f18917; + --secondary: #006842; + --black: #000; + --white: #fff; + --gray: #cfcfcf; + --adv-gray: #2f2f2f; + --placeholder-gray: #3a3a3a; + --bg: #f7f8f3; +} + +html { + font-size: 10px; +} + +a { + color: inherit; +} + +body { + font-family: 'Raleway', sans-serif; + font-variant-numeric: lining-nums; + background: var(--bg); + font-size: 1.3rem; + line-height: 150%; + color: var(--black); + -webkit-text-size-adjust: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +a { + text-decoration: none; + outline: none; + color: var(--black); +} + +li { + list-style: none; +} + +button { + border: 0; + padding: 0; + background: none; + cursor: pointer; +} + +.link { + transition: 0.3s; +} + +.link:hover { + color: var(--primary); +} + +.link-icon-after::after { + content: ''; + background: url(/images/link_after.svg); + width: 1rem; + height: 1rem; + display: inline-block; + margin-left: 0.4rem; + position: relative; + top: 0.1rem; +} + +.wpcf7-spinner { + display: none !important; +} + +.wp-block-embed iframe { + width: 100%; +} \ No newline at end of file diff --git a/frontend/src/main.ts b/frontend/src/main.ts new file mode 100644 index 0000000..400b07b --- /dev/null +++ b/frontend/src/main.ts @@ -0,0 +1,56 @@ +import 'reset-css'; +import './global.css'; +import './styles/layout/container.css'; +import './styles/layout/footer.css'; +import './styles/layout/header/header'; +import './styles/layout/header/header.css'; + +import './styles/layout/container.css'; +import './styles/layout/footer.css'; + +import './styles/components/advert-item.css'; +import './styles/components/article-item.css'; +import './styles/components/article-single.css'; +import './styles/components/contacts.css'; +import './styles/components/event-item.css'; +import './styles/components/interview-item.css'; +import './styles/components/partner-item.css'; +import './styles/components/single-partner-item.css'; +import './styles/components/suggestion-item.css'; + +import './scripts/calendar.js'; +import './scripts/scroll-to-top.js'; +import './scripts/menu-vertical.ts'; +import './scripts/modal.ts'; +import './scripts/search-form.ts'; +import './scripts/select.ts'; +import './scripts/subscription-form'; +import './styles/components/about.css'; +import './styles/components/banner.css'; +import './styles/components/breadcrumbs.css'; +import './styles/components/button.css'; +import './styles/components/calendar.css'; +import './styles/components/checkbox.css'; +import './styles/components/error-page.css'; +import './styles/components/event-item.css'; +import './styles/components/fonts.css'; +import './styles/components/hero.css'; +import './styles/components/input.css'; +import './styles/components/menu-vertical.css'; +import './styles/components/menu.css'; +import './styles/components/modal.css'; +import './styles/components/most-read.css'; +import './styles/components/nav.css'; +import './styles/components/pagination.css'; +import './styles/components/search-form.css'; +import './styles/components/section-title.css'; +import './styles/components/select.css'; +import './styles/components/shared.css'; +import './styles/components/socials.css'; +import './styles/components/subscribe-form.css'; +import './styles/components/subscription-form.css'; +import './styles/components/tag.css'; +import './styles/components/to-top.css'; +import './styles/components/upcoming-events.css'; + +import './styles/pages/main.css'; diff --git a/frontend/src/pages/404.html b/frontend/src/pages/404.html new file mode 100644 index 0000000..72663cf --- /dev/null +++ b/frontend/src/pages/404.html @@ -0,0 +1,106 @@ + + + {{> head}} + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title="404"}} +
+
+
+

Страница 404

+

+ Данной страницы не существует, перейдите на главную страницу + сайта +

+ На главную +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/500.html b/frontend/src/pages/500.html new file mode 100644 index 0000000..f07a45c --- /dev/null +++ b/frontend/src/pages/500.html @@ -0,0 +1,106 @@ + + + {{> head}} + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title="500"}} +
+
+
+

Страница 500

+

+ Приносим свои извинения, но в данный момент наш сайт перегружен + запросами, попробуйте повторить попытку позже +

+ Попробовать снова +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/about.html b/frontend/src/pages/about.html new file mode 100644 index 0000000..533503d --- /dev/null +++ b/frontend/src/pages/about.html @@ -0,0 +1,298 @@ + + + {{> head}} + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title="О проекте"}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

О проекте

+
+
+

+ Агроэксперт -это информационный портал с ежедневным + обновлением ленты новостей и ежемесячная полноцветная газета + на 16 полос тиражом 5 тысяч экземпляров, распространяющаяся по + всей России. Мы рассказываем об актуальных событиях в области + ветеринарии, животноводства, птицеводства, рыбохозяйственного + комплекса, рынков сырья и продовольствия. +

+

+ Публикуем аналитические материалы с комментариями ведущих + российских и мировых экспертов, ученых научно-производственных + институтов Россельхознадзора, руководителей федеральных + ведомств и отраслевых ассоциаций. Кроме того, предоставляем + свежую информацию об эпизоотической ситуации, обзор и + обсуждение новых законопроектов и нормативных актов. +

+

Редакция

+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ +
+
+

+ Константин Константиновский +

+
Главный редактор
+
+
+
+
+ На главную +
+
+
+
+
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/advertiser.html b/frontend/src/pages/advertiser.html new file mode 100644 index 0000000..54c1a2a --- /dev/null +++ b/frontend/src/pages/advertiser.html @@ -0,0 +1,169 @@ + + + {{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title='Рекламодателям'}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Рекламодателям

+
+
+ {{> advert-item}} {{> advert-item-v2}} {{> advert-item-v3}} +
+ На главную +
+
+
+
+
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/contacts.html b/frontend/src/pages/contacts.html new file mode 100644 index 0000000..7c64a88 --- /dev/null +++ b/frontend/src/pages/contacts.html @@ -0,0 +1,250 @@ + + +{{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title='Контакты'}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Контакты

+
+
+
+
+
+
+
+

Адрес

+

129626, Москва, пр. Мира 102, стр31 ком 12

+
+
+

Телефон

+

+7 (495) 987-65-43

+
+
+

E-mail

+

konstantin@agroecspert.ru

+
+
+ +
+

Написать нам

+
+ + + + + +
+

Нажимая на кнопку «Подписаться», Вы соглашаетесь на обработку персональных данных в соответствие с «Политикой конфиденциальности»

+
+
+ На главную +
+
+
+
+
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/frontend/src/pages/event-single.html b/frontend/src/pages/event-single.html new file mode 100644 index 0000000..7c0fc74 --- /dev/null +++ b/frontend/src/pages/event-single.html @@ -0,0 +1,165 @@ + + +{{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs middle='Мероприятия' title="Российское растениеводство" }} +
+
+
+ {{> menu-vertical desktop="true"}} +
{{> content-sidebar}}
+ + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} + +
+
+
+

Календарь мероприятий

+ +
+ + + + + + + + + + +
+
+ {{> content-sidebar eventMobile="true"}} +
+
+
+

Российское растениеводство

+
+ {{> single-event-item }} + Все мероприятия +
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/events.html b/frontend/src/pages/events.html new file mode 100644 index 0000000..2c19a4f --- /dev/null +++ b/frontend/src/pages/events.html @@ -0,0 +1,167 @@ + + +{{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title='Мероприятия'}} +
+
+
+ {{> menu-vertical desktop="true"}} +
{{> content-sidebar}}
+ + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Мероприятия

+
+
+
+
+

Календарь мероприятий

+ +
+ + + + + + + + + + +
+
+ {{> content-sidebar eventMobile="true"}} +
+
+
+ {{> event-item}} {{> event-item}} {{> event-item}} +
+ {{> pagination}} + На главную +
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/index.html b/frontend/src/pages/index.html new file mode 100644 index 0000000..14ee889 --- /dev/null +++ b/frontend/src/pages/index.html @@ -0,0 +1,301 @@ + + + {{> head }} + +
+ {{> header-banner}} {{> header}} +
+ + +
+
+
+ {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+
+ {{> article-item}} {{> article-item}} {{> article-item}} {{> + article-item}} {{> banner-middle}} {{> article-item}} {{> + article-item}} {{> article-item}} {{> article-item}} {{> + article-item}} +
+ {{> articles-show-more}} +
+
+ + + + +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/interviews.html b/frontend/src/pages/interviews.html new file mode 100644 index 0000000..a7ff2fa --- /dev/null +++ b/frontend/src/pages/interviews.html @@ -0,0 +1,147 @@ + + +{{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title='Интервью'}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} +
+
+
+ + +
+

+ На одной из птицефабрик Красноярского края выявили опасные + вирусы +

+
+
+ {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Интервью

+
+
+ {{> interview-item}} {{> interview-item}} {{> interview-item}} {{> interview-item}} + {{> banner-middle}} {{> interview-item}} {{> interview-item}} {{> interview-item}} {{> interview-item}} {{> interview-item}} + {{> interview-item}} {{> interview-item}} {{> interview-item}} {{> interview-item}} {{> interview-item}} +
+ {{> articles-show-more}} {{> pagination}} + На главную +
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/materials-single.html b/frontend/src/pages/materials-single.html new file mode 100644 index 0000000..66e8fce --- /dev/null +++ b/frontend/src/pages/materials-single.html @@ -0,0 +1,347 @@ + + + {{> head}} + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs middle='Безопасность продукции' title="Россия обновила + трехлетний рекорд экспорта зерна" }} +
+
+
+ {{> menu-vertical isSafety="true" desktop="true"}} {{> + content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true" active="true"}} +
+
+ Сегодня, + +
+
Безопасность продукции
+

+ Россия обновила трехлетний рекорд экспорта зерна +

+ +
+

+ Россия в первой половине сезона-2023/24 побила рекорд + по экспорту зерновых, зернобобовых и муки — он составил + почти 39 млн т. Об этом пишет РИА «Новости» со ссылкой + на данные аналитического центра. +

+
+ +
+ Фото benedek / GettyImages +
+
+
+ +
+ Фото benedek / GettyImages +
+
+

+ Сообщается, что компании удалось продать три своих мясных + завода в Германии. Предприятие, занимающееся убоем крупного + рогатого скота и переработкой говядины в Альтенбурге + (Тюрингия), а также завод в Вестфалии, специализирующийся + на тонкой нарезке ветчины и других продуктов из свинины, + приобрела немецкая мясная компания Tönnies Group. +

+

+ Ещё одно предприятие по переработке свинины в Бад-Берлебурге + было продано немецкому мясопереработчику Uhlen GmbH. + При этом свиноферма в Эмштеке будет закрыта, + так как для неё не нашлось покупателя, сообщила компания. +

+

+ Причиной ограничения своего присутствия на немецком рынке + компания называет растущую конкуренцию и урон, нанесённый + недавними вспышками АЧС. +

+

+ По информации Всемирной организации здравоохранения + животных, за 2023 год в Германии зарегистрировали + 132 очага АЧС. Вспышки в прошлом году были выявлены + в 18 странах Европы. +

+ + +
+ + Смотреть видео +
+
+

+ Сообщается, что компании удалось продать три своих мясных + завода в Германии. Предприятие, занимающееся убоем крупного + рогатого скота и переработкой говядины в Альтенбурге + (Тюрингия), а также завод в Вестфалии, специализирующийся + на тонкой нарезке ветчины и других продуктов из свинины, + приобрела немецкая мясная компания Tönnies Group. +

+

+ Ещё одно предприятие по переработке свинины в Бад-Берлебурге + было продано немецкому мясопереработчику Uhlen GmbH. + При этом свиноферма в Эмштеке будет закрыта, + так как для неё не нашлось покупателя, сообщила компания. +

+

+ Причиной ограничения своего присутствия на немецком рынке + компания называет растущую конкуренцию и урон, нанесённый + недавними вспышками АЧС. +

+

+ По информации Всемирной организации здравоохранения + животных, за 2023 год в Германии зарегистрировали + 132 очага АЧС. Вспышки в прошлом году были выявлены + в 18 странах Европы. +

+
+
+ +
+ Фото benedek / GettyImages +
+
+
+ +
+ Фото benedek / GettyImages +
+
+
+ +

+ Сообщается, что компании удалось продать три своих мясных + завода в Германии. Предприятие, занимающееся убоем крупного + рогатого скота и переработкой говядины в Альтенбурге + (Тюрингия), а также завод в Вестфалии, специализирующийся + на тонкой нарезке ветчины и других продуктов из свинины, + приобрела немецкая мясная компания Tönnies Group. +

+

+ Ещё одно предприятие по переработке свинины в Бад-Берлебурге + было продано немецкому мясопереработчику Uhlen GmbH. + При этом свиноферма в Эмштеке будет закрыта, + так как для неё не нашлось покупателя, сообщила компания. +

+

+ Причиной ограничения своего присутствия на немецком рынке + компания называет растущую конкуренцию и урон, нанесённый + недавними вспышками АЧС. +

+

+ По информации Всемирной организации здравоохранения + животных, за 2023 год в Германии зарегистрировали + 132 очага АЧС. Вспышки в прошлом году были выявлены + в 18 странах Европы. +

+
+
+
Еще по теме
+
+ {{> article-item-no-image}} {{> article-item-no-image}} {{> + article-item-no-image}} {{> article-item-no-image}} +
+
Читайте также:
+
+ {{> article-item}} {{> article-item}} {{> article-item}} {{> + article-item}} {{> article-item}} {{> article-item}} +
+ На главную +
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/materials.html b/frontend/src/pages/materials.html new file mode 100644 index 0000000..eb0f644 --- /dev/null +++ b/frontend/src/pages/materials.html @@ -0,0 +1,169 @@ + + + {{> head}} + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title="Безопасность продукции"}} +
+
+
+ {{> menu-vertical isSafety="true" desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Безопасность продукции

+
+
+ {{> article-item-lg}} {{> article-item}} {{> article-item}} {{> + article-item}} {{> article-item}} {{> banner-middle}} {{> + article-item}} {{> article-item}} {{> article-item}} {{> + article-item}} {{> article-item}} {{> article-item}} {{> + article-item}} {{> article-item}} {{> article-item}} {{> + article-item}} +
+ {{> articles-show-more}} {{> pagination}} +
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/pages.html b/frontend/src/pages/pages.html new file mode 100644 index 0000000..477a897 --- /dev/null +++ b/frontend/src/pages/pages.html @@ -0,0 +1,125 @@ + + +{{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/partners-single.html b/frontend/src/pages/partners-single.html new file mode 100644 index 0000000..6449906 --- /dev/null +++ b/frontend/src/pages/partners-single.html @@ -0,0 +1,157 @@ + + +{{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs middle='Партнеры' title='Научно-методический базовый центр ФГБУ «ВГНКИ»'}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Научно-методический базовый центр ФГБУ «ВГНКИ»

+
+
+ {{> single-partner-item}} +
+
+

Еще по теме

+
+
+ {{> suggestion-item}} + {{> suggestion-item}} + {{> suggestion-item}} + {{> suggestion-item}} +
+ На главную +
+
+
+
+
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/partners.html b/frontend/src/pages/partners.html new file mode 100644 index 0000000..8cff807 --- /dev/null +++ b/frontend/src/pages/partners.html @@ -0,0 +1,181 @@ + + + {{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title='Партнеры'}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Партнеры

+
+
+ {{> partner-item text='Научно-методический базовый центр ФГБУ «ВГНКИ»' num='1'}} + {{> partner-item text='ФГБУ «ВГНКИ» проводит полный спектр доклинических (токсикологических) исследований необходимых для регистрации лекарственных средств для ветеринарного применения и кормовых добавок.' num='2'}} + {{> partner-item text='ФГБУ «ВГНКИ» проводит полный спектр доклинических (токсикологических) исследований необходимых для регистрации лекарственных средств для ветеринарного применения и кормовых добавок.' num='3'}} + {{> partner-item text='Испытательный центр ФГБУ «ВГНКИ» проводит различные виды исследований по выявлению фальсификации молочной продукции' num='4'}} + {{> partner-item text='ФГБУ «ВГНКИ» проводит полный спектр доклинических (токсикологических) исследований необходимых для регистрации лекарственных средств для ветеринарного применения и кормовых добавок.' num='5'}} + {{> partner-item text='ФГБУ «ВГНКИ» проводит полный спектр доклинических (токсикологических) исследований необходимых для регистрации лекарственных средств для ветеринарного применения и кормовых добавок.' num='2'}} + {{> partner-item text='Научно-методический базовый центр ФГБУ «ВГНКИ»' num='1'}} + {{> partner-item text='Испытательный центр ФГБУ «ВГНКИ» проводит различные виды исследований по выявлению фальсификации молочной продукции' num='3'}} + {{> partner-item text='ФГБУ «ВГНКИ» проводит полный спектр доклинических (токсикологических) исследований необходимых для регистрации лекарственных средств для ветеринарного применения и кормовых добавок.' num='4'}} + {{> partner-item text='Научно-методический базовый центр ФГБУ «ВГНКИ»' num='1'}} + {{> partner-item text='Испытательный центр ФГБУ «ВГНКИ» проводит различные виды исследований по выявлению фальсификации молочной продукции' num='2'}} + {{> partner-item text='Научно-методический базовый центр ФГБУ «ВГНКИ»' num='3'}} +
+ {{> pagination}} + На главную +
+
+
+
+
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ +
+ + + diff --git a/frontend/src/pages/search.html b/frontend/src/pages/search.html new file mode 100644 index 0000000..85e25f1 --- /dev/null +++ b/frontend/src/pages/search.html @@ -0,0 +1,201 @@ + + + {{> head}} + + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title='Поиск'}} +
+ +
+
+ +
+ + + diff --git a/frontend/src/pages/subscription.html b/frontend/src/pages/subscription.html new file mode 100644 index 0000000..dc4cd1e --- /dev/null +++ b/frontend/src/pages/subscription.html @@ -0,0 +1,388 @@ + + + {{> head}} + +
+ {{> header-banner}} {{> header}} +
+ {{> breadcrumbs title="Подписка на новости"}} +
+
+
+ {{> menu-vertical desktop="true"}} {{> content-sidebar}} + + {{> most-read class='mobile'}} + +
+
+ {{> menu-vertical mobile="true"}} +
+

Подписка на новости

+
+
+
+ + +
+

+ Оформив подписку на нашу рассылку, Вы будете ежедневно в 14:00 + (МСК) получать на адрес своей электронной почты подборку самых + актуальных новостей +

+

+ Выбор необходимых рубрик для подписки: +

+
+ + + + + + + + + + + + +
+ + +

+ Нажимая на кнопку «Подписаться», Вы соглашаетесь на обработку + персональных данных в соответствие с + «Политикой конфиденциальности» +

+
+ На главную +
+
+
+
+
+
+ {{> most-read class='content-right__most-read'}} + + + + +
+
+
+
+ + +
+ + + diff --git a/frontend/src/partials/advert-item-v2.html b/frontend/src/partials/advert-item-v2.html new file mode 100644 index 0000000..97e33d0 --- /dev/null +++ b/frontend/src/partials/advert-item-v2.html @@ -0,0 +1,45 @@ + \ No newline at end of file diff --git a/frontend/src/partials/advert-item-v3.html b/frontend/src/partials/advert-item-v3.html new file mode 100644 index 0000000..7f8613b --- /dev/null +++ b/frontend/src/partials/advert-item-v3.html @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/frontend/src/partials/advert-item.html b/frontend/src/partials/advert-item.html new file mode 100644 index 0000000..6ed84e7 --- /dev/null +++ b/frontend/src/partials/advert-item.html @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/frontend/src/partials/article-item-horizontal.html b/frontend/src/partials/article-item-horizontal.html new file mode 100644 index 0000000..40dd3c1 --- /dev/null +++ b/frontend/src/partials/article-item-horizontal.html @@ -0,0 +1,18 @@ +
+ + +
Растения
+
+
+
+ Сегодня, + +
+ На одной из птицефабрик Красноярского края выявили опасные вирусы +

+ Об этом сообщил премьер-министр РФ Михаил Мишустин +

+
+
diff --git a/frontend/src/partials/article-item-inline.html b/frontend/src/partials/article-item-inline.html new file mode 100644 index 0000000..5d10390 --- /dev/null +++ b/frontend/src/partials/article-item-inline.html @@ -0,0 +1,14 @@ +
+
+
+ Сегодня, + +
+ На одной из птицефабрик Красноярского края выявили опасные вирусы +

+ Об этом сообщил премьер-министр РФ Михаил Мишустин +

+
+
diff --git a/frontend/src/partials/article-item-lg.html b/frontend/src/partials/article-item-lg.html new file mode 100644 index 0000000..9a7d0b3 --- /dev/null +++ b/frontend/src/partials/article-item-lg.html @@ -0,0 +1,20 @@ +
+ + +
Растения
+
+
+
+ Сегодня, + +
+ На одной из птицефабрик Красноярского края выявили опасные вирусы +

+ Россия в первой половине сезона-2023/24 побила рекорд по экспорту + зерновых, зернобобовых и муки — он составил почти 39 млн т. Об этом пишет + РИА «Новости» со ссылкой на данные аналитического центра +

+
+
diff --git a/frontend/src/partials/article-item-no-image.html b/frontend/src/partials/article-item-no-image.html new file mode 100644 index 0000000..0ecf283 --- /dev/null +++ b/frontend/src/partials/article-item-no-image.html @@ -0,0 +1,16 @@ +
+
+
+ Сегодня, + +
+
Растения
+ На одной из птицефабрик Красноярского края выявили опасные вирусы +

+ Его можно применять в таких направлениях, как точное земледелие, генетика + и селекция +

+
+
diff --git a/frontend/src/partials/article-item.html b/frontend/src/partials/article-item.html new file mode 100644 index 0000000..6cb86aa --- /dev/null +++ b/frontend/src/partials/article-item.html @@ -0,0 +1,15 @@ +
+ + +
Растения
+
+
+
+ Сегодня, + +
+ На одной из птицефабрик Красноярского края выявили опасные вирусы +
+
diff --git a/frontend/src/partials/articles-show-more.html b/frontend/src/partials/articles-show-more.html new file mode 100644 index 0000000..1b740d2 --- /dev/null +++ b/frontend/src/partials/articles-show-more.html @@ -0,0 +1 @@ + diff --git a/frontend/src/partials/banner-middle.html b/frontend/src/partials/banner-middle.html new file mode 100644 index 0000000..e82da83 --- /dev/null +++ b/frontend/src/partials/banner-middle.html @@ -0,0 +1,3 @@ + diff --git a/frontend/src/partials/breadcrumbs.html b/frontend/src/partials/breadcrumbs.html new file mode 100644 index 0000000..11c9f10 --- /dev/null +++ b/frontend/src/partials/breadcrumbs.html @@ -0,0 +1,9 @@ + diff --git a/frontend/src/partials/content-sidebar.html b/frontend/src/partials/content-sidebar.html new file mode 100644 index 0000000..b73b6e8 --- /dev/null +++ b/frontend/src/partials/content-sidebar.html @@ -0,0 +1,45 @@ +
+ +
diff --git a/frontend/src/partials/event-item.html b/frontend/src/partials/event-item.html new file mode 100644 index 0000000..6e31527 --- /dev/null +++ b/frontend/src/partials/event-item.html @@ -0,0 +1,31 @@ +
+
+ +
+

Российское растениеводство

+

Весна 2024

+
+
+
+
+

Организатор

+

Агрохолдинг

+
+
+

Дата

+

14 марта 2024

+
+
+

Место проведения

+

Москва, отель "Метрополь"

+
+
+

О конференции

+

VIII конференция о полевом растениеводстве приурочена к старту посевной кампании и ориентирована на сельхозпроизводителей и поставщиков средств производства: семян, удобрений, сельхозтехники, СЗР и т.д. В фокусе – ключевые тренды и прогнозы на 2024 год, новейшие технологии, производственные, агрономические и управленческие практики. Программа ориентирована на основные полевые культуры: зерновые, масличные и сахарную свеклу.

+
+
+

Телефон

+

+7 (495) 987-65-43

+
+
+
diff --git a/frontend/src/partials/head.html b/frontend/src/partials/head.html new file mode 100644 index 0000000..2daad87 --- /dev/null +++ b/frontend/src/partials/head.html @@ -0,0 +1,21 @@ + + + + + + + + + + Агроэксперт + diff --git a/frontend/src/partials/header-banner.html b/frontend/src/partials/header-banner.html new file mode 100644 index 0000000..93ee851 --- /dev/null +++ b/frontend/src/partials/header-banner.html @@ -0,0 +1,3 @@ + diff --git a/frontend/src/partials/header.html b/frontend/src/partials/header.html new file mode 100644 index 0000000..ff0600b --- /dev/null +++ b/frontend/src/partials/header.html @@ -0,0 +1,117 @@ +
+
+
+ + +
+
+ + +
+ +
+ + +
+
+
+
+ +
diff --git a/frontend/src/partials/interview-item.html b/frontend/src/partials/interview-item.html new file mode 100644 index 0000000..1bbf921 --- /dev/null +++ b/frontend/src/partials/interview-item.html @@ -0,0 +1,19 @@ +
+
+ + +
+
+
+ Сегодня, + +
+ На одной из птицефабрик Красноярского края выявили + опасные вирусы +
+
\ No newline at end of file diff --git a/frontend/src/partials/menu-vertical.html b/frontend/src/partials/menu-vertical.html new file mode 100644 index 0000000..9c768d3 --- /dev/null +++ b/frontend/src/partials/menu-vertical.html @@ -0,0 +1,112 @@ + diff --git a/frontend/src/partials/most-read.html b/frontend/src/partials/most-read.html new file mode 100644 index 0000000..305ae95 --- /dev/null +++ b/frontend/src/partials/most-read.html @@ -0,0 +1,23 @@ +
+ +
diff --git a/frontend/src/partials/pagination.html b/frontend/src/partials/pagination.html new file mode 100644 index 0000000..34e28e2 --- /dev/null +++ b/frontend/src/partials/pagination.html @@ -0,0 +1,27 @@ + diff --git a/frontend/src/partials/partner-item.html b/frontend/src/partials/partner-item.html new file mode 100644 index 0000000..4332e97 --- /dev/null +++ b/frontend/src/partials/partner-item.html @@ -0,0 +1,8 @@ + +
+ +
+
+

{{text}}

+
+
diff --git a/frontend/src/partials/single-event-item.html b/frontend/src/partials/single-event-item.html new file mode 100644 index 0000000..70e1d82 --- /dev/null +++ b/frontend/src/partials/single-event-item.html @@ -0,0 +1,91 @@ +
+
+
+

Организатор

+

Агрохолдинг

+
+
+

Дата

+

14 марта 2024

+
+
+

Место проведения

+

Москва, отель "Метрополь"

+
+ +
+

Телефон

+

+7 (495) 987-65-43

+
+
+
+ +
+

Российское растениеводство

+

Весна 2024

+
+
+ +
+
+

О конференции

+

Сообщается, что компании удалось продать три своих мясных завода в Германии. + Предприятие, занимающееся убоем крупного рогатого скота и переработкой говядины в Альтенбурге (Тюрингия), а также завод в Вестфалии, + специализирующийся на тонкой нарезке ветчины и других продуктов из свинины, приобрела немецкая мясная компания Tönnies Group.

+

Ещё одно предприятие по переработке свинины в Бад-Берлебурге было продано немецкому + мясопереработчику Uhlen GmbH. При этом свиноферма в Эмштеке будет закрыта, так как для неё не нашлось покупателя, сообщила компания. +

+

Причиной ограничения своего присутствия на немецком рынке компания называет растущую + конкуренцию и урон, нанесённый недавними вспышками АЧС.

+

По информации Всемирной организации здравоохранения животных, за 2023 год в Германии + зарегистрировали 132 очага АЧС. Вспышки в прошлом году были выявлены в 18 странах Европы.

+
+
+ + +
+
+

Сообщается, что компании удалось продать три своих мясных завода в Германии. + Предприятие, занимающееся убоем крупного рогатого скота и переработкой говядины в Альтенбурге (Тюрингия), а также завод в Вестфалии, + специализирующийся на тонкой нарезке ветчины и других продуктов из свинины, приобрела немецкая мясная компания Tönnies Group.

+

Ещё одно предприятие по переработке свинины в Бад-Берлебурге было продано немецкому + мясопереработчику Uhlen GmbH. При этом свиноферма в Эмштеке будет закрыта, так как для неё не нашлось покупателя, сообщила компания. +

+

Причиной ограничения своего присутствия на немецком рынке компания называет растущую + конкуренцию и урон, нанесённый недавними вспышками АЧС.

+

По информации Всемирной организации здравоохранения животных, за 2023 год в Германии + зарегистрировали 132 очага АЧС. Вспышки в прошлом году были выявлены в 18 странах Европы.

+
+
+
+ +
+ Фото benedek / GettyImages +
+
+
+ +
+ Фото benedek / GettyImages +
+
+
+ +
+

Сообщается, что компании удалось продать три своих мясных завода в Германии. + Предприятие, занимающееся убоем крупного рогатого скота и переработкой говядины в Альтенбурге (Тюрингия), а также завод в Вестфалии, + специализирующийся на тонкой нарезке ветчины и других продуктов из свинины, приобрела немецкая мясная компания Tönnies Group.

+

Ещё одно предприятие по переработке свинины в Бад-Берлебурге было продано немецкому + мясопереработчику Uhlen GmbH. При этом свиноферма в Эмштеке будет закрыта, так как для неё не нашлось покупателя, сообщила компания. +

+

Причиной ограничения своего присутствия на немецком рынке компания называет растущую + конкуренцию и урон, нанесённый недавними вспышками АЧС.

+

По информации Всемирной организации здравоохранения животных, за 2023 год в Германии + зарегистрировали 132 очага АЧС. Вспышки в прошлом году были выявлены в 18 странах Европы.

+
+ +
+
\ No newline at end of file diff --git a/frontend/src/partials/single-partner-item.html b/frontend/src/partials/single-partner-item.html new file mode 100644 index 0000000..12bf594 --- /dev/null +++ b/frontend/src/partials/single-partner-item.html @@ -0,0 +1,60 @@ +
+

Реклама ФГБУ «ВГНКИ»ERID LatgC8LFN

+
+

+ Орган по сертификации ФГБУ «ВГНКИ» оказывает услуги по следующим + направлениям: +

+
    +
  • + добровольная сертификация ветеринарных препаратов и средств ухода за + животными (СДС «ВП ВГНКИ»); +
  • +
  • + добровольная сертификация ветеринарных препаратов и средств ухода за + животными (СДС «ВП ВГНКИ»); +
  • +
  • + добровольная сертификация ветеринарных препаратов и средств ухода за + животными (СДС «ВП ВГНКИ»); +
  • +
+
    +
  1. + добровольная сертификация ветеринарных препаратов и средств ухода за + животными (СДС «ВП ВГНКИ»); +
  2. +
  3. + добровольная сертификация ветеринарных препаратов и средств ухода за + животными (СДС «ВП ВГНКИ»); +
  4. +
  5. + добровольная сертификация ветеринарных препаратов и средств ухода за + животными (СДС «ВП ВГНКИ»); +
  6. +
+

+ В рамках систем добровольной сертификации у заявителей есть уникальная + возможность получения добровольного сертификата соответствия на продукцию + сроком до 4 лет (при успешном прохождения анализа состояния производства) + и знака соответствия. Данный знак производитель может использовать при + маркировке продукции для информирования потребителей и других + заинтересованных лиц о соответствии товара требованиям, предъявляемым + системами добровольной сертификации. Знак соответствия можно наносить на + сопроводительную документацию и рекламную продукцию товара. +

+
+
+

Контакты:

+

+ 123022, Звенигородское шоссе, д. 5, стр. 1 +

+

+ +7 (499) 941-01-51 (доб. 174, 139) +

+

+ E-mail: certification@vgnki.ru +

+

Сайт: cert.vgnki.ru

+
+
diff --git a/frontend/src/partials/suggestion-item.html b/frontend/src/partials/suggestion-item.html new file mode 100644 index 0000000..b51afea --- /dev/null +++ b/frontend/src/partials/suggestion-item.html @@ -0,0 +1,3 @@ +
+

Научно-методический базовый центр ФГБУ «ВГНКИ»

+
\ No newline at end of file diff --git a/frontend/src/scripts/calendar.js b/frontend/src/scripts/calendar.js new file mode 100644 index 0000000..33deeb2 --- /dev/null +++ b/frontend/src/scripts/calendar.js @@ -0,0 +1,132 @@ +import VanillaCalendar from 'vanilla-calendar-pro'; +import 'vanilla-calendar-pro/build/vanilla-calendar.min.css'; + +async function initCalendar() { + async function fetchActiveDates() { + const apiUrl = `/wp-json/agroexpert/v1/posts-by-date/`; + + try { + const response = await fetch(apiUrl); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + return data; + } catch (error) { + console.error('Could not fetch active dates:', error); + throw error; + } + } + + function getFormattedDate() { + const months = [ + 'января', + 'февраля', + 'марта', + 'апреля', + 'мая', + 'июня', + 'июля', + 'августа', + 'сентября', + 'октября', + 'ноября', + 'декабря', + ]; + + const currentDate = new Date(); + const day = currentDate.getDate(); + const monthIndex = currentDate.getMonth(); + const year = currentDate.getFullYear(); + + const formattedDate = `${day} ${months[monthIndex]} ${year}`; + + return formattedDate; + } + + const activeDates = [...(await fetchActiveDates())].map(date => { + const [year, month, day] = date.split('-'); + const link = `${window.location.protocol}//${window.location.host}/${year}/${month}/${day}/`; + + return { + date, + link, + }; + }); + + const options = { + settings: { + lang: 'ru', + selected: { + dates: activeDates.map(d => d.date), + }, + visibility: { + theme: 'light', + }, + }, + locale: { + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], + weekday: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + }, + }; + + const eventCalendarHeader = document.querySelector('.event-calendar__header'); + const eventCalendarWrapper = document.querySelector( + '.event-calendar__wrapper' + ); + const eventCalendarToday = document.querySelector('#event-calendar__today'); + + if (eventCalendarToday) { + eventCalendarToday.innerHTML = getFormattedDate(); + } + + if (eventCalendarHeader && eventCalendarWrapper) { + eventCalendarHeader.addEventListener('click', () => { + eventCalendarWrapper.classList.toggle('is-active'); + eventCalendarHeader.classList.toggle('is-active'); + }); + } + + if (document.querySelector('#calendar_event')) { + const calendar = new VanillaCalendar('#calendar_event', options); + calendar.init(); + } + + if (document.querySelector('#calendar')) { + const calendar = new VanillaCalendar('#calendar', options); + calendar.init(); + } + + document.addEventListener('click', function (event) { + const target = event.target.closest('[data-calendar-day]'); + + if (target) { + const clickedDate = target.getAttribute('data-calendar-day'); + + const dateObject = activeDates.find( + dateObj => dateObj.date === clickedDate + ); + + if (dateObject) { + window.location.href = dateObject.link; + } + } + }); +} + +initCalendar(); diff --git a/frontend/src/scripts/menu-vertical.ts b/frontend/src/scripts/menu-vertical.ts new file mode 100644 index 0000000..96f8d0b --- /dev/null +++ b/frontend/src/scripts/menu-vertical.ts @@ -0,0 +1,8 @@ +const menuVerticalHead = document.querySelector('.mobile .menu-vertical__head'); +const menuVerticalInner = document.querySelector('.mobile .menu-vertical__inner'); +if (menuVerticalHead && menuVerticalInner) { + menuVerticalHead.addEventListener('click', () => { + menuVerticalHead.classList.toggle('is-active'); + menuVerticalInner.classList.toggle('is-active'); + }); +} \ No newline at end of file diff --git a/frontend/src/scripts/modal.ts b/frontend/src/scripts/modal.ts new file mode 100644 index 0000000..c9c8bf2 --- /dev/null +++ b/frontend/src/scripts/modal.ts @@ -0,0 +1,11 @@ +const modalCloses = document.querySelectorAll('.modal__close'); + +if (modalCloses.length) { + modalCloses.forEach(function (this: Element, modalClose) { + modalClose.addEventListener('click', function (this: Element, event) { + event.preventDefault(); + const modal = this.closest('.modal-overlay') as HTMLElement; + modal.style.display = 'none'; + }); + }); +} diff --git a/frontend/src/scripts/scroll-to-top.js b/frontend/src/scripts/scroll-to-top.js new file mode 100644 index 0000000..6e2edde --- /dev/null +++ b/frontend/src/scripts/scroll-to-top.js @@ -0,0 +1,13 @@ +document.addEventListener('DOMContentLoaded', function() { + var toTopButton = document.querySelector('.to-top'); + + if (toTopButton) { + toTopButton.addEventListener('click', function(e) { + e.preventDefault(); + window.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }); + } +}); \ No newline at end of file diff --git a/frontend/src/scripts/search-form.ts b/frontend/src/scripts/search-form.ts new file mode 100644 index 0000000..ae16a27 --- /dev/null +++ b/frontend/src/scripts/search-form.ts @@ -0,0 +1,8 @@ +const searchFormInput = document.querySelector('.search-form__input') as HTMLInputElement | null; +const searchFormClearButton = document.querySelector('.search-form__clear') as HTMLElement | null; + +if (searchFormInput && searchFormClearButton) { + searchFormClearButton.addEventListener('click', () => { + searchFormInput.value = ''; + }); +} diff --git a/frontend/src/scripts/select.ts b/frontend/src/scripts/select.ts new file mode 100644 index 0000000..54b5771 --- /dev/null +++ b/frontend/src/scripts/select.ts @@ -0,0 +1,23 @@ +//@ts-ignore +import SlimSelect from 'slim-select'; +import 'slim-select/styles'; + +const settings = { + showSearch: false, + hideSelected: true, +}; + +new SlimSelect({ + select: '#selectSort', + settings, +}); + +new SlimSelect({ + select: '#selectDate', + settings, +}); + +new SlimSelect({ + select: '#selectCategory', + settings, +}); diff --git a/frontend/src/scripts/subscription-form.js b/frontend/src/scripts/subscription-form.js new file mode 100644 index 0000000..3f76b18 --- /dev/null +++ b/frontend/src/scripts/subscription-form.js @@ -0,0 +1,28 @@ +const subscriptionForm = document.querySelectorAll('.wpcf7-form'); +const thankModal = document.querySelector('#modal-thank'); + +if (subscriptionForm) { + /* Событие отрабатывает, когда где - то произошли ошибки */ + document.addEventListener( + 'wpcf7submit', + function (event) { + event.target.querySelector('.wpcf7-response-output').style.display = + 'none'; + event.target.querySelector('.wpcf7-spinner').style.display = 'none'; + for (let i = 0; i < event.target.querySelectorAll('input').length; i++) { + let inputEl = event.target.querySelectorAll('input')[i]; + let inputValue = inputEl.valid; + if (!inputValue) { + event.target.querySelector('input[type="email"]')?.focus(); + inputEl.style.border = '1px solid #e01231'; + setTimeout(function () { + inputEl.style.border = '1px solid #cfcfcf'; + }, 1000); + } + } + if (!event.detail.apiResponse.invalid_fields.length) + thankModal.style.display = 'block'; + }, + false + ); +} diff --git a/frontend/src/styles/components/about.css b/frontend/src/styles/components/about.css new file mode 100644 index 0000000..c4164ec --- /dev/null +++ b/frontend/src/styles/components/about.css @@ -0,0 +1,88 @@ +.about { + padding: 2rem 2.5rem 2.5rem 2.5rem; +} + +.about-text { + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; + margin-bottom: 2rem; +} + +.about-title { + font-weight: 700; + font-size: 1.8rem; + line-height: 2.2rem; + margin-top: 4.5rem; + margin-bottom: 2rem; +} + +.about-items { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + column-gap: 1.6rem; + row-gap: 2.5rem; +} + +.about-item { + display: flex; + align-items: center; + gap: 1.6rem; +} + +.about-item__img { + display: flex; + flex-shrink: 0; + width: 8rem; + height: 8rem; + border-radius: 50%; + overflow: hidden; + position: relative; +} + +.about-item__img img { + position: absolute; + flex-shrink: 0; + width: 100%; + height: 100%; + object-fit: cover; +} + +.about-item__name { + font-weight: 700; + font-size: 1.3rem; + line-height: 1.6rem; + margin-bottom: 0.5rem; + max-width: 19rem; +} + +.about-item__position { + font-weight: 500; + font-size: 13px; + line-height: 2rem; + color: #2f2f2f; +} + +@media (max-width: 767px) { + .about { + padding: 1.5rem 0.5rem; + } + + .about-title { + font-size: 1.6rem; + line-height: 2rem; + margin-top: 1rem; + } + + .about-items { + row-gap: 1rem; + } + + .about-item__img { + min-width: 8rem; + } + + .about-section-title { + border-top: 1px solid var(--gray); + } +} diff --git a/frontend/src/styles/components/advert-item.css b/frontend/src/styles/components/advert-item.css new file mode 100644 index 0000000..fa0f464 --- /dev/null +++ b/frontend/src/styles/components/advert-item.css @@ -0,0 +1,152 @@ +.advert-item { + padding: 2rem 2.5rem 2.5rem; + box-sizing: border-box; + background: var(--bg); + width: 100%; + border-bottom: 1px solid var(--gray); + border-left: 1px solid var(--gray); + margin-left: -1px; + display: flex; + flex-direction: column; + gap: 15px; +} + +@media (max-width: 1024px) { + .advert-item { + width: 100%; + } +} + +@media (max-width: 767px) { + .advert-item { + gap: 20px; + } +} + +.advert-item__heading { + color: var(--white); + position: absolute; + left: 2.5rem; + bottom: 3rem; +} + +.advert-item__block-title { + margin-bottom: 5px; +} + +.advert-item__block-title_margin-lg { + margin-bottom: 20px; +} + +@media (max-width: 767px) { + .advert-item__block-title_margin-lg { + margin-bottom: 10px; + } +} + +.advert-item__subtitle { + font-size: 2.4rem; +} + +.advert-item__documents-list { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 10px; + flex-wrap: wrap; +} + +@media (max-width: 767px) { + .advert-item__documents-list { + grid-template-columns: repeat(1, 1fr); + gap: 10px; + } +} + +.advert-item__document { + padding: 7px 9px; + flex-grow: 1; + background-color: var(--white); + display: flex; + align-items: center; + gap: 10px; + justify-content: flex-start; +} + +.advert-item__document:hover .advert-item__document-description { + text-decoration: underline; +} + +.advert-item__icon { + width: 36px; + height: 36px; + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.advert-item__icon_pdf { + background-image: url('/images/pdf_icon.png'); +} + +.advert-item__icon_doc { + background-image: url('/images/doc_icon.png'); +} + +.advert-item__document-description { + user-select: none; +} + +.advert-item__contacts { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); + gap: 10px; +} + +@media (max-width: 767px) { + .advert-item__contacts { + flex-direction: column; + } +} + +.advert-item__contact-item { + width: 50%; + display: flex; + align-items: flex-start; + gap: 16px; + padding-bottom: 42px; +} + +@media (max-width: 767px) { + .advert-item__contact-item { + width: 100%; + padding-bottom: 0; + } +} + +.advert-item__avatar-container { + flex-shrink: 0; + width: 80px; + border-radius: 50%; + overflow: hidden; + display: flex; +} + +.advert-item__contacts-avatar { + width: 100%; +} + +.advert-item__contact-name { + margin-bottom: 5px; +} + +.advert-item__contact-position { + margin-bottom: 10px; +} + +.advert-item__contact-phone { + margin-bottom: 5px; +} + +.advert-item__contact-email { + color: var(--secondary); +} \ No newline at end of file diff --git a/frontend/src/styles/components/article-item.css b/frontend/src/styles/components/article-item.css new file mode 100644 index 0000000..0aa2356 --- /dev/null +++ b/frontend/src/styles/components/article-item.css @@ -0,0 +1,172 @@ +.article-item { + padding: 1.2rem 1.25rem 0; + box-sizing: border-box; + background: var(--bg); + width: 50%; + border-bottom: 1px solid var(--gray); + border-left: 1px solid var(--gray); + margin-left: -1px; +} + +@media (max-width: 1024px) { + .article-item { + width: 100%; + } +} + +.article-item__image-container { + position: relative; +} + +.article-item__image-container img { + width: 100%; + height: 21rem; + object-fit: cover; +} + +.article-item__text { + margin-top: 0.5rem; + padding: 1.5rem 1.25rem; +} + +.article-item__link { + user-select: none; + transition: 0.3s; +} + +.article-item__link:hover { + color: var(--primary); +} + +.article-item__tag { + position: absolute; + right: 1.3rem; + bottom: 2.1rem; +} + +.article-item__title { + margin-top: 0.5rem; +} + +.article-item--lg { + width: 100%; + padding: 0; +} + +.article-item--lg .article-item__image-container img { + height: 41.5rem; +} + +.article-item--lg .article-item__text { + margin-top: 0; + padding: 2rem 2.5rem 2.5rem 2.5rem; +} + +.article-item__descr { + margin-top: 1.5rem; +} + +.article-item--no-image { + padding: 0; + background: #fff; + min-height: 22.6rem; +} + +.article-item--no-image .article-item__text { + padding: 1.5rem 2.5rem; + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.article-item--no-image .article-item__tag { + border-color: #7c7c7c; + color: #000; + position: relative; + right: unset; + bottom: unset; + margin-bottom: 0.5rem; +} + +.article-item--no-image .article-item__descr { + margin-top: 1rem; +} + +.article-item--horizontal { + width: 100%; + padding: 1.2rem; + display: flex; +} + +.article-item--horizontal .article-item__image-container { + width: 33rem; + min-width: 33rem; +} + +.article-item--horizontal .article-item__text { + margin-top: 0; + padding: 1.5rem 2.5rem; +} + +.article-item--inline { + width: 100%; + padding: 1.2rem; +} + +.article-item--inline .article-item__text { + margin-top: 0; + padding: 1.5rem 2.5rem; +} + +@media (max-width: 767px) { + .articles-preview { + margin: 0 -2rem; + } + + .article-item { + padding: 1.2rem 2rem 2.7rem 2rem; + border: 0; + border-bottom: 1px solid var(--gray); + } + + .article-item__text { + padding: 1rem 0.7rem 0 0.7rem; + } + + .article-item--lg { + padding: 0; + border-top: 1px solid var(--gray); + } + + .article-item--lg .article-item__image-container img { + height: 26rem; + } + + .article-item--lg .article-item__text { + padding: 2.7rem; + } + + .article-item__descr { + margin-top: 0.5rem; + } + + .article-item--horizontal { + padding: 1.2rem 2rem; + flex-direction: column; + } + + .article-item--horizontal .article-item__image-container { + width: 100%; + min-width: 100%; + } + + .article-item--horizontal .article-item__text { + margin-top: 0; + padding: 1.5rem 0.7rem; + } + + .article-item--inline .article-item__text { + margin-top: 0; + padding: 0.3rem 0.7rem; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/article-single.css b/frontend/src/styles/components/article-single.css new file mode 100644 index 0000000..f2d086e --- /dev/null +++ b/frontend/src/styles/components/article-single.css @@ -0,0 +1,216 @@ +.article-single { + padding: 2rem 2.5rem 0 2.5rem; +} + +.article-time.article-single__time { + margin-bottom: 1.5rem; +} + +.article-single__tag { + font-size: 1.1rem; + line-height: 1.6rem; + color: #000; + padding: 0.1rem 1.2rem; + border: 1px solid #7c7c7c; + border-radius: 5rem; + display: inline-block; + margin-bottom: 1.5rem; +} + +.article-single__title { + margin-bottom: 1.5rem; +} + +.article-author { + display: flex; + align-items: center; + gap: 1.4rem; + margin-bottom: 1.5rem; +} + +.article-author__img { + width: 5rem; + height: 5rem; + border-radius: 50%; + overflow: hidden; + position: relative; +} + +.article-author__img img { + position: absolute; + width: 100%; + height: 100%; + object-fit: cover; +} + +.article-author__name { + font-weight: 700; + font-size: 1.3rem; + line-height: 2rem; + color: #2f2f2f; +} + +.article-single__content p { + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; + margin-bottom: 2.5rem; +} + +.article-single__content a { + color: var(--secondary); +} + +.article-single-img, +.wp-block-image { + margin: 0 -2.5rem; + position: relative; + margin-bottom: 2rem; + height: 41.5rem; + display: flex; +} + +.event-single .article-single-img, +.event-single .wp-block-image { + margin: 0; +} + +.article-single-img>img, +.wp-block-image>img { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + object-fit: cover; +} + +.article-single-img__text, +.wp-element-caption { + position: absolute; + z-index: 1; + left: 2.5rem; + bottom: 2.5rem; + font-size: 1.1rem; + line-height: 1.6rem; + color: #ffffff; +} + +.article-single-img__video { + display: flex; + align-items: center; + gap: 2rem; + position: absolute; + left: 3.9rem; + bottom: 2.3rem; + font-size: 1.1rem; + line-height: 1.6rem; + color: #ffffff; +} + +.article-single-gal, +.wp-block-gallery.is-layout-flex.wp-block-gallery-is-layout-flex { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.1rem; + margin: 0 -2.5rem; + margin-bottom: 2rem; +} + +.event-single .article-single-gal, +.event-single .wp-block-gallery.is-layout-flex.wp-block-gallery-is-layout-flex { + margin: 0; +} + +.wp-block-gallery.is-layout-flex.wp-block-gallery-is-layout-flex .wp-block-image { + margin: 0; + margin-bottom: 0; + height: 20.8rem; + display: flex; +} + +.article-single-gal .article-single-img, +.wp-block-gallery .article-single-img { + margin: 0; + height: 20.8rem; +} + +.article-section__title { + box-sizing: border-box; + padding: 2.5rem; + font-weight: 700; + font-size: 1.8rem; + line-height: 2.2rem; + border-top: 1px solid var(--gray); + border-bottom: 1px solid var(--gray); +} + +@media (max-width: 767px) { + .article-single { + border-top: 1px solid var(--gray); + margin: 0 -2rem; + padding: 1.5rem 2.4rem 0.5rem 2.4rem; + } + + .article-time.article-single__time { + margin-bottom: 1rem; + } + + .article-single__tag { + margin-bottom: 1rem; + } + + .article-single__title { + margin-bottom: 1rem; + } + + .article-author { + margin-bottom: 1rem; + } + + .article-single__content p { + margin-bottom: 1.5rem; + } + + .article-single-img, + .wp-block-image { + margin: 0 -2.4rem; + margin-bottom: 2rem; + height: 26rem; + } + + .article-single-img__text { + bottom: 2rem; + } + + .article-single-img__video { + left: 2.1rem; + bottom: 2.1rem; + } + + .article-single-gal, + .wp-block-gallery.is-layout-flex.wp-block-gallery-is-layout-flex { + grid-template-columns: 1fr; + gap: 0; + margin: 0 -2.4rem; + margin-bottom: 2rem; + } + + .wp-block-gallery.is-layout-flex.wp-block-gallery-is-layout-flex .wp-block-image { + height: 26rem; + } + + .article-single-gal .article-single-img { + height: 26rem; + } + + .article-section__title { + width: calc(100% + 4rem); + margin: 0 -2rem; + } + + .article-item--no-image { + padding: 0; + min-height: unset; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/banner.css b/frontend/src/styles/components/banner.css new file mode 100644 index 0000000..ada0bcb --- /dev/null +++ b/frontend/src/styles/components/banner.css @@ -0,0 +1,18 @@ +.banner--header { + height: 12rem; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + overflow: hidden; +} + +.banner--header img { + min-height: 100%; +} + +@media (max-width: 767px) { + .banner--header { + height: 8rem; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/breadcrumbs.css b/frontend/src/styles/components/breadcrumbs.css new file mode 100644 index 0000000..40ca926 --- /dev/null +++ b/frontend/src/styles/components/breadcrumbs.css @@ -0,0 +1,42 @@ +.breadcrumbs { + background: #fff; + border-bottom: 1px solid var(--gray); + margin-bottom: -4px; + position: relative; +} + +.breadcrumbs__list { + display: flex; + align-items: center; + gap: 0.8rem; + padding: 0.8rem 5rem; +} + +.breadcrumbs__item { + line-height: 1.2rem; + color: #7c7c7c; + transition: 0.3s; + font-size: 1rem; + display: flex; + align-items: center; + gap: 0.8rem; +} + +a.breadcrumbs__item:hover { + color: var(--primary); +} + +a.breadcrumbs__item::after { + content: ''; + width: 1.4rem; + height: 1.4rem; + background: url('/icons/breadcrumbs_arrow.svg'); + display: flex; +} + +@media (max-width: 767px) { + .breadcrumbs__list { + flex-wrap: wrap; + padding: 0.8rem 0.5rem; + } +} diff --git a/frontend/src/styles/components/button.css b/frontend/src/styles/components/button.css new file mode 100644 index 0000000..ef7c8a4 --- /dev/null +++ b/frontend/src/styles/components/button.css @@ -0,0 +1,14 @@ +.button { + padding: 1.5rem; + background: var(--primary); + font-weight: 700; + font-size: 1.6rem; + line-height: 1.8rem; + color: #fff; + transition: 0.3s; + border-radius: 0.5rem; +} + +.button:hover { + background: var(--secondary); +} diff --git a/frontend/src/styles/components/calendar.css b/frontend/src/styles/components/calendar.css new file mode 100644 index 0000000..7b00a5d --- /dev/null +++ b/frontend/src/styles/components/calendar.css @@ -0,0 +1,115 @@ +.vanilla-calendar { + min-width: 100%; + padding: 0; +} + +.vanilla-calendar-days { + row-gap: 0; +} + +.vanilla-calendar-day { + height: 4.2rem; +} + +[data-calendar-theme=light] .vanilla-calendar-day__btn_today { + background: none; +} + +[data-calendar-theme=light] .vanilla-calendar-day__btn_today:hover { + color: inherit; +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn { + color: #9a9a9a; + font-family: 'Raleway', sans-serif; + border-radius: 0; +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn_weekend.vanilla-calendar-day__btn_prev:hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_holiday.vanilla-calendar-day__btn_prev:hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_weekend.vanilla-calendar-day__btn_next:hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_holiday.vanilla-calendar-day__btn_next:hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_weekend.vanilla-calendar-day__btn_prev.vanilla-calendar-day__btn_hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_holiday.vanilla-calendar-day__btn_prev.vanilla-calendar-day__btn_hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_weekend.vanilla-calendar-day__btn_next.vanilla-calendar-day__btn_hover, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_holiday.vanilla-calendar-day__btn_next.vanilla-calendar-day__btn_hover, +[data-calendar-theme=light] .vanilla-calendar-day__btn_weekend.vanilla-calendar-day__btn_selected, +[data-calendar-theme=light] .vanilla-calendar-day__btn_selected.vanilla-calendar-day__btn_prev, +[data-calendar-theme=light] .vanilla-calendar-day__btn_selected.vanilla-calendar-day__btn_next, +[data-calendar-theme=light] .vanilla-calendar-day__btn_selected.vanilla-calendar-day__btn_prev:hover, +[data-calendar-theme=light] .vanilla-calendar-day__btn_selected.vanilla-calendar-day__btn_next:hover { + background: transparent; +} + +[data-calendar-theme=light] .vanilla-calendar-day__btn_weekend.vanilla-calendar-day__btn_selected { + color: #eb5757; +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn:hover { + background: transparent; +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn_weekend, +[data-calendar-theme='light'] .vanilla-calendar-day__btn_holiday { + color: #eb5757; +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn_selected { + color: #000; + background: transparent; + position: relative; +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn_selected::before { + content: ''; + width: 0.8rem; + height: 0.8rem; + top: 0.9rem; + right: 0.3rem; + position: absolute; + border-radius: 50%; + background: var(--primary); +} + +[data-calendar-theme='light'] .vanilla-calendar-day__btn_selected:hover, +[data-calendar-theme=light] .vanilla-calendar-day__btn_selected.vanilla-calendar-day__btn_prev:hover { + color: #000; + background: #f1f1f1; +} + +.vanilla-calendar-month, +.vanilla-calendar-year { + font-weight: 500; + font-size: 1.6rem; +} + +.vanilla-calendar-day__btn { + font-size: 1.6rem; + font-weight: 500; +} + +.vanilla-calendar-week { + margin-bottom: 0.7rem; +} + +[data-calendar-theme='light'] .vanilla-calendar-week__day { + color: #4f4f4f; +} + +[data-calendar-theme='light'] .vanilla-calendar-week__day_weekend { + color: #eb5757; +} + +.vanilla-calendar-week__day { + font-weight: 700; + font-size: 1rem; + line-height: 1.4rem; +} + +.vanilla-calendar-header { + margin-bottom: 1.9rem; +} + +.vanilla-calendar-day__btn:not(.vanilla-calendar-day__btn_selected) { + pointer-events: none; +} \ No newline at end of file diff --git a/frontend/src/styles/components/checkbox.css b/frontend/src/styles/components/checkbox.css new file mode 100644 index 0000000..67543f0 --- /dev/null +++ b/frontend/src/styles/components/checkbox.css @@ -0,0 +1,35 @@ +.checkbox { + cursor: pointer; +} + +.checkbox__input { + display: none; +} + +.checkbox__input:checked~.checkbox__inner .checkbox__check img { + display: block; +} + +.checkbox__inner { + display: flex; + align-items: center; + gap: 1rem; + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; +} + +.checkbox__check { + width: 1.8rem; + height: 1.8rem; + border-radius: 0.3rem; + border: 1px solid #CFCFCF; + background: #fff; + display: flex; + align-items: center; + justify-content: center; +} + +.checkbox__check img { + display: none; +} \ No newline at end of file diff --git a/frontend/src/styles/components/contacts.css b/frontend/src/styles/components/contacts.css new file mode 100644 index 0000000..cceb831 --- /dev/null +++ b/frontend/src/styles/components/contacts.css @@ -0,0 +1,104 @@ +.contacts__map-container { + width: 100%; + max-width: 711px; + aspect-ratio: 711 / 414; +} + +.contacts__map { + width: 100%; + height: 100%; +} + +.contacts__container { + padding: 20px 25px 25px; + box-sizing: border-box; + display: flex; + flex-direction: column; + gap: 15px; +} + +.contacts__text-block { + display: flex; + flex-direction: column; + gap: 5px; +} +.contacts__block-email { + color: var(--secondary); +} + +.contacts__form { + width: 100%; + display: flex; + flex-wrap: wrap; + gap: 20px; +} + +.contacts__input { + box-sizing: border-box; + padding: 12px 13px 11px; + border: 1px solid var(--gray); +} + +.contacts__input::placeholder { + color: var(--placeholder-gray); + font-family: 'Raleway', sans-serif; + font-size: 13px; + font-weight: 500; +} + +.contacts__input_name { + width: calc(50% - 10px); +} + +.contacts__input_email { + width: calc(50% - 10px); +} + +.contacts__input_theme { + width: 100%; +} + +.contacts__input_message { + height: 160px; + width: 100%; + resize: none; +} +.contacts__submit-button { + padding: 12px 40px !important; +} +.contacts__policy { + color: var(--secondary); +} + +@media (max-width: 1439px) { + .contacts__map-container { + max-width: initial; + } +} + +@media (max-width: 767px) { + .contacts__map-container { + aspect-ratio: 360 / 260; + margin: 0 -2rem; + width: calc(100% + 4rem); + } + + .contacts__container { + padding: 15px 26.5px; + margin: 0 -2rem; + } + + .contacts__form { + gap: 15px; + } + + .contacts__input_name, + .contacts__input_email { + width: 100%; + } + + .contacts__submit-button { + padding: 15px 40px !important; + width: 100%; + } +} diff --git a/frontend/src/styles/components/error-page.css b/frontend/src/styles/components/error-page.css new file mode 100644 index 0000000..d6d3ab5 --- /dev/null +++ b/frontend/src/styles/components/error-page.css @@ -0,0 +1,56 @@ +.error-page { + min-height: 57.9rem; + background: url('/images/error_bg.jpg') top no-repeat; + background-size: cover; +} + +.error-page-500 { + background: url('/images/bg_500.jpg') top no-repeat; + background-size: cover; + color: #fff; +} + +.error-page__inner { + padding: 14.8rem 23.2rem; +} + +.error-page__title { + font-weight: 700; + font-size: 2rem; + line-height: 2.4rem; + margin-bottom: 2.5rem; +} + +.error-page__subtitle { + font-weight: 700; + font-size: 1.6rem; + line-height: 2rem; + margin-bottom: 2.5rem; + max-width: 31rem; +} + +.error-page__btn { + display: inline-flex; + justify-content: center; + width: 26.1rem; +} + +@media (max-width: 767px) { + .error-page { + min-height: unset; + background-position: top 0% right 27%; + } + + .error-page__inner { + padding: 23.8rem 0.8rem 11.2rem 0.8rem; + } + + .error-page__subtitle { + max-width: unset; + } + + .error-page__btn { + width: 100%; + box-sizing: border-box; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/event-item.css b/frontend/src/styles/components/event-item.css new file mode 100644 index 0000000..7fc06da --- /dev/null +++ b/frontend/src/styles/components/event-item.css @@ -0,0 +1,86 @@ +.event-item { + padding: 1.2rem 1.25rem 0; + box-sizing: border-box; + background: var(--bg); + width: 100%; + padding: 0; + border-bottom: 1px solid var(--gray); + border-left: 1px solid var(--gray); + margin-left: -1px; +} + +@media (max-width: 1024px) { + .event-item { + width: 100%; + } +} + +.event-item__image-container { + position: relative; + height: 30rem; +} + +.event-item__image-container img { + width: 100%; + height: 30rem; + object-fit: cover; +} + +.event-item__heading { + color: var(--white); + position: absolute; + left: 2.5rem; + bottom: 3rem; +} + +.event-item__title { + font-weight: 700; + font-size: 3.2rem; + line-height: 1.17; + margin-bottom: 5px; +} + +.event-item__subtitle { + font-weight: 700; + font-size: 2.4rem; +} + +.event-item__text { + padding: 2rem 2.5rem 2.5rem; + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.event-item__description-block { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 5px; +} + +@media (max-width: 767px) { + .event-item__heading { + left: 2.5rem; + bottom: 3.2rem; + } + + .event-item__image-container, + .event-item__image-container img { + height: 26rem; + } + + .event-item__title { + max-width: 50%; + font-size: 2rem; + } + + .event-item__subtitle { + font-size: 1.8rem; + } + + .event-item__text { + padding: 1.5rem 2.6rem 1.5rem; + gap: 1rem; + } +} diff --git a/frontend/src/styles/components/fonts.css b/frontend/src/styles/components/fonts.css new file mode 100644 index 0000000..a982584 --- /dev/null +++ b/frontend/src/styles/components/fonts.css @@ -0,0 +1,54 @@ +h1, +.h1 { + font-weight: 700; + font-size: 2rem; + line-height: 2.4rem; +} + +h2, +.h2 { + font-size: 3.6rem; + line-height: 4.6rem; +} + +h3, +.h3 { + font-size: 3.2rem; + line-height: 4.1rem; +} + +.subtitle-20 { + font-weight: 700; + font-size: 2rem; + line-height: 2.3rem; +} + +.subtitle-18 { + font-weight: 700; + font-size: 1.8rem; + line-height: 2.1rem; +} + +.subtitle-16 { + font-weight: 700; + font-size: 1.6rem; + line-height: 2rem; +} + +.subtitle-13 { + font-weight: 700; + font-size: 1.3rem; + line-height: 1.6rem; +} + +.text-13 { + font-weight: 500; + font-size: 1.3rem; + line-height: 1.9rem; +} + +.text-11 { + font-weight: 400; + font-size: 1.1rem; + line-height: 1.6rem; +} diff --git a/frontend/src/styles/components/hero.css b/frontend/src/styles/components/hero.css new file mode 100644 index 0000000..a267731 --- /dev/null +++ b/frontend/src/styles/components/hero.css @@ -0,0 +1,112 @@ +.hero__inner { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; +} + +.hero-banner { + grid-column: span 3; + min-height: 40rem; + position: relative; + display: flex; + align-items: flex-end; + justify-content: space-between; + padding: 0 3.6rem 3rem 11.7rem; +} + +.hero-banner__bg { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + z-index: -1; +} + +.hero-banner__bg::before { + content: ''; + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + background: linear-gradient(19.49deg, #000000 2.74%, rgba(0, 0, 0, 0) 52.71%); + z-index: 1; +} + +.hero-banner__bg img { + position: absolute; + width: 100%; + height: 100%; + object-fit: cover; +} + +.hero-banner__main { + font-size: 2.6rem; + font-weight: 700; + line-height: 3.2rem; + text-transform: uppercase; + transform: rotate(-90deg); + color: var(--primary); + position: absolute; + left: -1.5rem; + bottom: 7.5rem; +} + +.hero-banner__content { + max-width: 57rem; +} + +.hero-banner__title { + color: var(--white); + max-width: 34rem; + margin-bottom: 1.5rem; +} + +.hero-banner__text { + color: var(--white); +} + +@media (max-width: 767px) { + .most-read.hero__most-read { + display: none; + } + + .hero__container { + padding: 0; + } + + .hero__inner { + display: flex; + } + + .hero-banner { + width: 100%; + padding: 0 2rem 4rem 6.5rem; + flex-direction: column; + align-items: flex-start; + justify-content: flex-end; + gap: 1rem; + } + + .hero-banner::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: linear-gradient(19.49deg, #000000 2.74%, rgba(0, 0, 0, 0) 52.71%), + linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); + } + + .hero-banner__main { + left: -3.3rem; + bottom: 12.5rem; + } + + .hero-banner__content, + .hero-banner__tag { + position: relative; + z-index: 1; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/input.css b/frontend/src/styles/components/input.css new file mode 100644 index 0000000..6813ce7 --- /dev/null +++ b/frontend/src/styles/components/input.css @@ -0,0 +1,12 @@ +.input { + border: 1px solid #cfcfcf; + background: #fff; + padding: 1.2rem 1.3rem; + font-size: 1.3rem; + line-height: 2rem; + display: block; +} + +.input::placeholder { + color: #3a3a3a; +} diff --git a/frontend/src/styles/components/interview-item.css b/frontend/src/styles/components/interview-item.css new file mode 100644 index 0000000..c00a1d5 --- /dev/null +++ b/frontend/src/styles/components/interview-item.css @@ -0,0 +1,19 @@ +.interview-item__image-container { + position: relative; +} + +.interview-item__image-container > img { + width: 100%; + height: 21rem; + object-fit: cover; +} + +.interview-item-video__button { + position: absolute; + display: flex; + align-items: center; + color: white; + gap: 1.5rem; + left: 1.5rem; + bottom: 2rem; +} diff --git a/frontend/src/styles/components/menu-vertical.css b/frontend/src/styles/components/menu-vertical.css new file mode 100644 index 0000000..c0b6007 --- /dev/null +++ b/frontend/src/styles/components/menu-vertical.css @@ -0,0 +1,81 @@ +.menu-vertical { + padding: 2.5rem 5.6rem; +} + +.menu-vertical__inner { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 1.5rem; +} + +.menu-vertical__item { + display: flex; + align-items: center; + gap: 1.5rem; + font-weight: 600; + font-size: 1.3rem; + line-height: 1.5rem; + color: var(--secondary); + transition: 0.3s; +} + +.menu-vertical__item-icon img { + max-width: 2rem; +} + +.menu-vertical__item.is-active { + color: #000; +} + +.menu-vertical__item:hover { + color: var(--primary); +} + +.menu-vertical__head { + display: none; +} + +@media (max-width: 767px) { + .menu-vertical { + padding: 0; + position: relative; + } + + .menu-vertical__head { + padding: 1.7rem 0.5rem; + display: flex; + width: 100%; + justify-content: space-between; + align-items: center; + font-weight: 600; + font-size: 1.3rem; + line-height: 1.6rem; + color: var(--secondary); + } + + .menu-vertical__head.is-active svg { + transform: rotate(180deg); + } + + .menu-vertical__head svg { + transition: 0.3s; + } + + .menu-vertical__inner { + position: absolute; + left: -2rem; + top: 100%; + width: calc(100% + 4rem); + z-index: 1; + background: var(--bg); + padding: 2rem 2.5rem 3rem 2.5rem; + border-top: 1px solid var(--gray); + box-shadow: 0px 4px 4px 0px #00000026; + display: none; + } + + .menu-vertical__inner.is-active { + display: flex; + } +} diff --git a/frontend/src/styles/components/menu.css b/frontend/src/styles/components/menu.css new file mode 100644 index 0000000..2bf0f80 --- /dev/null +++ b/frontend/src/styles/components/menu.css @@ -0,0 +1,119 @@ +.menu__inner { + padding: 0.2rem; + display: grid; + grid-template-columns: repeat(6, 1fr); + column-gap: 0.5rem; + row-gap: 0.2rem; +} + +.menu-link { + position: relative; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + padding: 0 3.6rem; + box-shadow: 2px 2px 5px 0px #00000040; + border: 1px solid; + border-image-source: linear-gradient(0deg, #c2c2c2 0%, #ffffff 100%); + background: #f7f8f3; + min-height: 9.4rem; +} + +@media (max-width: 1023px) { + .menu-link { + padding: 0 2.1rem; + } +} + +.menu-link:hover .menu-link__bg { + opacity: 1; +} + +.menu-link__bg { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + transition: 0.3s; +} + +.menu-link__bg img { + position: absolute; + width: 100%; + height: 100%; + object-fit: cover; +} + +.menu-link__icon { + display: flex; + margin-bottom: 0.8rem; + position: relative; + z-index: 1; +} + +.menu-link__text { + font-weight: 600; + font-size: 1.2rem; + line-height: 1.4rem; + position: relative; + z-index: 1; +} + +@media (max-width: 767px) { + .menu { + padding: 1.5rem 0; + overflow: auto; + background: #edefe4; + } + + .menu::-webkit-scrollbar { + display: none; + } + + .menu__inner { + display: flex; + column-gap: 0.9rem; + } + + .menu-link { + min-width: 25rem; + flex-direction: row; + gap: 1.5rem; + min-height: 5.4rem; + padding: 1.6rem 2.3rem; + justify-content: flex-start; + align-items: center; + box-sizing: border-box; + } + + .menu__inner::after { + content: ''; + display: flex; + width: 2rem; + min-width: 2rem; + height: 2rem; + } + + .menu-link__bg { + display: none; + } + + .menu-link__icon { + width: 2rem; + margin: 0; + } + + .menu-link__icon img { + max-width: 100%; + } + + .menu-link__text { + font-size: 1.3rem; + line-height: 1.5rem; + color: var(--secondary); + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/modal.css b/frontend/src/styles/components/modal.css new file mode 100644 index 0000000..d72df13 --- /dev/null +++ b/frontend/src/styles/components/modal.css @@ -0,0 +1,70 @@ +.modal-overlay { + z-index: 999; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow-y: scroll; + background-color: rgba(0, 0, 0, .7); +} + +.modal-thank { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 57.2rem; + background: #fff; +} + +.modal-thank__close { + display: flex; + position: absolute; + right: 1.6rem; + top: 1.6rem; + cursor: pointer; +} + +.modal-thank__title { + padding: 2.4rem; + font-weight: 700; + font-size: 2rem; + line-height: 2.4rem; + text-align: center; + border-bottom: 1px solid var(--gray); +} + +.modal-thank__text { + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; + color: #2F2F2F; + padding: 2.1rem; + text-align: center; + border-bottom: 1px solid var(--gray); +} + +.modal-thank__footer { + padding: 2.4rem; + font-size: 1.3rem; + line-height: 2rem; + transition: 0.3s; + cursor: pointer; + text-align: center; +} + +.modal-thank__footer:hover { + color: var(--primary); +} + +@media (max-width: 767px) { + .modal-thank { + width: 32rem; + } + + .modal-thank__close { + right: 0.8rem; + top: 0.8rem; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/most-read.css b/frontend/src/styles/components/most-read.css new file mode 100644 index 0000000..602a2b1 --- /dev/null +++ b/frontend/src/styles/components/most-read.css @@ -0,0 +1,51 @@ +.most-read { + padding: 1.7rem 1.5rem; + display: flex; + background: #fff; +} + +.most-read__inner { + border: 1px solid var(--primary); + padding: 4.5rem 2.4rem; + width: calc(100% - 4.6rem); +} + +.most-read__title { + color: var(--secondary); + margin-bottom: 2rem; +} + +.most-read__link { + padding-bottom: 2rem; + margin-bottom: 2rem; + border-bottom: 1px solid var(--gray); +} + +.most-read__link:last-child { + padding-bottom: 0; + margin-bottom: 0; + border: 0; +} + +.most-read__link-inner { + transition: 0.3s; + font-size: 1.5rem; +} + +.most-read__link-inner:hover { + color: var(--primary); +} + +@media (max-width: 767px) { + .most-read { + margin: 0 -2rem; + padding: 1.3rem; + } + + .most-read__inner { + width: 100%; + box-sizing: border-box; + padding: 2.3rem; + /* width: calc(100% - 4.6rem); */ + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/nav.css b/frontend/src/styles/components/nav.css new file mode 100644 index 0000000..cf569a2 --- /dev/null +++ b/frontend/src/styles/components/nav.css @@ -0,0 +1,33 @@ +.nav { + display: flex; + align-items: center; + gap: 4rem; + font-weight: 700; + font-size: 1.4rem; + line-height: 1.6rem; + margin: 0 12px; +} + +@media (max-width: 768px) { + .nav { + display: grid; + grid-template-columns: 1fr 1fr; + justify-content: space-between; + gap: 2rem; + max-width: 234px; + margin: 2.9rem auto 3.6rem; + } + .nav .menu-item:nth-child(2n - 2) { + justify-self: right; + } +} + +.menu-item a { + color: #000; + white-space: nowrap; + transition: 0.3s; +} + +.menu-item a:hover { + color: var(--primary); +} diff --git a/frontend/src/styles/components/pagination.css b/frontend/src/styles/components/pagination.css new file mode 100644 index 0000000..ae4b4b8 --- /dev/null +++ b/frontend/src/styles/components/pagination.css @@ -0,0 +1,53 @@ +.pagination { + padding: 1.7rem; + display: flex; + align-items: center; + justify-content: center; + border-top: 1px solid var(--gray); + gap: 1.5rem; +} + +.pagination__list { + display: flex; + align-items: center; + gap: 1.5rem; +} + +.pagination__item { + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; + color: #000; + transition: 0.3s; +} + +a.pagination__item:hover { + color: var(--primary); +} + +.pagination__item.is-active { + font-weight: 700; +} + +.pagination__btn { + display: flex; + align-items: center; + gap: 0.2rem; + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; + color: #000; + transition: 0.3s; +} + +.pagination__btn:hover { + color: var(--primary); +} + +@media (max-width: 767px) { + .pagination { + border-top: 0; + border-bottom: 1px solid var(--gray); + margin: 0 -2rem; + } +} diff --git a/frontend/src/styles/components/partner-item.css b/frontend/src/styles/components/partner-item.css new file mode 100644 index 0000000..307fcee --- /dev/null +++ b/frontend/src/styles/components/partner-item.css @@ -0,0 +1,56 @@ +.partner-item { + width: 100%; + display: flex; + padding: 12px; + align-items: flex-start; +} + +.partner-item:not(:last-of-type) { + border-bottom: 1px solid var(--gray); +} + +.partner-item:hover { + cursor: pointer; +} + +.partner-item p { + transition: 0.3s; +} + +.partner-item:hover p { + color: var(--primary); +} + +.partner-item__text-container { + padding: 15px 25px 15px; + flex-shrink: 1; +} + +.partner-item__image-container { + flex-shrink: 0; + width: 33%; +} + +.partner-item__image-container img { + width: 100%; +} + +@media (max-width: 767px) { + .partner-item { + padding: 12px 20px; + flex-direction: column; + } + + .partner-item__image-container { + flex-shrink: 0; + width: 100%; + } + + .partner-item__text-container { + padding: 15px 7px 15px; + } + + .partner-item { + border-bottom: 1px solid var(--gray); + } +} diff --git a/frontend/src/styles/components/search-form.css b/frontend/src/styles/components/search-form.css new file mode 100644 index 0000000..a4966a9 --- /dev/null +++ b/frontend/src/styles/components/search-form.css @@ -0,0 +1,85 @@ +.search-form { + padding: 2rem 2.5rem 2.5rem 2.5rem; + border-bottom: 1px solid var(--gray); +} + +.search-form__wrapper { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1.5rem; +} + +.search-form__input-wrapper { + position: relative; + flex-grow: 1; +} + +.search-form__input { + width: 100%; + box-sizing: border-box; +} + +.search-form__clear { + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 1.3rem; + display: flex; + cursor: pointer; +} + +.search-form__clear svg rect { + transition: 0.3s; +} + +.search-form__clear:hover svg rect { + fill: var(--primary); +} + +.search-form__button { + width: 13rem; +} + +.search-form__text { + font-size: 1.1rem; + line-height: 1.6rem; + color: #2F2F2F; + margin-bottom: 1.5rem; +} + +.search-form__selects { + display: flex; + align-items: center; + gap: 0.4rem; +} + +@media (max-width: 767px) { + .search-form__selects { + flex-direction: column; + align-items: stretch; + } + + .ss-content { + z-index: 99999; + } + + .search-form { + padding: 1.5rem 2.5rem; + margin: 0 -2rem; + } + + .search-form__input-wrapper { + position: relative; + flex-grow: 1; + } + + .search-form__button { + width: 100%; + margin-top: 1.5rem; + } + + .search-preview { + margin-bottom: 2.7rem; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/section-title.css b/frontend/src/styles/components/section-title.css new file mode 100644 index 0000000..a1c4460 --- /dev/null +++ b/frontend/src/styles/components/section-title.css @@ -0,0 +1,10 @@ +.section-title { + padding: 2.5rem; + border-bottom: 1px solid var(--gray); +} + +@media (max-width: 767px) { + .section-title { + margin: 0 -2rem; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/select.css b/frontend/src/styles/components/select.css new file mode 100644 index 0000000..a857530 --- /dev/null +++ b/frontend/src/styles/components/select.css @@ -0,0 +1,62 @@ +.ss-main { + color: #2F2F2F; + min-height: 2.4rem; + padding: 0.3rem 1.1rem; + width: auto; + white-space: nowrap; + border-color: transparent; + background-color: transparent; + margin-left: -1.1rem; + border-radius: 0; + z-index: 99999; + outline: none; +} + +.ss-main:focus { + box-shadow: none; +} + +.ss-main .ss-values .ss-single { + display: flex; + margin: 0; + margin-right: 1rem; + align-items: center; + gap: 0.8rem; +} + +.ss-main .ss-arrow { + min-width: 12px; +} + +.ss-main.ss-open-below { + border-color: var(--gray); + border-bottom-color: transparent; + background: var(--bg); +} + +.ss-content .ss-list { + min-width: 13.7rem; + border-radius: 0; +} + +.ss-content { + min-width: 13.7rem; + padding-bottom: 0.9rem; + background: var(--bg); +} + +.ss-content .ss-list .ss-option { + gap: 0.8rem; + padding: 0 0.9rem; + color: #2F2F2F; + margin-top: 0.5rem; +} + +.ss-content .ss-list .ss-option:hover { + color: var(--primary); + background-color: transparent; +} + +.ss-content.ss-open-below { + border-radius: 0; +} \ No newline at end of file diff --git a/frontend/src/styles/components/shared.css b/frontend/src/styles/components/shared.css new file mode 100644 index 0000000..02b31a2 --- /dev/null +++ b/frontend/src/styles/components/shared.css @@ -0,0 +1,79 @@ +.tag { + font-size: 1.1rem; + border: 1px solid white; + border-radius: 5rem; + color: white; + padding: 0.1rem 1.2rem; +} + +.article-time { + display: flex; + align-items: center; + gap: 0.8rem; + margin-bottom: 0.5rem; +} + +.span-2 { + grid-column: span 2; +} + +.link::after { + content: ''; + width: 1.5rem; + height: 0.9rem; + margin-left: 0.8rem; + display: inline-block; + background-repeat: no-repeat; + background-image: url('/icons/arrow.svg'); +} + +.doc { + display: flex; + gap: 1rem; + padding-bottom: 20px; + margin-top: 2rem; + border-bottom: 0.1rem solid rgba(0, 0, 0, 0.1); +} + +.doc::before { + content: ''; + height: 3rem; + flex-shrink: 0; + width: 3.6rem; + background-repeat: no-repeat; + background-image: url('/icons/doc.svg'); +} + +.doc:last-child { + border-bottom: none; +} + +.mobile { + display: none !important; +} + +@media (max-width: 1024px) { + .desktop { + display: none !important; + } + + .mobile { + display: inherit !important; + } +} + +@media (max-width: 1300px) { + .footer__socials { + margin: 2rem 0; + } +} + +.suggestion-container { + display: flex; + width: 100%; + flex-wrap: wrap; +} + +.border-top { + border-top: 1px solid var(--gray); +} diff --git a/frontend/src/styles/components/single-partner-item.css b/frontend/src/styles/components/single-partner-item.css new file mode 100644 index 0000000..777d7b3 --- /dev/null +++ b/frontend/src/styles/components/single-partner-item.css @@ -0,0 +1,69 @@ +.single-partner-item { + width: 100%; + padding: 20px 25px 25px; + display: flex; + flex-direction: column; + gap: 10px; + border-bottom: 1px solid var(--gray); +} + +.subtitle_code { + color: var(--adv-gray); + font-size: 11px; + font-weight: 400; +} + +.single-partner__text-block { + width: 100%; + display: flex; + flex-direction: column; +} + +.single-partner__block-title { + margin-bottom: 10px; +} + +.content-middle ul, +.content-middle ol { + margin-bottom: 10px; + padding-left: 20px; +} + +.content-middle ol li { + list-style: decimal; + display: list-item; +} + +.content-middle li { + display: flex; + position: relative; + align-items: flex-start; +} + +.content-middle ul li::before { + content: ''; + display: block; + position: absolute; + flex-shrink: 0; + left: -12px; + top: 8px; + flex-grow: 0; + width: 3px; + height: 3px; + max-height: 3px; + overflow: visible; + border-radius: 50%; + background: var(--black); + margin-right: 10px; +} + +@media (max-width: 767px) { + .single-partner-item { + width: 100%; + padding: 15px 26.5px; + } + + .single-partner__block-title { + margin-bottom: 5px; + } +} \ No newline at end of file diff --git a/frontend/src/styles/components/socials.css b/frontend/src/styles/components/socials.css new file mode 100644 index 0000000..79a2c0e --- /dev/null +++ b/frontend/src/styles/components/socials.css @@ -0,0 +1,14 @@ +.socials { + display: flex; + align-items: center; + gap: 4rem; +} + +.social-link { + display: flex; + transition: 0.3s; +} + +.social-link:hover { + opacity: 0.7; +} diff --git a/frontend/src/styles/components/subscribe-form.css b/frontend/src/styles/components/subscribe-form.css new file mode 100644 index 0000000..30872ef --- /dev/null +++ b/frontend/src/styles/components/subscribe-form.css @@ -0,0 +1,24 @@ +.subscribe-form { + padding: 2.5rem 5.1rem 2.7rem 3.8rem; + background: #fff; + display: flex; + flex-direction: column; +} + +.subscribe-form__title { + margin-bottom: 2rem; +} + +.subscribe-form__text { + margin-bottom: 2rem; +} + +.subscribe-form__input { + margin-bottom: 2rem; + box-sizing: border-box; + width: 100%; +} + +.subscribe-form__btn { + width: 100%; +} \ No newline at end of file diff --git a/frontend/src/styles/components/subscription-form.css b/frontend/src/styles/components/subscription-form.css new file mode 100644 index 0000000..a6191a9 --- /dev/null +++ b/frontend/src/styles/components/subscription-form.css @@ -0,0 +1,115 @@ +.subscription-form { + padding: 2rem 2.5rem 2.5rem 2.5rem; + display: flex; + flex-direction: column; + align-items: flex-start; + position: relative; +} + +.subscription-form__bg { + position: absolute; + right: 0; + top: 0; + z-index: -1; +} + +.subscription-form__bg img:last-child { + display: none; +} + +.subscription-form__title { + font-weight: 500; + font-size: 1.3rem; + line-height: 2rem; + margin-bottom: 2.5rem; + color: #2f2f2f; +} + +.subscription-form__subtitle { + font-weight: 700; + font-size: 1.3rem; + line-height: 1.6rem; + margin-bottom: 2rem; +} + +.subscription-form__options { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 1rem; + margin-bottom: 2.5rem; +} + +.subscription-form__input { + width: 27.4rem; + margin-bottom: 2rem; + box-sizing: border-box; +} + +.subscription-form__btn { + width: 27.4rem; + margin-bottom: 2.5rem; +} + +.subscription-form__policy { + font-size: 1.1rem; + line-height: 1.6rem; + color: #2f2f2f; +} + +.subscription-form__policy a { + color: var(--secondary); +} + +.grid { + border-top: 1px solid var(--gray); + height: 100%; + display: flex; +} + +.grid__item { + flex: 1; +} + +.grid__item:first-child { + border-right: 1px solid var(--gray); +} + +@media (max-width: 767px) { + .subscription-section-title { + border-top: 1px solid var(--gray); + } + + .subscription-form { + padding: 1.5rem 0.8rem 1.5rem 0.8rem; + } + + .subscription-form__input { + width: 100%; + } + + .subscription-form__btn { + width: 100%; + } + + .subscription-form__bg { + right: -2rem; + } + + .subscription-form__bg img:first-child { + display: none; + } + + .subscription-form__bg img:last-child { + display: block; + } + + .articles-preview__show-next.subsctiption-back { + display: block; + margin-bottom: 0; + } + + .grid { + display: none; + } +} diff --git a/frontend/src/styles/components/suggestion-item.css b/frontend/src/styles/components/suggestion-item.css new file mode 100644 index 0000000..dffedcd --- /dev/null +++ b/frontend/src/styles/components/suggestion-item.css @@ -0,0 +1,28 @@ +.suggestion-item { + width: 50%; + flex-grow: 0; + box-sizing: border-box; + padding: 15px 25px; + background-color: var(--white); +} + +.suggestion-item:nth-of-type(2n + 1) { + border-right: 1px solid var(--gray); +} + +.suggestion-item:nth-of-type(-n + 2) { + border-bottom: 1px solid var(--gray); +} + +@media (max-width: 767px) { + .suggestion-item { + margin: 0 -2rem; + padding: 15px 25px; + width: calc(100% + 4rem); + border: none !important; + } + + .suggestion-item:not(:last-of-type) { + border-bottom: 1px solid var(--gray) !important; + } +} diff --git a/frontend/src/styles/components/tag.css b/frontend/src/styles/components/tag.css new file mode 100644 index 0000000..77508e5 --- /dev/null +++ b/frontend/src/styles/components/tag.css @@ -0,0 +1,8 @@ +.tag { + font-size: 1.1rem; + line-height: 1.6rem; + padding: 0.1rem 1.2rem; + border: 1px solid var(--white); + color: var(--white); + border-radius: 5rem; +} diff --git a/frontend/src/styles/components/to-top.css b/frontend/src/styles/components/to-top.css new file mode 100644 index 0000000..1a5a10c --- /dev/null +++ b/frontend/src/styles/components/to-top.css @@ -0,0 +1,19 @@ +.to-top { + display: flex; + align-items: center; + gap: 0.4rem; + font-size: 1.2rem; + line-height: 1.4rem; + color: #3f3f3f; + transition: 0.3s; +} + +.to-top:hover { + color: var(--primary); +} + +@media (max-width: 1024px) { + .to-top { + display: none; + } +} diff --git a/frontend/src/styles/components/upcoming-events.css b/frontend/src/styles/components/upcoming-events.css new file mode 100644 index 0000000..91399bb --- /dev/null +++ b/frontend/src/styles/components/upcoming-events.css @@ -0,0 +1,14 @@ +.upcoming-event { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding-bottom: 2rem; + margin-top: 2rem; +} + +.upcoming-event .link { + font-weight: 500; +} + +.upcoming-event:last-child { + padding-bottom: 0; + border-bottom: none; +} diff --git a/frontend/src/styles/layout/container.css b/frontend/src/styles/layout/container.css new file mode 100644 index 0000000..be0eb4e --- /dev/null +++ b/frontend/src/styles/layout/container.css @@ -0,0 +1,10 @@ +.container { + max-width: 1440px; + margin: 0 auto; +} + +@media (max-width: 767px) { + .container { + padding: 0 2rem; + } +} diff --git a/frontend/src/styles/layout/footer.css b/frontend/src/styles/layout/footer.css new file mode 100644 index 0000000..6f0b46d --- /dev/null +++ b/frontend/src/styles/layout/footer.css @@ -0,0 +1,86 @@ +.footer { + background: #fff; +} + +.footer-top { + border-top: 1px solid var(--gray); +} + +.footer-top__inner { + display: flex; + align-items: center; + justify-content: space-between; + padding: 3rem 6.9rem; +} + +@media (max-width: 1400px) { + .footer-top__inner { + flex-direction: column; + align-items: stretch; + } +} + +.footer__nav { + padding-right: 12.5rem; +} + +@media (max-width: 768px) { + .footer-top__inner { + padding: 0; + } + .footer__nav { + padding: 0; + } +} + +.footer-top__right { + padding-right: 13.9rem; +} + +.footer-bottom { + border-top: 1px solid var(--gray); +} + +.footer-bottom__inner { + padding: 3.2rem 11.2rem 4.2rem 11.2rem; + display: flex; + align-items: center; + justify-content: space-between; +} + +@media (max-width: 1300px) { + .footer-bottom__inner { + flex-direction: column; + } +} + +.footer-bottom__text { + font-size: 1.2rem; + color: #2f2f2f; + line-height: 2.6rem; + font-family: 'Roboto', sans-serif; +} + +.footer-bottom__link { + transition: 0.3s; +} + +.footer-bottom__link:hover { + color: var(--primary); +} + +@media (max-width: 768px) { + .footer__logo { + border-bottom: 1px solid var(--gray); + padding: 2.8rem 7.8rem 3.2rem; + text-align: center; + } + .footer__conatiner { + padding: 0; + } + .footer-bottom__inner { + padding: 0; + padding-top: 1.8rem; + padding-bottom: 2.4rem; + } +} diff --git a/frontend/src/styles/layout/header/header.css b/frontend/src/styles/layout/header/header.css new file mode 100644 index 0000000..965bebd --- /dev/null +++ b/frontend/src/styles/layout/header/header.css @@ -0,0 +1,140 @@ +.header { + border-bottom: 1px solid #cfcfcf; + background: #fff; +} + +.header__inner { + padding: 1.2rem 3.6rem; + display: flex; + align-items: center; + justify-content: space-between; +} + +.header__logo { + display: flex; + align-items: center; +} + +.header__logo img { + max-width: 100%; +} + +.header__right { + display: flex; + align-items: center; + gap: 9.6rem; +} + +@media (max-width: 1120px) { + .header__right { + gap: 4.8rem; + } +} + +.header__actions { + display: flex; + align-items: center; + gap: 4rem; +} + +.header-action { + display: flex; +} + +.header-action svg path { + transition: 0.3s; +} + +.header-action:hover svg path { + fill: var(--primary); +} + +.header__burger { + display: none; +} + +.header-mobile { + display: none; +} + +@media (max-width: 1023px) { + .nav.header__nav { + display: none; + } + + .socials.header__socials { + display: none; + } + + .header__burger { + display: flex; + transition: 0.3s; + } + + .header__burger img:last-child { + display: none; + } + + .header__burger.is-active { + transform: rotate(180deg); + } + + .header__burger.is-active img:first-child { + display: none; + } + + .header__burger.is-active img:last-child { + display: block; + } + + .header-mobile { + position: absolute; + width: 100%; + top: 100%; + display: flex; + flex-direction: column; + background: #fff; + transform: translateX(-100%); + transition: 0.3s; + z-index: 99; + } + + .header-mobile.is-active { + transform: translateX(0); + } + + .nav.header-mobile__nav { + padding: 4.5rem 7.9rem; + display: flex; + flex-direction: column; + align-items: flex-start; + max-width: unset; + margin: 0; + gap: 3rem; + border-top: 1px solid #cfcfcf; + } + + .socials.header-mobile__socials { + padding: 3.6rem 0 4.8rem 0; + justify-content: center; + border-top: 1px solid #cfcfcf; + } +} + +@media (max-width: 767px) { + .header { + position: relative; + } + + .header__inner { + padding: 1.5rem 0; + } + + .header__logo { + width: 15.8rem; + } + + .header__right { + gap: 3.3rem; + } +} diff --git a/frontend/src/styles/layout/header/header.ts b/frontend/src/styles/layout/header/header.ts new file mode 100644 index 0000000..3f6fdd2 --- /dev/null +++ b/frontend/src/styles/layout/header/header.ts @@ -0,0 +1,9 @@ +const headerBurger = document.querySelector('.header__burger'); +const mobileHeader = document.querySelector('.header-mobile'); + +if (headerBurger && mobileHeader) { + headerBurger.addEventListener('click', () => { + mobileHeader.classList.toggle('is-active'); + headerBurger.classList.toggle('is-active'); + }); +} \ No newline at end of file diff --git a/frontend/src/styles/pages/main.css b/frontend/src/styles/pages/main.css new file mode 100644 index 0000000..60d4d9c --- /dev/null +++ b/frontend/src/styles/pages/main.css @@ -0,0 +1,316 @@ +.content { + display: grid; + margin-top: 0.3rem; + grid-template-columns: 36.4rem 1fr 36.3rem; + grid-template-areas: 'left middle right'; +} + +.content-left { + grid-area: left; +} + +.content-middle { + grid-area: middle; +} + +.content-right { + grid-area: right; +} + +.content-right__link-item { + font-weight: 500; +} + +@media (max-width: 1439px) { + .content { + grid-template-columns: 36.4rem 1fr; + grid-template-areas: + 'left middle' + 'right right'; + } + + .content.content__search { + grid-template-areas: + 'middle middle' + 'right right'; + } +} + +@media (max-width: 767px) { + .content { + grid-template-columns: 1fr; + grid-template-areas: + 'middle' + 'left' + 'right'; + } + + .content-right { + margin: 0 -2rem; + padding-bottom: 3rem; + } +} + +.content-sidebar { + background: white; +} + +.content-sidebar-top { + padding: 2.5rem 3.3rem; +} + +.content-sidebar-top.no-top { + padding-top: 0; +} + +.content-sidebar__title { + text-align: center; + margin-bottom: 1.6rem; +} + +.upcoming-events { + max-width: 28.8rem; +} + +.upcoming-events__title { + margin-top: 1.6rem; +} + +.articles-preview { + display: flex; + flex-wrap: wrap; +} + +.articles-wrapper { + border-left: 0.1rem solid var(--gray); + border-right: 0.1rem solid var(--gray); + display: flex; + flex-direction: column; +} + +.articles-preview__show-next { + padding: 1.8rem 0 1.7rem; + grid-column: span 2; + width: 100%; + text-align: center; + border-top: 0.1rem solid var(--gray); + margin-top: -1px; + font-family: 'Raleway', sans-serif; + + transition: 0.3s; + font-size: 1.3rem; + display: flex; + justify-content: center; +} + +.articles-preview__show-next:hover { + color: var(--primary); +} + +.articles__spacer-container { + position: relative; + border-top: 1px solid var(--gray); + width: 100%; + height: 100%; + display: flex; + flex-grow: 1; +} + +.articles__spacer { + height: 100%; + width: 50%; +} + +.articles__spacer:first-of-type { + border-right: 1px solid var(--gray); +} + +.item-video__name { + padding: 2.5rem 3.8rem; + display: block; + transition: 0.3s; +} + +.item-video__name:hover { + color: var(--primary); +} + +.item-video__video-wrapper { + position: relative; + height: 20.8rem; +} + +.item-video__video-wrapper>img { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + object-fit: cover; +} + +.item-video__video-wrapper>img { + max-width: 100%; + max-height: 100%; + object-fit: cover; +} + +.item-video__button { + position: absolute; + display: flex; + align-items: center; + color: white; + gap: 1.5rem; + left: 3.9rem; + bottom: 1.8rem; +} + +.banner-left { + margin: 2.5rem auto 0; + height: 40rem; + width: 24rem; +} + +.banner-left a { + display: flex; +} + +.banner-middle { + height: 12rem; + max-height: 12rem; + width: 100%; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; +} + +.banner-middle img { + width: 100%; +} + +.content-right { + border-top: 0.1rem solid var(--gray); +} + +.law { + padding: 2.5rem 3.8rem; + border-top: 0.1rem solid var(--gray); + background: #fff; +} + +.content-right__most-read { + border-bottom: 1px solid var(--gray); +} + +@media (max-width: 768px) { + .banner-middle { + height: 8rem; + } + + .articles__spacer-container { + display: none; + } + + .banner-left { + width: 24rem; + margin: 2.5rem auto 0; + } + + .subscribe-form__input { + width: 100%; + box-sizing: border-box; + } +} + +@media (max-width: 767px) { + .content-right__most-read { + display: none; + } + + .articles-wrapper { + border: 0; + } + + .content-videos { + margin: 0 -2rem; + } + + .item-video__video-wrapper { + height: 208px; + } + + .item-video__video-wrapper>img { + position: absolute; + } + + .articles-preview__show-next { + border-bottom: 1px solid var(--gray); + /* margin-bottom: 2.7rem; */ + width: calc(100% + 4rem); + margin-left: -2rem; + } + + .content-sidebar { + margin: 0 -2rem; + } +} + +.event-calendar-mobile { + width: 100%; + display: flex; + flex-direction: column; + background-color: var(--white); + border-bottom: 1px solid var(--gray); +} + +@media (max-width: 767px) { + .event-calendar-mobile { + margin: 0 -2rem; + width: calc(100% + 4rem); + } +} + +.event-calendar__header { + display: flex; + padding: 15px 24px 13px; + align-items: flex-start; + justify-content: space-between; +} + +.event-calendar__wrapper { + display: none; +} + +.event-calendar__wrapper.is-active { + display: flex; + justify-content: center; +} + +.event-calendar__header.is-active svg { + transform: rotate(180deg); +} + +@media (max-width: 767px) { + .event-single { + margin: 0 -2rem; + } +} + +.w-full { + width: 100%; +} + +.article-single__content * { + font: revert; +} + +.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2), +.wp-block-gallery.has-nested-images.columns-default figure.wp-block-image:not(#individual-image):first-child:nth-last-child(2)~figure.wp-block-image:not(#individual-image) { + width: 100%; +} + +@media (max-width: 767px) { + .no-mobile-border { + border: none; + } +} \ No newline at end of file diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/frontend/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..75abdef --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/frontend/vite.config.js b/frontend/vite.config.js new file mode 100644 index 0000000..4175b7f --- /dev/null +++ b/frontend/vite.config.js @@ -0,0 +1,56 @@ +import { resolve } from 'path'; +import handlebars from 'vite-plugin-handlebars'; + +export default { + esbuild: { + supported: { + 'top-level-await': true, //browsers can handle top-level-await features + }, + }, + base: './', + plugins: [ + handlebars({ + partialDirectory: resolve(__dirname, 'src', 'partials'), + }), + ], + build: { + minify: false, + rollupOptions: { + input: { + main: resolve(__dirname, 'src', 'pages', 'index.html'), + materials: resolve(__dirname, 'src', 'pages', 'materials.html'), + materialsSingle: resolve( + __dirname, + 'src', + 'pages', + 'materials-single.html' + ), + events: resolve(__dirname, 'src', 'pages', 'events.html'), + eventSingle: resolve(__dirname, 'src', 'pages', 'event-single.html'), + notFound: resolve(__dirname, 'src', 'pages', '404.html'), + advertiser: resolve(__dirname, 'src', 'pages', 'advertiser.html'), + subscription: resolve(__dirname, 'src', 'pages', 'subscription.html'), + interviews: resolve(__dirname, 'src', 'pages', 'interviews.html'), + about: resolve(__dirname, 'src', 'pages', 'about.html'), + partners: resolve(__dirname, 'src', 'pages', 'partners.html'), + pages: resolve(__dirname, 'src', 'pages', 'pages.html'), + contacts: resolve(__dirname, 'src', 'pages', 'contacts.html'), + partnersSingle: resolve( + __dirname, + 'src', + 'pages', + 'partners-single.html' + ), + search: resolve(__dirname, 'src', 'pages', 'search.html'), + }, + output: { + entryFileNames: `assets/[name].js`, + chunkFileNames: `assets/[name].js`, + assetFileNames: `assets/[name].[ext]`, + }, + }, + }, + server: { + open: '/src/pages/pages.html', + }, +}; diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..257f7e0 --- /dev/null +++ b/functions.php @@ -0,0 +1,572 @@ + __('Основное меню', 'your-theme-domain'), + 'socials' => __('Соцсети', 'your-theme-domain'), + 'footer-bottom' => __('Нижнее меню в подвале', 'your-theme-domain'), + )); + + add_theme_support('custom-logo', array( + 'height' => 100, + 'width' => 400, + 'flex-height' => true, + 'flex-width' => true, + )); + + add_theme_support('post-thumbnails'); +} +add_action('after_setup_theme', 'theme_setup'); + +function theme_enqueue_styles_scripts() +{ + $style_ver = filemtime(get_template_directory() . '/frontend/dist/assets/main.css'); + $script_ver = filemtime(get_template_directory() . '/frontend/dist/assets/main2.js'); + + + wp_enqueue_style('main-style', get_template_directory_uri() . '/frontend/dist/assets/main.css', array(), $style_ver); + wp_enqueue_script('main-script2', get_template_directory_uri() . '/frontend/dist/assets/main2.js', array(), $script_ver, true); +} +add_action('wp_enqueue_scripts', 'theme_enqueue_styles_scripts'); + +add_filter('nav_menu_css_class', 'change_menu_item_css_class', 10, 4); +function change_menu_item_css_class($classes, $item, $args, $depth) +{ + // Удаляем нежелательные классы + $classes = array_diff($classes, array('page_item', 'page-item-' . $item->ID)); + $classes = array_diff($classes, array('page_item', 'page-item-' . $item->ID)); + + // Добавляем класс 'menu-item' + $classes[] = 'menu-item'; + + return $classes; +} + +function get_asset(string $path) +{ + return get_template_directory_uri() . '/frontend/dist/' . $path; +} + +function mytheme_widget_areas() +{ + // Регистрация левого сайдбара + register_sidebar(array( + 'name' => 'Левый сайдбар', + 'id' => 'left-sidebar', + 'description' => 'Виджеты в этой области будут показаны в левой части сайта.', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + )); + + // Регистрация правого сайдбара + register_sidebar(array( + 'name' => 'Правый сайдбар', + 'id' => 'right-sidebar', + 'description' => 'Виджеты в этой области будут показаны в правой части сайта.', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + )); +} +add_action('widgets_init', 'mytheme_widget_areas'); + + +class Upcoming_Events_Widget extends WP_Widget +{ + function __construct() + { + parent::__construct( + 'upcoming_events_widget', // ID виджета + 'Upcoming Events', // Название виджета + array('description' => 'Displays upcoming events') // Описание + ); + } + + public function widget($args, $instance) + { + include get_template_directory() . '/widgets/upcoming-events-widget-template.php'; + } + + // Форма в админ-панели для настройки виджета + public function form($instance) + { + $title = !empty($instance['title']) ? $instance['title'] : 'Новое название'; +?> +

+ + +

+', '', $output); + $output = str_replace('', '', $output); + // Заменяем разделитель на нужный нам класс. + $output = str_replace('»', '', $output); + // Заменяем теги ссылок. + $output = str_replace(']*>/', '', $output); + + return $output; +} + + + +function custom_pagination($query = null) +{ + global $wp_query; + $query = $query ?: $wp_query; + $current_page = max(1, get_query_var('paged')); + $total_pages = $query->max_num_pages; + + $show_items = 3; // Количество страниц для вывода в начале и в конце + $range = 1; // Диапазон страниц вокруг текущей страницы + + if (1 == $total_pages) { + return; // Если страница всего одна, пагинация не нужна + } + + echo ''; +} + + +/** + * param string $postType - тип поста + * param int $countPerPage - количество отображаемых постов на странице + * param string $orderBy - относительно какого поля будем проиводить сортировку + * param string $order - сортировка по возрастанию/убыванию (DESC,ASC) + * param string $categorySlug - slug категории из которой выводить посты + * + * */ +function get_post_query(string $postType, int $countPerPage, string $order, string $orderBy = 'date', string $categorySlug = null) +{ + $posts = new WP_Query([ + 'category_name' => $categorySlug, + 'post_type' => $postType, // Указываем нужный тип поста + 'posts_per_page' => $countPerPage, // Получаем только один самый последний пост + 'orderby' => $orderBy, // Сортируем по дате публикации + 'order' => $order // В порядке убывания + ]); + + return $posts; +} + + +function cyrillic_to_latin($title) +{ + $map = array( + 'а' => 'a', 'б' => 'b', 'в' => 'v', + 'г' => 'g', 'д' => 'd', 'е' => 'e', + 'ё' => 'yo', 'ж' => 'zh', 'з' => 'z', + 'и' => 'i', 'й' => 'j', 'к' => 'k', + 'л' => 'l', 'м' => 'm', 'н' => 'n', + 'о' => 'o', 'п' => 'p', 'р' => 'r', + 'с' => 's', 'т' => 't', 'у' => 'u', + 'ф' => 'f', 'х' => 'h', 'ц' => 'c', + 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', + 'ь' => '', 'ы' => 'y', 'ъ' => '', + 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', + ); + + $title = str_replace(array_keys($map), array_values($map), mb_strtolower($title)); + + // Дополнительно заменяем пробелы на дефисы и удаляем нежелательные символы + $title = preg_replace('/[^A-Za-z0-9-]+/', '-', $title); + + return $title; +} + +/*add_filter('sanitize_title', 'cyrillic_to_latin', 9); +add_filter('sanitize_file_name', 'cyrillic_to_latin', 9);*/ + +function my_theme_scripts() +{ + wp_enqueue_script('my-load-more', get_template_directory_uri() . '/js/load-more.js', array('jquery'), null, true); + + // Передаем переменные в скрипт + wp_localize_script('my-load-more', 'my_load_more_params', array( + 'ajaxurl' => admin_url('admin-ajax.php'), // URL для AJAX-запроса + 'posts' => json_encode((new WP_Query(array('post_type' => 'post', 'posts_per_page' => 10)))->query_vars), // Параметры запроса + 'current_page' => get_query_var('paged') ? get_query_var('paged') : 1, // Текущая страница + 'max_page' => (new WP_Query(array('post_type' => 'post', 'posts_per_page' => 10)))->max_num_pages // Максимальное количество страниц + )); +} +add_action('wp_enqueue_scripts', 'my_theme_scripts'); + + +function loadmore_ajax_handler() +{ + $args = json_decode(stripslashes($_POST['query']), true); + $args['paged'] = $_POST['page'] + 1; // следующая страница + $args['post_status'] = 'publish'; + $args['cat'] = [-17, -20, -21]; + + query_posts($args); + + if (have_posts()) : + while (have_posts()) : the_post(); + get_template_part('content', 'post'); + endwhile; + endif; + die; +} +add_action('wp_ajax_loadmore', 'loadmore_ajax_handler'); // для авторизованных пользователей +add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler'); // для неавторизованных пользователей + +/* + * Фильтр добавлен для модификации стандартной формы плагина Contact Form ( Срезаем span элементы, в которые оборачивается input ). + * Работает в связке с отключенными требованиями плагина - define( 'WPCF7_AUTOP', false ); + * В файле wp-config.php + * */ +add_filter('wpcf7_form_elements', function ($content) { + $content = preg_replace('/<(span).*?class="\s*(?:.*\s)?wpcf7-form-control-wrap(?:\s[^"]+)?\s*"[^\>]*>(.*)<\/\1>/i', '\2', $content); + return $content; +}); + +function show_post_image($post = null, $size = 'medium') +{ + if (has_post_thumbnail($post)) { + return get_the_post_thumbnail($post, $size); + } else { + // Вывод изображения-заглушки + return ''; + } +} + +function get_post_image($post = null) +{ + if (has_post_thumbnail($post)) { + return get_the_post_thumbnail_url($post, 'medium'); + } else { + return get_template_directory_uri() . '/noimage.jpg'; + } +} + +add_action('rest_api_init', function () { + register_rest_route('agroexpert/v1', '/posts-by-date/', array( + 'methods' => 'GET', + 'callback' => 'get_posts_by_date', + 'permission_callback' => '__return_true', // Доступно для чтения всеми + )); +}); + + +function get_posts_by_date($request) +{ + global $wpdb; // Глобальный объект базы данных WordPress + + // SQL-запрос для получения уникальных дат публикации постов + $query = " + SELECT DISTINCT DATE(post_date) as date + FROM {$wpdb->posts} + WHERE post_status IN ('publish', 'future') + AND post_type = 'post' + ORDER BY date DESC + "; + + // Выполнение запроса + $result = $wpdb->get_results($query); + + // Преобразование результатов в массив дат + $dates = array_map(function ($item) { + return $item->date; + }, $result); + + return new WP_REST_Response($dates, 200); +} + +function setup_future_hook() +{ + // Replace native future_post function with replacement + remove_action('future_event', '_future_post_hook'); + add_action('future_event', 'publish_future_post_now'); +} + +function publish_future_post_now($id) +{ + // Set new post's post_status to "publish" rather than "future." + wp_publish_post($id); +} + +add_action('init', 'setup_future_hook'); + +add_action('restrict_manage_posts', 'add_author_filter_to_posts_admin'); + +function add_author_filter_to_posts_admin() +{ + global $post_type; + + // Убедитесь, что этот фильтр применяется только к типу поста 'post' + if ('post' !== $post_type) { + return; + } + + // Получаем пользователей с ролью 'author' + $authors = get_users(array('role' => '', 'orderby' => 'display_name', 'order' => 'ASC')); + + // Проверяем, установлен ли фильтр + $selected = isset($_GET['custom_author']) ? $_GET['custom_author'] : ''; + + // Начинаем выводить HTML выпадающего списка + echo ''; +} + +add_action('pre_get_posts', 'filter_posts_by_custom_author'); + +function filter_posts_by_custom_author($query) +{ + global $pagenow; + + // Применяем фильтр только в админ-панели и только для основного запроса на странице списка постов + if (is_admin() && 'edit.php' === $pagenow && $query->is_main_query()) { + // Проверяем, установлен ли наш фильтр + if (!empty($_GET['custom_author'])) { + $custom_author_id = $_GET['custom_author']; + + // Фильтруем посты по автору + $query->set('author', $custom_author_id); + } + } +} + + +function custom_search_rewrite_rule() +{ + add_rewrite_rule( + '^search/$', + 'index.php?s=' . get_query_var('s'), + 'top' + ); + add_rewrite_rule('^search/?$', 'index.php?s=', 'top'); + + add_rewrite_rule('^search/page/([0-9]+)/?$', 'index.php?s=&paged=$matches[1]', 'top'); +} +add_action('init', 'custom_search_rewrite_rule'); + +add_filter('relevanssi_hits_filter', 'rlv_gather_categories', 99); +function rlv_gather_categories($hits) +{ + global $rlv_categories_present; + $rlv_categories_present = array(); + foreach ($hits[0] as $hit) { + $terms = get_the_terms($hit->ID, 'category'); + if (is_array($terms)) { + foreach ($terms as $term) { + $rlv_categories_present[$term->term_id] = $term->name; + } + } + } + asort($rlv_categories_present); + return $hits; +} + +function plural_form_extended($number, $forms, $additionalWord = '') +{ + $cases = array(2, 0, 1, 1, 1, 2); + $index = ($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]; + + // Склонение дополнительного слова, если оно передано + $additionalForm = ''; + if ($additionalWord) { + $additionalIndex = $index > 0 ? 1 : 0; // Простая логика для "найдено" + $additionalForm = $additionalWord[$additionalIndex] . ' '; + } + + return $additionalForm . $number . ' ' . $forms[$index]; +} + +add_filter('wpseo_breadcrumb_links', 'custom_search_breadcrumbs'); + +function custom_search_breadcrumbs($links) +{ + if (is_search()) { + // Получаем поисковый запрос + $search_query = get_search_query(); + + // Перебираем все ссылки, чтобы найти и изменить нужный элемент + foreach ($links as &$link) { + if (strpos($link['text'], 'Результаты поиска') !== false) { + if ($search_query === "") { + $link['text'] = 'Поиск'; + } else { + $link['text'] = 'Результаты поиска для запроса "' . esc_html($search_query) . '"'; + } + $link['url'] = home_url('/search/') . urlencode($search_query) . '/'; + break; // Прерываем цикл после изменения нужного элемента + } + } + unset($link); + } + + return $links; +} + +function include_future_posts_in_date_archive($query) +{ + // Убедимся, что мы находимся в основном запросе и на странице архива по дате + if ($query->is_main_query() && $query->is_date()) { + // Изменяем запрос так, чтобы он включал посты с датой публикации в будущем + $query->set('post_status', array('publish', 'future')); + } +} +add_action('pre_get_posts', 'include_future_posts_in_date_archive'); + + +function template_500_error($template) +{ + // Проверяем, является ли текущая страница страницей ошибки 500 + if (is_500()) { + return get_stylesheet_directory() . '/500.php'; // Путь к вашему собственному шаблону 500 ошибки + } + return $template; +} +add_filter('template_include', 'template_500_error'); + +function is_500() +{ + // Проверяем, является ли текущий код состояния HTTP 500 + return get_query_var('error', false) === 500; +} + +function change_image_size_dimensions() +{ + update_option('large_size_w', 1080); + update_option('large_size_h', 0); + + update_option('medium_size_w', 400); + update_option('medium_size_h', 0); +} + +add_action('init', 'change_image_size_dimensions'); + +function remove_srcset_attribute($attr) +{ + if (isset($attr['srcset'])) { + unset($attr['srcset']); // Удаляем srcset + } + return $attr; +} +add_filter('wp_get_attachment_image_attributes', 'remove_srcset_attribute', 10, 1); + + +add_filter('big_image_size_threshold', '__return_false'); + +function auto_add_category_by_slug_to_new_post($post_ID, $post, $update) +{ + $category_slug = 'all-events'; // Slug рубрики для добавления + $category = get_term_by('slug', $category_slug, 'category'); + + // Если рубрика с таким slug существует + if ($category && !has_category($category->term_id, $post_ID)) { + wp_set_post_categories($post_ID, array($category->term_id), true); + } +} +add_action('save_post', 'auto_add_category_by_slug_to_new_post', 10, 3); + + +function get_category_name($post = null) +{ + $categories = get_the_category($post); + $categories = array_filter($categories, function (WP_Term $category) { + return $category->slug !== 'all-events'; + }); + $categories = array_values($categories); + $category_name = !empty($categories) ? esc_html($categories[0]->name) : ''; + + return $category_name; +} diff --git a/header.php b/header.php new file mode 100644 index 0000000..a37ef3e --- /dev/null +++ b/header.php @@ -0,0 +1,164 @@ + +> + + + + + + + + + + <?php wp_title(); ?> + + + + + + + + + + + + + + +> + +
+ + + + + + +
+
+ +
+
+ +
+ +
+
+
+
+ + +
+ + +
+
+
+ +
+
+

Самое читаемое

+ +
+
+
+
+
+ + +
+
+ +
+ +
+ + + \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..a114fa2 --- /dev/null +++ b/index.php @@ -0,0 +1,27 @@ + +
+ +
+ +

+ +
+
+ 'post', + 'posts_per_page' => 10, + 'paged' => $paged + ); + $query = new WP_Query($args); + ?> + $query]); ?> +
+ +
+ diff --git a/js/load-more.js b/js/load-more.js new file mode 100644 index 0000000..4b621ff --- /dev/null +++ b/js/load-more.js @@ -0,0 +1,31 @@ +jQuery(function($){ + $('.articles-preview__show-next').click(function(){ + var button = $(this), + data = { + 'action': 'loadmore', + 'query': my_load_more_params.posts, + 'page' : my_load_more_params.current_page + }; + + $.ajax({ + url : my_load_more_params.ajaxurl, + data : data, + type : 'POST', + beforeSend : function ( xhr ) { + button.text('Загрузка...'); // изменяем текст кнопки + }, + success : function( data ){ + if( data ) { + button.text('Загрузить ещё'); + $('.articles-preview').append(data); + my_load_more_params.current_page++; + + if ( my_load_more_params.current_page == my_load_more_params.max_page ) + button.remove(); // если последняя страница, удаляем кнопку + } else { + button.remove(); // если мы достигли конца, удаляем кнопку + } + } + }); + }); +}); diff --git a/noimage.jpg b/noimage.jpg new file mode 100644 index 0000000..66a3e7a Binary files /dev/null and b/noimage.jpg differ diff --git a/partials/category-menu-for-category.php b/partials/category-menu-for-category.php new file mode 100644 index 0000000..5347771 --- /dev/null +++ b/partials/category-menu-for-category.php @@ -0,0 +1,34 @@ + '17, 20, 21', + 'order' => 'ASC', + 'taxonomy' => 'category', + 'hide_empty' => false +); +$categories = get_categories($arg_cat); +$current_term = get_queried_object(); + +// Получаем ID текущей категории или категорий поста +$current_term_ids = []; +if (is_single()) { + $current_term_ids = wp_get_post_categories($current_term->ID); +} elseif (is_category()) { + $current_term_ids[] = $current_term->term_id; +} + +$firstElement = array_shift($categories); +array_push($categories, $firstElement); + + foreach ($categories ?? [] as $cat) { + if ($cat->slug === 'uncategorized') continue; + $icon = get_field('icon', 'category_' . $cat->term_id); + $bg_image = get_field('bg_image', 'category_' . $cat->term_id); + + $class = in_array($cat->term_id, $current_term_ids) ? 'is-active' : ''; + + echo " + + $cat->name + + "; + } diff --git a/partials/category-menu.php b/partials/category-menu.php new file mode 100644 index 0000000..f413f6a --- /dev/null +++ b/partials/category-menu.php @@ -0,0 +1,35 @@ + '17, 20, 21', + 'orderby' => 'name', + 'order' => 'ASC', + 'hide_empty' => false +)); + + +$firstElement = array_shift($categories); +array_push($categories, $firstElement); + +foreach ($categories as $category) { + if ($category->slug === 'uncategorized') continue; + + $icon = get_field('icon', 'category_' . $category->term_id); + $bg_image = get_field('bg_image', 'category_' . $category->term_id); + $category_link = get_category_link($category->term_id); +?> + + + + name); ?> + + \ No newline at end of file diff --git a/partials/featured-posts.php b/partials/featured-posts.php new file mode 100644 index 0000000..6d895a2 --- /dev/null +++ b/partials/featured-posts.php @@ -0,0 +1,27 @@ +Еще по теме
'; + + foreach ($featured_posts as $post) { + setup_postdata($post); +?> +
+
+
+ + Сегодня, +
+
+ +

+
+
+'; + wp_reset_postdata(); +} +?> \ No newline at end of file diff --git a/partials/latest-interview-post.php b/partials/latest-interview-post.php new file mode 100644 index 0000000..c899575 --- /dev/null +++ b/partials/latest-interview-post.php @@ -0,0 +1,28 @@ +have_posts()) : + while ($posts->have_posts()) : + $posts->the_post(); +?> + + +

Интервью не найдено.

+ \ No newline at end of file diff --git a/partials/latest-legislation-posts.php b/partials/latest-legislation-posts.php new file mode 100644 index 0000000..5d1be6b --- /dev/null +++ b/partials/latest-legislation-posts.php @@ -0,0 +1,28 @@ +
+

Законодательство

+ +
\ No newline at end of file diff --git a/partials/menu-footer-bottom.php b/partials/menu-footer-bottom.php new file mode 100644 index 0000000..ea2f21b --- /dev/null +++ b/partials/menu-footer-bottom.php @@ -0,0 +1,24 @@ +post_name === 'politika-konfidenczialnosti') $file = $privacyPolicy['file']['url']; + + if($menu_item->post_name === 'svidetelstvo-o-registraczii-elektronnogo-smi') $file = $privacyPolicy['file_certificate']['url']; + + echo "" . $menu_item->title . ""; + } else { + echo "" . $menu_item->title . ""; + } + +} diff --git a/partials/menu-primary.php b/partials/menu-primary.php new file mode 100644 index 0000000..44e82f7 --- /dev/null +++ b/partials/menu-primary.php @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/partials/menu-socials.php b/partials/menu-socials.php new file mode 100644 index 0000000..4028e0a --- /dev/null +++ b/partials/menu-socials.php @@ -0,0 +1,18 @@ +title; + $url = $menu_item->url; + + echo ""; +} diff --git a/partials/most-read-posts.php b/partials/most-read-posts.php new file mode 100644 index 0000000..ba6ce83 --- /dev/null +++ b/partials/most-read-posts.php @@ -0,0 +1,32 @@ +prefix}posts p + JOIN {$wpdb->prefix}post_views pv ON p.ID = pv.id AND pv.type = 4 + WHERE p.post_status = 'publish' AND p.post_type = 'post' + ORDER BY pv.count DESC + LIMIT 3; +"; + +$top_posts = $wpdb->get_results($query); + +// Вывод результатов +if (!empty($top_posts)) { + foreach ($top_posts as $post) { + $permalink = get_permalink($post->ID); + $title = get_the_title($post->ID); +?> + +Нет просмотренных постов.

'; +} +?> \ No newline at end of file diff --git a/partials/pinned-post.php b/partials/pinned-post.php new file mode 100644 index 0000000..594502b --- /dev/null +++ b/partials/pinned-post.php @@ -0,0 +1,24 @@ + + + +
+ ID, 'large'); ?> +
+

Главное

+
+

+ ID); ?> +

+

+ ID); ?> +

+
+
+
+ + \ No newline at end of file diff --git a/partials/post-list.php b/partials/post-list.php new file mode 100644 index 0000000..6eb9ca3 --- /dev/null +++ b/partials/post-list.php @@ -0,0 +1,37 @@ +have_posts()) { + while ($query->have_posts()) { + $post_count++; + $query->the_post(); + get_template_part('content', 'post', ['full_width' => $post_count === 1 && $large_first_image]); + if ($post_count === ($large_first_image ? 5 : 4)) { + $banners = wp_is_mobile() ? get_field('banner_between_posts_mobile', 'option') : get_field('banner_between_posts', 'option'); + if($banners){ + $rand_keys = array_rand($banners, 1); + if (isset($banners[$rand_keys]) && !empty($banners[$rand_keys]['image_banner'])) { + echo ''; + } + } + + } + } + wp_reset_postdata(); +} +?> + + \ No newline at end of file diff --git a/partials/related-posts.php b/partials/related-posts.php new file mode 100644 index 0000000..93f6f8b --- /dev/null +++ b/partials/related-posts.php @@ -0,0 +1,33 @@ +term_id; + }, $categories); + + $args = array( + 'category__in' => $category_ids, + 'post__not_in' => array($current_post_id), + 'posts_per_page' => 4, + ); + + $related_posts_query = new WP_Query($args); + + if ($related_posts_query->have_posts()) { + + echo '
Читайте также:
'; + echo '
'; + + while ($related_posts_query->have_posts()) { + $related_posts_query->the_post(); + get_template_part('content', 'post'); + } + + echo '
'; + wp_reset_postdata(); + } +} +?> \ No newline at end of file diff --git a/partials/rubrics-mobile.php b/partials/rubrics-mobile.php new file mode 100644 index 0000000..6af7b4e --- /dev/null +++ b/partials/rubrics-mobile.php @@ -0,0 +1,57 @@ + '17, 20, 21', + 'order' => 'ASC', + 'taxonomy' => 'category', + 'hide_empty' => false +); +$categories = get_categories($arg_cat); +$current_term = get_queried_object(); + +// Получаем ID текущей категории или категорий поста +$current_term_ids = []; +if (is_single()) { + $current_term_ids = wp_get_post_categories($current_term->ID); +} elseif (is_category()) { + $current_term_ids[] = $current_term->term_id; +} + +$firstElement = array_shift($categories); +array_push($categories, $firstElement); +?> + \ No newline at end of file diff --git a/search.php b/search.php new file mode 100644 index 0000000..f8cce99 --- /dev/null +++ b/search.php @@ -0,0 +1,138 @@ + + +
+ +
+

Поиск

+
+ +
+ +
+ + + + +
+
+
+
+ + +
+ +

+
+
+ + +
+ +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/sidebar-left.php b/sidebar-left.php new file mode 100644 index 0000000..1d37165 --- /dev/null +++ b/sidebar-left.php @@ -0,0 +1,41 @@ + + + + + + + + + + + + +
+
+

Самое читаемое

+ +
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/sidebar-right.php b/sidebar-right.php new file mode 100644 index 0000000..5035768 --- /dev/null +++ b/sidebar-right.php @@ -0,0 +1,47 @@ + +
+
+

Самое читаемое

+ +
+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/single-events.php b/single-events.php new file mode 100644 index 0000000..60c770e --- /dev/null +++ b/single-events.php @@ -0,0 +1,55 @@ + + +slug; +?> +
+ +
+

post_title ?>

+
+
+
+
+

Организатор

+

+
+
+

Дата

+

+
+
+

Место проведения

+

+
+ +
+

Телефон

+

+
+ +
+

О конференции

+

+
+
+ +
+ +
+

+

+
+
+ +
+ Все мероприятия +
+
+
+
+
+ + + \ No newline at end of file diff --git a/single.php b/single.php new file mode 100644 index 0000000..093da68 --- /dev/null +++ b/single.php @@ -0,0 +1,76 @@ + + + + + +
+ + +
+
+ + + + + + +
+ +
+ +

+ +

+ + + + + + + +
+ +
+
+ + + + +
+

Еще по теме

+
+ +
+ 'partners', + 'post_status' => 'publish', + 'order' => 'ASC', + 'posts_per_page' => 4 + ]; + $posts = get_posts($args); + $counter = 0; + foreach ($posts as $post) : ?> +
+ +

+
+
+ +
+ + На главную +
+
+
+
+
+ + + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..c4019c2 --- /dev/null +++ b/style.css @@ -0,0 +1,3 @@ +/* +Theme Name: Agroexpert +*/ \ No newline at end of file diff --git a/templates/about.php b/templates/about.php new file mode 100644 index 0000000..0de6a20 --- /dev/null +++ b/templates/about.php @@ -0,0 +1,28 @@ + + + + + +
+ +
+

+
+ +
+ +
+ На главную +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/templates/advertisers.php b/templates/advertisers.php new file mode 100644 index 0000000..0cacc63 --- /dev/null +++ b/templates/advertisers.php @@ -0,0 +1,27 @@ + + + +
+ +
+

+
+
+ $advertisers])?> +
+ На главную +
+
+
+
+
+ + diff --git a/templates/contacts.php b/templates/contacts.php new file mode 100644 index 0000000..1ee7380 --- /dev/null +++ b/templates/contacts.php @@ -0,0 +1,121 @@ + + + +
+ +
+

+
+
+
+
+
+ +
+
+

Адрес

+

+
+
+

Телефон

+

+
+
+

E-mail

+

+
+
+ +
+

Написать нам

+ +

+
+
+ На главную +
+
+
+
+
+ + + + + + diff --git a/templates/materials.php b/templates/materials.php new file mode 100644 index 0000000..b2432a5 --- /dev/null +++ b/templates/materials.php @@ -0,0 +1,28 @@ + + + +
+ +
+

Материалы

+
+
+ 'post', + 'posts_per_page' => 10, + 'paged' => $paged + ); + $query = new WP_Query($args); + ?> + $query, 'large_first_image' => false]); ?> +
+ +
+ \ No newline at end of file diff --git a/templates/partners.php b/templates/partners.php new file mode 100644 index 0000000..b21404c --- /dev/null +++ b/templates/partners.php @@ -0,0 +1,39 @@ + + + +
+ +
+

+
+
+ have_posts()) : + while ($partners->have_posts()) : + $partners->the_post(); + ?> + +
+ +
+
+

+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/templates/subscribetonews.php b/templates/subscribetonews.php new file mode 100644 index 0000000..2bc88c3 --- /dev/null +++ b/templates/subscribetonews.php @@ -0,0 +1,71 @@ + + + + +
+ +
+

+
+
+
+ + +
+

+

Выбор необходимых рубрик для подписки:

+
+ '17,20, 21', + 'order' => 'ASC', + 'taxonomy' => 'category', + 'hide_empty' => false + ); + $categories = get_categories($arg_cat); + + + $firstElement = array_shift($categories); + array_push($categories, $firstElement); + foreach ($categories ?? [] as $key => $cat) { + if ($cat->slug === 'uncategorized') continue; + ?> + + +
+ + +

+
+ + На главную +
+
+
+
+
+ + + + + diff --git a/widgets/upcoming-events-widget-template.php b/widgets/upcoming-events-widget-template.php new file mode 100644 index 0000000..82440be --- /dev/null +++ b/widgets/upcoming-events-widget-template.php @@ -0,0 +1,49 @@ + \ No newline at end of file