From ba18cb07f0a38d3401d12e95f9d0d8ccf847dd4c Mon Sep 17 00:00:00 2001 From: BOHA Date: Sat, 6 Jun 2026 23:18:39 +0200 Subject: [PATCH] =?UTF-8?q?feat(mui):=20kit=20primitives=20=E2=80=94=20Pag?= =?UTF-8?q?eHeader,=20EmptyState,=20LoadingState,=20FilterBar,=20StatCard?= =?UTF-8?q?=20+=20DataTable=20onRowClick/rowDanger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/admin/pages/UiKit.tsx | 174 ++++++++++++++++++++++++++++++++++ src/admin/ui/Button.tsx | 10 +- src/admin/ui/DataTable.tsx | 22 ++++- src/admin/ui/EmptyState.tsx | 52 ++++++++++ src/admin/ui/FilterBar.tsx | 26 +++++ src/admin/ui/LoadingState.tsx | 30 ++++++ src/admin/ui/PageHeader.tsx | 48 ++++++++++ src/admin/ui/StatCard.tsx | 85 +++++++++++++++++ src/admin/ui/index.ts | 6 ++ 9 files changed, 450 insertions(+), 3 deletions(-) create mode 100644 src/admin/ui/EmptyState.tsx create mode 100644 src/admin/ui/FilterBar.tsx create mode 100644 src/admin/ui/LoadingState.tsx create mode 100644 src/admin/ui/PageHeader.tsx create mode 100644 src/admin/ui/StatCard.tsx diff --git a/src/admin/pages/UiKit.tsx b/src/admin/pages/UiKit.tsx index afd95db..933f070 100644 --- a/src/admin/pages/UiKit.tsx +++ b/src/admin/pages/UiKit.tsx @@ -1,4 +1,5 @@ import { useState } from "react"; +import { Link as RouterLink } from "react-router-dom"; import ScopedCssBaseline from "@mui/material/ScopedCssBaseline"; import Box from "@mui/material/Box"; import Stack from "@mui/material/Stack"; @@ -17,9 +18,41 @@ import { DataTable, DateField, type DataColumn, + PageHeader, + EmptyState, + LoadingState, + FilterBar, + StatCard, } from "../ui"; import { useTheme } from "../../context/ThemeContext"; +const BoxIcon = ( + + + +); + +const InboxIcon = ( + + + + +); + interface DemoRow { id: number; name: string; @@ -53,6 +86,7 @@ export default function UiKit() { const [date, setDate] = useState("2026-06-06"); const [sortBy, setSortBy] = useState("name"); const [sortDir, setSortDir] = useState<"asc" | "desc">("asc"); + const [lastClicked, setLastClicked] = useState(null); const onSort = (key: string) => { if (sortBy === key) setSortDir((d) => (d === "asc" ? "desc" : "asc")); @@ -185,6 +219,146 @@ export default function UiKit() { Informace. + + {/* ── Phase 6 primitives ── */} + + Kit — Phase 6 Primitives + + PageHeader — title only + + + PageHeader — with subtitle + actions + + + + + } + /> + + EmptyState — icon + action + Přidat první položku} + /> + + EmptyState — title only + + + LoadingState + + + FilterBar + + + + + +