mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 10:09:35 +01:00
feat(scanner): Mobile Scanner App mit echten Produktionsaufträgen
Scanner-App Tauri v2 Android App mit Login, Barcode-Scanner, Consume/Move/Book-Flows und Aufgabenliste. TasksPage lädt echte RELEASED/IN_PROGRESS Produktionsaufträge via API, Consume-Flow nutzt den konkreten Auftrag für korrekte Rezept-Skalierung statt blind den ersten IN_PROGRESS-Auftrag zu nehmen. Backend: FindStockByBatchId Use Case + REST-Endpoint für Stock-Lookup per Chargennummer.
This commit is contained in:
parent
72979c9537
commit
bf09e3b747
93 changed files with 8977 additions and 60 deletions
56
frontend/apps/scanner/src/components/StepIndicator.tsx
Normal file
56
frontend/apps/scanner/src/components/StepIndicator.tsx
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import { Check } from 'lucide-react';
|
||||
import { cn } from '@effigenix/ui';
|
||||
|
||||
export interface Step {
|
||||
label: string;
|
||||
state: 'done' | 'active' | 'pending';
|
||||
}
|
||||
|
||||
interface StepIndicatorProps {
|
||||
steps: Step[];
|
||||
}
|
||||
|
||||
export function StepIndicator({ steps }: StepIndicatorProps) {
|
||||
return (
|
||||
<div className="px-8 mb-2">
|
||||
<div className="flex items-center gap-0 mb-1">
|
||||
{steps.map((step, i) => (
|
||||
<div key={i} className="contents">
|
||||
<div
|
||||
className={cn(
|
||||
'w-8 h-8 rounded-full flex items-center justify-center text-xs font-bold transition-all',
|
||||
step.state === 'done' && 'bg-success-100 text-success-700',
|
||||
step.state === 'active' && 'bg-brand-600 text-white shadow-brand',
|
||||
step.state === 'pending' && 'bg-warm-200 text-warm-500'
|
||||
)}
|
||||
>
|
||||
{step.state === 'done' ? <Check className="w-3.5 h-3.5" /> : i + 1}
|
||||
</div>
|
||||
{i < steps.length - 1 && (
|
||||
<div
|
||||
className={cn(
|
||||
'flex-1 h-0.5 transition-colors',
|
||||
step.state === 'done' ? 'bg-success-300' : 'bg-warm-200'
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div className="flex justify-between text-2xs font-semibold uppercase px-0.5">
|
||||
{steps.map((step, i) => (
|
||||
<span
|
||||
key={i}
|
||||
className={cn(
|
||||
step.state === 'done' && 'text-success-600',
|
||||
step.state === 'active' && 'text-brand-600',
|
||||
step.state === 'pending' && 'text-warm-500'
|
||||
)}
|
||||
>
|
||||
{step.label}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue