feat(wizard): add license lookup panel (UI mockup)
All checks were successful
Staging Build / build (push) Successful in 2m55s

Add collapsible LicenseLookupPanel component to step 3
of the order wizard (left column). Panel queries mock
LicServer data by license key and displays product,
customer, dates, status badge and licensed modules.
Real API endpoint can replace mock in lookupLicense().

- New: components/wizard/license-lookup-panel.tsx
- Modified: components/order-wizard.tsx (4-col grid)
This commit is contained in:
DanielS
2026-07-14 12:57:46 +02:00
parent 0b4755d438
commit 72b906779c
2 changed files with 487 additions and 4 deletions

View File

@@ -16,6 +16,7 @@ import { StepBilling } from './wizard/step-billing'
import { StepSoftware } from './wizard/step-software'
import { StepSummary } from './wizard/step-summary'
import { SummarySidebar } from './wizard/summary-sidebar'
import { LicenseLookupPanel } from './wizard/license-lookup-panel'
type CategorySelection = {
productId: string | null // selected product in this category
@@ -734,10 +735,16 @@ export function OrderWizard({
animate={{ opacity: 1, x: 0 }}
exit={{ opacity: 0, x: -20 }}
>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8 items-start">
{/* LEFT: Sticky header (stepper) + scrollable categories */}
<div className="grid grid-cols-1 lg:grid-cols-4 gap-6 items-start">
{/* FAR LEFT: License Lookup Panel (sticky) */}
<div className="lg:col-span-1 sticky top-6">
<LicenseLookupPanel />
</div>
{/* CENTER: Sticky stepper + scrollable categories */}
<div className="lg:col-span-2 space-y-0">
{/* Sticky stepper header — only covers left column */}
{/* Sticky stepper header — only covers center column */}
<div className="sticky top-0 z-20 bg-slate-950/80 backdrop-blur-md pb-4 pt-6 border-b border-white/5 mb-6">
<p className="text-center text-slate-400 text-sm mb-4">Schritt 3 von 4 Software konfigurieren</p>
<ProgressStepper step={step} basketItemsCount={basketItems.length} />
@@ -760,7 +767,7 @@ export function OrderWizard({
/>
</div>
{/* RIGHT: Independent full-height sidebar column */}
{/* RIGHT: Summary sidebar (sticky) */}
<div className="lg:col-span-1 sticky top-6">
<SummarySidebar
visibleCategories={visibleCategories}