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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

+2 -2
View File
@@ -32,8 +32,8 @@
<!-- Nepcha Analytics (nepcha.com) --> <!-- Nepcha Analytics (nepcha.com) -->
<!-- Nepcha is a easy-to-use web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. --> <!-- Nepcha is a easy-to-use web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. -->
<script defer data-site="YOUR_DOMAIN_HERE" src="https://api.nepcha.com/js/nepcha-analytics.js"></script> <script defer data-site="YOUR_DOMAIN_HERE" src="https://api.nepcha.com/js/nepcha-analytics.js"></script>
<script type="module" crossorigin src="/assets/index-1b29e29a.js"></script> <script type="module" crossorigin src="/assets/index-41fd9f19.js"></script>
<link rel="stylesheet" href="/assets/index-1c9b00a5.css"> <link rel="stylesheet" href="/assets/index-af1a5df8.css">
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

+1 -1
View File
@@ -35,7 +35,7 @@ export function MaterialTailwindControllerProvider({ children }) {
openSidenav: false, openSidenav: false,
sidenavColor: "gray", sidenavColor: "gray",
sidenavType: "white", sidenavType: "white",
transparentNavbar: true, transparentNavbar: false,
fixedNavbar: true, fixedNavbar: true,
openConfigurator: false, openConfigurator: false,
}; };
+42 -2
View File
@@ -926,8 +926,46 @@ export function Stacks() {
</div> </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 <Button
className="w-full bg-arcticBlue-500 hover:bg-arcticBlue-600" className="w-full bg-arcticBlue-500 hover:bg-arcticBlue-600"
onClick={handleBulkRedeploy} onClick={handleBulkRedeploy}
@@ -936,6 +974,8 @@ export function Stacks() {
{bulkButtonLabel} {bulkButtonLabel}
</Button> </Button>
</div> </div>
</div>
</CardBody> </CardBody>
</Card> </Card>
+1 -111
View File
@@ -47,7 +47,6 @@ export function Configurator() {
const [stars, setStars] = React.useState(0); const [stars, setStars] = React.useState(0);
const sidenavColors = { const sidenavColors = {
white: "from-gray-100 to-gray-100 border-gray-200",
dark: "from-black to-black border-gray-200", dark: "from-black to-black border-gray-200",
green: "from-green-400 to-green-600", green: "from-green-400 to-green-600",
orange: "from-orange-400 to-orange-600", orange: "from-orange-400 to-orange-600",
@@ -105,127 +104,18 @@ export function Configurator() {
))} ))}
</div> </div>
</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"> <div className="mb-12">
<hr /> <hr />
<div className="flex items-center justify-between py-5"> <div className="flex items-center justify-between py-5">
<Typography variant="h6" color="blue-gray"> <Typography variant="h6" color="blue-gray">
Navbar Fixed Navbar Fixed
</Typography> </Typography>
<Switch <Switch defaultChecked
id="navbar-fixed" id="navbar-fixed"
value={fixedNavbar} value={fixedNavbar}
onChange={() => setFixedNavbar(dispatch, !fixedNavbar)} onChange={() => setFixedNavbar(dispatch, !fixedNavbar)}
/> />
</div> </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>
</div> </div>
</aside> </aside>
@@ -42,33 +42,9 @@ export function DashboardNavbar() {
fullWidth fullWidth
blurred={fixedNavbar} 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"> <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>
<div className="flex items-center"> <div className="flex items-center">
+7 -16
View File
@@ -8,6 +8,7 @@ import {
Typography, Typography,
} from "@material-tailwind/react"; } from "@material-tailwind/react";
import { useMaterialTailwindController, setOpenSidenav } from "@/components"; import { useMaterialTailwindController, setOpenSidenav } from "@/components";
import logo from "@/assets/images/stackpulse.png";
export function Sidenav({ brandImg, brandName, routes }) { export function Sidenav({ brandImg, brandName, routes }) {
const [controller, dispatch] = useMaterialTailwindController(); const [controller, dispatch] = useMaterialTailwindController();
@@ -20,30 +21,20 @@ export function Sidenav({ brandImg, brandName, routes }) {
return ( return (
<aside <aside
className={`${sidenavTypes[sidenavType]} ${ className={`${sidenavTypes[sidenavType]} ${openSidenav ? "translate-x-0" : "-translate-x-80"
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`} } 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 <div className="relative py-6 px-8">
className={`relative`} <img src={logo} alt="StackPulse" className="w-auto" />
>
<Link to="/" className="py-6 px-8 text-center">
<Typography
variant="h6"
color={sidenavType === "dark" ? "white" : "blue-gray"}
>
{brandName}
</Typography>
</Link>
<IconButton <IconButton
variant="text" variant="text"
color="white"
size="sm" size="sm"
ripple={false} 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)} 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> </IconButton>
</div> </div>
<div className="m-4"> <div className="m-4">