,
@@ -25,6 +26,7 @@ export function Products() {
return (
diff --git a/src/components/Main/Projects.tsx b/src/components/Main/Projects.tsx
index 4d928ef..401b6d7 100644
--- a/src/components/Main/Projects.tsx
+++ b/src/components/Main/Projects.tsx
@@ -44,7 +44,7 @@ import { IProject, Media } from '../../type/Project';
// }
export const Project = forwardRef>(
- ({ src, title, tags, media }, ref) => {
+ ({ src, title, tags, media, year }, ref) => {
const [buffering, setBuffering] = useState(true);
return (
@@ -72,7 +72,10 @@ export const Project = forwardRef>(
)}
-
{title}
+
{tags.map(tag => (
diff --git a/src/components/Main/ProjectsSlider.tsx b/src/components/Main/ProjectsSlider.tsx
index 88b7d66..58eccb1 100644
--- a/src/components/Main/ProjectsSlider.tsx
+++ b/src/components/Main/ProjectsSlider.tsx
@@ -2,10 +2,13 @@ import { SliderWithScaling } from '../../ui/SliderWithScaling';
import { Title } from '../../ui/Title';
import { projects } from '../../consts/projects';
import { Project } from './Projects';
+import { useWindowWidth } from '../../hooks/useWindowWidth';
export function ProjectsSlider() {
+ const width = useWindowWidth();
+
return (
-
+
Большой опыт в работе с
промышленными предприятиями и учебными заведениями
@@ -13,8 +16,14 @@ export function ProjectsSlider() {
= 1024
+ ? ['31.69vw', '31.56vw', '48vw', '48vw']
+ : width >= 640
+ ? ['66.01vw', '66vw', '93.75vw', '93.75vw']
+ : ['91.11vw', '91.11vw', '91.11vw', '91.11vw']
+ }
+ className="pb-10 max-sm:pb-20"
childClassName="flex flex-col justify-stretch h-full"
controlsPosition={'bottom'}
/>
diff --git a/src/components/Main/SliderControls.tsx b/src/components/Main/SliderControls.tsx
index 166df3d..431e25e 100644
--- a/src/components/Main/SliderControls.tsx
+++ b/src/components/Main/SliderControls.tsx
@@ -3,16 +3,16 @@ import { ArrowRightIcon } from '../../components/icons/ArrowRightIcon';
export function SliderControls({
slidesCount = 6,
- height = 66,
- width = 132,
+ height,
+ width,
slide = 0,
onLeftClick,
onRightClick,
className,
}: {
slidesCount?: number;
- width?: number;
- height?: number;
+ width: number;
+ height: number;
slide: number;
onLeftClick: () => void;
onRightClick: () => void;
@@ -22,7 +22,7 @@ export function SliderControls({
return (
-
+
@@ -59,13 +59,13 @@ export function SliderControls({
diff --git a/src/components/Main/Teaching.tsx b/src/components/Main/Teaching.tsx
index 0483dc5..b637371 100644
--- a/src/components/Main/Teaching.tsx
+++ b/src/components/Main/Teaching.tsx
@@ -123,7 +123,7 @@ function TeachingFeaturesForOtherScreens() {
/>
-
+
Видеозапись обучения
@@ -143,7 +143,7 @@ function TeachingFeaturesForOtherScreens() {
/>
-
+
Управление процессом
@@ -164,7 +164,7 @@ function TeachingFeaturesForOtherScreens() {
/>
-
+
Статистика обучения
@@ -174,7 +174,7 @@ function TeachingFeaturesForOtherScreens() {
![]()
-
+
-
{order}
+
[0{order}]
diff --git a/src/consts/projects.ts b/src/consts/projects.ts
index ae50f00..df62643 100644
--- a/src/consts/projects.ts
+++ b/src/consts/projects.ts
@@ -6,8 +6,10 @@ export const projects: IProject
[] = [
tags: ['Симулятор'],
title: 'Симулятор погрузчика',
media: Media.img,
+ year: '2024',
},
{
+ year: '2024',
media: Media.video,
src: [
'src/assets/projects/operator.mp4',
@@ -20,16 +22,19 @@ export const projects: IProject[] = [
src: 'src/assets/projects/plane.png',
tags: ['Симулятор', 'VR-приложение'],
title: 'L 410 NG Aircraft',
+ year: '2024',
media: Media.img,
},
{
src: 'src/assets/projects/hangar.png',
+ year: '2024',
tags: ['Симулятор', 'VR-приложение'],
title: 'Сборка-разборка вертолётного двигателя',
media: Media.img,
},
{
src: 'src/assets/projects/trains.png',
+ year: '2024',
tags: ['Симулятор', 'VR-приложение'],
title: 'Тренажер РЖД: ЭП2Д, Иволга, ЭП20, ТЭ33А, ТЭМ2',
media: Media.img,
@@ -38,10 +43,12 @@ export const projects: IProject[] = [
src: 'src/assets/projects/laboratory.png',
tags: ['Симулятор', 'VR-приложение'],
title: 'Учебная лаборатория определения жирности молока',
+ year: '2024',
media: Media.img,
},
{
src: 'src/assets/projects/train_big.jpg',
+ year: '2024',
tags: ['Симулятор'],
title: 'Симулятор машиниста',
media: Media.img,
diff --git a/src/type/Project.ts b/src/type/Project.ts
index f67891b..a887d40 100644
--- a/src/type/Project.ts
+++ b/src/type/Project.ts
@@ -7,5 +7,6 @@ export interface IProject {
src: TMedia extends Media.img ? string : string[];
title: string;
tags: string[];
+ year: string;
media: TMedia;
}
diff --git a/src/ui/SliderWithScaling.tsx b/src/ui/SliderWithScaling.tsx
index 4648730..ef6a6e4 100644
--- a/src/ui/SliderWithScaling.tsx
+++ b/src/ui/SliderWithScaling.tsx
@@ -22,7 +22,10 @@ export function SliderWithScaling({
controlsPosition: 'top' | 'bottom';
}) {
const width = useWindowWidth();
- const baseoffset = (-width / 1600) * 507 + 8;
+ const baseoffset =
+ width >= 1024
+ ? (-width / 1600) * 507 + 8
+ : (-width * +minWidth.slice(0, -2)) / 100 + 8;
const [slide, setSlide] = useState(0);
const [sliderOffset, setSliderOffset] = useState(baseoffset);
@@ -150,11 +153,13 @@ export function SliderWithScaling({
onLeftClick={prevSlide}
onRightClick={nextSlide}
slidesCount={slides.length}
+ width={width >= 640 ? 132 : ((width - 32) / 328) * 196}
+ height={width >= 640 ? 66 : 58}
className={
- 'absolute right-0 ' +
+ 'absolute ' +
(controlsPosition === 'top'
? 'top-[75px]'
- : 'bottom-[100px] self-end')
+ : 'bottom-0 sm:self-end self-center')
}
/>