-
-
-
-
-
setSearch(event.target.value)}
- placeholder="Поиск по сотрудникам"
- className="app-input w-full rounded-lg py-2.5 pl-9 pr-3 text-sm"
+
+
-
+
+
+
+ setSearch(event.target.value)}
+ placeholder="Поиск по сотрудникам"
+ className="app-input w-full rounded-lg py-2.5 pl-9 pr-3 text-sm"
+ />
+
+
{filteredEmployees.map((employee) => {
diff --git a/frontend/src/app/equipment/page.tsx b/frontend/src/app/equipment/page.tsx
index 4104acf6..015ed0fe 100644
--- a/frontend/src/app/equipment/page.tsx
+++ b/frontend/src/app/equipment/page.tsx
@@ -7,12 +7,17 @@ import { useUser } from "@/contexts/UserContext";
import Link from "next/link";
import { usePathname, useRouter, useSearchParams } from "next/navigation";
import { Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
-import { Archive, ArrowRightLeft, ArrowUpDown, Check, ChevronDown, ChevronRight, Copy, Download, ExternalLink, Filter, MessageSquare, Monitor, Pencil, Plus, QrCode, Search, Shield, Trash2, Wrench } from "lucide-react";
+import { Archive, ArrowRightLeft, Check, ChevronDown, ChevronRight, Copy, Download, ExternalLink, Filter, MessageSquare, Monitor, Pencil, Plus, QrCode, Search, Shield, Trash2, Wrench } from "lucide-react";
import { SearchableSelectSingle } from "@/components/shared/SearchableSelect";
import { CommentComposer, CommentDeleteButton } from "@/components/shared/CommentControls";
import { formatDate, formatMoney } from "@/lib/shared";
import { useEquipmentPage } from "@/hooks/useEquipmentPage";
import { Modal } from "@/components/ui";
+import { CompactSortMenu, type CompactSortOption } from "@/components/ui/CompactSortMenu";
+import { CompactFilterPanel } from "@/components/ui/CompactFilterMenu";
+import { HorizontalChipScroller } from "@/components/ui/HorizontalChipScroller";
+import { ModulePrimaryAction } from "@/components/ui/ModulePrimaryAction";
+import { AutoRevealStickyHeader } from "@/components/ui/AutoRevealStickyHeader";
import type { Equipment, EquipmentTransferHistoryEntry, MaintenanceRecord } from "@/types/api";
const listModeMeta = [
@@ -22,12 +27,12 @@ const listModeMeta = [
] as const;
const orderingOptions = [
- { value: "-created_at", label: "Сначала новые" },
- { value: "created_at", label: "Сначала старые" },
- { value: "name", label: "По названию" },
- { value: "purchase_date", label: "По дате покупки ↑" },
- { value: "-purchase_date", label: "По дате покупки ↓" },
-];
+ { value: "-created_at", label: "Сначала новые", icon: "date-desc" },
+ { value: "created_at", label: "Сначала старые", icon: "date-asc" },
+ { value: "name", label: "По названию", icon: "alphabetical" },
+ { value: "purchase_date", label: "По дате покупки ↑", icon: "purchase-date-asc" },
+ { value: "-purchase_date", label: "По дате покупки ↓", icon: "purchase-date-desc" },
+] satisfies readonly CompactSortOption[];
/* ──── status badges ──── */
const statusMeta: Record = {
@@ -477,16 +482,15 @@ function EquipmentPageContent() {
) : (
+
{/* Header */}
-
-
Оборудование
-
+ icon={
}
+ label="Добавить оборудование"
+ />
{actionError && {actionError}
}
@@ -504,6 +508,7 @@ function EquipmentPageContent() {
/>