Compare commits

...

3 Commits

Author SHA1 Message Date
DanielS
78a16607f9 feat: allow quote editing for all statuses except completed
All checks were successful
Staging Build / build (push) Successful in 3m35s
2026-07-03 00:30:25 +02:00
DanielS
2bfadb49c8 feat: open wizard directly at software step (step 3) when editing 2026-07-03 00:29:22 +02:00
DanielS
2dcc20eb3a style: force dark mode globally and remove theme switcher 2026-07-03 00:26:37 +02:00
7 changed files with 7 additions and 8 deletions

View File

@@ -33,6 +33,7 @@ export default function RootLayout({
<ThemeProvider
attribute="class"
defaultTheme="dark"
forcedTheme="dark"
enableSystem={false}
disableTransitionOnChange
>

View File

@@ -132,7 +132,7 @@ export default async function MyOrdersPage() {
Details ansehen
</Button>
</Link>
{o.status === 'pending' && (
{o.status !== 'completed' && (
<Link href={`/order?id=${o.id}`}>
<Button variant="outline" size="sm" className="border-amber-500/20 hover:bg-amber-500/10 hover:border-amber-500/40 text-amber-400 text-xs">
Bearbeiten

View File

@@ -66,7 +66,7 @@ async function OrderDataWrapper({ orderId }: { orderId?: string }) {
redirect('/order')
}
if (orderData.status !== 'pending' && !isAdmin) {
if (orderData.status === 'completed' && !isAdmin) {
redirect('/order')
}

View File

@@ -1,7 +1,6 @@
import { DeployButton } from "@/components/deploy-button";
import { EnvVarWarning } from "@/components/env-var-warning";
import { AuthButton } from "@/components/auth-button";
import { ThemeSwitcher } from "@/components/theme-switcher";
import { hasEnvVars } from "@/lib/utils";
import Link from "next/link";
import { Suspense } from "react";
@@ -47,7 +46,6 @@ export default function ProtectedLayout({
Supabase
</a>
</p>
<ThemeSwitcher />
</footer>
</div>
</main>

View File

@@ -89,7 +89,7 @@ export function OrderWizard({
initialOrder?: Order | null
}) {
const router = useRouter()
const [step, setStep] = useState(1)
const [step, setStep] = useState(initialOrder ? 3 : 1)
const [isSubmitting, setIsSubmitting] = useState(false)
// Partner-Profil (Fallback)

View File

@@ -418,8 +418,8 @@ export async function updateOrder(
throw new Error('Keine Berechtigung dieses Angebot zu bearbeiten.')
}
if (existingOrder.status !== 'pending' && !isAdmin) {
throw new Error('Nur Angebote im Status "Eingegangen" können bearbeitet werden.')
if (existingOrder.status === 'completed' && !isAdmin) {
throw new Error('Abgeschlossene Angebote können nicht mehr bearbeitet werden.')
}
// Fetch catalog directly from DB to prevent client tampering

View File

@@ -148,7 +148,7 @@ export type Order = {
order_data: OrderSnapshot
total_price: number
pdf_url: string | null
status: 'pending' | 'active' | 'cancelled'
status: 'pending' | 'active' | 'completed' | 'cancelled'
created_at: string
}