diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
new file mode 100644
index 0000000..b6b9e95
--- /dev/null
+++ b/.github/copilot-instructions.md
@@ -0,0 +1,110 @@
+
+ - [x] Verify that the copilot-instructions.md file in the .github directory is created.
+
+- [x] Clarify Project Requirements
+
+
+- [x] Scaffold the Project
+
+
+- [ ] Customize the Project
+
+
+- [ ] Install Required Extensions
+
+
+ - [x] Compile the Project
+
+
+ - [x] Create and Run Task
+
+
+ - [x] Launch the Project
+
+
+- [ ] Ensure Documentation is Complete
+
+
+
+- Work through each checklist item systematically.
+- Keep communication concise and focused.
+- Follow development best practices.
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..570ce78
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,15 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "dev",
+ "type": "shell",
+ "command": "cmd",
+ "args": [
+ "/c",
+ "set PATH=C:\\Users\\sa\\node-portable\\nodejs;%PATH% && npm run dev"
+ ],
+ "isBackground": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 911e79f..ce15999 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,7 @@
"name": "corp.front",
"version": "0.1.0",
"dependencies": {
+ "lucide-react": "^0.574.0",
"next": "16.1.6",
"react": "19.2.3",
"react-dom": "19.2.3"
@@ -4535,6 +4536,14 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.574.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.574.0.tgz",
+ "integrity": "sha512-dJ8xb5juiZVIbdSn3HTyHsjjIwUwZ4FNwV0RtYDScOyySOeie1oXZTymST6YPJ4Qwt3Po8g4quhYl4OxtACiuQ==",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
diff --git a/package.json b/package.json
index 5a54f4d..13ed780 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"lint": "eslint"
},
"dependencies": {
+ "lucide-react": "^0.574.0",
"next": "16.1.6",
"react": "19.2.3",
"react-dom": "19.2.3"
diff --git a/public/logo.png b/public/logo.png
new file mode 100644
index 0000000..52d84ec
Binary files /dev/null and b/public/logo.png differ
diff --git a/public/logo.webp b/public/logo.webp
new file mode 100644
index 0000000..09dd9eb
Binary files /dev/null and b/public/logo.webp differ
diff --git a/public/logo1.svg b/public/logo1.svg
new file mode 100644
index 0000000..33aab17
--- /dev/null
+++ b/public/logo1.svg
@@ -0,0 +1,195 @@
+
+
+
diff --git a/src/app/departments/page.tsx b/src/app/departments/page.tsx
new file mode 100644
index 0000000..eac2f5b
--- /dev/null
+++ b/src/app/departments/page.tsx
@@ -0,0 +1,10 @@
+export default function DepartmentsPage() {
+ return (
+
+
+
Отделы
+
Раздел в разработке. Здесь будут списки отделов и контакты.
+
+
+ );
+}
diff --git a/src/app/documents/page.tsx b/src/app/documents/page.tsx
new file mode 100644
index 0000000..47754e3
--- /dev/null
+++ b/src/app/documents/page.tsx
@@ -0,0 +1,10 @@
+export default function DocumentsPage() {
+ return (
+
+
+
Документы
+
Раздел в разработке. Здесь будут договоры, отчёты и файлы.
+
+
+ );
+}
diff --git a/src/app/employees/page.tsx b/src/app/employees/page.tsx
new file mode 100644
index 0000000..609c6b9
--- /dev/null
+++ b/src/app/employees/page.tsx
@@ -0,0 +1,192 @@
+"use client";
+
+import { Bell, Building2, FileSignature, FileText, Home as HomeIcon, MessageSquare, Search, Users, Wallet } from "lucide-react";
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+
+const employees = [
+ { id: 1, name: "Константин Макаев", role: "Руководитель проектов", status: "Онлайн", department: "ИТ" },
+ { id: 2, name: "Виктория Зацарина", role: "Дизайнер", status: "Недавно", department: "Маркетинг" },
+ { id: 3, name: "Алексей Пономарёв", role: "Разработчик", status: "Оффлайн", department: "ИТ" },
+ { id: 4, name: "Эдуард Иванов", role: "Директор", status: "Онлайн", department: "Финансы" },
+];
+
+const weekdays = ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"];
+
+const calendarWeeks = [
+ ["", "", "", "", "1", "2", "3"],
+ ["4", "5", "6", "7", "8", "9", "10"],
+ ["11", "12", "13", "14", "15", "16", "17"],
+ ["18", "19", "20", "21", "22", "23", "24"],
+ ["25", "26", "27", "28", "", "", ""],
+];
+
+export default function EmployeesPage() {
+ const pathname = usePathname();
+ const sortedEmployees = [...employees].sort((a, b) => a.name.localeCompare(b.name, "ru"));
+
+ const navLinkClass = (href: string) =>
+ `flex items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-50 ${
+ pathname === href ? "bg-sky-50 text-sky-700 ring-1 ring-sky-100" : "text-gray-700"
+ }`;
+
+ const navIconClass = (href: string) => (pathname === href ? "text-sky-700" : "text-gray-400");
+
+ return (
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
Всего: {employees.length}
+
+
+
+
+ {sortedEmployees.map((employee) => {
+ const isOnline = employee.status === "Онлайн";
+ const statusColor = isOnline ? "text-green-600" : employee.status === "Недавно" ? "text-amber-600" : "text-gray-500";
+ const dotColor = isOnline ? "bg-green-500" : employee.status === "Недавно" ? "bg-amber-500" : "bg-gray-400";
+
+ return (
+
+
+ {employee.name
+ .split(" ")
+ .slice(0, 2)
+ .map((part) => part[0])
+ .join("")}
+
+
+
{employee.name}
+
{employee.role}
+
+
+ {employee.status}
+ •
+ {employee.department}
+
+
+
+ );
+ })}
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/favicon.ico b/src/app/favicon.ico
index 718d6fe..5a0f9fd 100644
Binary files a/src/app/favicon.ico and b/src/app/favicon.ico differ
diff --git a/src/app/finances/page.tsx b/src/app/finances/page.tsx
new file mode 100644
index 0000000..82c2c71
--- /dev/null
+++ b/src/app/finances/page.tsx
@@ -0,0 +1,10 @@
+export default function FinancesPage() {
+ return (
+
+
+
Финансы
+
Раздел в разработке. Здесь появится аналитика и отчётность.
+
+
+ );
+}
diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
new file mode 100644
index 0000000..eef6e31
--- /dev/null
+++ b/src/app/login/page.tsx
@@ -0,0 +1,74 @@
+import Link from "next/link";
+
+export default function Login() {
+ return (
+
+
+
+
+ Войти в аккаунт
+
+
+ Используйте телефон или почту, чтобы продолжить.
+
+
+
+
+ Продолжая, вы соглашаетесь с условиями использования и подтверждаете ознакомление с политикой конфиденциальности.
+
+
+
+
+ );
+}
diff --git a/src/app/messages/page.tsx b/src/app/messages/page.tsx
new file mode 100644
index 0000000..f932cb5
--- /dev/null
+++ b/src/app/messages/page.tsx
@@ -0,0 +1,10 @@
+export default function MessagesPage() {
+ return (
+
+
+
Сообщения
+
Раздел в разработке. Здесь появятся чаты и диалоги.
+
+
+ );
+}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 295f8fd..35c42b7 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,65 +1,241 @@
-import Image from "next/image";
+"use client";
+
+import { Bell, Bookmark, Building2, FileSignature, FileText, Heart, HeartHandshake, Home as HomeIcon, MessageSquare, Search, Star, Users, Wallet } from "lucide-react";
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+
+const feedItems = [
+ {
+ id: 1,
+ author: "Алексей Пономарёв",
+ time: "2 часа назад",
+ text: "Обновил подборку треков для фокуса. Делюсь плейлистом, если тоже любите работать под легкий электро." ,
+ tags: ["Музыка", "Работа"],
+ actions: { likes: 42, comments: 8, saves: 5 },
+ },
+ {
+ id: 2,
+ author: "Виктория Зацарина",
+ time: "3 часа назад",
+ text: "Собрали командой фотографии с последней пробежки в парке. Город оживает, когда выходит солнце." ,
+ tags: ["Спорт", "Фото"],
+ actions: { likes: 65, comments: 12, saves: 7 },
+ },
+ {
+ id: 3,
+ author: "Unity C#",
+ time: "5 часов назад",
+ text: "Сегодня делимся лучшими гайдами по микроанимациям в интерфейсах. Собрали 7 примеров с кодом и видео." ,
+ tags: ["Дизайн", "Guides"],
+ actions: { likes: 88, comments: 16, saves: 21 },
+ },
+];
+
+const weekdays = ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"];
+
+const calendarWeeks = [
+ ["", "", "", "", "1", "2", "3"],
+ ["4", "5", "6", "7", "8", "9", "10"],
+ ["11", "12", "13", "14", "15", "16", "17"],
+ ["18", "19", "20", "21", "22", "23", "24"],
+ ["25", "26", "27", "28", "", "", ""],
+];
export default function Home() {
+ const pathname = usePathname();
+
+ const navLinkClass = (href: string) =>
+ `flex items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-50 ${
+ pathname === href ? "bg-sky-50 text-sky-700 ring-1 ring-sky-100" : "text-gray-700"
+ }`;
+
+ const navIconClass = (href: string) => (pathname === href ? "text-sky-700" : "text-gray-400");
+
return (
-
-
-
-
-
- To get started, edit the page.tsx file.
-
-
- Looking for a starting point or more instructions? Head over to{" "}
-
- Templates
- {" "}
- or the{" "}
-
- Learning
- {" "}
- center.
-
-
-
);
}
diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx
new file mode 100644
index 0000000..788e8f3
--- /dev/null
+++ b/src/app/register/page.tsx
@@ -0,0 +1,111 @@
+import Link from "next/link";
+
+export default function Register() {
+ return (
+
+
+
+
+ Регистрация
+
+
+ Создайте новый аккаунт, указав имя и контактные данные.
+
+
+
+
+ Регистрируясь, вы принимаете условия использования и подтверждаете ознакомление с политикой конфиденциальности.
+
+
+
+
+ );
+}
diff --git a/src/app/requests/page.tsx b/src/app/requests/page.tsx
new file mode 100644
index 0000000..b9e1443
--- /dev/null
+++ b/src/app/requests/page.tsx
@@ -0,0 +1,10 @@
+export default function RequestsPage() {
+ return (
+
+
+
Заявления
+
Раздел в разработке. Здесь появятся заявки и согласования.
+
+
+ );
+}