Frontend Renewal

This commit is contained in:
root
2025-10-22 13:13:48 +00:00
parent d6ddf12c04
commit 1f8906bc3d
11 changed files with 93 additions and 196 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

+1 -1
View File
@@ -35,7 +35,7 @@ export function MaterialTailwindControllerProvider({ children }) {
openSidenav: false,
sidenavColor: "gray",
sidenavType: "white",
transparentNavbar: true,
transparentNavbar: false,
fixedNavbar: true,
openConfigurator: false,
};
+49 -9
View File
@@ -926,15 +926,55 @@ export function Stacks() {
</div>
)}
<div className="grid gap-6 md:justify-end md:items-center">
<div id="collect" className="mt-8 flex flex-col gap-4 md:flex-row md:items-start md:gap-6">
{selectedStackIds.length > 0 && (
<div className="w-full md:w-3/4">
<div className="flex flex-col gap-3 text-sm text-gray-300">
<div className="flex flex-wrap items-center gap-2">
{selectedStackIds.map((id) => {
const stack = stacksById.get(id);
const name = stack?.Name || `Stack ${id}`;
const isFiltered = filteredStackIdSet.has(id);
const isVisibleOnPage = visiblePageStackIds.has(id);
return (
<button
key={id}
type="button"
onClick={() => handleChipRemove(id)}
className="inline-flex items-center gap-2 rounded-full border border-purple-500/60 bg-purple-500/10 px-3 py-1 text-purple-100 transition hover:border-purple-400 hover:bg-purple-500/20"
>
<span>{name}</span>
{!isFiltered && (
<span className="text-xs uppercase tracking-wide text-amber-300">Ausgefiltert</span>
)}
{isFiltered && !isVisibleOnPage && (
<span className="text-xs uppercase tracking-wide text-blue-300">Andere Seite</span>
)}
<span className="text-xs font-semibold text-purple-200">x</span>
</button>
);
})}
</div>
<button
type="button"
onClick={clearSelection}
className="mt-1 text-xs font-medium text-gray-400 underline underline-offset-2 transition hover:text-gray-200"
>
Auswahl aufheben
</button>
</div>
</div>
)}
<div className="w-full md:w-1/4 md:ml-auto">
<Button
className="w-full bg-arcticBlue-500 hover:bg-arcticBlue-600"
onClick={handleBulkRedeploy}
disabled={bulkActionDisabled}
>
{bulkButtonLabel}
</Button>
</div>
<Button
className="w-full bg-arcticBlue-500 hover:bg-arcticBlue-600"
onClick={handleBulkRedeploy}
disabled={bulkActionDisabled}
>
{bulkButtonLabel}
</Button>
</div>
</CardBody>
</Card>
@@ -1019,7 +1059,7 @@ export function Stacks() {
})}
</div>
<PaginationControls disabled={loading || Boolean(error)} />
</div>
</div >
);
}
+1 -111
View File
@@ -47,7 +47,6 @@ export function Configurator() {
const [stars, setStars] = React.useState(0);
const sidenavColors = {
white: "from-gray-100 to-gray-100 border-gray-200",
dark: "from-black to-black border-gray-200",
green: "from-green-400 to-green-600",
orange: "from-orange-400 to-orange-600",
@@ -105,127 +104,18 @@ export function Configurator() {
))}
</div>
</div>
<div className="mb-12">
<Typography variant="h6" color="blue-gray">
Sidenav Types
</Typography>
<Typography variant="small" color="gray">
Choose between 3 different sidenav types.
</Typography>
<div className="mt-3 flex items-center gap-2">
<Button
variant={sidenavType === "dark" ? "gradient" : "outlined"}
onClick={() => setSidenavType(dispatch, "dark")}
>
Dark
</Button>
<Button
variant={sidenavType === "transparent" ? "gradient" : "outlined"}
onClick={() => setSidenavType(dispatch, "transparent")}
>
Transparent
</Button>
<Button
variant={sidenavType === "white" ? "gradient" : "outlined"}
onClick={() => setSidenavType(dispatch, "white")}
>
White
</Button>
</div>
</div>
<div className="mb-12">
<hr />
<div className="flex items-center justify-between py-5">
<Typography variant="h6" color="blue-gray">
Navbar Fixed
</Typography>
<Switch
<Switch defaultChecked
id="navbar-fixed"
value={fixedNavbar}
onChange={() => setFixedNavbar(dispatch, !fixedNavbar)}
/>
</div>
<hr />
<div className="my-8 flex flex-col gap-4">
<a
href="https://www.creative-tim.com/product/material-tailwind-dashboard-react?rel=mtdr"
target="_black"
>
<Button variant="gradient" fullWidth>
Free Download
</Button>
</a>
<a
href="https://www.material-tailwind.com/docs/react/installation?rel=mtdr"
target="_black"
>
<Button variant="outlined" color="blue-gray" fullWidth>
View Documentation
</Button>
</a>
<a
href="https://www.material-tailwind.com/blocks/react?rel=mtdr"
target="_black"
>
<Button variant="outlined" color="blue-gray" fullWidth>
Material Tailwind PRO
</Button>
</a>
</div>
<a
className="mx-auto flex items-center justify-center gap-2"
href="https://github.com/creativetimofficial/material-tailwind-dashboard-react"
target="_blank"
rel="noreferrer"
>
<Chip
value={`${stars} - Stars`}
icon={
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
className="mt-px ml-1.5 h-4 w-4"
>
<path
fillRule="evenodd"
d="M10.868 2.884c-.321-.772-1.415-.772-1.736 0l-1.83 4.401-4.753.381c-.833.067-1.171 1.107-.536 1.651l3.62 3.102-1.106 4.637c-.194.813.691 1.456 1.405 1.02L10 15.591l4.069 2.485c.713.436 1.598-.207 1.404-1.02l-1.106-4.637 3.62-3.102c.635-.544.297-1.584-.536-1.65l-4.752-.382-1.831-4.401z"
clipRule="evenodd"
/>
</svg>
}
className="bg-blue-gray-900 px-4"
/>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
>
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
</svg>
</a>
</div>
<div className="text-center">
<Typography variant="h6" color="blue-gray">
Thank you for sharing
</Typography>
<div className="mt-4 flex justify-center gap-2">
<Button
variant="gradient"
className="flex items-center gap-2"
>
<i className="fa-brands fa-twitter text-white" />
Tweet
</Button>
<Button
variant="gradient"
className="flex items-center gap-2"
>
<i className="fa-brands fa-facebook text-white" />
Share
</Button>
</div>
</div>
</div>
</aside>
@@ -42,33 +42,9 @@ export function DashboardNavbar() {
fullWidth
blurred={fixedNavbar}
>
<div className="flex flex-col-reverse justify-between gap-6 md:flex-row md:items-center">
<div className="flex justify-between gap-6 flex-row items-center">
<div className="capitalize">
<Breadcrumbs
className={`bg-transparent p-0 transition-all ${
fixedNavbar ? "mt-1" : ""
}`}
>
<Link to={`/${layout}`}>
<Typography
variant="small"
color="blue-gray"
className="font-normal opacity-50 transition-all hover:text-blue-500 hover:opacity-100"
>
{layout}
</Typography>
</Link>
<Typography
variant="small"
color="blue-gray"
className="font-normal"
>
{page}
</Typography>
</Breadcrumbs>
<Typography variant="h6" color="blue-gray">
{page}
</Typography>
</div>
<div className="flex items-center">
+10 -19
View File
@@ -8,6 +8,7 @@ import {
Typography,
} from "@material-tailwind/react";
import { useMaterialTailwindController, setOpenSidenav } from "@/components";
import logo from "@/assets/images/stackpulse.png";
export function Sidenav({ brandImg, brandName, routes }) {
const [controller, dispatch] = useMaterialTailwindController();
@@ -20,30 +21,20 @@ export function Sidenav({ brandImg, brandName, routes }) {
return (
<aside
className={`${sidenavTypes[sidenavType]} ${
openSidenav ? "translate-x-0" : "-translate-x-80"
} fixed inset-0 z-50 my-4 ml-4 h-[calc(100vh-32px)] w-72 rounded-xl transition-transform duration-300 xl:translate-x-0 border border-blue-gray-100`}
className={`${sidenavTypes[sidenavType]} ${openSidenav ? "translate-x-0" : "-translate-x-80"
} fixed inset-0 z-50 my-4 ml-4 h-[calc(100vh-32px)] w-72 rounded-xl transition-transform duration-300 xl:translate-x-0 border border-blue-gray-100`}
>
<div
className={`relative`}
>
<Link to="/" className="py-6 px-8 text-center">
<Typography
variant="h6"
color={sidenavType === "dark" ? "white" : "blue-gray"}
>
{brandName}
</Typography>
</Link>
<div className="relative py-6 px-8">
<img src={logo} alt="StackPulse" className="w-auto" />
<IconButton
variant="text"
color="white"
size="sm"
ripple={false}
className="absolute right-0 top-0 grid rounded-br-none rounded-tl-none xl:hidden"
className="absolute right-0 top-0 grid rounded-br-none rounded-tl-none"
onClick={() => setOpenSidenav(dispatch, false)}
>
<XMarkIcon strokeWidth={2.5} className="h-5 w-5 text-white" />
<XMarkIcon strokeWidth={2.5} className="h-5 w-5 text-black" />
</IconButton>
</div>
<div className="m-4">
@@ -70,8 +61,8 @@ export function Sidenav({ brandImg, brandName, routes }) {
isActive
? sidenavColor
: sidenavType === "dark"
? "white"
: "blue-gray"
? "white"
: "blue-gray"
}
className="flex items-center gap-4 px-4 capitalize"
fullWidth