chore: перевести проект на SLM-структуру и добавить SVG-спрайты

- Добавлены devDependencies: svg-sprite, postcss-preset-mantine, postcss-simple-vars, colorette
- Добавлен npm-скрипт `sprite` для генерации SVG-спрайтов
- Обновлены настройки и расширения VS Code
- Переименованы слои: entities → business, features → infrastructure, shared/ui → ui
- Обновлены шаблоны генерации (.templates) под новые слои
- Обновлены path-алиасы в tsconfig.json: убран префикс @/, добавлены алиасы по слоям
- Импорт в src/app/page.tsx переведён на алиас слоя
- Удалён postcss.config.mjs
- Добавлен скрипт scripts/create-svg-sprite.js
- Добавлены исходные SVG-иконки и сгенерированные спрайты
- Добавлен модуль src/shared/sprites/icons.generated.ts
- Добавлены глобальные стилевые токены: variables.css, media.css
- Применён медиа-токен в src/screens/home/styles/home.module.css
- Добавлен AGENTS.md с инструкциями для AI-ассистента
This commit is contained in:
2026-04-28 09:19:27 +03:00
parent 7382499886
commit a544d41a03
41 changed files with 2061 additions and 140 deletions

View File

@@ -1,5 +1,5 @@
import type { Metadata } from 'next';
import { HomeScreen } from '@/screens/home';
import { HomeScreen } from 'screens/home';
export const metadata: Metadata = {
title: 'Главная',

View File

@@ -2,4 +2,8 @@
display: flex;
align-items: center;
min-height: 100vh;
@media (--md) {
display: none;
}
}

View File

@@ -0,0 +1,7 @@
/**
* Имена иконок спрайта «icons».
* @generated — файл создан автоматически (npm run sprite), не редактировать вручную.
*/
export type IconsIconName =
| 'arrow-down'
| 'arrow-right'

View File

@@ -0,0 +1,4 @@
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.0701 14.4301L12.0001 20.5001L5.93005 14.4301" stroke="var(--icon-color-1, currentColor)" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 3.5V20.33" stroke="var(--icon-color-1, currentColor)" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 431 B

View File

@@ -0,0 +1,3 @@
<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.2503 10.0003C18.2503 10.1992 18.1713 10.39 18.0307 10.5307L12.1973 16.364C11.9044 16.6569 11.4296 16.6569 11.1367 16.364C10.8438 16.0711 10.8438 15.5962 11.1367 15.3033L15.6897 10.7503L1.66699 10.7503C1.25278 10.7503 0.916992 10.4145 0.916992 10.0003C0.916992 9.58611 1.25278 9.25033 1.66699 9.25033L15.6897 9.25033L11.1367 4.69732C10.8438 4.40443 10.8438 3.92956 11.1367 3.63666C11.4296 3.34377 11.9044 3.34377 12.1973 3.63666L18.0307 9.47C18.1713 9.61065 18.2503 9.80141 18.2503 10.0003Z" fill="var(--icon-color-1, currentColor)"/>
</svg>

After

Width:  |  Height:  |  Size: 667 B

View File

View File

@@ -0,0 +1,15 @@
@custom-media --xs (max-width: 575px);
@custom-media --sm (min-width: 576px);
@custom-media --md (min-width: 768px);
@custom-media --lg (min-width: 992px);
@custom-media --xl (min-width: 1200px);
@custom-media --2xl (min-width: 1408px);
@custom-media --3xl (min-width: 1920px);
@custom-media --h-xs (min-height: 667px);
@custom-media --h-sm (min-height: 702px);
@custom-media --h-md (min-height: 810px);
@custom-media --h-lg (min-height: 900px);
@custom-media --h-xl (min-height: 1000px);
@custom-media --h-xxl (min-height: 1100px);
@custom-media --h-xxxl (min-height: 1200px);

View File

@@ -0,0 +1,102 @@
:root {
/* ========================================
* Цвета
* ======================================== */
/* Фоновые */
--color-bg: #ffffff;
--color-bg-hero: #edf3f9;
--color-bg-accent: #f2f8fa;
--color-bg-dark: #08050d;
/* Текстовые */
--color-text: #08050d;
--color-text-secondary: #4e5566;
--color-text-tertiary: #8a8f9c;
/* Бордеры */
--color-border: #d9dde5;
--color-border-light: #e8ebf3;
/* Скроллбар */
--color-scrollbar: #e1eff4;
/* Акцент */
--color-accent: #129d9d;
/* ========================================
* Шрифты
* ======================================== */
--font-display: 'Biocad Display', sans-serif;
--font-serif: 'Lora', serif;
--font-sans: 'Noto Sans', sans-serif;
/* ========================================
* Отступы
* ======================================== */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-7: 28px;
--space-8: 32px;
--space-9: 36px;
--space-10: 40px;
--space-11: 44px;
--space-12: 48px;
--space-13: 52px;
--space-14: 56px;
--space-15: 60px;
--space-16: 64px;
--space-17: 68px;
--space-18: 72px;
--space-19: 76px;
--space-20: 80px;
--space-21: 84px;
--space-22: 88px;
--space-23: 92px;
--space-24: 96px;
--space-25: 100px;
--space-26: 104px;
--space-27: 108px;
--space-28: 112px;
--space-29: 116px;
--space-30: 120px;
--space-31: 124px;
--space-32: 128px;
--space-33: 132px;
--space-34: 136px;
--space-35: 140px;
--space-36: 144px;
--space-37: 148px;
--space-38: 152px;
--space-39: 156px;
--space-40: 160px;
--space-41: 164px;
--space-42: 168px;
--space-43: 172px;
--space-44: 176px;
--space-45: 180px;
--space-46: 184px;
--space-47: 188px;
--space-48: 192px;
--space-49: 196px;
--space-50: 200px;
/* ========================================
* Скругления
* ======================================== */
--radius-1: 12px;
--radius-2: 18px;
--radius-3: 24px;
--radius-4: 36px;
--radius-full: 800px;
/* ========================================
* Layout
* ======================================== */
--content-width: 1728px;
--content-padding: 48px;
}

0
src/ui/.gitkeep Normal file
View File