Initial import of AbelBirdNest Stock

This commit is contained in:
2026-05-16 18:25:51 +07:00
commit 14bb9bf744
472 changed files with 70671 additions and 0 deletions

View File

@ -0,0 +1,449 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary-container": "#cfe2f9",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"on-secondary-fixed": "#091d2e",
"on-background": "#191c1d",
"outline": "#6f797a",
"on-primary": "#ffffff",
"inverse-on-surface": "#eff1f1",
"on-secondary": "#ffffff",
"error-container": "#ffdad6",
"secondary": "#4e6073",
"primary": "#00454c",
"on-tertiary-container": "#ffbb91",
"inverse-primary": "#8ed1db",
"on-primary-fixed": "#001f23",
"secondary-fixed-dim": "#b5c8df",
"on-surface": "#191c1d",
"tertiary-container": "#7c4824",
"on-tertiary-fixed": "#311300",
"surface-variant": "#e1e3e3",
"surface-bright": "#f8fafa",
"on-surface-variant": "#3f484a",
"surface": "#f8fafa",
"surface-container": "#eceeee",
"surface-container-low": "#f2f4f4",
"tertiary-fixed": "#ffdbc7",
"surface-container-high": "#e6e8e9",
"primary-fixed-dim": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"on-error": "#ffffff",
"background": "#f8fafa",
"surface-dim": "#d8dadb",
"surface-tint": "#1d6871",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"surface-container-highest": "#e1e3e3",
"on-primary-fixed-variant": "#004f57",
"error": "#ba1a1a",
"primary-fixed": "#aaeef8",
"on-tertiary": "#ffffff",
"inverse-surface": "#2e3131",
"tertiary": "#60320f",
"on-tertiary-fixed-variant": "#6b3a17",
"surface-container-lowest": "#ffffff",
"on-secondary-container": "#526478",
"tertiary-fixed-dim": "#feb78a",
"primary-container": "#0d5e67"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"container-margin": "24px",
"row-height-sm": "32px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-md": "48px"
},
"fontFamily": {
"body-sm": ["Inter"],
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"]
},
"fontSize": {
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
display: inline-block;
vertical-align: middle;
line-height: 1;
}
</style>
</head>
<body class="bg-background font-body-base text-on-background antialiased">
<!-- TopNavBar -->
<header class="bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 shadow-sm fixed top-0 z-40 w-full flex justify-between items-center h-14 px-6">
<div class="flex items-center gap-4">
<span class="text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight">SwiftLot Walet</span>
<div class="h-6 w-px bg-slate-200 mx-2"></div>
<h1 class="font-h1 text-h1 text-on-surface">Alokasi Lot</h1>
</div>
<div class="flex items-center gap-4">
<div class="relative group">
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 cursor-pointer p-2 hover:bg-slate-50 rounded-full transition-colors">notifications</span>
<span class="absolute top-2 right-2 w-2 h-2 bg-error rounded-full border-2 border-white"></span>
</div>
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 cursor-pointer p-2 hover:bg-slate-50 rounded-full transition-colors">help_outline</span>
<div class="flex items-center gap-2 cursor-pointer ml-2">
<img alt="User profile" class="w-8 h-8 rounded-full border border-slate-200" data-alt="professional portrait of an operations manager in a clean corporate attire with a soft office background" src="https://lh3.googleusercontent.com/aida-public/AB6AXuArdkfUoSLAXGu3UVcBI2k59l0wFN9WaoP-MWYe8WO9uheFCh9x1XNpekXkBlg-aPvdsxbIQ9WQi2heodPtLAifVEV03YacrQGeDLsFlMuE_O4Crt1s3g93WVnMdIqgS6A9bZe2xJB5HAIeCibmnzMI06Ps5MjpgvzaM8lyW4cEj1xVdF-KOFeRcRd20PH0KzbkThhnqjSIzy95wBfQmRwQoXNsRXsp6InhiNTQQ_W2TavhceNG8v9VTRf7WElZCebdHnvhnCriog"/>
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="bg-slate-50 dark:bg-slate-950 fixed left-0 top-0 h-full w-64 border-r border-slate-200 dark:border-slate-800 flex flex-col h-screen py-4 z-30">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-8 h-8 bg-[#0D5E67] rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white" style="font-variation-settings: 'FILL' 1;">nest_multi_room</span>
</div>
<div>
<div class="text-teal-900 dark:text-teal-100 font-black text-sm">Sarang Ops</div>
<div class="text-[10px] text-slate-500 uppercase tracking-wider font-bold">Processing Plant A</div>
</div>
</div>
<nav class="flex-1 space-y-1 px-3">
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">dashboard</span>
<span class="font-body-sm text-body-sm">Dashboard</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">content_cut</span>
<span class="font-body-sm text-body-sm">Sortasi</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">sell</span>
<span class="font-body-sm text-body-sm">Penjualan</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 bg-white dark:bg-slate-900 text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm font-semibold cursor-pointer rounded-l">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">assignment_turned_in</span>
<span class="font-body-sm text-body-sm">Alokasi Lot</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">inventory</span>
<span class="font-body-sm text-body-sm">Picking</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">inventory_2</span>
<span class="font-body-sm text-body-sm">Inventory</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">monitoring</span>
<span class="font-body-sm text-body-sm">Analytics</span>
</div>
</nav>
<div class="px-4 mt-auto space-y-1 border-t border-slate-200 pt-4">
<button class="w-full bg-primary text-white py-2 rounded font-body-sm flex items-center justify-center gap-2 active:scale-[0.98] transition-transform">
<span class="material-symbols-outlined text-[18px]">add</span>
New Lot Scan
</button>
<div class="flex items-center gap-3 px-3 py-2 mt-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] transition-all cursor-pointer rounded">
<span class="material-symbols-outlined">settings</span>
<span class="font-body-sm text-body-sm">Settings</span>
</div>
</div>
</aside>
<!-- Main Content Canvas -->
<main class="pl-64 pt-14 h-screen overflow-hidden">
<div class="p-container-margin h-full flex flex-col gap-gutter">
<!-- Context Header & Actions -->
<div class="flex justify-between items-end shrink-0">
<div>
<div class="flex items-center gap-2 mb-1">
<span class="text-label-caps font-label-caps text-slate-500 uppercase">Sales Order</span>
<span class="text-label-caps font-label-caps bg-primary-container text-white px-2 py-0.5 rounded">SO-2023-1082</span>
</div>
<h2 class="font-display-lot text-display-lot text-on-surface">Alokasi Lot Produksi</h2>
</div>
<div class="flex gap-3">
<button class="flex items-center gap-2 px-4 py-2 bg-white border border-primary text-primary rounded font-body-sm hover:bg-slate-50 active:scale-95 transition-all">
<span class="material-symbols-outlined text-[20px]">auto_awesome</span>
Auto-Allocate FIFO
</button>
<button class="flex items-center gap-2 px-6 py-2 bg-primary text-white rounded font-body-sm shadow-sm hover:brightness-110 active:scale-95 transition-all">
<span class="material-symbols-outlined text-[20px]">save</span>
Simpan Alokasi
</button>
</div>
</div>
<!-- Dashboard Body -->
<div class="flex-1 flex gap-gutter min-h-0">
<!-- Left Panel: Summary -->
<div class="w-80 flex flex-col gap-gutter shrink-0">
<div class="bg-white rounded border border-outline-variant p-4 shadow-sm flex flex-col gap-4 overflow-y-auto">
<h3 class="font-h2 text-h2 text-primary flex items-center gap-2">
<span class="material-symbols-outlined text-[20px]">list_alt</span>
Ringkasan Pesanan
</h3>
<!-- Order Items -->
<div class="space-y-4">
<div class="p-3 bg-slate-50 rounded border border-slate-100">
<div class="text-label-caps font-label-caps text-slate-500 mb-1">MANGKUK GRADE AAA</div>
<div class="flex justify-between items-end mb-2">
<span class="text-h1 font-h1 text-[#0D5E67]">12.50 <span class="text-body-sm font-body-sm text-slate-400 italic">kg</span></span>
<span class="text-body-sm font-body-sm text-slate-600">Dibutuhkan</span>
</div>
<div class="w-full bg-slate-200 h-1.5 rounded-full overflow-hidden mb-2">
<div class="bg-[#0D5E67] h-full" style="width: 65%;"></div>
</div>
<div class="flex justify-between items-center text-table-data font-table-data">
<span class="text-primary">Teralokasi: 8.12 kg</span>
<span class="text-error">Sisa: 4.38 kg</span>
</div>
</div>
<div class="p-3 bg-slate-50 rounded border border-slate-100">
<div class="text-label-caps font-label-caps text-slate-500 mb-1">SUDUT GRADE A</div>
<div class="flex justify-between items-end mb-2">
<span class="text-h1 font-h1 text-[#0D5E67]">5.00 <span class="text-body-sm font-body-sm text-slate-400 italic">kg</span></span>
<span class="text-body-sm font-body-sm text-slate-600">Dibutuhkan</span>
</div>
<div class="w-full bg-slate-200 h-1.5 rounded-full overflow-hidden mb-2">
<div class="bg-[#0D5E67] h-full" style="width: 0%;"></div>
</div>
<div class="flex justify-between items-center text-table-data font-table-data">
<span class="text-slate-400">Teralokasi: 0.00 kg</span>
<span class="text-slate-600">Sisa: 5.00 kg</span>
</div>
</div>
</div>
<!-- Statistics -->
<div class="mt-auto pt-4 border-t border-slate-100 space-y-3">
<div class="flex justify-between text-body-sm">
<span class="text-slate-500">Total Lot Terpilih</span>
<span class="font-bold">14 Lot</span>
</div>
<div class="flex justify-between text-body-sm">
<span class="text-slate-500">Estimasi Value</span>
<span class="font-bold">Rp 124.500k</span>
</div>
</div>
</div>
<!-- Filter Card -->
<div class="bg-[#0D5E67] text-white rounded p-4 shadow-sm">
<div class="flex items-center gap-2 mb-3">
<span class="material-symbols-outlined text-[18px]">filter_list</span>
<span class="font-h2 text-h2 text-white">Filter Kriteria</span>
</div>
<div class="space-y-3">
<div>
<label class="text-[10px] uppercase font-bold text-teal-200 opacity-80">Grade Item</label>
<select class="w-full bg-[#094e55] border-teal-800 text-white text-body-sm rounded p-2 focus:ring-2 focus:ring-teal-400">
<option>Mangkuk Grade AAA</option>
<option>Sudut Grade A</option>
</select>
</div>
<div class="flex items-center gap-2">
<input checked="" class="rounded text-primary focus:ring-teal-400" id="match-exact" type="checkbox"/>
<label class="text-body-sm" for="match-exact">Hanya Lot Siap Export</label>
</div>
</div>
</div>
</div>
<!-- Right Panel: Data Table -->
<div class="flex-1 bg-white rounded border border-outline-variant shadow-sm flex flex-col min-w-0">
<div class="p-4 border-b border-slate-100 flex justify-between items-center bg-slate-50/50">
<div class="relative w-72">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-[20px]">search</span>
<input class="w-full pl-10 pr-4 py-2 border border-outline-variant rounded text-body-sm focus:ring-2 focus:ring-primary focus:border-transparent" placeholder="Cari Lot Code atau Supplier..." type="text"/>
</div>
<div class="text-body-sm text-slate-500">
Menampilkan <span class="font-bold text-on-surface">32 Lot</span> tersedia
</div>
</div>
<div class="flex-1 overflow-auto">
<table class="w-full text-left border-collapse">
<thead class="sticky top-0 bg-white z-10">
<tr class="border-b border-slate-200">
<th class="px-4 py-3 text-label-caps font-label-caps text-slate-500 uppercase tracking-wider">Lot Code</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-slate-500 uppercase tracking-wider">Supplier</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-slate-500 uppercase tracking-wider">Qty Tersedia</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-slate-500 uppercase tracking-wider text-right">Unit Cost</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-slate-500 uppercase tracking-wider text-center">FIFO Badge</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-primary uppercase tracking-wider text-right w-40">Alokasi (kg)</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<!-- Row 1 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-4 py-compact-padding">
<div class="flex flex-col">
<span class="font-table-data text-table-data text-on-surface">LOT-BRG-2309-001</span>
<span class="text-[10px] text-slate-400">Harvest: 12 Sep 2023</span>
</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-slate-600">Sari Alam House</td>
<td class="px-4 py-compact-padding">
<div class="flex items-center gap-2">
<span class="font-table-data text-table-data text-on-surface">2.45 kg</span>
<span class="text-[10px] px-1.5 py-0.5 bg-green-50 text-green-700 rounded border border-green-200">MC 12%</span>
</div>
</td>
<td class="px-4 py-compact-padding text-table-data font-table-data text-slate-600 text-right">14.500.000</td>
<td class="px-4 py-compact-padding text-center">
<span class="inline-flex items-center justify-center w-6 h-6 rounded-full bg-orange-100 text-orange-700 font-bold text-[10px] border border-orange-200" title="First In First Out Priority">1</span>
</td>
<td class="px-4 py-compact-padding text-right">
<div class="relative inline-block w-32">
<input class="w-full text-right font-bold text-primary border-slate-200 focus:border-primary focus:ring-1 focus:ring-primary rounded p-1 text-table-data" step="0.01" type="number" value="2.45"/>
<span class="absolute right-8 top-1/2 -translate-y-1/2 text-[10px] text-slate-300">kg</span>
</div>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding">
<div class="flex flex-col">
<span class="font-table-data text-table-data text-on-surface">LOT-BRG-2309-004</span>
<span class="text-[10px] text-slate-400">Harvest: 14 Sep 2023</span>
</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-slate-600">Bukit Hijau</td>
<td class="px-4 py-compact-padding">
<div class="flex items-center gap-2">
<span class="font-table-data text-table-data text-on-surface">1.80 kg</span>
<span class="text-[10px] px-1.5 py-0.5 bg-green-50 text-green-700 rounded border border-green-200">MC 11%</span>
</div>
</td>
<td class="px-4 py-compact-padding text-table-data font-table-data text-slate-600 text-right">14.200.000</td>
<td class="px-4 py-compact-padding text-center">
<span class="inline-flex items-center justify-center w-6 h-6 rounded-full bg-orange-100 text-orange-700 font-bold text-[10px] border border-orange-200">2</span>
</td>
<td class="px-4 py-compact-padding text-right">
<div class="relative inline-block w-32">
<input class="w-full text-right font-bold text-primary border-slate-200 focus:border-primary focus:ring-1 focus:ring-primary rounded p-1 text-table-data" step="0.01" type="number" value="1.80"/>
</div>
</td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding">
<div class="flex flex-col">
<span class="font-table-data text-table-data text-on-surface">LOT-CST-2310-012</span>
<span class="text-[10px] text-slate-400">Harvest: 02 Oct 2023</span>
</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-slate-600">Mitra Mandiri</td>
<td class="px-4 py-compact-padding">
<div class="flex items-center gap-2">
<span class="font-table-data text-table-data text-on-surface">5.10 kg</span>
<span class="text-[10px] px-1.5 py-0.5 bg-yellow-50 text-yellow-700 rounded border border-yellow-200">MC 14%</span>
</div>
</td>
<td class="px-4 py-compact-padding text-table-data font-table-data text-slate-600 text-right">13.800.000</td>
<td class="px-4 py-compact-padding text-center">
<span class="inline-flex items-center justify-center w-6 h-6 rounded-full bg-slate-100 text-slate-400 font-bold text-[10px] border border-slate-200">3</span>
</td>
<td class="px-4 py-compact-padding text-right">
<div class="relative inline-block w-32">
<input class="w-full text-right font-bold text-primary border-slate-200 focus:border-primary focus:ring-1 focus:ring-primary rounded p-1 text-table-data" step="0.01" type="number" value="3.87"/>
</div>
</td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding">
<div class="flex flex-col">
<span class="font-table-data text-table-data text-on-surface">LOT-PRM-2310-045</span>
<span class="text-[10px] text-slate-400">Harvest: 10 Oct 2023</span>
</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-slate-600">Prima Walet</td>
<td class="px-4 py-compact-padding">
<div class="flex items-center gap-2">
<span class="font-table-data text-table-data text-on-surface">3.20 kg</span>
<span class="text-[10px] px-1.5 py-0.5 bg-green-50 text-green-700 rounded border border-green-200">MC 12%</span>
</div>
</td>
<td class="px-4 py-compact-padding text-table-data font-table-data text-slate-600 text-right">14.100.000</td>
<td class="px-4 py-compact-padding text-center">
<span class="inline-flex items-center justify-center w-6 h-6 rounded-full bg-slate-100 text-slate-400 font-bold text-[10px] border border-slate-200">4</span>
</td>
<td class="px-4 py-compact-padding text-right">
<div class="relative inline-block w-32">
<input class="w-full text-right font-medium text-slate-400 border-slate-200 focus:border-primary focus:ring-1 focus:ring-primary rounded p-1 text-table-data" placeholder="0.00" step="0.01" type="number"/>
</div>
</td>
</tr>
<!-- More placeholder rows -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding">
<div class="flex flex-col opacity-50">
<span class="font-table-data text-table-data text-on-surface">LOT-PRM-2310-048</span>
<span class="text-[10px] text-slate-400">Harvest: 11 Oct 2023</span>
</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-slate-600 opacity-50">Prima Walet</td>
<td class="px-4 py-compact-padding opacity-50">
<span class="font-table-data text-table-data text-on-surface">1.40 kg</span>
</td>
<td class="px-4 py-compact-padding text-table-data font-table-data text-slate-600 text-right opacity-50">14.050.000</td>
<td class="px-4 py-compact-padding text-center">
<span class="inline-flex items-center justify-center w-6 h-6 rounded-full bg-slate-100 text-slate-400 font-bold text-[10px] border border-slate-200 opacity-50">5</span>
</td>
<td class="px-4 py-compact-padding text-right">
<div class="relative inline-block w-32">
<input class="w-full text-right font-medium text-slate-400 border-slate-200 focus:border-primary focus:ring-1 focus:ring-primary rounded p-1 text-table-data" placeholder="0.00" step="0.01" type="number"/>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Footer Info -->
<div class="p-4 border-t border-slate-100 bg-slate-50 flex justify-between items-center text-body-sm">
<div class="flex gap-4">
<div class="flex items-center gap-1.5">
<span class="w-3 h-3 bg-orange-100 border border-orange-200 rounded-full"></span>
<span class="text-slate-600">Prioritas FIFO</span>
</div>
<div class="flex items-center gap-1.5">
<span class="w-3 h-3 bg-primary border border-primary rounded-full"></span>
<span class="text-slate-600">Terisi (Penuh)</span>
</div>
</div>
<div class="flex items-center gap-4">
<span class="text-slate-500">Subtotal Alokasi: <span class="font-bold text-on-surface text-h2">8.12 kg</span></span>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- FAB (Suppressed on this specific task page per instructions but layout provided for context) -->
<!-- <button class="fixed bottom-6 right-6 w-14 h-14 bg-primary text-white rounded-full shadow-lg flex items-center justify-center active:scale-90 transition-transform">
<span class="material-symbols-outlined">qr_code_scanner</span>
</button> -->
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

View File

@ -0,0 +1,454 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Daftar Gudang &amp; Lokasi - Sarang Inventory Pro</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"surface-variant": "#e1e3e3",
"tertiary-container": "#7c4824",
"surface-container-high": "#e6e8e9",
"on-tertiary-fixed-variant": "#6b3a17",
"primary": "#00454c",
"secondary-container": "#cfe2f9",
"error": "#ba1a1a",
"outline": "#6f797a",
"secondary-fixed": "#d1e4fb",
"tertiary": "#60320f",
"inverse-on-surface": "#eff1f1",
"surface-bright": "#f8fafa",
"on-secondary": "#ffffff",
"on-primary-fixed": "#001f23",
"on-primary-container": "#92d5df",
"on-surface-variant": "#3f484a",
"on-surface": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"surface-container-highest": "#e1e3e3",
"primary-fixed": "#aaeef8",
"surface-dim": "#d8dadb",
"on-primary-fixed-variant": "#004f57",
"on-tertiary-fixed": "#311300",
"surface-container": "#eceeee",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-error-container": "#93000a",
"secondary": "#4e6073",
"on-secondary-fixed": "#091d2e",
"error-container": "#ffdad6",
"on-secondary-fixed-variant": "#36485b",
"outline-variant": "#bfc8ca",
"on-background": "#191c1d",
"inverse-surface": "#2e3131",
"on-error": "#ffffff",
"on-tertiary-container": "#ffbb91",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"background": "#f8fafa",
"tertiary-fixed": "#ffdbc7",
"surface-container-lowest": "#ffffff",
"on-tertiary": "#ffffff",
"on-primary": "#ffffff",
"surface-tint": "#1d6871",
"surface-container-low": "#f2f4f4",
"surface": "#f8fafa",
"on-secondary-container": "#526478"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"container-margin": "24px",
"row-height-sm": "32px",
"row-height-md": "48px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"body-base": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"],
"body-sm": ["Inter"],
"table-data": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-background text-on-background">
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-screen w-64 bg-slate-50 dark:bg-slate-950 border-r border-slate-200 dark:border-slate-800 flex flex-col h-full py-4 space-y-1 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<img alt="Sarang Inventory Pro Logo" class="w-8 h-8 rounded" data-alt="minimalist professional logo for bird nest warehouse management company, teal and white colors" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBZpimSd6SglfA8eLn5Ag28LiPg-Ze7peiyRhi4IzVXYuf0TbR2hZEICbWkpl_zw2dZCe9QdTNslrqsLxmSGEIzeyY4WgG-9itfeC5IyN6QKWpjUfI48lkLXovhHJ2iho5mHQMS7-vQgH2ZY5TGX5jj2mUDQ1aBBbdnNBy4RJwaUIcFgJkcDdLQ3ZxT6zUsag8EZ556HpPZBFlPvo0bQgNdvdxYeGkY5qeVBLnLz8xSl9n0CTK-wVP0ir8mFTOnAyA-x77HUsKf_w"/>
<div>
<h1 class="text-teal-800 dark:text-teal-100 font-black tracking-tighter text-sm uppercase">SarangWMS</h1>
<p class="text-[10px] text-slate-500 font-medium">Operational Hub</p>
</div>
</div>
<nav class="flex-1 px-3 space-y-1 overflow-y-auto">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 dark:hover:bg-slate-900/50 transition-all duration-200 ease-in-out font-medium text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">dashboard</span>
<span>Dashboard</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 bg-teal-50 dark:bg-teal-900/30 text-teal-800 dark:text-teal-200 border-r-4 border-teal-600 font-medium text-sm rounded transition-all duration-200 ease-in-out" href="#">
<span class="material-symbols-outlined text-[20px]">database</span>
<span>Master Data</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 dark:hover:bg-slate-900/50 transition-all duration-200 ease-in-out font-medium text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">inventory_2</span>
<span>Inventory Logs</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 dark:hover:bg-slate-900/50 transition-all duration-200 ease-in-out font-medium text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">edit_note</span>
<span>Stock Adjust</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 dark:hover:bg-slate-900/50 transition-all duration-200 ease-in-out font-medium text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">swap_horiz</span>
<span>Transfers</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 dark:hover:bg-slate-900/50 transition-all duration-200 ease-in-out font-medium text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">verified</span>
<span>QC Reports</span>
</a>
</nav>
<div class="px-6 py-4">
<button class="w-full bg-primary text-white py-2.5 font-bold text-xs uppercase tracking-wider hover:opacity-90 transition-opacity">
Create New Lot
</button>
</div>
<div class="px-3 border-t border-slate-200 pt-4 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 transition-all text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">support_agent</span>
<span>Support</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-700 hover:bg-slate-100 transition-all text-sm rounded" href="#">
<span class="material-symbols-outlined text-[20px]">logout</span>
<span>Logout</span>
</a>
</div>
</aside>
<!-- Main Content Area -->
<main class="ml-64 min-h-screen">
<!-- TopNavBar -->
<header class="bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 flex justify-between items-center h-14 px-6 w-full sticky top-0 z-40">
<div class="flex items-center gap-4">
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-lg">search</span>
<input class="pl-10 pr-4 py-1.5 bg-slate-100 border-none text-sm w-80 focus:ring-2 focus:ring-primary rounded" placeholder="Cari gudang atau kode..." type="text"/>
</div>
</div>
<div class="flex items-center gap-6">
<div class="flex items-center gap-3">
<button class="p-1 text-slate-500 hover:bg-slate-50 rounded transition-colors"><span class="material-symbols-outlined">notifications</span></button>
<button class="p-1 text-slate-500 hover:bg-slate-50 rounded transition-colors"><span class="material-symbols-outlined">settings</span></button>
<button class="p-1 text-slate-500 hover:bg-slate-50 rounded transition-colors"><span class="material-symbols-outlined">help_outline</span></button>
</div>
<div class="h-8 w-px bg-slate-200"></div>
<div class="flex items-center gap-3">
<div class="text-right">
<p class="text-xs font-bold text-slate-800">Admin Manager</p>
<p class="text-[10px] text-teal-600 font-medium">Warehouse Lead</p>
</div>
<img alt="Manager Avatar" class="w-8 h-8 rounded-full object-cover" data-alt="professional headshot of a middle-aged asian manager in a modern office setting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBz0-G4kgbuTv-QqXIarkK1Ti148HBCJNJTW250VEs0YLcJaT-XOBTm0S9JlRkTxMyTYiwFq4KyHWkE549ctygaVsOQIYir2kHmRLq_ArCEjhzmYkY2Nq21ac06M7alISMVI7hKkjdIE8B-e4Sq7oFkpdI2eVUEAW3CYpbzwrbF1PH_83q9P8kQEfMw5HpqJE6u0pdXAjg0XQJrByNW6Vrvn_O15QkhUHWSO0ZpQ_DuozrWHjLSGeT9CjPs2n1cJulg1DKT3nSUYw"/>
</div>
</div>
</header>
<!-- Canvas -->
<div class="p-gutter">
<!-- Header Section -->
<div class="flex justify-between items-end mb-8">
<div>
<h2 class="font-h1 text-h1 text-on-background mb-1">Manajemen Gudang</h2>
<p class="font-body-sm text-body-sm text-on-surface-variant">Kelola infrastruktur penyimpanan dan hierarki lokasi rak produksi.</p>
</div>
<button class="flex items-center gap-2 bg-primary text-white px-5 py-2.5 rounded shadow-sm hover:brightness-110 transition-all font-h2 text-h2">
<span class="material-symbols-outlined text-[18px]">add</span>
Tambah Gudang
</button>
</div>
<!-- Dashboard Summary Widgets -->
<div class="grid grid-cols-4 gap-4 mb-8">
<div class="bg-surface-container-lowest p-5 border border-outline-variant shadow-sm flex items-center gap-4">
<div class="w-12 h-12 bg-primary/10 flex items-center justify-center text-primary rounded">
<span class="material-symbols-outlined text-2xl" style="font-variation-settings: 'FILL' 1;">warehouse</span>
</div>
<div>
<p class="text-label-caps font-label-caps text-on-surface-variant uppercase">Total Gudang</p>
<p class="text-display-lot font-display-lot text-on-surface">12</p>
</div>
</div>
<div class="bg-surface-container-lowest p-5 border border-outline-variant shadow-sm flex items-center gap-4">
<div class="w-12 h-12 bg-secondary-container/30 flex items-center justify-center text-secondary">
<span class="material-symbols-outlined text-2xl" style="font-variation-settings: 'FILL' 1;">view_quilt</span>
</div>
<div>
<p class="text-label-caps font-label-caps text-on-surface-variant uppercase">Total Rak/Lokasi</p>
<p class="text-display-lot font-display-lot text-on-surface">482</p>
</div>
</div>
<div class="bg-surface-container-lowest p-5 border border-outline-variant shadow-sm flex items-center gap-4">
<div class="w-12 h-12 bg-tertiary-fixed-dim/20 flex items-center justify-center text-tertiary">
<span class="material-symbols-outlined text-2xl" style="font-variation-settings: 'FILL' 1;">inventory</span>
</div>
<div>
<p class="text-label-caps font-label-caps text-on-surface-variant uppercase">Kapasitas Terpakai</p>
<p class="text-display-lot font-display-lot text-on-surface">68%</p>
</div>
</div>
<div class="bg-surface-container-lowest p-5 border border-outline-variant shadow-sm flex items-center gap-4">
<div class="w-12 h-12 bg-error-container/30 flex items-center justify-center text-error">
<span class="material-symbols-outlined text-2xl" style="font-variation-settings: 'FILL' 1;">report_problem</span>
</div>
<div>
<p class="text-label-caps font-label-caps text-on-surface-variant uppercase">Gudang Hampir Penuh</p>
<p class="text-display-lot font-display-lot text-on-surface">2</p>
</div>
</div>
</div>
<!-- Table Section -->
<div class="bg-surface-container-lowest border border-outline-variant shadow-sm">
<div class="px-6 py-4 border-b border-outline-variant flex justify-between items-center bg-surface-container-low">
<h3 class="font-h2 text-h2 text-on-surface">Daftar Gudang Operasional</h3>
<div class="flex gap-2">
<button class="p-1.5 border border-outline text-on-surface-variant hover:bg-surface-container transition-colors rounded">
<span class="material-symbols-outlined text-[20px]">filter_list</span>
</button>
<button class="p-1.5 border border-outline text-on-surface-variant hover:bg-surface-container transition-colors rounded">
<span class="material-symbols-outlined text-[20px]">download</span>
</button>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left border-collapse">
<thead class="bg-surface-container-high border-b border-outline-variant">
<tr>
<th class="px-6 py-4 font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider">Nama Gudang</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider">Kode</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider">Alamat / Lokasi</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider">Kapasitas (Terisi/Total)</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider">Jumlah Rak</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider text-right">Aksi</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<!-- Row 1 -->
<tr class="hover:bg-surface-container-low transition-colors group">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-primary/5 flex items-center justify-center text-primary">
<span class="material-symbols-outlined text-[18px]">home_storage</span>
</div>
<span class="font-table-data text-table-data text-on-surface">Gudang Utama Raw Material</span>
</div>
</td>
<td class="px-6 py-4 font-table-data text-table-data text-on-surface">GDG-RM-01</td>
<td class="px-6 py-4 font-body-sm text-body-sm text-on-surface-variant">Kawasan Industri Jababeka, Blok C14</td>
<td class="px-6 py-4">
<div class="w-full max-w-[140px]">
<div class="flex justify-between text-[11px] mb-1 font-bold">
<span class="text-primary">1,250 kg</span>
<span class="text-on-surface-variant">/ 1,500 kg</span>
</div>
<div class="h-1.5 w-full bg-surface-container-high rounded-full overflow-hidden">
<div class="h-full bg-primary" style="width: 83%"></div>
</div>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-secondary-container/40 text-on-secondary-container text-xs font-bold rounded">124 Rak</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-primary font-h2 text-[13px] hover:underline underline-offset-4 flex items-center justify-end gap-1 ml-auto">
Lihat Detail Lokasi
<span class="material-symbols-outlined text-[16px]">arrow_forward</span>
</button>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-surface-container-low transition-colors group">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-primary/5 flex items-center justify-center text-primary">
<span class="material-symbols-outlined text-[18px]">home_storage</span>
</div>
<span class="font-table-data text-table-data text-on-surface">Gudang Pengeringan A</span>
</div>
</td>
<td class="px-6 py-4 font-table-data text-table-data text-on-surface">GDG-DRY-A</td>
<td class="px-6 py-4 font-body-sm text-body-sm text-on-surface-variant">Area Produksi Lt. 2, Sayap Barat</td>
<td class="px-6 py-4">
<div class="w-full max-w-[140px]">
<div class="flex justify-between text-[11px] mb-1 font-bold">
<span class="text-primary">420 kg</span>
<span class="text-on-surface-variant">/ 800 kg</span>
</div>
<div class="h-1.5 w-full bg-surface-container-high rounded-full overflow-hidden">
<div class="h-full bg-primary" style="width: 52%"></div>
</div>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-secondary-container/40 text-on-secondary-container text-xs font-bold rounded">86 Rak</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-primary font-h2 text-[13px] hover:underline underline-offset-4 flex items-center justify-end gap-1 ml-auto">
Lihat Detail Lokasi
<span class="material-symbols-outlined text-[16px]">arrow_forward</span>
</button>
</td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-surface-container-low transition-colors group">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-primary/5 flex items-center justify-center text-primary">
<span class="material-symbols-outlined text-[18px]">home_storage</span>
</div>
<span class="font-table-data text-table-data text-on-surface">Gudang Finishing &amp; QC</span>
</div>
</td>
<td class="px-6 py-4 font-table-data text-table-data text-on-surface">GDG-FIN-03</td>
<td class="px-6 py-4 font-body-sm text-body-sm text-on-surface-variant">Kawasan Industri Jababeka, Blok C15</td>
<td class="px-6 py-4">
<div class="w-full max-w-[140px]">
<div class="flex justify-between text-[11px] mb-1 font-bold">
<span class="text-error">980 kg</span>
<span class="text-on-surface-variant">/ 1,000 kg</span>
</div>
<div class="h-1.5 w-full bg-surface-container-high rounded-full overflow-hidden">
<div class="h-full bg-error" style="width: 98%"></div>
</div>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-secondary-container/40 text-on-secondary-container text-xs font-bold rounded">210 Rak</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-primary font-h2 text-[13px] hover:underline underline-offset-4 flex items-center justify-end gap-1 ml-auto">
Lihat Detail Lokasi
<span class="material-symbols-outlined text-[16px]">arrow_forward</span>
</button>
</td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-surface-container-low transition-colors group">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-primary/5 flex items-center justify-center text-primary">
<span class="material-symbols-outlined text-[18px]">home_storage</span>
</div>
<span class="font-table-data text-table-data text-on-surface">Cold Storage Export</span>
</div>
</td>
<td class="px-6 py-4 font-table-data text-table-data text-on-surface">GDG-COLD-01</td>
<td class="px-6 py-4 font-body-sm text-body-sm text-on-surface-variant">Gedung Kargo Bandara Soekarno-Hatta</td>
<td class="px-6 py-4">
<div class="w-full max-w-[140px]">
<div class="flex justify-between text-[11px] mb-1 font-bold">
<span class="text-primary">150 kg</span>
<span class="text-on-surface-variant">/ 500 kg</span>
</div>
<div class="h-1.5 w-full bg-surface-container-high rounded-full overflow-hidden">
<div class="h-full bg-primary" style="width: 30%"></div>
</div>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-secondary-container/40 text-on-secondary-container text-xs font-bold rounded">32 Lokasi</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-primary font-h2 text-[13px] hover:underline underline-offset-4 flex items-center justify-end gap-1 ml-auto">
Lihat Detail Lokasi
<span class="material-symbols-outlined text-[16px]">arrow_forward</span>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="px-6 py-4 border-t border-outline-variant bg-surface-container-low flex justify-between items-center">
<p class="text-body-sm text-on-surface-variant">Menampilkan 4 dari 12 gudang terdaftar</p>
<div class="flex gap-1">
<button class="p-2 border border-outline-variant rounded bg-white text-on-surface-variant disabled:opacity-50" disabled="">
<span class="material-symbols-outlined text-[18px]">chevron_left</span>
</button>
<button class="p-2 border border-outline-variant rounded bg-primary text-white font-bold text-xs px-4">1</button>
<button class="p-2 border border-outline-variant rounded bg-white text-on-surface-variant font-bold text-xs px-4">2</button>
<button class="p-2 border border-outline-variant rounded bg-white text-on-surface-variant font-bold text-xs px-4">3</button>
<button class="p-2 border border-outline-variant rounded bg-white text-on-surface-variant">
<span class="material-symbols-outlined text-[18px]">chevron_right</span>
</button>
</div>
</div>
</div>
<!-- Additional Context: Map or Geographic View Placeholder -->
<div class="mt-8 grid grid-cols-3 gap-6">
<div class="col-span-2 bg-surface-container-lowest border border-outline-variant p-gutter shadow-sm h-64 relative overflow-hidden flex flex-col">
<div class="flex justify-between items-center mb-4">
<h3 class="font-h2 text-h2">Visualisasi Lokasi Geografis</h3>
<span class="text-[11px] font-bold text-primary uppercase tracking-widest">Live Integration</span>
</div>
<div class="flex-1 bg-surface-container-high rounded flex items-center justify-center relative">
<img alt="World map with location pins" class="absolute inset-0 w-full h-full object-cover opacity-60 grayscale" data-alt="simplified stylistic map of jakarta industrial area with warehouse icons and digital grid overlay" data-location="Jakarta" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCjlWTlCqAG6Y-switmw1vUJJ-jPjctPaMjRk-ofnmufPT304oDY2hiiGm5sWmQXVtCzf6xAwvrpcd5XS8IdA4G_hJB8u3Ac0aQaexvkfVJpz8othc_OQp0X35xEcxiMoGPIkQ_kM-QozKtOxEpz9E1PGLrLX_oT2sHEt2Lgq8tBOO8Vhk_A1ys_v8xdonJNUq33bAIY1vazomT_6X1LY0eJDpFBz2547jdcL-yWm5244lSNmKAdhfCGpPHJB3Q9aAqFVJ5a0-kMA"/>
<div class="z-10 bg-white/90 backdrop-blur-sm p-4 border border-outline-variant flex items-center gap-3">
<span class="material-symbols-outlined text-primary">location_on</span>
<span class="text-sm font-bold text-on-surface">Pusat Operasional: Jababeka, Cikarang</span>
</div>
</div>
</div>
<div class="bg-surface-container-lowest border border-outline-variant p-gutter shadow-sm h-64 flex flex-col">
<h3 class="font-h2 text-h2 mb-4">Aktivitas Terkini</h3>
<div class="flex-1 space-y-4 overflow-y-auto pr-2">
<div class="flex gap-3 items-start border-l-2 border-primary/20 pl-4 py-1">
<div class="text-[10px] font-bold text-on-surface-variant min-w-[45px]">14:20</div>
<div class="text-[12px]">
<span class="font-bold text-on-surface">Input Barang:</span> 45kg Material Mentah tiba di <span class="font-bold text-primary">GDG-RM-01</span>.
</div>
</div>
<div class="flex gap-3 items-start border-l-2 border-primary/20 pl-4 py-1">
<div class="text-[10px] font-bold text-on-surface-variant min-w-[45px]">11:05</div>
<div class="text-[12px]">
<span class="font-bold text-on-surface">Pemindahan:</span> Lot #B203 dipindah dari <span class="font-bold text-primary">Rak A2</span> ke <span class="font-bold text-primary">GDG-DRY-A</span>.
</div>
</div>
<div class="flex gap-3 items-start border-l-2 border-primary/20 pl-4 py-1">
<div class="text-[10px] font-bold text-on-surface-variant min-w-[45px]">Kemarin</div>
<div class="text-[12px]">
<span class="font-bold text-on-surface">QC Selesai:</span> 12 Rak di <span class="font-bold text-primary">GDG-FIN-03</span> dinyatakan layak ekspor.
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 KiB

View File

@ -0,0 +1,447 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Daftar Pelanggan | SarangTrace ERP</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary": "#4e6073",
"on-primary-fixed": "#001f23",
"primary-fixed": "#aaeef8",
"outline": "#6f797a",
"background": "#f8fafa",
"on-tertiary-fixed-variant": "#6b3a17",
"on-primary-fixed-variant": "#004f57",
"error-container": "#ffdad6",
"tertiary": "#60320f",
"on-secondary-container": "#526478",
"surface-container": "#eceeee",
"on-tertiary": "#ffffff",
"secondary-container": "#cfe2f9",
"on-error-container": "#93000a",
"inverse-primary": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"surface-tint": "#1d6871",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"inverse-surface": "#2e3131",
"on-secondary-fixed": "#091d2e",
"on-surface": "#191c1d",
"tertiary-fixed": "#ffdbc7",
"surface": "#f8fafa",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"outline-variant": "#bfc8ca",
"on-surface-variant": "#3f484a",
"surface-container-highest": "#e1e3e3",
"inverse-on-surface": "#eff1f1",
"secondary-fixed-dim": "#b5c8df",
"surface-container-high": "#e6e8e9",
"surface-container-low": "#f2f4f4",
"on-tertiary-container": "#ffbb91",
"on-tertiary-fixed": "#311300",
"error": "#ba1a1a",
"surface-bright": "#f8fafa",
"primary": "#00454c",
"primary-fixed-dim": "#8ed1db",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"on-background": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"on-primary": "#ffffff",
"surface-dim": "#d8dadb",
"on-secondary": "#ffffff",
"tertiary-container": "#7c4824"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"compact-padding": "8px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"gutter": "16px"
},
"fontFamily": {
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"h2": ["Inter"],
"label-caps": ["Inter"]
},
"fontSize": {
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-surface text-on-surface selection:bg-primary-fixed selection:text-on-primary-fixed">
<!-- TopNavBar -->
<header class="bg-white dark:bg-slate-950 text-teal-700 dark:text-teal-500 font-inter text-sm antialiased docked full-width top-0 z-40 border-b border-slate-200 dark:border-slate-800 shadow-sm flex items-center justify-between px-6 h-14 w-full fixed">
<div class="flex items-center gap-8">
<span class="text-lg font-bold tracking-tight text-teal-800 dark:text-teal-400">SarangTrace ERP</span>
<div class="hidden md:flex items-center bg-slate-100 dark:bg-slate-900 rounded px-3 py-1 gap-2">
<span class="material-symbols-outlined text-slate-400 text-[18px]" data-icon="search">search</span>
<input class="bg-transparent border-none focus:ring-0 text-xs w-64 placeholder:text-slate-400" placeholder="Search data..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<button class="hover:bg-slate-50 dark:hover:bg-slate-900 transition-colors p-2 rounded">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
</button>
<button class="hover:bg-slate-50 dark:hover:bg-slate-900 transition-colors p-2 rounded">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
</button>
<div class="h-8 w-8 rounded-full overflow-hidden border border-slate-200">
<img alt="User Profile" data-alt="professional corporate headshot of a middle-aged executive man with a clean haircut in a minimalist office setting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAgIYPXJRbGVhYjBsOskdckcKrC_AW-ltq6326FJ4CCMIeGCJn-6iDh-EtUNsXoVz2vW0NHl_Ky1Lcw4z9JCpcP7XaCTV8Tcbui8Vn5LkfHK-sOUN1ERpd4WC4srVTKH2Y_MImoeL-GJDumfU5sQZFfPEXWDot5nxxji4_-39gtbEAM6rmy78bW6vICOe5zNhrUYcO4P6SycGmvatOEOXlIap9ovsKOlfkXqZJ2CnUjq-LvzgWR40sOSqaxTjLwj_6GeVNV6bveUA"/>
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="bg-slate-50 dark:bg-slate-900 text-teal-700 dark:text-teal-500 font-inter text-[13px] font-medium fixed left-0 top-0 h-full w-64 border-r border-slate-200 dark:border-slate-800 flex flex-col h-screen py-4 z-30 pt-20">
<div class="px-6 mb-6">
<div class="flex items-center gap-3">
<div class="h-10 w-10 bg-primary rounded flex items-center justify-center text-white font-black text-xl">W</div>
<div>
<h2 class="text-teal-900 dark:text-teal-100 font-black leading-none">Walet Operations</h2>
<p class="text-[10px] text-slate-500 mt-1 uppercase tracking-wider">V1.0.4-Operational</p>
</div>
</div>
</div>
<nav class="flex-1 px-4 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-600 hover:bg-slate-100 dark:hover:bg-slate-800/50 rounded transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
Dashboard
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-600 hover:bg-slate-100 dark:hover:bg-slate-800/50 rounded transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
Inventory Stock
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-600 hover:bg-slate-100 dark:hover:bg-slate-800/50 rounded transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="account_tree">account_tree</span>
Traceability Logs
</a>
<a class="flex items-center gap-3 px-3 py-2 bg-teal-50 dark:bg-teal-900/20 text-teal-700 dark:text-teal-400 border-r-4 border-teal-600 transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="database">database</span>
Master Data
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-600 hover:bg-slate-100 dark:hover:bg-slate-800/50 rounded transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="qr_code_scanner">qr_code_scanner</span>
Barcode Scanner
</a>
</nav>
<div class="px-4 mt-auto border-t border-slate-200 dark:border-slate-800 pt-4 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-600 hover:bg-slate-100 dark:hover:bg-slate-800/50 rounded transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
Support
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 dark:text-slate-400 hover:text-teal-600 hover:bg-slate-100 dark:hover:bg-slate-800/50 rounded transition-all duration-150 ease-in-out" href="#">
<span class="material-symbols-outlined" data-icon="logout">logout</span>
Sign Out
</a>
</div>
</aside>
<!-- Main Content Canvas -->
<main class="ml-64 pt-14 min-h-screen">
<div class="p-container-margin">
<!-- Page Header -->
<div class="flex items-end justify-between mb-8">
<div>
<nav class="flex items-center gap-2 text-label-caps text-secondary mb-2">
<span>MASTER DATA</span>
<span class="material-symbols-outlined text-[12px]" data-icon="chevron_right">chevron_right</span>
<span class="text-on-surface">DAFTAR PELANGGAN</span>
</nav>
<h1 class="font-h1 text-h1 text-on-surface">Daftar Pelanggan</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant mt-1">Kelola data pelanggan, kontak, dan informasi perbankan dalam satu tempat.</p>
</div>
<button class="flex items-center gap-2 bg-primary text-on-primary font-body-base px-4 py-2 rounded-lg shadow-sm hover:opacity-90 transition-opacity">
<span class="material-symbols-outlined text-[20px]" data-icon="add">add</span>
Tambah Pelanggan
</button>
</div>
<!-- Dashboard Stats / Bento Grid -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-gutter mb-8">
<div class="bg-surface-container-low border border-outline-variant p-4 rounded-xl shadow-sm">
<div class="flex items-center justify-between mb-2">
<span class="font-label-caps text-secondary">TOTAL PELANGGAN</span>
<span class="material-symbols-outlined text-primary text-[20px]" data-icon="group">group</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">1,284</span>
<span class="text-[11px] font-bold text-teal-600">+12%</span>
</div>
</div>
<div class="bg-surface-container-low border border-outline-variant p-4 rounded-xl shadow-sm">
<div class="flex items-center justify-between mb-2">
<span class="font-label-caps text-secondary">PELANGGAN AKTIF</span>
<span class="material-symbols-outlined text-teal-600 text-[20px]" data-icon="check_circle">check_circle</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">1,250</span>
<span class="text-[11px] font-bold text-teal-600">97.3%</span>
</div>
</div>
<div class="bg-surface-container-low border border-outline-variant p-4 rounded-xl shadow-sm">
<div class="flex items-center justify-between mb-2">
<span class="font-label-caps text-secondary">KREDIT LIMIT TOTAL</span>
<span class="material-symbols-outlined text-tertiary text-[20px]" data-icon="account_balance_wallet">account_balance_wallet</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">Rp 4.2B</span>
<span class="text-[11px] font-bold text-error">Limit High</span>
</div>
</div>
<div class="bg-surface-container-low border border-outline-variant p-4 rounded-xl shadow-sm">
<div class="flex items-center justify-between mb-2">
<span class="font-label-caps text-secondary">BARU (BULAN INI)</span>
<span class="material-symbols-outlined text-secondary text-[20px]" data-icon="person_add">person_add</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">32</span>
<span class="text-[11px] font-bold text-teal-600">Stable</span>
</div>
</div>
</div>
<!-- Search and Filter Bar -->
<div class="bg-surface-container-lowest border border-outline-variant p-4 mb-gutter rounded-t-lg flex flex-wrap items-center justify-between gap-4">
<div class="flex items-center gap-4 flex-1">
<div class="relative flex-1 max-w-md">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-outline text-[20px]" data-icon="search">search</span>
<input class="w-full pl-10 pr-4 py-2 border border-outline-variant rounded-lg font-body-base focus:ring-2 focus:ring-primary-container focus:border-primary outline-none transition-all" placeholder="Cari Kode, Nama, atau Contact Person..." type="text"/>
</div>
<button class="flex items-center gap-2 font-body-base text-on-surface-variant hover:bg-surface-container-high px-3 py-2 rounded transition-colors">
<span class="material-symbols-outlined" data-icon="filter_list">filter_list</span>
Filter
</button>
</div>
<div class="flex items-center gap-2">
<button class="flex items-center gap-2 font-body-base border border-outline-variant text-on-surface-variant px-3 py-2 rounded hover:bg-surface-container-high transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="file_download">file_download</span>
Export Excel
</button>
<button class="flex items-center gap-2 font-body-base border border-outline-variant text-on-surface-variant px-3 py-2 rounded hover:bg-surface-container-high transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="print">print</span>
</button>
</div>
</div>
<!-- Main Data Table Container -->
<div class="bg-surface-container-lowest border border-outline-variant rounded-b-lg overflow-hidden shadow-sm">
<table class="w-full text-left border-collapse">
<thead>
<tr class="bg-surface-container-high border-b border-outline-variant">
<th class="px-4 py-3 font-label-caps text-secondary">KODE PELANGGAN</th>
<th class="px-4 py-3 font-label-caps text-secondary">NAMA PELANGGAN</th>
<th class="px-4 py-3 font-label-caps text-secondary">CONTACT PERSON</th>
<th class="px-4 py-3 font-label-caps text-secondary">TELEPON</th>
<th class="px-4 py-3 font-label-caps text-secondary">INFO BANK</th>
<th class="px-4 py-3 font-label-caps text-secondary">STATUS</th>
<th class="px-4 py-3 font-label-caps text-secondary text-right">AKSI</th>
</tr>
</thead>
<tbody class="font-table-data text-table-data text-on-surface">
<!-- Row 1 -->
<tr class="border-b border-outline-variant hover:bg-slate-50 transition-colors group">
<td class="px-4 py-3 text-primary font-bold">CUST-JKT-001</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span class="font-bold">PT. Ekspor Walet Kencana</span>
<span class="text-[11px] text-on-surface-variant uppercase">Wholesaler</span>
</div>
</td>
<td class="px-4 py-3">Bpk. Hendra Wijaya</td>
<td class="px-4 py-3">+62 21 5567 8900</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span>BCA - 0089223344</span>
<span class="text-[11px] text-on-surface-variant">AN: Hendra Wijaya</span>
</div>
</td>
<td class="px-4 py-3">
<span class="bg-teal-50 text-teal-700 px-2 py-1 rounded-full text-[11px] font-bold border border-teal-100">AKTIF</span>
</td>
<td class="px-4 py-3 text-right">
<button class="p-1 hover:bg-surface-container-high rounded text-outline group-hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[20px]" data-icon="more_vert">more_vert</span>
</button>
</td>
</tr>
<!-- Row 2 -->
<tr class="border-b border-outline-variant hover:bg-slate-50 transition-colors group">
<td class="px-4 py-3 text-primary font-bold">CUST-SBY-042</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span class="font-bold">CV. Sarang Burung Lestari</span>
<span class="text-[11px] text-on-surface-variant uppercase">Local Processor</span>
</div>
</td>
<td class="px-4 py-3">Ibu Maya Santoso</td>
<td class="px-4 py-3">+62 812 3344 5566</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span>Mandiri - 142009887766</span>
<span class="text-[11px] text-on-surface-variant">AN: Maya Santoso</span>
</div>
</td>
<td class="px-4 py-3">
<span class="bg-teal-50 text-teal-700 px-2 py-1 rounded-full text-[11px] font-bold border border-teal-100">AKTIF</span>
</td>
<td class="px-4 py-3 text-right">
<button class="p-1 hover:bg-surface-container-high rounded text-outline group-hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[20px]" data-icon="more_vert">more_vert</span>
</button>
</td>
</tr>
<!-- Row 3 -->
<tr class="border-b border-outline-variant hover:bg-slate-50 transition-colors group">
<td class="px-4 py-3 text-primary font-bold">CUST-MDN-018</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span class="font-bold">Global Nest Trading Ltd.</span>
<span class="text-[11px] text-on-surface-variant uppercase">International</span>
</div>
</td>
<td class="px-4 py-3">Mr. Zhang Wei</td>
<td class="px-4 py-3">+65 6789 4432</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span>HSBC - 9988-002-11</span>
<span class="text-[11px] text-on-surface-variant">SWIFT: HSBSGSGXXX</span>
</div>
</td>
<td class="px-4 py-3">
<span class="bg-error-container text-on-error-container px-2 py-1 rounded-full text-[11px] font-bold border border-error/10">NON-AKTIF</span>
</td>
<td class="px-4 py-3 text-right">
<button class="p-1 hover:bg-surface-container-high rounded text-outline group-hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[20px]" data-icon="more_vert">more_vert</span>
</button>
</td>
</tr>
<!-- Row 4 -->
<tr class="border-b border-outline-variant hover:bg-slate-50 transition-colors group">
<td class="px-4 py-3 text-primary font-bold">CUST-SMG-005</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span class="font-bold">Semarang Birdnest Hub</span>
<span class="text-[11px] text-on-surface-variant uppercase">Agent</span>
</div>
</td>
<td class="px-4 py-3">Anwar Hakim</td>
<td class="px-4 py-3">+62 24 8876 1122</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span>BNI - 0021334455</span>
<span class="text-[11px] text-on-surface-variant">AN: Anwar Hakim</span>
</div>
</td>
<td class="px-4 py-3">
<span class="bg-secondary-container text-on-secondary-container px-2 py-1 rounded-full text-[11px] font-bold border border-secondary/10">DITANGGUHKAN</span>
</td>
<td class="px-4 py-3 text-right">
<button class="p-1 hover:bg-surface-container-high rounded text-outline group-hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[20px]" data-icon="more_vert">more_vert</span>
</button>
</td>
</tr>
<!-- Row 5 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-4 py-3 text-primary font-bold">CUST-JKT-099</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span class="font-bold">Prima Walet Utama</span>
<span class="text-[11px] text-on-surface-variant uppercase">Retailer</span>
</div>
</td>
<td class="px-4 py-3">Siska Amelia</td>
<td class="px-4 py-3">+62 856 7788 9900</td>
<td class="px-4 py-3">
<div class="flex flex-col">
<span>BRI - 3344-01-009922</span>
<span class="text-[11px] text-on-surface-variant">AN: PT. Prima Walet Utama</span>
</div>
</td>
<td class="px-4 py-3">
<span class="bg-teal-50 text-teal-700 px-2 py-1 rounded-full text-[11px] font-bold border border-teal-100">AKTIF</span>
</td>
<td class="px-4 py-3 text-right">
<button class="p-1 hover:bg-surface-container-high rounded text-outline group-hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[20px]" data-icon="more_vert">more_vert</span>
</button>
</td>
</tr>
</tbody>
</table>
<!-- Pagination Footer -->
<div class="bg-surface-container-low border-t border-outline-variant p-4 flex items-center justify-between">
<span class="font-body-sm text-body-sm text-on-surface-variant">Menampilkan 1-5 dari 1,284 pelanggan</span>
<div class="flex items-center gap-1">
<button class="p-1 border border-outline-variant rounded hover:bg-surface-container-high text-outline transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="first_page">first_page</span>
</button>
<button class="p-1 border border-outline-variant rounded hover:bg-surface-container-high text-outline transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="chevron_left">chevron_left</span>
</button>
<div class="flex items-center gap-1 px-2">
<button class="w-8 h-8 bg-primary text-on-primary rounded font-bold text-[13px]">1</button>
<button class="w-8 h-8 hover:bg-surface-container-high rounded font-medium text-[13px] transition-colors">2</button>
<button class="w-8 h-8 hover:bg-surface-container-high rounded font-medium text-[13px] transition-colors">3</button>
<span class="mx-1">...</span>
<button class="w-8 h-8 hover:bg-surface-container-high rounded font-medium text-[13px] transition-colors">257</button>
</div>
<button class="p-1 border border-outline-variant rounded hover:bg-surface-container-high text-outline transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="chevron_right">chevron_right</span>
</button>
<button class="p-1 border border-outline-variant rounded hover:bg-surface-container-high text-outline transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="last_page">last_page</span>
</button>
</div>
</div>
</div>
<!-- Footer Legal/Info -->
<footer class="mt-12 mb-8 flex flex-col md:flex-row items-center justify-between border-t border-outline-variant pt-6 gap-4">
<div class="flex items-center gap-6">
<span class="text-[12px] text-on-surface-variant font-medium">© 2024 SarangTrace ERP - Operational Edition</span>
<div class="flex items-center gap-4">
<a class="text-[12px] text-on-surface-variant hover:text-primary underline decoration-primary/30" href="#">Privacy Policy</a>
<a class="text-[12px] text-on-surface-variant hover:text-primary underline decoration-primary/30" href="#">Terms of Service</a>
</div>
</div>
<div class="flex items-center gap-2 px-3 py-1 bg-surface-container-high rounded-full border border-outline-variant">
<span class="w-2 h-2 bg-teal-500 rounded-full"></span>
<span class="text-[11px] font-bold text-on-surface-variant uppercase tracking-tighter">Sistem Terkoneksi: Cloud-HQ-Main</span>
</div>
</footer>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

View File

@ -0,0 +1,483 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-primary-container": "#92d5df",
"on-primary": "#ffffff",
"secondary-fixed": "#d1e4fb",
"on-tertiary": "#ffffff",
"surface-tint": "#1d6871",
"primary": "#00454c",
"tertiary-fixed-dim": "#feb78a",
"on-background": "#191c1d",
"tertiary": "#60320f",
"surface": "#f8fafa",
"on-secondary": "#ffffff",
"on-surface": "#191c1d",
"on-surface-variant": "#3f484a",
"error": "#ba1a1a",
"on-primary-fixed-variant": "#004f57",
"tertiary-fixed": "#ffdbc7",
"primary-fixed": "#aaeef8",
"on-tertiary-fixed-variant": "#6b3a17",
"on-secondary-fixed-variant": "#36485b",
"inverse-on-surface": "#eff1f1",
"error-container": "#ffdad6",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"outline": "#6f797a",
"surface-container-highest": "#e1e3e3",
"secondary-container": "#cfe2f9",
"on-secondary-container": "#526478",
"on-primary-fixed": "#001f23",
"tertiary-container": "#7c4824",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"on-secondary-fixed": "#091d2e",
"surface-bright": "#f8fafa",
"secondary": "#4e6073",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-dim": "#d8dadb",
"surface-container-low": "#f2f4f4",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-tertiary-fixed": "#311300",
"background": "#f8fafa",
"surface-container": "#eceeee",
"on-tertiary-container": "#ffbb91",
"inverse-surface": "#2e3131"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"h2": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"table-data": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
body {
background-color: #f8fafa;
}
</style>
</head>
<body class="font-body-base text-on-surface antialiased">
<!-- TopNavBar -->
<header class="fixed top-0 left-0 w-full z-40 flex justify-between items-center px-6 h-16 bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 shadow-sm dark:shadow-none font-inter text-sm antialiased">
<div class="flex items-center gap-4">
<img alt="Logo" class="h-8 w-8 object-contain" data-alt="Corporate logo for a bird nest export company featuring abstract avian motifs in teal and white" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBM2gcbZe8pws9VmvjSISlHLqdPLwgbvuhS0PBnXJ9g4-Nf5_Td5xhZsYmJfAIRYuJ6heJu-ytIt77GPuqgZmQlhR_VSlrMtjrZbQc9uKxcNwfSjzX3RKI_9L59FJABN0Vw3mh7S69jQeX3HdlkM5nmntGKR6sEfngsWJqI5GjD1UhTSuHEnDIPIYNXsJ8MBUcn-qWej9UWd-Ifu7q2L0cFxvYvspSMSSk2NqdO1uAj3LV5Dnn_cOlZIEhd2SB-Qdf6OtdG3WyWcA"/>
<span class="text-xl font-bold text-teal-700 dark:text-teal-400">Sistem Inventaris Walet</span>
</div>
<div class="flex items-center gap-6">
<div class="hidden md:flex items-center bg-slate-100 dark:bg-slate-800 rounded-lg px-3 py-1.5 border border-slate-200 dark:border-slate-700">
<span class="material-symbols-outlined text-slate-500 mr-2" style="font-size: 18px;">search</span>
<input class="bg-transparent border-none focus:ring-0 text-sm w-48 text-on-surface" placeholder="Cari data..." type="text"/>
</div>
<div class="flex items-center gap-3">
<button class="p-2 hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors text-slate-500 rounded-full">
<span class="material-symbols-outlined">notifications</span>
</button>
<button class="p-2 hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors text-slate-500 rounded-full">
<span class="material-symbols-outlined">help_outline</span>
</button>
<div class="h-8 w-px bg-slate-200 dark:bg-slate-700 mx-1"></div>
<button class="bg-primary text-on-primary px-4 py-2 rounded-lg flex items-center gap-2 font-medium text-xs active:opacity-80 transition-all duration-150">
<span class="material-symbols-outlined" style="font-size: 18px;">qr_code_scanner</span>
Scan Barcode
</button>
<img alt="Profil Pengguna" class="h-8 w-8 rounded-full border border-slate-200" data-alt="professional male headshot for a user profile avatar in a corporate software setting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBC5r0mbAMZ9cVAnKeRD_TBQBu23Cice8zGXgQvtgVf7CnUVal5a01rAJxV-AmU6F2QRXyJsxWMXeaDBFY1f6Z6Y7tZ9peE3RBXKpbOKu67tDDDPO_VLXe3Huj2phIiE2CkTXGLtx6WjxnbsiSbUpxj-p_XfJsFP1dZTn13fJWHJ1-UT5tM09wtOl3HUFSBpV_f-OCbbHiinR_6OCUahlYmo9EEweF_CZDcGehA1FIMXGdhM7HBSpTZxO1PjvHzzWUHI4NkZiP-RA"/>
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 flex flex-col py-6 bg-slate-50 dark:bg-slate-950 border-r border-slate-200 dark:border-slate-800 z-30 pt-20">
<div class="px-6 mb-8">
<h2 class="text-lg font-black text-teal-800 dark:text-teal-300 font-inter">Inventory Walet</h2>
<p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mt-1">Sistem Traceability</p>
</div>
<nav class="flex-1 space-y-1">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 hover:translate-x-1 transition-transform duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">dashboard</span>
Dashboard
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 hover:translate-x-1 transition-transform duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">inventory_2</span>
Laporan Stok
</a>
<a class="flex items-center gap-3 px-4 py-3 bg-teal-50 dark:bg-teal-900/20 text-teal-700 dark:text-teal-400 rounded-r-lg border-l-4 border-teal-700 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">database</span>
Data Master
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 hover:translate-x-1 transition-transform duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">qr_code_scanner</span>
Pelacakan
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 hover:translate-x-1 transition-transform duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">settings</span>
Pengaturan
</a>
</nav>
<div class="px-4 mb-6">
<button class="w-full bg-teal-700 hover:bg-teal-800 text-white rounded-lg py-2.5 flex items-center justify-center gap-2 text-xs font-bold transition-all active:scale-95 duration-75">
<span class="material-symbols-outlined" style="font-size: 18px;">add</span>
Tambah Lot Baru
</button>
</div>
<div class="border-t border-slate-200 dark:border-slate-800 pt-4">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 hover:translate-x-1 transition-transform duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">help</span>
Bantuan
</a>
<a class="flex items-center gap-3 px-4 py-3 text-error hover:bg-error/5 hover:translate-x-1 transition-transform duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">logout</span>
Log Keluar
</a>
</div>
</aside>
<!-- Main Content -->
<main class="ml-64 pt-20 p-8 min-h-screen">
<div class="max-w-7xl mx-auto">
<!-- Header Section -->
<div class="flex flex-col md:flex-row md:items-end justify-between gap-4 mb-8">
<div>
<nav class="flex text-xs text-slate-500 mb-2 gap-2">
<span>Data Master</span>
<span>/</span>
<span class="text-teal-700 font-semibold">Daftar Pelanggan</span>
</nav>
<h1 class="font-h1 text-h1 text-on-surface">Daftar Pelanggan</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant mt-1">Kelola data klien ekspor dan distributor domestik sarang burung walet.</p>
</div>
<div class="flex gap-3">
<button class="px-4 py-2 border border-outline text-on-surface hover:bg-surface-container transition-colors rounded-lg flex items-center gap-2 text-xs font-semibold">
<span class="material-symbols-outlined" style="font-size: 18px;">download</span>
Ekspor CSV
</button>
<button class="px-4 py-2 bg-primary text-on-primary hover:bg-primary-container transition-colors rounded-lg flex items-center gap-2 text-xs font-semibold shadow-sm">
<span class="material-symbols-outlined" style="font-size: 18px;">person_add</span>
Tambah Pelanggan
</button>
</div>
</div>
<!-- Dashboard Stats Summary -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
<div class="bg-white p-5 border border-slate-200 rounded-xl shadow-sm">
<div class="flex justify-between items-start">
<div>
<p class="text-slate-500 text-xs font-bold uppercase tracking-wider mb-1">Total Pelanggan</p>
<h3 class="text-2xl font-bold text-on-surface">148</h3>
</div>
<div class="p-2 bg-teal-50 text-teal-700 rounded-lg">
<span class="material-symbols-outlined">group</span>
</div>
</div>
<div class="mt-4 flex items-center text-emerald-600 text-[11px] font-bold">
<span class="material-symbols-outlined text-[14px] mr-1">trending_up</span>
+12% Bulan ini
</div>
</div>
<div class="bg-white p-5 border border-slate-200 rounded-xl shadow-sm">
<div class="flex justify-between items-start">
<div>
<p class="text-slate-500 text-xs font-bold uppercase tracking-wider mb-1">Pelanggan Aktif</p>
<h3 class="text-2xl font-bold text-on-surface">124</h3>
</div>
<div class="p-2 bg-blue-50 text-blue-700 rounded-lg">
<span class="material-symbols-outlined">verified</span>
</div>
</div>
<div class="mt-4 flex items-center text-slate-500 text-[11px] font-bold">
Berdasarkan transaksi 30 hari terakhir
</div>
</div>
<div class="bg-white p-5 border border-slate-200 rounded-xl shadow-sm">
<div class="flex justify-between items-start">
<div>
<p class="text-slate-500 text-xs font-bold uppercase tracking-wider mb-1">Wilayah Ekspor</p>
<h3 class="text-2xl font-bold text-on-surface">12</h3>
</div>
<div class="p-2 bg-amber-50 text-amber-700 rounded-lg">
<span class="material-symbols-outlined">public</span>
</div>
</div>
<div class="mt-4 flex items-center text-amber-600 text-[11px] font-bold">
Tiongkok, Vietnam, Singapura
</div>
</div>
<div class="bg-white p-5 border border-slate-200 rounded-xl shadow-sm">
<div class="flex justify-between items-start">
<div>
<p class="text-slate-500 text-xs font-bold uppercase tracking-wider mb-1">Piutang Berjalan</p>
<h3 class="text-2xl font-bold text-on-surface">Rp 2.4M</h3>
</div>
<div class="p-2 bg-slate-50 text-slate-700 rounded-lg">
<span class="material-symbols-outlined">account_balance_wallet</span>
</div>
</div>
<div class="mt-4 flex items-center text-error text-[11px] font-bold">
<span class="material-symbols-outlined text-[14px] mr-1">warning</span>
3 Melewati tenggat
</div>
</div>
</div>
<!-- Table Container -->
<div class="bg-white border border-slate-200 rounded-xl shadow-sm overflow-hidden">
<div class="p-4 border-b border-slate-100 flex flex-col md:flex-row md:items-center justify-between gap-4">
<div class="flex items-center gap-4">
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-[20px]">filter_list</span>
<select class="pl-10 pr-8 py-2 bg-slate-50 border-slate-200 rounded-lg text-xs font-semibold text-on-surface focus:ring-teal-700 focus:border-teal-700">
<option>Semua Wilayah</option>
<option>Domestik</option>
<option>Internasional</option>
</select>
</div>
<div class="flex items-center gap-2 text-xs font-medium text-slate-500">
Menampilkan 1-10 dari 148
</div>
</div>
<div class="relative w-full md:w-72">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-[20px]">search</span>
<input class="w-full pl-10 pr-4 py-2 bg-slate-50 border-slate-200 rounded-lg text-xs focus:ring-teal-700 focus:border-teal-700" placeholder="Cari Kode atau Nama..." type="text"/>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full border-collapse">
<thead>
<tr class="bg-slate-50 text-left border-b border-slate-200">
<th class="px-6 py-4 font-label-caps text-label-caps text-slate-500 uppercase tracking-wider">KODE</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-slate-500 uppercase tracking-wider">NAMA PELANGGAN</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-slate-500 uppercase tracking-wider">KONTAK &amp; EMAIL</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-slate-500 uppercase tracking-wider">INFORMASI BANK</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-slate-500 uppercase tracking-wider">WILAYAH</th>
<th class="px-6 py-4 font-label-caps text-label-caps text-slate-500 uppercase tracking-wider">STATUS</th>
<th class="px-6 py-4 text-right"></th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<!-- Row 1 -->
<tr class="hover:bg-slate-50/80 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-teal-800 font-bold">CUST-001</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">Tianjin Trading Co., Ltd</span>
<span class="text-[11px] text-slate-400">Pusat Distribusi Asia Timur</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">+86 138 9988 7766</span>
<span class="text-[11px] text-slate-400">order@tianjintrading.cn</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">ICBC Bank</span>
<span class="text-[11px] text-slate-400">8823 **** 0092</span>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2 py-1 bg-slate-100 text-slate-600 rounded text-[10px] font-bold uppercase">Internasional</span>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-emerald-100 text-emerald-800 rounded-full text-[10px] font-bold uppercase">Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="p-1 hover:bg-slate-200 rounded transition-colors text-slate-400">
<span class="material-symbols-outlined">more_vert</span>
</button>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50/80 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-teal-800 font-bold">CUST-002</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">PT Sinar Makmur Abadi</span>
<span class="text-[11px] text-slate-400">Distributor Lokal Jakarta</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">021-5556677</span>
<span class="text-[11px] text-slate-400">logistic@sinarmakmur.co.id</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">Bank Central Asia</span>
<span class="text-[11px] text-slate-400">2210 **** 5541</span>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2 py-1 bg-teal-50 text-teal-600 rounded text-[10px] font-bold uppercase">Domestik</span>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-emerald-100 text-emerald-800 rounded-full text-[10px] font-bold uppercase">Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="p-1 hover:bg-slate-200 rounded transition-colors text-slate-400">
<span class="material-symbols-outlined">more_vert</span>
</button>
</td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-slate-50/80 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-teal-800 font-bold">CUST-003</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">Guangzhou Wellness Ltd</span>
<span class="text-[11px] text-slate-400">Importir Obat Tradisional</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">+86 20 1234 5678</span>
<span class="text-[11px] text-slate-400">import@gzwellness.com</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">Bank of China</span>
<span class="text-[11px] text-slate-400">4431 **** 8899</span>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2 py-1 bg-slate-100 text-slate-600 rounded text-[10px] font-bold uppercase">Internasional</span>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-amber-100 text-amber-800 rounded-full text-[10px] font-bold uppercase">Tertunda</span>
</td>
<td class="px-6 py-4 text-right">
<button class="p-1 hover:bg-slate-200 rounded transition-colors text-slate-400">
<span class="material-symbols-outlined">more_vert</span>
</button>
</td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-slate-50/80 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-teal-800 font-bold">CUST-004</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">Singapore Bird Nest Center</span>
<span class="text-[11px] text-slate-400">Toko Ritel &amp; Ekspor</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">+65 9123 4567</span>
<span class="text-[11px] text-slate-400">contact@sgbirdnest.sg</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">DBS Bank</span>
<span class="text-[11px] text-slate-400">1109 **** 2231</span>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2 py-1 bg-slate-100 text-slate-600 rounded text-[10px] font-bold uppercase">Internasional</span>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-emerald-100 text-emerald-800 rounded-full text-[10px] font-bold uppercase">Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="p-1 hover:bg-slate-200 rounded transition-colors text-slate-400">
<span class="material-symbols-outlined">more_vert</span>
</button>
</td>
</tr>
<!-- Row 5 -->
<tr class="hover:bg-slate-50/80 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-teal-800 font-bold">CUST-005</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">UD Sarang Sejahtera</span>
<span class="text-[11px] text-slate-400">Pengepul Lokal Surabaya</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">031-778899</span>
<span class="text-[11px] text-slate-400">admin@sarangsejahtera.com</span>
</div>
</td>
<td class="px-6 py-4">
<div class="flex flex-col">
<span class="font-table-data text-on-surface">Bank Mandiri</span>
<span class="text-[11px] text-slate-400">1420 **** 0021</span>
</div>
</td>
<td class="px-6 py-4">
<span class="px-2 py-1 bg-teal-50 text-teal-600 rounded text-[10px] font-bold uppercase">Domestik</span>
</td>
<td class="px-6 py-4">
<span class="px-2.5 py-1 bg-error-container text-on-error-container rounded-full text-[10px] font-bold uppercase">Non-Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="p-1 hover:bg-slate-200 rounded transition-colors text-slate-400">
<span class="material-symbols-outlined">more_vert</span>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p-4 bg-slate-50 border-t border-slate-200 flex items-center justify-between">
<div class="text-xs font-semibold text-slate-500">
Halaman 1 dari 15
</div>
<div class="flex gap-2">
<button class="px-3 py-1.5 border border-slate-300 rounded bg-white text-slate-500 text-xs font-bold disabled:opacity-50" disabled="">Sebelumnya</button>
<button class="px-3 py-1.5 border border-slate-300 rounded bg-white text-slate-700 text-xs font-bold hover:bg-slate-50">Berikutnya</button>
</div>
</div>
</div>
</div>
</main>
<!-- Floating Action Button (FAB) - Suppressed because this is a list view with its own header CTA -->
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

View File

@ -0,0 +1,420 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-primary-container": "#92d5df",
"on-primary": "#ffffff",
"secondary-fixed": "#d1e4fb",
"on-tertiary": "#ffffff",
"surface-tint": "#1d6871",
"primary": "#00454c",
"tertiary-fixed-dim": "#feb78a",
"on-background": "#191c1d",
"tertiary": "#60320f",
"surface": "#f8fafa",
"on-secondary": "#ffffff",
"on-surface": "#191c1d",
"on-surface-variant": "#3f484a",
"error": "#ba1a1a",
"on-primary-fixed-variant": "#004f57",
"tertiary-fixed": "#ffdbc7",
"primary-fixed": "#aaeef8",
"on-tertiary-fixed-variant": "#6b3a17",
"on-secondary-fixed-variant": "#36485b",
"inverse-on-surface": "#eff1f1",
"error-container": "#ffdad6",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"outline": "#6f797a",
"surface-container-highest": "#e1e3e3",
"secondary-container": "#cfe2f9",
"on-secondary-container": "#526478",
"on-primary-fixed": "#001f23",
"tertiary-container": "#7c4824",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"on-secondary-fixed": "#091d2e",
"surface-bright": "#f8fafa",
"secondary": "#4e6073",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-dim": "#d8dadb",
"surface-container-low": "#f2f4f4",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-tertiary-fixed": "#311300",
"background": "#f8fafa",
"surface-container": "#eceeee",
"on-tertiary-container": "#ffbb91",
"inverse-surface": "#2e3131"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"h2": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"table-data": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-background text-on-background antialiased">
<!-- TopAppBar -->
<header class="fixed top-0 left-0 w-full z-40 flex justify-between items-center px-6 h-16 bg-white border-b border-slate-200 shadow-sm">
<div class="flex items-center gap-4">
<img alt="Logo Perusahaan Walet" class="h-10 w-auto" data-alt="Corporate minimalist logo for bird's nest company featuring a stylized swift bird icon in teal color" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBbjyPNHZQwSEKJXwRvtfnHtZ-yTzUkp54PbPcRU4rh_u1-SCYCYTT88GuSnKRe0KRaDO0RfJBJ6G64dzjbF-SY66HKRrn9D71_CFhT-IQfLa0nfTYw_8bAmRDu4J8a5JEtQom7ICoJ19OnAcQyTw8foYuxFRg8uYNHpC3OlTRPjpxuEvb1pbQQBXr8Uce16OhW-h--L2Fc9ZwWdoTJ4OTii7Ra9h-uDAGYzOJkeR1U0VakMuZn4VZcUZ8zyzELdGc0UwTdpGzTfg"/>
<span class="font-inter text-xl font-bold text-teal-700">Sistem Inventaris Walet</span>
</div>
<div class="flex items-center gap-6">
<div class="hidden md:flex items-center bg-slate-50 border border-slate-200 rounded px-3 py-1.5">
<span class="material-symbols-outlined text-slate-400 text-sm">search</span>
<input class="bg-transparent border-none focus:ring-0 text-sm w-64" placeholder="Cari data..." type="text"/>
</div>
<div class="flex items-center gap-4">
<button class="material-symbols-outlined text-slate-500 hover:bg-slate-50 p-2 rounded transition-colors">notifications</button>
<button class="material-symbols-outlined text-slate-500 hover:bg-slate-50 p-2 rounded transition-colors">help_outline</button>
<button class="bg-primary text-on-primary px-4 py-2 rounded font-inter text-sm flex items-center gap-2 active:opacity-80 transition-all">
<span class="material-symbols-outlined text-sm">qr_code_scanner</span>
Scan Barcode
</button>
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full flex flex-col py-6 bg-slate-50 w-64 border-r border-slate-200 z-30">
<div class="px-6 mb-10 pt-16">
<h2 class="text-lg font-black text-teal-800 font-inter">Inventory Walet</h2>
<p class="text-xs font-medium uppercase tracking-wider text-slate-500">Sistem Traceability</p>
</div>
<nav class="flex-1 space-y-1">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">dashboard</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Dashboard</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">inventory_2</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Laporan Stok</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 bg-teal-50 text-teal-700 rounded-r-lg border-l-4 border-teal-700 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">database</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Data Master</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">qr_code_scanner</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Pelacakan</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">settings</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Pengaturan</span>
</a>
</nav>
<div class="px-4 py-6 mt-auto border-t border-slate-200">
<button class="w-full bg-primary text-on-primary py-3 rounded-lg font-bold flex items-center justify-center gap-2 mb-4 hover:translate-x-1 transition-transform active:scale-95 duration-75">
<span class="material-symbols-outlined">add</span>
Tambah Lot Baru
</button>
<a class="flex items-center gap-3 px-4 py-2 text-slate-600 hover:bg-slate-100 transition-colors" href="#">
<span class="material-symbols-outlined">help</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Bantuan</span>
</a>
<a class="flex items-center gap-3 px-4 py-2 text-slate-600 hover:bg-slate-100 transition-colors" href="#">
<span class="material-symbols-outlined">logout</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Log Keluar</span>
</a>
</div>
</aside>
<!-- Main Content Canvas -->
<main class="pl-64 pt-16 min-h-screen">
<div class="p-container-margin">
<!-- Header Section -->
<div class="flex flex-col md:flex-row md:items-center justify-between mb-8 gap-4">
<div>
<h1 class="font-h1 text-h1 text-on-background">Daftar Pemasok</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant">Kelola database pemasok sarang burung walet mentah dan mitra ekspor.</p>
</div>
<div class="flex items-center gap-3">
<button class="px-4 py-2 border border-outline text-on-surface rounded font-inter text-sm flex items-center gap-2 hover:bg-surface-container-high transition-colors">
<span class="material-symbols-outlined text-sm">download</span>
Ekspor CSV
</button>
<button class="px-4 py-2 bg-primary text-on-primary rounded font-inter text-sm flex items-center gap-2 active:opacity-90 shadow-sm">
<span class="material-symbols-outlined text-sm">person_add</span>
Tambah Pemasok
</button>
</div>
</div>
<!-- Dashboard Stats Summary (Bento-style layout) -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-8">
<div class="bg-white p-4 rounded border border-slate-200 shadow-sm flex items-center gap-4">
<div class="p-3 bg-teal-50 text-teal-700 rounded">
<span class="material-symbols-outlined">groups</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">TOTAL PEMASOK</p>
<p class="font-display-lot text-display-lot text-on-surface">42</p>
</div>
</div>
<div class="bg-white p-4 rounded border border-slate-200 shadow-sm flex items-center gap-4">
<div class="p-3 bg-secondary-container text-on-secondary-container rounded">
<span class="material-symbols-outlined">verified</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">PEMASOK TERVERIFIKASI</p>
<p class="font-display-lot text-display-lot text-on-surface">38</p>
</div>
</div>
<div class="bg-white p-4 rounded border border-slate-200 shadow-sm flex items-center gap-4">
<div class="p-3 bg-tertiary-fixed text-on-tertiary-fixed-variant rounded">
<span class="material-symbols-outlined">local_shipping</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">PENGIRIMAN BULAN INI</p>
<p class="font-display-lot text-display-lot text-on-surface">128</p>
</div>
</div>
<div class="bg-white p-4 rounded border border-slate-200 shadow-sm flex items-center gap-4">
<div class="p-3 bg-primary-fixed text-on-primary-fixed-variant rounded">
<span class="material-symbols-outlined">trending_up</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">TOTAL VOLUME (KG)</p>
<p class="font-display-lot text-display-lot text-on-surface">1,450.5</p>
</div>
</div>
</div>
<!-- Supplier Table Container -->
<div class="bg-white rounded border border-slate-200 shadow-sm overflow-hidden">
<!-- Table Controls -->
<div class="px-6 py-4 border-b border-slate-200 flex flex-wrap items-center justify-between gap-4">
<div class="flex items-center gap-4">
<div class="relative">
<select class="appearance-none bg-slate-50 border border-slate-200 text-sm rounded px-4 py-2 pr-10 focus:ring-primary focus:border-primary">
<option>Semua Wilayah</option>
<option>Kalimantan Barat</option>
<option>Sumatera Utara</option>
<option>Jawa Tengah</option>
</select>
<span class="material-symbols-outlined absolute right-3 top-2.5 text-slate-400 pointer-events-none text-sm">expand_more</span>
</div>
<div class="relative">
<select class="appearance-none bg-slate-50 border border-slate-200 text-sm rounded px-4 py-2 pr-10 focus:ring-primary focus:border-primary">
<option>Semua Status</option>
<option>Aktif</option>
<option>Non-Aktif</option>
</select>
<span class="material-symbols-outlined absolute right-3 top-2.5 text-slate-400 pointer-events-none text-sm">expand_more</span>
</div>
</div>
<p class="font-body-sm text-body-sm text-slate-500">Menampilkan 1-10 dari 42 pemasok</p>
</div>
<div class="overflow-x-auto">
<table class="w-full border-collapse">
<thead>
<tr class="bg-slate-50 border-b border-slate-200">
<th class="px-6 py-4 text-left font-label-caps text-label-caps text-on-surface-variant uppercase">Kode Pemasok</th>
<th class="px-6 py-4 text-left font-label-caps text-label-caps text-on-surface-variant uppercase">Nama Pemasok</th>
<th class="px-6 py-4 text-left font-label-caps text-label-caps text-on-surface-variant uppercase">Informasi Kontak</th>
<th class="px-6 py-4 text-left font-label-caps text-label-caps text-on-surface-variant uppercase">Detail Bank</th>
<th class="px-6 py-4 text-left font-label-caps text-label-caps text-on-surface-variant uppercase">Status</th>
<th class="px-6 py-4 text-right font-label-caps text-label-caps text-on-surface-variant uppercase">Aksi</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<!-- Supplier Row 1 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-primary font-bold">SUP-W-001</td>
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded-full bg-slate-100 flex items-center justify-center font-bold text-teal-700 text-xs">BT</div>
<div>
<p class="font-table-data text-table-data text-on-surface">UD Berkah Tayan</p>
<p class="text-[11px] text-on-surface-variant">Kalimantan Barat</p>
</div>
</div>
</td>
<td class="px-6 py-4">
<p class="font-body-sm text-body-sm text-on-surface">+62 812-3456-7890</p>
<p class="text-[11px] text-on-surface-variant">berkahtayan@example.com</p>
</td>
<td class="px-6 py-4">
<div class="flex items-center gap-2">
<span class="px-1.5 py-0.5 bg-slate-200 rounded text-[10px] font-bold text-slate-700">BCA</span>
<p class="font-table-data text-table-data text-on-surface">882-019-2831</p>
</div>
<p class="text-[11px] text-on-surface-variant">A.n. Ahmad Sudrajat</p>
</td>
<td class="px-6 py-4">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
Aktif
</span>
</td>
<td class="px-6 py-4 text-right">
<button class="material-symbols-outlined text-slate-400 hover:text-primary transition-colors">more_vert</button>
</td>
</tr>
<!-- Supplier Row 2 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-primary font-bold">SUP-W-002</td>
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded-full bg-slate-100 flex items-center justify-center font-bold text-teal-700 text-xs">MA</div>
<div>
<p class="font-table-data text-table-data text-on-surface">Mitra Abadi Medan</p>
<p class="text-[11px] text-on-surface-variant">Sumatera Utara</p>
</div>
</div>
</td>
<td class="px-6 py-4">
<p class="font-body-sm text-body-sm text-on-surface">+62 811-9988-7766</p>
<p class="text-[11px] text-on-surface-variant">mitramedan@example.com</p>
</td>
<td class="px-6 py-4">
<div class="flex items-center gap-2">
<span class="px-1.5 py-0.5 bg-slate-200 rounded text-[10px] font-bold text-slate-700">BNI</span>
<p class="font-table-data text-table-data text-on-surface">0932-1122-33</p>
</div>
<p class="text-[11px] text-on-surface-variant">A.n. CV Mitra Abadi</p>
</td>
<td class="px-6 py-4">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
Aktif
</span>
</td>
<td class="px-6 py-4 text-right">
<button class="material-symbols-outlined text-slate-400 hover:text-primary transition-colors">more_vert</button>
</td>
</tr>
<!-- Supplier Row 3 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-primary font-bold">SUP-W-003</td>
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded-full bg-slate-100 flex items-center justify-center font-bold text-teal-700 text-xs">SJ</div>
<div>
<p class="font-table-data text-table-data text-on-surface">Sumber Jaya Walet</p>
<p class="text-[11px] text-on-surface-variant">Jawa Tengah</p>
</div>
</div>
</td>
<td class="px-6 py-4">
<p class="font-body-sm text-body-sm text-on-surface">+62 813-0011-2233</p>
<p class="text-[11px] text-on-surface-variant">sumberjaya@example.com</p>
</td>
<td class="px-6 py-4">
<div class="flex items-center gap-2">
<span class="px-1.5 py-0.5 bg-slate-200 rounded text-[10px] font-bold text-slate-700">Mandiri</span>
<p class="font-table-data text-table-data text-on-surface">123-00-0987654-2</p>
</div>
<p class="text-[11px] text-on-surface-variant">A.n. Lilik Wijaya</p>
</td>
<td class="px-6 py-4">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800">
Menunggu Verifikasi
</span>
</td>
<td class="px-6 py-4 text-right">
<button class="material-symbols-outlined text-slate-400 hover:text-primary transition-colors">more_vert</button>
</td>
</tr>
<!-- Supplier Row 4 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4 font-table-data text-table-data text-primary font-bold">SUP-W-004</td>
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded-full bg-slate-100 flex items-center justify-center font-bold text-teal-700 text-xs">PH</div>
<div>
<p class="font-table-data text-table-data text-on-surface">Putra Hulu Kapuas</p>
<p class="text-[11px] text-on-surface-variant">Kalimantan Barat</p>
</div>
</div>
</td>
<td class="px-6 py-4">
<p class="font-body-sm text-body-sm text-on-surface">+62 852-1111-2222</p>
<p class="text-[11px] text-on-surface-variant">putrahulu@example.com</p>
</td>
<td class="px-6 py-4">
<div class="flex items-center gap-2">
<span class="px-1.5 py-0.5 bg-slate-200 rounded text-[10px] font-bold text-slate-700">BRI</span>
<p class="font-table-data text-table-data text-on-surface">0021-01-223344-55-6</p>
</div>
<p class="text-[11px] text-on-surface-variant">A.n. PT Putra Hulu Kapuas</p>
</td>
<td class="px-6 py-4">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
Aktif
</span>
</td>
<td class="px-6 py-4 text-right">
<button class="material-symbols-outlined text-slate-400 hover:text-primary transition-colors">more_vert</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Pagination -->
<div class="px-6 py-4 bg-slate-50 border-t border-slate-200 flex items-center justify-between">
<button class="px-3 py-1.5 text-xs font-medium text-slate-500 hover:text-primary disabled:opacity-50" disabled="">Sebelumnya</button>
<div class="flex items-center gap-1">
<button class="w-8 h-8 rounded bg-primary text-on-primary text-xs font-bold">1</button>
<button class="w-8 h-8 rounded hover:bg-slate-200 text-xs font-bold">2</button>
<button class="w-8 h-8 rounded hover:bg-slate-200 text-xs font-bold">3</button>
<span class="px-2 text-slate-400 text-xs">...</span>
<button class="w-8 h-8 rounded hover:bg-slate-200 text-xs font-bold">5</button>
</div>
<button class="px-3 py-1.5 text-xs font-medium text-slate-500 hover:text-primary">Selanjutnya</button>
</div>
</div>
</div>
</main>
<!-- FAB for mobile context -->
<div class="md:hidden fixed bottom-6 right-6 z-50">
<button class="w-14 h-14 bg-primary text-on-primary rounded-full shadow-lg flex items-center justify-center active:scale-95 transition-transform">
<span class="material-symbols-outlined">add</span>
</button>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

View File

@ -0,0 +1,419 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary": "#4e6073",
"on-primary-fixed": "#001f23",
"primary-fixed": "#aaeef8",
"outline": "#6f797a",
"background": "#f8fafa",
"on-tertiary-fixed-variant": "#6b3a17",
"on-primary-fixed-variant": "#004f57",
"error-container": "#ffdad6",
"tertiary": "#60320f",
"on-secondary-container": "#526478",
"surface-container": "#eceeee",
"on-tertiary": "#ffffff",
"secondary-container": "#cfe2f9",
"on-error-container": "#93000a",
"inverse-primary": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"surface-tint": "#1d6871",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"inverse-surface": "#2e3131",
"on-secondary-fixed": "#091d2e",
"on-surface": "#191c1d",
"tertiary-fixed": "#ffdbc7",
"surface": "#f8fafa",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"outline-variant": "#bfc8ca",
"on-surface-variant": "#3f484a",
"surface-container-highest": "#e1e3e3",
"inverse-on-surface": "#eff1f1",
"secondary-fixed-dim": "#b5c8df",
"surface-container-high": "#e6e8e9",
"surface-container-low": "#f2f4f4",
"on-tertiary-container": "#ffbb91",
"on-tertiary-fixed": "#311300",
"error": "#ba1a1a",
"surface-bright": "#f8fafa",
"primary": "#00454c",
"primary-fixed-dim": "#8ed1db",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"on-background": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"on-primary": "#ffffff",
"surface-dim": "#d8dadb",
"on-secondary": "#ffffff",
"tertiary-container": "#7c4824"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"compact-padding": "8px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"gutter": "16px"
},
"fontFamily": {
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"h2": ["Inter"],
"label-caps": ["Inter"]
},
"fontSize": {
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
}
body {
background-color: #f8fafa;
color: #191c1d;
}
</style>
</head>
<body class="font-body-base overflow-hidden">
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 bg-slate-50 border-r border-slate-200 flex flex-col py-4 z-50">
<div class="px-6 mb-8">
<div class="flex items-center gap-3">
<div class="w-8 h-8 bg-primary-container rounded flex items-center justify-center">
<span class="material-symbols-outlined text-on-primary-container" style="font-variation-settings: 'FILL' 1;">nest_eco</span>
</div>
<div>
<h2 class="text-teal-900 font-black text-sm leading-tight">Walet Operations</h2>
<p class="text-[10px] text-slate-500 font-bold tracking-wider">V1.0.4-Operational</p>
</div>
</div>
</div>
<nav class="flex-1 space-y-1 px-3">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:text-teal-600 hover:bg-slate-100 rounded duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="dashboard">dashboard</span>
<span>Dashboard</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:text-teal-600 hover:bg-slate-100 rounded duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="inventory_2">inventory_2</span>
<span>Inventory Stock</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:text-teal-600 hover:bg-slate-100 rounded duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="account_tree">account_tree</span>
<span>Traceability Logs</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 bg-teal-50 text-teal-700 border-r-4 border-teal-600 rounded-l duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="database" style="font-variation-settings: 'FILL' 1;">database</span>
<span>Master Data</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:text-teal-600 hover:bg-slate-100 rounded duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="qr_code_scanner">qr_code_scanner</span>
<span>Barcode Scanner</span>
</a>
</nav>
<div class="mt-auto px-3 border-t border-slate-200 pt-4 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:text-teal-600 hover:bg-slate-100 rounded duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="help_outline">help_outline</span>
<span>Support</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:text-teal-600 hover:bg-slate-100 rounded duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="logout">logout</span>
<span>Sign Out</span>
</a>
</div>
</aside>
<!-- Main Content Shell -->
<main class="ml-64 min-h-screen flex flex-col">
<!-- TopNavBar -->
<header class="bg-white border-b border-slate-200 shadow-sm flex items-center justify-between px-6 h-14 w-full sticky top-0 z-40">
<div class="flex items-center gap-4 flex-1">
<div class="flex items-center bg-slate-100 rounded px-3 py-1.5 w-full max-w-md border border-slate-200">
<span class="material-symbols-outlined text-slate-400 text-[18px] mr-2" data-icon="search">search</span>
<input class="bg-transparent border-none focus:ring-0 text-[13px] w-full text-slate-700" placeholder="Cari Kode Pemasok atau Nama..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<div class="flex items-center gap-2">
<button class="p-2 text-slate-500 hover:bg-slate-50 rounded transition-colors active:opacity-80">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
</button>
<button class="p-2 text-slate-500 hover:bg-slate-50 rounded transition-colors active:opacity-80">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
</button>
</div>
<div class="h-6 w-px bg-slate-200"></div>
<div class="flex items-center gap-3 pl-2">
<div class="text-right hidden sm:block">
<p class="text-[12px] font-bold text-teal-800 leading-tight">Admin Operasional</p>
<p class="text-[10px] text-slate-500">Logistik &amp; Inventory</p>
</div>
<img alt="User Profile" class="w-8 h-8 rounded bg-slate-200 object-cover border border-slate-200" data-alt="corporate headshot of a professional logistics manager in a clean warehouse office environment" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAyohDeWyKSJirkxoxApfxsvjR8NIZOQ0aKY6MlnsQD9dYGTH5t4XulFsIYR7ZYvgr78clYd2cNdd257mFY-v-yRQkOk5UNtoYj0azDgo7H5taDoi62tlU6dUzF_HPt4OBiZ7dtCIsl56GsHkJ-8a8WJ26apcDRHy9kWISVLlGj98EB3OuKZd8IFNHiqEXjaBi9pQYB68hwH1PUhK5azdEzZ5nAM6VChqsWBXnX46q2fs4-E-7eRZDaoq9zaUrKiAqktwNhrt5xXw"/>
</div>
</div>
</header>
<!-- Content Area -->
<div class="p-container-margin flex-1 overflow-auto bg-background">
<!-- Header Section -->
<div class="flex items-center justify-between mb-6">
<div>
<h1 class="font-h1 text-h1 text-on-surface">Daftar Pemasok</h1>
<nav class="flex text-[11px] font-medium text-slate-400 mt-1 uppercase tracking-widest">
<a class="hover:text-teal-600" href="#">Master Data</a>
<span class="mx-2">/</span>
<span class="text-teal-700">Daftar Pemasok</span>
</nav>
</div>
<button class="flex items-center gap-2 bg-primary text-on-primary px-4 py-2 rounded font-h2 text-h2 hover:opacity-90 transition-all active:scale-95">
<span class="material-symbols-outlined text-[18px]" data-icon="add">add</span>
Tambah Pemasok
</button>
</div>
<!-- Dashboard Stats Summary -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-gutter mb-6">
<div class="bg-white p-4 border border-outline-variant shadow-[0px_2px_4px_rgba(0,0,0,0.05)] rounded">
<p class="text-label-caps font-label-caps text-secondary uppercase mb-1">Total Pemasok</p>
<div class="flex items-end justify-between">
<span class="text-display-lot font-display-lot text-on-surface">124</span>
<span class="text-teal-600 text-body-sm font-bold flex items-center gap-1">
<span class="material-symbols-outlined text-sm" data-icon="trending_up">trending_up</span>
+3 bulan ini
</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant shadow-[0px_2px_4px_rgba(0,0,0,0.05)] rounded">
<p class="text-label-caps font-label-caps text-secondary uppercase mb-1">Pemasok Aktif</p>
<div class="flex items-end justify-between">
<span class="text-display-lot font-display-lot text-on-surface">118</span>
<div class="h-2 w-24 bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-teal-600 w-[95%]"></div>
</div>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant shadow-[0px_2px_4px_rgba(0,0,0,0.05)] rounded">
<p class="text-label-caps font-label-caps text-secondary uppercase mb-1">Menunggu Review QC</p>
<div class="flex items-end justify-between">
<span class="text-display-lot font-display-lot text-on-surface">6</span>
<span class="bg-tertiary-fixed text-on-tertiary-fixed-variant text-[10px] px-2 py-0.5 rounded font-bold">URGENT</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant shadow-[0px_2px_4px_rgba(0,0,0,0.05)] rounded">
<p class="text-label-caps font-label-caps text-secondary uppercase mb-1">Total Transaksi (Bln)</p>
<div class="flex items-end justify-between">
<span class="text-display-lot font-display-lot text-on-surface">Rp 2.4M</span>
<span class="material-symbols-outlined text-slate-300" data-icon="payments">payments</span>
</div>
</div>
</div>
<!-- Data Table Container -->
<div class="bg-white border border-outline-variant shadow-[0px_2px_4px_rgba(0,0,0,0.05)] rounded overflow-hidden">
<div class="p-4 border-b border-outline-variant flex flex-wrap items-center justify-between gap-4">
<div class="flex items-center gap-3">
<button class="flex items-center gap-2 px-3 py-1.5 border border-outline text-on-surface-variant text-body-sm rounded hover:bg-slate-50 transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="filter_list">filter_list</span>
Filter
</button>
<button class="flex items-center gap-2 px-3 py-1.5 border border-outline text-on-surface-variant text-body-sm rounded hover:bg-slate-50 transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="download">download</span>
Export Excel
</button>
</div>
<div class="text-body-sm text-on-surface-variant">
Menampilkan <span class="font-bold">1 - 10</span> dari <span class="font-bold">124</span> Pemasok
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left border-collapse">
<thead>
<tr class="bg-slate-50 border-b border-outline-variant">
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider">Kode</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider">Nama Pemasok</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider">Telepon</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider">Email</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider">Informasi Bank</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider">Status</th>
<th class="px-4 py-3 text-label-caps font-label-caps text-secondary uppercase tracking-wider text-right">Aksi</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<!-- Row 1 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding font-table-data text-table-data text-primary">SUP-WAL-001</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface">CV. Sarang Abadi Jaya</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">0812-3456-7890</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">admin@sarangabadi.com</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<div class="text-on-surface">Bank BCA</div>
<div class="text-[11px] text-slate-500">8820-XXXX-1123</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-bold bg-teal-50 text-teal-700 border border-teal-100">Aktif</span>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-right">
<button class="text-primary hover:underline font-bold text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding font-table-data text-table-data text-primary">SUP-WAL-002</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface">PT. Walet Kalimantan Lestari</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">0821-9988-7766</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">info@waletkal.id</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<div class="text-on-surface">Bank Mandiri</div>
<div class="text-[11px] text-slate-500">123-00-XXXX-456</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-bold bg-teal-50 text-teal-700 border border-teal-100">Aktif</span>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-right">
<button class="text-primary hover:underline font-bold text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding font-table-data text-table-data text-primary">SUP-WAL-003</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface">UD. Sumber Alam</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">0852-1122-3344</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">sumberalam@mail.com</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<div class="text-on-surface">Bank BNI</div>
<div class="text-[11px] text-slate-500">4455-XXXX-001</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-bold bg-slate-100 text-slate-600 border border-slate-200">Non-Aktif</span>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-right">
<button class="text-primary hover:underline font-bold text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding font-table-data text-table-data text-primary">SUP-WAL-004</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface">Bapak Heru Setiawan (Personal)</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">0813-5566-7788</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">heru.s@gmail.com</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<div class="text-on-surface">Bank BRI</div>
<div class="text-[11px] text-slate-500">0012-XXXX-998</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-bold bg-teal-50 text-teal-700 border border-teal-100">Aktif</span>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-right">
<button class="text-primary hover:underline font-bold text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 5 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-compact-padding font-table-data text-table-data text-primary">SUP-WAL-005</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface">Koperasi Walet Mandiri</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">0811-0011-2233</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-on-surface-variant">kop@waletmandiri.org</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<div class="text-on-surface">Bank BCA</div>
<div class="text-[11px] text-slate-500">8820-XXXX-5567</div>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-bold bg-teal-50 text-teal-700 border border-teal-100">Aktif</span>
</td>
<td class="px-4 py-compact-padding font-table-data text-table-data text-right">
<button class="text-primary hover:underline font-bold text-[12px]">Lihat Detail</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Pagination Footer -->
<div class="p-4 bg-slate-50 border-t border-outline-variant flex items-center justify-between">
<div class="flex items-center gap-1">
<button class="w-8 h-8 flex items-center justify-center rounded border border-outline-variant bg-white text-slate-400 hover:bg-slate-50">
<span class="material-symbols-outlined text-[18px]" data-icon="chevron_left">chevron_left</span>
</button>
<button class="w-8 h-8 flex items-center justify-center rounded border border-primary bg-primary text-on-primary text-table-data font-bold">1</button>
<button class="w-8 h-8 flex items-center justify-center rounded border border-outline-variant bg-white text-on-surface text-table-data hover:bg-slate-50">2</button>
<button class="w-8 h-8 flex items-center justify-center rounded border border-outline-variant bg-white text-on-surface text-table-data hover:bg-slate-50">3</button>
<span class="px-2 text-slate-400">...</span>
<button class="w-8 h-8 flex items-center justify-center rounded border border-outline-variant bg-white text-on-surface text-table-data hover:bg-slate-50">13</button>
<button class="w-8 h-8 flex items-center justify-center rounded border border-outline-variant bg-white text-slate-600 hover:bg-slate-50">
<span class="material-symbols-outlined text-[18px]" data-icon="chevron_right">chevron_right</span>
</button>
</div>
<div class="flex items-center gap-2">
<span class="text-body-sm text-on-surface-variant">Baris per halaman:</span>
<select class="bg-white border border-outline-variant rounded px-2 py-1 text-[12px] font-bold focus:ring-teal-500">
<option>10</option>
<option>25</option>
<option>50</option>
</select>
</div>
</div>
</div>
<!-- Contextual Help / Note Section -->
<div class="mt-gutter grid grid-cols-1 md:grid-cols-3 gap-gutter">
<div class="col-span-2 bg-secondary-container/30 border border-secondary-container p-4 rounded flex gap-4">
<span class="material-symbols-outlined text-secondary" data-icon="info" style="font-variation-settings: 'FILL' 1;">info</span>
<div>
<h4 class="text-body-base font-bold text-on-secondary-container mb-1">Catatan Keamanan Data</h4>
<p class="text-body-sm text-secondary leading-relaxed">Pastikan semua data rekening bank telah diverifikasi melalui proses KYC (Know Your Customer) sebelum melakukan pencairan dana untuk lot sarang burung walet yang diterima.</p>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 rounded flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-10 h-10 bg-tertiary-fixed rounded-full flex items-center justify-center">
<span class="material-symbols-outlined text-on-tertiary-fixed" data-icon="contact_support">contact_support</span>
</div>
<div>
<p class="text-body-sm font-bold text-on-surface">Butuh Bantuan?</p>
<p class="text-[11px] text-on-surface-variant">Hubungi IT Support</p>
</div>
</div>
<button class="p-2 bg-slate-100 rounded hover:bg-slate-200 transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="arrow_forward">arrow_forward</span>
</button>
</div>
</div>
</div>
</main>
<!-- Contextual FAB (Only on specific screens, but useful for quick actions here) -->
<button class="fixed bottom-6 right-6 w-14 h-14 bg-teal-600 text-white rounded-full shadow-lg flex items-center justify-center hover:scale-105 active:scale-95 transition-all z-50">
<span class="material-symbols-outlined text-[28px]" data-icon="search" style="font-variation-settings: 'wght' 600;">search</span>
</button>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

View File

@ -0,0 +1,504 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>SwiftLot Walet Inventory Dashboard</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error-container": "#93000a",
"surface-bright": "#f8fafa",
"tertiary": "#60320f",
"inverse-primary": "#8ed1db",
"error-container": "#ffdad6",
"error": "#ba1a1a",
"surface-container-low": "#f2f4f4",
"secondary-container": "#cfe2f9",
"primary": "#00454c",
"outline-variant": "#bfc8ca",
"on-secondary-fixed-variant": "#36485b",
"on-surface-variant": "#3f484a",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-variant": "#e1e3e3",
"surface-dim": "#d8dadb",
"outline": "#6f797a",
"on-secondary-container": "#526478",
"on-secondary-fixed": "#091d2e",
"tertiary-container": "#7c4824",
"inverse-surface": "#2e3131",
"background": "#f8fafa",
"on-tertiary": "#ffffff",
"on-surface": "#191c1d",
"secondary": "#4e6073",
"primary-container": "#0d5e67",
"on-primary-fixed-variant": "#004f57",
"surface-container": "#eceeee",
"on-primary-container": "#92d5df",
"primary-fixed-dim": "#8ed1db",
"tertiary-fixed-dim": "#feb78a",
"on-tertiary-fixed": "#311300",
"secondary-fixed": "#d1e4fb",
"inverse-on-surface": "#eff1f1",
"on-primary-fixed": "#001f23",
"on-secondary": "#ffffff",
"surface-tint": "#1d6871",
"on-tertiary-container": "#ffbb91",
"primary-fixed": "#aaeef8",
"secondary-fixed-dim": "#b5c8df",
"on-primary": "#ffffff",
"surface": "#f8fafa",
"surface-container-highest": "#e1e3e3",
"on-error": "#ffffff",
"on-tertiary-fixed-variant": "#6b3a17",
"tertiary-fixed": "#ffdbc7",
"on-background": "#191c1d"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-sm": "32px"
},
"fontFamily": {
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
}
}
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
</style>
</head>
<body class="bg-background font-body-base text-on-surface">
<!-- Persistent SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 bg-slate-50 flex flex-col py-4 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-8 h-8 bg-primary-container rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white" data-icon="nest_eco_friendly">nest_eco</span>
</div>
<div>
<h1 class="text-teal-900 font-black text-sm leading-tight">Sarang Ops</h1>
<p class="text-[10px] text-slate-500 uppercase tracking-wider font-bold">Pabrik Pengolahan A</p>
</div>
</div>
<nav class="flex-1 space-y-1 px-3">
<a class="flex items-center gap-3 px-3 py-2 bg-white text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
Dasbor
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="shopping_cart">shopping_cart</span>
Pembelian
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="receipt_long">receipt_long</span>
Penerimaan
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
Inventaris
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="monitoring">monitoring</span>
Analitik
</a>
</nav>
<div class="px-3 mb-6">
<button class="w-full flex items-center justify-center gap-2 py-2.5 bg-[#0D5E67] text-white rounded-lg text-xs font-bold hover:bg-primary transition-colors shadow-sm">
<span class="material-symbols-outlined text-sm" data-icon="qr_code_scanner">qr_code_scanner</span>
Scan Lot Baru
</button>
</div>
<div class="border-t border-slate-200 pt-4 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
Pengaturan
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="contact_support">contact_support</span>
Dukungan
</a>
</div>
</aside>
<!-- Main Content Area -->
<main class="ml-64 min-h-screen flex flex-col">
<!-- TopAppBar -->
<header class="h-14 px-6 w-full flex justify-between items-center bg-white border-b border-slate-200 sticky top-0 z-40 shadow-sm">
<div class="flex items-center gap-4">
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-lg" data-icon="search">search</span>
<input class="pl-10 pr-4 py-1.5 bg-slate-50 border-none rounded-md text-sm w-80 focus:ring-2 focus:ring-primary-container/20" placeholder="Cari kode lot, pemasok..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<button class="p-2 text-slate-600 hover:bg-slate-50 rounded-full transition-colors relative">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
<span class="absolute top-2 right-2 w-2 h-2 bg-error rounded-full border-2 border-white"></span>
</button>
<button class="p-2 text-slate-600 hover:bg-slate-50 rounded-full transition-colors">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
</button>
<div class="h-8 w-px bg-slate-200 mx-1"></div>
<div class="flex items-center gap-3 pl-2">
<div class="text-right">
<p class="text-xs font-bold text-slate-900 leading-none">Admin User</p>
<p class="text-[10px] text-slate-500">Pimpinan Operasional</p>
</div>
<img alt="Profil pengguna" class="w-8 h-8 rounded-full border border-slate-200" data-alt="professional corporate headshot of a middle-aged man in business attire, clean lighting, blurred office background" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAvOHZYHDOhsBJiFvgOANstWvZr8vlJ-uWjVHQ6Fsi4Da01Rhew1cIi5G3IVtAUS7Y4JbYSKwSacvidWN370wBafGb1uJoZyTuyad6dMnP6GKUouJmkgZQ795U4slfJCdOFoiWaiw_i04kxQOVMjsGv0z6yM-L5dJ56nHyagqS5Cw8rqR9uE9Vcbmaay8rIA03U4dOV3k-D_Ag4jD8uhLszQGLxBRy3lxGD10W85r7kAJ3q5w93TTZ4DJKwiu9-wVz15He6_lk3pQ"/>
</div>
</div>
</header>
<!-- Canvas -->
<div class="p-container-margin space-y-6">
<!-- Page Title & Quick Actions Row -->
<div class="flex justify-between items-end">
<div>
<h2 class="font-h1 text-h1 text-primary">Ikhtisar Operasional</h2>
<p class="text-body-sm text-secondary">Status real-time inventaris Sarang Burung Walet.</p>
</div>
<div class="flex gap-2">
<button class="px-4 py-2 border border-slate-200 bg-white text-primary text-xs font-bold rounded-lg hover:bg-slate-50 flex items-center gap-2 transition-all">
<span class="material-symbols-outlined text-sm" data-icon="add_shopping_cart">add_shopping_cart</span>
Buat Pembelian
</button>
<button class="px-4 py-2 border border-slate-200 bg-white text-primary text-xs font-bold rounded-lg hover:bg-slate-50 flex items-center gap-2 transition-all">
<span class="material-symbols-outlined text-sm" data-icon="post_add">post_add</span>
Penerimaan Baru
</button>
<button class="px-4 py-2 border border-slate-200 bg-white text-primary text-xs font-bold rounded-lg hover:bg-slate-50 flex items-center gap-2 transition-all">
<span class="material-symbols-outlined text-sm" data-icon="point_of_sale">point_of_sale</span>
Penjualan Baru
</button>
</div>
</div>
<!-- Metrics Bento Grid -->
<div class="grid grid-cols-5 gap-gutter">
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Total Stok Aktif</span>
<span class="material-symbols-outlined text-primary-container" data-icon="inventory_2">inventory_2</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">1.248,5</span>
<span class="text-xs font-bold text-slate-500">kg</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-green-600">
<span class="material-symbols-outlined text-xs" data-icon="trending_up">trending_up</span>
<span>+4,2% dari minggu lalu</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Nilai Inventaris</span>
<span class="material-symbols-outlined text-primary-container" data-icon="account_balance_wallet">account_balance_wallet</span>
</div>
<div class="flex items-baseline gap-1">
<span class="text-xs font-bold text-slate-500">$</span>
<span class="font-display-lot text-display-lot">4,82M</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-slate-500">
<span>Diperbarui 12m lalu</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Pembelian (Bulan Ini)</span>
<span class="material-symbols-outlined text-primary-container" data-icon="shopping_bag">shopping_bag</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">312,4</span>
<span class="text-xs font-bold text-slate-500">kg</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-slate-500">
<span>42 Transaksi</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Penjualan (Bulan Ini)</span>
<span class="material-symbols-outlined text-primary-container" data-icon="sell">sell</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">284,1</span>
<span class="text-xs font-bold text-slate-500">kg</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-green-600">
<span class="material-symbols-outlined text-xs" data-icon="check_circle">check_circle</span>
<span>Sesuai Target</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Penyusutan (Bulan Ini)</span>
<span class="material-symbols-outlined text-error" data-icon="trending_down">trending_down</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot text-error">0,84</span>
<span class="text-xs font-bold text-error">%</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-error">
<span class="material-symbols-outlined text-xs" data-icon="warning">warning</span>
<span>Di atas batas (0,5%)</span>
</div>
</div>
</div>
<!-- Charts & Alerts Section -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Main Comparison Chart (Mockup) -->
<div class="col-span-8 bg-white border border-outline-variant rounded-lg p-6 shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-center mb-6">
<h3 class="font-h2 text-h2 text-primary">Tren Pembelian vs Penjualan</h3>
<select class="text-xs font-bold border-slate-200 rounded-md py-1 px-3 focus:ring-primary">
<option>6 Bulan Terakhir</option>
<option>12 Bulan Terakhir</option>
</select>
</div>
<div class="h-64 flex items-end justify-between gap-4 px-2">
<!-- Bar Chart Mockup -->
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-4/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-3/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">MEI</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-5/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-4/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">JUN</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-3/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-5/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">JUL</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-6/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-2/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">AGS</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-4/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-4/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">SEP</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-5/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-3/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">OKT</span>
</div>
</div>
<div class="mt-6 flex gap-6 pt-4 border-t border-slate-100">
<div class="flex items-center gap-2">
<div class="w-3 h-3 rounded-full bg-primary-container/20"></div>
<span class="text-body-sm font-bold text-slate-600">Pembelian</span>
</div>
<div class="flex items-center gap-2">
<div class="w-3 h-3 rounded-full bg-primary-container"></div>
<span class="text-body-sm font-bold text-slate-600">Penjualan</span>
</div>
</div>
</div>
<!-- Margin & Efficiency (Bento Extension) -->
<div class="col-span-4 flex flex-col gap-gutter">
<div class="flex-1 bg-primary-container p-6 rounded-lg text-white">
<div class="flex justify-between items-start mb-4">
<h3 class="font-h2 text-h2 text-on-primary-container">Rata-rata Margin</h3>
<span class="material-symbols-outlined" data-icon="show_chart">show_chart</span>
</div>
<div class="flex items-baseline gap-2 mb-2">
<span class="text-4xl font-black">22,4%</span>
</div>
<p class="text-xs text-on-primary-container/80">Efisiensi pemrosesan meningkat sebesar 1,2% periode ini melalui kontrol kelembaban yang dioptimalkan.</p>
</div>
<div class="flex-1 bg-white border border-outline-variant rounded-lg p-5">
<h3 class="font-h2 text-h2 text-primary mb-4">Distribusi Umur Lot</h3>
<div class="space-y-3">
<div>
<div class="flex justify-between text-[11px] font-bold mb-1">
<span class="text-slate-500 uppercase">0-30 Hari</span>
<span class="text-primary">64%</span>
</div>
<div class="h-1.5 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-primary-container w-[64%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold mb-1">
<span class="text-slate-500 uppercase">31-60 Hari</span>
<span class="text-primary">28%</span>
</div>
<div class="h-1.5 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-primary-container w-[28%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold mb-1">
<span class="text-slate-500 uppercase">60+ Hari</span>
<span class="text-error">8%</span>
</div>
<div class="h-1.5 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-error w-[8%]"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Bottom Section: Alerts & Summaries -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Alerts Table -->
<div class="col-span-8 bg-white border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)] overflow-hidden">
<div class="px-6 py-4 border-b border-slate-100 flex justify-between items-center">
<h3 class="font-h2 text-h2 text-primary">Peringatan Lot Kritis</h3>
<button class="text-primary-container text-xs font-bold hover:underline">Lihat Semua</button>
</div>
<table class="w-full text-left">
<thead class="bg-slate-50 border-b border-slate-100">
<tr>
<th class="px-6 py-3 text-label-caps text-outline uppercase">ID Lot</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Status</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Umur</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Kelembaban</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Masalah</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-50">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3 font-table-data text-table-data text-primary">#SW-2023-901</td>
<td class="px-6 py-3">
<span class="px-2 py-0.5 bg-yellow-100 text-yellow-800 text-[10px] font-bold rounded-full">Dalam QC</span>
</td>
<td class="px-6 py-3 text-table-data">72 Hari</td>
<td class="px-6 py-3 text-table-data">12,5%</td>
<td class="px-6 py-3 text-table-data text-error font-semibold">Melebihi Batas Umur</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3 font-table-data text-table-data text-primary">#SW-2023-912</td>
<td class="px-6 py-3">
<span class="px-2 py-0.5 bg-red-100 text-red-800 text-[10px] font-bold rounded-full">Ditahan</span>
</td>
<td class="px-6 py-3 text-table-data">45 Hari</td>
<td class="px-6 py-3 text-table-data">14,2%</td>
<td class="px-6 py-3 text-table-data text-error font-semibold">Kelembaban Tinggi</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3 font-table-data text-table-data text-primary">#SW-2023-885</td>
<td class="px-6 py-3">
<span class="px-2 py-0.5 bg-yellow-100 text-yellow-800 text-[10px] font-bold rounded-full">Dalam QC</span>
</td>
<td class="px-6 py-3 text-table-data">68 Hari</td>
<td class="px-6 py-3 text-table-data">11,8%</td>
<td class="px-6 py-3 text-table-data text-error font-semibold">Butuh Audit</td>
</tr>
</tbody>
</table>
</div>
<!-- Top Partners Summary -->
<div class="col-span-4 flex flex-col gap-gutter">
<div class="bg-white border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)] overflow-hidden flex-1">
<div class="px-5 py-4 border-b border-slate-100 bg-slate-50">
<h3 class="font-h2 text-h2 text-primary">Mitra Utama</h3>
</div>
<div class="p-5">
<div class="flex gap-4 mb-4 border-b border-slate-100 pb-2">
<button class="text-xs font-bold text-primary border-b-2 border-primary pb-2">Pemasok</button>
<button class="text-xs font-bold text-slate-400 pb-2">Pelanggan</button>
</div>
<div class="space-y-4">
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">BH</div>
<div>
<p class="text-xs font-bold text-slate-900">Bumi Hijau Group</p>
<p class="text-[10px] text-slate-500">12 Lot / 145kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$82rb</span>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">KS</div>
<div>
<p class="text-xs font-bold text-slate-900">Kalimantan Sourcing</p>
<p class="text-[10px] text-slate-500">8 Lot / 112kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$64rb</span>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">PJ</div>
<div>
<p class="text-xs font-bold text-slate-900">Prima Jaya Walet</p>
<p class="text-[10px] text-slate-500">6 Lot / 88kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$49rb</span>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">AS</div>
<div>
<p class="text-xs font-bold text-slate-900">Agro Sejahtera</p>
<p class="text-[10px] text-slate-500">5 Lot / 76kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$38rb</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

View File

@ -0,0 +1,507 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Birds Nest Inventory Dashboard</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error-container": "#93000a",
"surface-bright": "#f8fafa",
"tertiary": "#60320f",
"inverse-primary": "#8ed1db",
"error-container": "#ffdad6",
"error": "#ba1a1a",
"surface-container-low": "#f2f4f4",
"secondary-container": "#cfe2f9",
"primary": "#00454c",
"outline-variant": "#bfc8ca",
"on-secondary-fixed-variant": "#36485b",
"on-surface-variant": "#3f484a",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-variant": "#e1e3e3",
"surface-dim": "#d8dadb",
"outline": "#6f797a",
"on-secondary-container": "#526478",
"on-secondary-fixed": "#091d2e",
"tertiary-container": "#7c4824",
"inverse-surface": "#2e3131",
"background": "#f8fafa",
"on-tertiary": "#ffffff",
"on-surface": "#191c1d",
"secondary": "#4e6073",
"primary-container": "#0d5e67",
"on-primary-fixed-variant": "#004f57",
"surface-container": "#eceeee",
"on-primary-container": "#92d5df",
"primary-fixed-dim": "#8ed1db",
"tertiary-fixed-dim": "#feb78a",
"on-tertiary-fixed": "#311300",
"secondary-fixed": "#d1e4fb",
"inverse-on-surface": "#eff1f1",
"on-primary-fixed": "#001f23",
"on-secondary": "#ffffff",
"surface-tint": "#1d6871",
"on-tertiary-container": "#ffbb91",
"primary-fixed": "#aaeef8",
"secondary-fixed-dim": "#b5c8df",
"on-primary": "#ffffff",
"surface": "#f8fafa",
"surface-container-highest": "#e1e3e3",
"on-error": "#ffffff",
"on-tertiary-fixed-variant": "#6b3a17",
"tertiary-fixed": "#ffdbc7",
"on-background": "#191c1d"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-sm": "32px"
},
"fontFamily": {
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
}
}
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
</style>
</head>
<body class="bg-background font-body-base text-on-surface">
<!-- Persistent SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 bg-slate-50 flex flex-col py-4 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-10 h-10 flex items-center justify-center">
<img alt="Birds Nest Logo" class="w-full h-full object-contain" src="https://lh3.googleusercontent.com/aida/ADBb0ujG5Gj9MRmb-CMFDL0NF3HPi4slr9bDgIzHxM-XZaNVIc9l1XH3Ue3IwDfLuAZO3TBwmDPKbCIPGYh7lWzUtXLQDuSjoIdVUdiejVsxr2jKoQCNWJjb-xu4jbzoUnkbBMO7pF2xbN29frLKb5kaj-ieQZp1mResor6IhdS2teSUkJOdeYLSIks-mOQPfqbrph-63f-xumqHCzXqxccOnFQIne9y-s8EjwKUCIvbA1R91w4MtGT_lNrZ6gKPGw42XwEU4YDYzaH3"/>
</div>
<div>
<h1 class="text-teal-900 font-black text-sm leading-tight">Birds Nest</h1>
<p class="text-[10px] text-slate-500 uppercase tracking-wider font-bold">Pabrik Pengolahan A</p>
</div>
</div>
<nav class="flex-1 space-y-1 px-3">
<a class="flex items-center gap-3 px-3 py-2 bg-white text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
Dasbor
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="shopping_cart">shopping_cart</span>
Pembelian
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="receipt_long">receipt_long</span>
Penerimaan
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
Inventaris
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="monitoring">monitoring</span>
Analitik
</a>
</nav>
<div class="px-3 mb-6">
<button class="w-full flex items-center justify-center gap-2 py-2.5 bg-[#0D5E67] text-white rounded-lg text-xs font-bold hover:bg-primary transition-colors shadow-sm">
<span class="material-symbols-outlined text-sm" data-icon="qr_code_scanner">qr_code_scanner</span>
Scan Lot Baru
</button>
</div>
<div class="border-t border-slate-200 pt-4 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
Pengaturan
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 font-inter text-[13px] font-medium transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="contact_support">contact_support</span>
Dukungan
</a>
</div>
</aside>
<!-- Main Content Area -->
<main class="ml-64 min-h-screen flex flex-col">
<!-- TopAppBar -->
<header class="h-14 px-6 w-full flex justify-between items-center bg-white border-b border-slate-200 sticky top-0 z-40 shadow-sm">
<div class="flex items-center gap-4">
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-lg" data-icon="search">search</span>
<input class="pl-10 pr-4 py-1.5 bg-slate-50 border-none rounded-md text-sm w-80 focus:ring-2 focus:ring-primary-container/20" placeholder="Cari kode lot, pemasok..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<button class="p-2 text-slate-600 hover:bg-slate-50 rounded-full transition-colors relative">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
<span class="absolute top-2 right-2 w-2 h-2 bg-error rounded-full border-2 border-white"></span>
</button>
<button class="p-2 text-slate-600 hover:bg-slate-50 rounded-full transition-colors">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
</button>
<div class="h-8 w-px bg-slate-200 mx-1"></div>
<div class="flex items-center gap-3 pl-2">
<div class="text-right">
<p class="text-xs font-bold text-slate-900 leading-none">Admin User</p>
<p class="text-[10px] text-slate-500">Pimpinan Operasional</p>
</div>
<img alt="Profil pengguna" class="w-8 h-8 rounded-full border border-slate-200" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAvOHZYHDOhsBJiFvgOANstWvZr8vlJ-uWjVHQ6Fsi4Da01Rhew1cIi5G3IVtAUS7Y4JbYSKwSacvidWN370wBafGb1uJoZyTuyad6dMnP6GKUouJmkgZQ795U4slfJCdOFoiWaiw_i04kxQOVMjsGv0z6yM-L5dJ56nHyagqS5Cw8rqR9uE9Vcbmaay8rIA03U4dOV3k-D_Ag4jD8uhLszQGLxBRy3lxGD10W85r7kAJ3q5w93TTZ4DJKwiu9-wVz15He6_lk3pQ"/>
</div>
</div>
</header>
<!-- Canvas -->
<div class="p-container-margin space-y-6">
<!-- Page Title & Quick Actions Row -->
<div class="flex justify-between items-end">
<div>
<h2 class="font-h1 text-h1 text-primary">Ikhtisar Operasional</h2>
<p class="text-body-sm text-secondary">Status real-time inventaris Birds Nest.</p>
</div>
<div class="flex gap-2">
<button class="px-4 py-2 border border-slate-200 bg-white text-primary text-xs font-bold rounded-lg hover:bg-slate-50 flex items-center gap-2 transition-all">
<span class="material-symbols-outlined text-sm" data-icon="add_shopping_cart">add_shopping_cart</span>
Buat Pembelian
</button>
<button class="px-4 py-2 border border-slate-200 bg-white text-primary text-xs font-bold rounded-lg hover:bg-slate-50 flex items-center gap-2 transition-all">
<span class="material-symbols-outlined text-sm" data-icon="post_add">post_add</span>
Penerimaan Baru
</button>
<button class="px-4 py-2 border border-slate-200 bg-white text-primary text-xs font-bold rounded-lg hover:bg-slate-50 flex items-center gap-2 transition-all">
<span class="material-symbols-outlined text-sm" data-icon="point_of_sale">point_of_sale</span>
Penjualan Baru
</button>
</div>
</div>
<!-- Metrics Bento Grid -->
<div class="grid grid-cols-5 gap-gutter">
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Total Stok Aktif</span>
<span class="material-symbols-outlined text-primary-container" data-icon="inventory_2">inventory_2</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">1.248,5</span>
<span class="text-xs font-bold text-slate-500">kg</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-green-600">
<span class="material-symbols-outlined text-xs" data-icon="trending_up">trending_up</span>
<span>+4,2% dari minggu lalu</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Nilai Inventaris</span>
<span class="material-symbols-outlined text-primary-container" data-icon="account_balance_wallet">account_balance_wallet</span>
</div>
<div class="flex items-baseline gap-1">
<span class="text-xs font-bold text-slate-500">$</span>
<span class="font-display-lot text-display-lot">4,82M</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-slate-500">
<span>Diperbarui 12m lalu</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Pembelian (Bulan Ini)</span>
<span class="material-symbols-outlined text-primary-container" data-icon="shopping_bag">shopping_bag</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">312,4</span>
<span class="text-xs font-bold text-slate-500">kg</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-slate-500">
<span>42 Transaksi</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Penjualan (Bulan Ini)</span>
<span class="material-symbols-outlined text-primary-container" data-icon="sell">sell</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot">284,1</span>
<span class="text-xs font-bold text-slate-500">kg</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-green-600">
<span class="material-symbols-outlined text-xs" data-icon="check_circle">check_circle</span>
<span>Sesuai Target</span>
</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-start mb-2">
<span class="text-label-caps text-outline uppercase">Penyusutan (Bulan Ini)</span>
<span class="material-symbols-outlined text-error" data-icon="trending_down">trending_down</span>
</div>
<div class="flex items-baseline gap-2">
<span class="font-display-lot text-display-lot text-error">0,84</span>
<span class="text-xs font-bold text-error">%</span>
</div>
<div class="mt-2 flex items-center text-[11px] font-bold text-error">
<span class="material-symbols-outlined text-xs" data-icon="warning">warning</span>
<span>Di atas batas (0,5%)</span>
</div>
</div>
</div>
<!-- Charts & Alerts Section -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Main Comparison Chart (Mockup) -->
<div class="col-span-8 bg-white border border-outline-variant rounded-lg p-6 shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="flex justify-between items-center mb-6">
<h3 class="font-h2 text-h2 text-primary">Tren Pembelian vs Penjualan</h3>
<select class="text-xs font-bold border-slate-200 rounded-md py-1 px-3 focus:ring-primary">
<option>6 Bulan Terakhir</option>
<option>12 Bulan Terakhir</option>
</select>
</div>
<div class="h-64 flex items-end justify-between gap-4 px-2">
<!-- Bar Chart Mockup -->
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-4/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-3/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">MEI</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-5/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-4/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">JUN</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-3/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-5/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">JUL</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-6/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-2/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">AGS</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-4/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-4/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">SEP</span>
</div>
<div class="flex-1 flex flex-col items-center gap-2">
<div class="w-full flex gap-1 items-end h-full">
<div class="bg-primary-container/20 w-1/2 h-5/6 rounded-t-sm"></div>
<div class="bg-primary-container w-1/2 h-3/6 rounded-t-sm"></div>
</div>
<span class="text-label-caps text-[10px] text-slate-400">OKT</span>
</div>
</div>
<div class="mt-6 flex gap-6 pt-4 border-t border-slate-100">
<div class="flex items-center gap-2">
<div class="w-3 h-3 rounded-full bg-primary-container/20"></div>
<span class="text-body-sm font-bold text-slate-600">Pembelian</span>
</div>
<div class="flex items-center gap-2">
<div class="w-3 h-3 rounded-full bg-primary-container"></div>
<span class="text-body-sm font-bold text-slate-600">Penjualan</span>
</div>
</div>
</div>
<!-- Margin & Efficiency -->
<div class="col-span-4 flex flex-col gap-gutter">
<div class="flex-1 bg-primary-container p-6 rounded-lg text-white">
<div class="flex justify-between items-start mb-4">
<h3 class="font-h2 text-h2 text-on-primary-container">Rata-rata Margin</h3>
<span class="material-symbols-outlined" data-icon="show_chart">show_chart</span>
</div>
<div class="flex items-baseline gap-2 mb-2">
<span class="text-4xl font-black">22,4%</span>
</div>
<p class="text-xs text-on-primary-container/80">Efisiensi pemrosesan meningkat sebesar 1,2% periode ini melalui kontrol kelembaban yang dioptimalkan.</p>
</div>
<div class="flex-1 bg-white border border-outline-variant rounded-lg p-5">
<h3 class="font-h2 text-h2 text-primary mb-4">Distribusi Umur Lot</h3>
<div class="space-y-3">
<div>
<div class="flex justify-between text-[11px] font-bold mb-1">
<span class="text-slate-500 uppercase">0-30 Hari</span>
<span class="text-primary">64%</span>
</div>
<div class="h-1.5 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-primary-container w-[64%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold mb-1">
<span class="text-slate-500 uppercase">31-60 Hari</span>
<span class="text-primary">28%</span>
</div>
<div class="h-1.5 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-primary-container w-[28%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold mb-1">
<span class="text-slate-500 uppercase">60+ Hari</span>
<span class="text-error">8%</span>
</div>
<div class="h-1.5 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-error w-[8%]"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Bottom Section: Alerts & Summaries -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Alerts Table -->
<div class="col-span-8 bg-white border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)] overflow-hidden">
<div class="px-6 py-4 border-b border-slate-100 flex justify-between items-center">
<h3 class="font-h2 text-h2 text-primary">Peringatan Lot Kritis</h3>
<button class="text-primary-container text-xs font-bold hover:underline">Lihat Semua</button>
</div>
<table class="w-full text-left">
<thead class="bg-slate-50 border-b border-slate-100">
<tr>
<th class="px-6 py-3 text-label-caps text-outline uppercase">ID Lot</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Status</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Umur</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Kelembaban</th>
<th class="px-6 py-3 text-label-caps text-outline uppercase">Masalah</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-50">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3 font-table-data text-table-data text-primary">#SW-2023-901</td>
<td class="px-6 py-3">
<span class="px-2 py-0.5 bg-yellow-100 text-yellow-800 text-[10px] font-bold rounded-full">Dalam QC</span>
</td>
<td class="px-6 py-3 text-table-data">72 Hari</td>
<td class="px-6 py-3 text-table-data">12,5%</td>
<td class="px-6 py-3 text-table-data text-error font-semibold">Melebihi Batas Umur</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3 font-table-data text-table-data text-primary">#SW-2023-912</td>
<td class="px-6 py-3">
<span class="px-2 py-0.5 bg-red-100 text-red-800 text-[10px] font-bold rounded-full">Ditahan</span>
</td>
<td class="px-6 py-3 text-table-data">45 Hari</td>
<td class="px-6 py-3 text-table-data">14,2%</td>
<td class="px-6 py-3 text-table-data text-error font-semibold">Kelembaban Tinggi</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3 font-table-data text-table-data text-primary">#SW-2023-885</td>
<td class="px-6 py-3">
<span class="px-2 py-0.5 bg-yellow-100 text-yellow-800 text-[10px] font-bold rounded-full">Dalam QC</span>
</td>
<td class="px-6 py-3 text-table-data">68 Hari</td>
<td class="px-6 py-3 text-table-data">11,8%</td>
<td class="px-6 py-3 text-table-data text-error font-semibold">Butuh Audit</td>
</tr>
</tbody>
</table>
</div>
<!-- Top Partners Summary -->
<div class="col-span-4 flex flex-col gap-gutter">
<div class="bg-white border border-outline-variant rounded-lg shadow-[0px_2px_4px_rgba(0,0,0,0.05)] overflow-hidden flex-1">
<div class="px-5 py-4 border-b border-slate-100 bg-slate-50 flex items-center justify-between">
<h3 class="font-h2 text-h2 text-primary">Mitra Utama</h3>
<div class="w-6 h-6 grayscale opacity-30">
<img alt="Watermark" class="w-full h-full object-contain" src="https://lh3.googleusercontent.com/aida/ADBb0ujG5Gj9MRmb-CMFDL0NF3HPi4slr9bDgIzHxM-XZaNVIc9l1XH3Ue3IwDfLuAZO3TBwmDPKbCIPGYh7lWzUtXLQDuSjoIdVUdiejVsxr2jKoQCNWJjb-xu4jbzoUnkbBMO7pF2xbN29frLKb5kaj-ieQZp1mResor6IhdS2teSUkJOdeYLSIks-mOQPfqbrph-63f-xumqHCzXqxccOnFQIne9y-s8EjwKUCIvbA1R91w4MtGT_lNrZ6gKPGw42XwEU4YDYzaH3"/>
</div>
</div>
<div class="p-5">
<div class="flex gap-4 mb-4 border-b border-slate-100 pb-2">
<button class="text-xs font-bold text-primary border-b-2 border-primary pb-2">Pemasok</button>
<button class="text-xs font-bold text-slate-400 pb-2">Pelanggan</button>
</div>
<div class="space-y-4">
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">BH</div>
<div>
<p class="text-xs font-bold text-slate-900">Bumi Hijau Group</p>
<p class="text-[10px] text-slate-500">12 Lot / 145kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$82rb</span>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">KS</div>
<div>
<p class="text-xs font-bold text-slate-900">Kalimantan Sourcing</p>
<p class="text-[10px] text-slate-500">8 Lot / 112kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$64rb</span>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">PJ</div>
<div>
<p class="text-xs font-bold text-slate-900">Prima Jaya Walet</p>
<p class="text-[10px] text-slate-500">6 Lot / 88kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$49rb</span>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-slate-100 flex items-center justify-center font-bold text-xs text-slate-500">AS</div>
<div>
<p class="text-xs font-bold text-slate-900">Agro Sejahtera</p>
<p class="text-[10px] text-slate-500">5 Lot / 76kg</p>
</div>
</div>
<span class="text-xs font-bold text-primary">+$38rb</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

View File

@ -0,0 +1,384 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"surface-variant": "#e1e3e3",
"tertiary-container": "#7c4824",
"surface-container-high": "#e6e8e9",
"on-tertiary-fixed-variant": "#6b3a17",
"primary": "#00454c",
"secondary-container": "#cfe2f9",
"error": "#ba1a1a",
"outline": "#6f797a",
"secondary-fixed": "#d1e4fb",
"tertiary": "#60320f",
"inverse-on-surface": "#eff1f1",
"surface-bright": "#f8fafa",
"on-secondary": "#ffffff",
"on-primary-fixed": "#001f23",
"on-primary-container": "#92d5df",
"on-surface-variant": "#3f484a",
"on-surface": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"surface-container-highest": "#e1e3e3",
"primary-fixed": "#aaeef8",
"surface-dim": "#d8dadb",
"on-primary-fixed-variant": "#004f57",
"on-tertiary-fixed": "#311300",
"surface-container": "#eceeee",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-error-container": "#93000a",
"secondary": "#4e6073",
"on-secondary-fixed": "#091d2e",
"error-container": "#ffdad6",
"on-secondary-fixed-variant": "#36485b",
"outline-variant": "#bfc8ca",
"on-background": "#191c1d",
"inverse-surface": "#2e3131",
"on-error": "#ffffff",
"on-tertiary-container": "#ffbb91",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"background": "#f8fafa",
"tertiary-fixed": "#ffdbc7",
"surface-container-lowest": "#ffffff",
"on-tertiary": "#ffffff",
"on-primary": "#ffffff",
"surface-tint": "#1d6871",
"surface-container-low": "#f2f4f4",
"surface": "#f8fafa",
"on-secondary-container": "#526478"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"container-margin": "24px",
"row-height-sm": "32px",
"row-height-md": "48px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"body-base": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"],
"body-sm": ["Inter"],
"table-data": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
body {
font-family: 'Inter', sans-serif;
background-color: #f8fafa;
}
</style>
</head>
<body class="bg-background text-on-background antialiased">
<!-- Top Navigation Bar -->
<header class="bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 font-['Inter'] antialiased tracking-tight docked full-width top-0 sticky flex justify-between items-center h-14 px-6 w-full z-40">
<div class="flex items-center gap-4">
<img alt="Logo" class="h-8 w-8 object-contain" data-alt="Professional corporate logo for an inventory management system featuring minimalist bird nest motifs in teal tones" src="https://lh3.googleusercontent.com/aida-public/AB6AXuA4AQFm_dFDl5o3ZjKCU72_sVBsL3QLyV1cVzRRa-iUzg3dnZR2Ze5CgutK7IwYg4MiV-N1F_gmTlHItV0yKYXdIkNfYtZIKW9yLxuCfbRO__bE_5wH02gmR3_vdiX3FG4x0nWKw5FM84CeJE_N4Xm-jMWQ8vsEms83YraTfCx8AK_aPXER_5u6SBaZaCssDRfV8g6ik_6cu_A1w8ItjmJ0TOqk2mzaurKPjwipWsYJxhmnReeOQLnXaYDkq5u1Op3qJ3ijTYgsEw"/>
<span class="text-lg font-bold text-teal-800 dark:text-teal-300">Sarang Inventory Pro</span>
</div>
<div class="flex items-center gap-4">
<div class="flex items-center gap-2 px-3 py-1.5 bg-slate-100 rounded-lg">
<span class="material-symbols-outlined text-slate-500 text-sm">search</span>
<input class="bg-transparent border-none focus:ring-0 text-sm w-48" placeholder="Cari lot..." type="text"/>
</div>
<div class="flex items-center gap-3">
<button class="p-2 hover:bg-slate-50 transition-colors rounded-full">
<span class="material-symbols-outlined text-slate-500">notifications</span>
</button>
<button class="p-2 hover:bg-slate-50 transition-colors rounded-full">
<span class="material-symbols-outlined text-slate-500">settings</span>
</button>
<div class="h-8 w-8 rounded-full bg-primary flex items-center justify-center text-white font-bold text-xs">
M
</div>
</div>
</div>
</header>
<div class="flex min-h-[calc(100vh-3.5rem)]">
<!-- Side Navigation Bar -->
<aside class="bg-slate-50 dark:bg-slate-950 border-r border-slate-200 dark:border-slate-800 w-64 flex flex-col py-4 space-y-1 shrink-0">
<div class="px-6 mb-6">
<h2 class="text-teal-800 dark:text-teal-100 font-black tracking-tighter text-lg">SarangWMS</h2>
<p class="text-slate-500 text-xs font-medium uppercase tracking-widest">Operational Hub</p>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 transition-all rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">dashboard</span> Dashboard
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 transition-all rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">database</span> Master Data
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 transition-all rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">inventory_2</span> Inventory Logs
</a>
<a class="flex items-center gap-3 px-3 py-2 bg-teal-50 text-teal-800 border-r-4 border-teal-600 transition-all font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">edit_note</span> Stock Adjust
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 transition-all rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">swap_horiz</span> Transfers
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 transition-all rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">verified</span> QC Reports
</a>
</nav>
<div class="px-3 pt-4 border-t border-slate-200 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">support_agent</span> Support
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg font-['Inter'] text-sm font-medium" href="#">
<span class="material-symbols-outlined">logout</span> Logout
</a>
</div>
</aside>
<!-- Main Content -->
<main class="flex-1 p-container-margin max-w-5xl mx-auto w-full">
<div class="flex items-center justify-between mb-8">
<div>
<h1 class="font-h1 text-h1 text-on-surface">Penyesuaian Stok (Adjustment)</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant mt-1">Lakukan pembaruan kuantitas lot untuk keperluan audit atau koreksi operasional.</p>
</div>
<div class="flex items-center gap-2 px-3 py-1 bg-surface-container-high rounded text-on-surface-variant">
<span class="material-symbols-outlined text-sm">schedule</span>
<span class="font-label-caps text-label-caps">TERAKHIR DIUPDATE: 12 OKT 2023 14:20</span>
</div>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Form Section -->
<div class="lg:col-span-2 space-y-6">
<!-- Step 1: Lot Selection -->
<section class="bg-surface-container-lowest border border-outline-variant p-6 rounded-lg shadow-sm">
<div class="flex items-center gap-2 mb-4">
<div class="bg-primary text-on-primary w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-bold">1</div>
<h2 class="font-h2 text-h2 text-on-surface">Pilih Lot</h2>
</div>
<div class="relative group">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="material-symbols-outlined text-outline text-lg">qr_code_scanner</span>
</div>
<input class="block w-full pl-10 pr-3 py-compact-padding bg-surface-container-low border border-outline rounded-lg focus:ring-2 focus:ring-primary focus:border-primary transition-all font-body-base text-body-base" placeholder="Scan QR Code atau Ketik Nomor Lot (e.g. SN-B102-X)" type="text"/>
<button class="absolute inset-y-0 right-0 px-4 text-primary font-bold text-xs uppercase tracking-wider hover:bg-primary-fixed-dim rounded-r-lg transition-colors">Cari</button>
</div>
<!-- Current Lot Info (Visible after selection) -->
<div class="mt-6 p-4 bg-surface-container-low rounded border border-outline-variant grid grid-cols-3 gap-4">
<div>
<span class="font-label-caps text-label-caps text-on-surface-variant block mb-1">GRADE</span>
<div class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-secondary"></span>
<span class="font-table-data text-table-data text-on-surface">AAA Super White</span>
</div>
</div>
<div>
<span class="font-label-caps text-label-caps text-on-surface-variant block mb-1">QTY SAAT INI</span>
<span class="font-display-lot text-h1 text-primary">45.20 <span class="text-xs font-normal text-on-surface-variant">kg</span></span>
</div>
<div>
<span class="font-label-caps text-label-caps text-on-surface-variant block mb-1">LOKASI</span>
<div class="flex items-center gap-1 text-on-surface">
<span class="material-symbols-outlined text-sm">location_on</span>
<span class="font-table-data text-table-data">Rak B-04-A</span>
</div>
</div>
</div>
</section>
<!-- Step 2: Adjustment Details -->
<section class="bg-surface-container-lowest border border-outline-variant p-6 rounded-lg shadow-sm">
<div class="flex items-center gap-2 mb-6">
<div class="bg-primary text-on-primary w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-bold">2</div>
<h2 class="font-h2 text-h2 text-on-surface">Detail Adjustment</h2>
</div>
<div class="grid grid-cols-2 gap-6">
<div class="col-span-2 sm:col-span-1">
<label class="font-label-caps text-label-caps text-on-surface-variant block mb-2">TIPE ADJUSTMENT</label>
<div class="grid grid-cols-3 gap-2">
<label class="cursor-pointer">
<input checked="" class="peer hidden" name="adj_type" type="radio"/>
<div class="flex flex-col items-center justify-center p-3 border border-outline-variant rounded-lg peer-checked:bg-primary-container peer-checked:border-primary-container peer-checked:text-on-primary-container transition-all">
<span class="material-symbols-outlined mb-1">add_circle</span>
<span class="text-[10px] font-bold uppercase">Tambah</span>
</div>
</label>
<label class="cursor-pointer">
<input class="peer hidden" name="adj_type" type="radio"/>
<div class="flex flex-col items-center justify-center p-3 border border-outline-variant rounded-lg peer-checked:bg-error-container peer-checked:border-error-container peer-checked:text-on-error-container transition-all">
<span class="material-symbols-outlined mb-1">do_not_disturb_on</span>
<span class="text-[10px] font-bold uppercase">Kurang</span>
</div>
</label>
<label class="cursor-pointer">
<input class="peer hidden" name="adj_type" type="radio"/>
<div class="flex flex-col items-center justify-center p-3 border border-outline-variant rounded-lg peer-checked:bg-secondary-container peer-checked:border-secondary-container peer-checked:text-on-secondary-container transition-all">
<span class="material-symbols-outlined mb-1">trending_down</span>
<span class="text-[10px] font-bold uppercase">Susut</span>
</div>
</label>
</div>
</div>
<div class="col-span-2 sm:col-span-1">
<label class="font-label-caps text-label-caps text-on-surface-variant block mb-2">ALASAN ADJUSTMENT</label>
<select class="block w-full px-3 py-compact-padding bg-white border border-outline rounded focus:ring-2 focus:ring-primary focus:border-primary font-body-base text-body-base h-[48px]">
<option>Pilih Alasan...</option>
<option>Koreksi Data Audit</option>
<option>Penyusutan Alami (Moisture)</option>
<option>Kerusakan Fisik</option>
<option>Sampling QC</option>
<option>Lainnya</option>
</select>
</div>
<div class="col-span-2 sm:col-span-1">
<label class="font-label-caps text-label-caps text-on-surface-variant block mb-2">QTY ADJUSTMENT (KG)</label>
<div class="relative">
<input class="block w-full px-3 py-3 bg-white border border-outline rounded-lg focus:ring-2 focus:ring-primary focus:border-primary font-display-lot text-h1" placeholder="0.00" step="0.01" type="number"/>
<div class="absolute inset-y-0 right-0 pr-4 flex items-center pointer-events-none text-outline">kg</div>
</div>
<p class="text-[10px] text-on-surface-variant mt-2 italic">Gunakan titik (.) untuk desimal</p>
</div>
<div class="col-span-2 sm:col-span-1">
<label class="font-label-caps text-label-caps text-on-surface-variant block mb-2">PREDIKSI QTY BARU</label>
<div class="bg-surface-container p-3 rounded-lg border border-dashed border-outline-variant flex items-center justify-between">
<span class="text-on-surface-variant font-body-sm">Total Akhir:</span>
<span class="font-display-lot text-h1 text-secondary">45.20 <span class="text-xs font-normal">kg</span></span>
</div>
</div>
<div class="col-span-2">
<label class="font-label-caps text-label-caps text-on-surface-variant block mb-2">CATATAN AUDIT / REFERENSI</label>
<textarea class="block w-full px-3 py-2 bg-white border border-outline rounded-lg focus:ring-2 focus:ring-primary focus:border-primary font-body-base text-body-base" placeholder="Masukkan detail tambahan atau nomor surat jalan jika ada..." rows="3"></textarea>
</div>
</div>
</section>
</div>
<!-- Summary & Info Sidebar -->
<div class="space-y-6">
<!-- Progress Card -->
<div class="bg-primary text-on-primary p-6 rounded-lg shadow-md relative overflow-hidden">
<div class="relative z-10">
<h3 class="font-h2 text-h2 mb-4">Ringkasan Lot</h3>
<div class="space-y-4">
<div class="flex justify-between items-center border-b border-primary-container pb-2">
<span class="text-[11px] opacity-70">STATUS LOT</span>
<span class="bg-primary-container text-on-primary-container px-2 py-0.5 rounded text-[10px] font-bold uppercase">Ready to Export</span>
</div>
<div class="flex justify-between items-center border-b border-primary-container pb-2">
<span class="text-[11px] opacity-70">TGL MASUK</span>
<span class="font-table-data text-table-data text-[13px]">10 Sep 2023</span>
</div>
<div class="flex justify-between items-center">
<span class="text-[11px] opacity-70">ORIGIN</span>
<span class="font-table-data text-table-data text-[13px]">Kalimantan Barat</span>
</div>
</div>
</div>
<span class="material-symbols-outlined absolute -bottom-4 -right-4 text-9xl opacity-10 rotate-12">inventory</span>
</div>
<!-- Helpful Guidelines -->
<div class="bg-surface-container-high p-5 rounded-lg border border-outline-variant">
<div class="flex items-center gap-2 mb-3 text-secondary">
<span class="material-symbols-outlined text-lg">info</span>
<h4 class="font-h2 text-h2 text-sm">Panduan Operasional</h4>
</div>
<ul class="space-y-3 font-body-sm text-body-sm text-on-surface-variant">
<li class="flex gap-2">
<span class="text-primary font-bold"></span>
<span>Pastikan timbangan telah dikalibrasi sebelum input qty baru.</span>
</li>
<li class="flex gap-2">
<span class="text-primary font-bold"></span>
<span>Setiap adjustment di atas 5kg memerlukan approval Manager.</span>
</li>
<li class="flex gap-2">
<span class="text-primary font-bold"></span>
<span>Alasan 'Penyusutan' akan otomatis tercatat dalam laporan Waste bulanan.</span>
</li>
</ul>
</div>
<!-- Action Area -->
<div class="bg-white p-4 rounded-lg border border-primary border-opacity-20 shadow-sm flex flex-col gap-3">
<button class="w-full bg-primary text-white py-3 rounded-lg font-bold text-sm hover:opacity-90 transition-opacity flex items-center justify-center gap-2">
<span class="material-symbols-outlined text-lg">check_circle</span>
SIMPAN PENYESUAIAN
</button>
<button class="w-full bg-transparent border border-outline text-on-surface-variant py-3 rounded-lg font-bold text-sm hover:bg-slate-50 transition-colors">
BATALKAN
</button>
</div>
</div>
</div>
<!-- Audit History Snippet -->
<div class="mt-10">
<div class="flex items-center justify-between mb-4 border-b border-outline-variant pb-2">
<h3 class="font-h2 text-h2 text-on-surface">Riwayat Adjustment Terakhir</h3>
<a class="text-primary font-bold text-[11px] uppercase hover:underline" href="#">Lihat Semua Laporan</a>
</div>
<div class="overflow-x-auto bg-surface-container-lowest rounded-lg border border-outline-variant">
<table class="w-full text-left border-collapse">
<thead>
<tr class="bg-surface-container text-on-surface-variant uppercase text-[10px] font-bold tracking-wider">
<th class="px-6 py-3 border-b border-outline-variant">WAKTU</th>
<th class="px-6 py-3 border-b border-outline-variant">ID LOT</th>
<th class="px-6 py-3 border-b border-outline-variant">TIPE</th>
<th class="px-6 py-3 border-b border-outline-variant text-right">JUMLAH</th>
<th class="px-6 py-3 border-b border-outline-variant">OPERATOR</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant font-table-data text-table-data text-on-surface">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3">12 Okt, 10:15</td>
<td class="px-6 py-3 font-bold">SN-A902</td>
<td class="px-6 py-3">
<span class="bg-error-container text-on-error-container px-2 py-0.5 rounded-full text-[10px]">Penyusutan</span>
</td>
<td class="px-6 py-3 text-right text-error font-bold">-0.45 kg</td>
<td class="px-6 py-3">Budi Santoso</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-3">11 Okt, 16:40</td>
<td class="px-6 py-3 font-bold">SN-C110</td>
<td class="px-6 py-3">
<span class="bg-primary-container text-on-primary-container px-2 py-0.5 rounded-full text-[10px]">Penambahan</span>
</td>
<td class="px-6 py-3 text-right text-primary font-bold">+1.20 kg</td>
<td class="px-6 py-3">Riana Putri</td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

View File

@ -0,0 +1,373 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary-container": "#cfe2f9",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"on-secondary-fixed": "#091d2e",
"on-background": "#191c1d",
"outline": "#6f797a",
"on-primary": "#ffffff",
"inverse-on-surface": "#eff1f1",
"on-secondary": "#ffffff",
"error-container": "#ffdad6",
"secondary": "#4e6073",
"primary": "#00454c",
"on-tertiary-container": "#ffbb91",
"inverse-primary": "#8ed1db",
"on-primary-fixed": "#001f23",
"secondary-fixed-dim": "#b5c8df",
"on-surface": "#191c1d",
"tertiary-container": "#7c4824",
"on-tertiary-fixed": "#311300",
"surface-variant": "#e1e3e3",
"surface-bright": "#f8fafa",
"on-surface-variant": "#3f484a",
"surface": "#f8fafa",
"surface-container": "#eceeee",
"surface-container-low": "#f2f4f4",
"tertiary-fixed": "#ffdbc7",
"surface-container-high": "#e6e8e9",
"primary-fixed-dim": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"on-error": "#ffffff",
"background": "#f8fafa",
"surface-dim": "#d8dadb",
"surface-tint": "#1d6871",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"surface-container-highest": "#e1e3e3",
"on-primary-fixed-variant": "#004f57",
"error": "#ba1a1a",
"primary-fixed": "#aaeef8",
"on-tertiary": "#ffffff",
"inverse-surface": "#2e3131",
"tertiary": "#60320f",
"on-tertiary-fixed-variant": "#6b3a17",
"surface-container-lowest": "#ffffff",
"on-secondary-container": "#526478",
"tertiary-fixed-dim": "#feb78a",
"primary-container": "#0d5e67"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"container-margin": "24px",
"row-height-sm": "32px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-md": "48px"
},
"fontFamily": {
"body-sm": ["Inter"],
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"]
},
"fontSize": {
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-background text-on-background min-h-screen">
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 bg-slate-50 flex flex-col py-4 z-50">
<div class="px-6 mb-8">
<div class="flex items-center gap-3">
<div class="w-8 h-8 bg-primary rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white text-sm">inventory_2</span>
</div>
<div>
<h1 class="text-teal-900 font-black text-body-base leading-none">Sarang Ops</h1>
<p class="text-[10px] text-slate-500 uppercase tracking-widest mt-1">Processing Plant A</p>
</div>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">dashboard</span>
<span class="font-inter text-[13px] font-medium">Dashboard</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">content_cut</span>
<span class="font-inter text-[13px] font-medium">Sortasi</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 bg-white text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">sell</span>
<span class="font-inter text-[13px] font-medium">Penjualan</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">assignment_turned_in</span>
<span class="font-inter text-[13px] font-medium">Alokasi Lot</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">inventory</span>
<span class="font-inter text-[13px] font-medium">Picking</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">inventory_2</span>
<span class="font-inter text-[13px] font-medium">Inventory</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined text-[20px]">monitoring</span>
<span class="font-inter text-[13px] font-medium">Analytics</span>
</a>
</nav>
<div class="px-3 pt-4 border-t border-slate-200">
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] transition-all" href="#">
<span class="material-symbols-outlined text-[20px]">settings</span>
<span class="font-inter text-[13px] font-medium">Settings</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:text-[#0D5E67] transition-all" href="#">
<span class="material-symbols-outlined text-[20px]">contact_support</span>
<span class="font-inter text-[13px] font-medium">Support</span>
</a>
</div>
</aside>
<header class="fixed top-0 left-64 right-0 h-14 bg-white border-b border-slate-200 flex justify-between items-center px-6 z-40">
<div class="flex items-center gap-4">
<span class="font-inter text-sm font-semibold text-[#0D5E67]">Form Penjualan Baru</span>
<div class="h-4 w-[1px] bg-slate-300"></div>
<span class="text-slate-400 font-body-sm italic">Draft #SL-20231105</span>
</div>
<div class="flex items-center gap-4">
<span class="material-symbols-outlined text-slate-600 cursor-pointer hover:bg-slate-50 p-2 rounded transition-colors">notifications</span>
<span class="material-symbols-outlined text-slate-600 cursor-pointer hover:bg-slate-50 p-2 rounded transition-colors">help_outline</span>
<div class="w-8 h-8 rounded-full overflow-hidden border border-slate-200">
<img alt="User profile" data-alt="professional male corporate executive headshot in business attire with neutral background and soft studio lighting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCzS2dKpWO9dpDoJCYL6E9lkDRztAO0vPsRVKXH_VvEZH5pfUjwGmSevP2kKqCW3IupdvxgWnvoQcrxdEJQaqPSvVfYe5xGXibhfeRaU3VZUHRzt8QmxjA1c3dqqpdf-Fb3ZUwN59zMSK5pzLTaJEj7xfgDzhxu0_CctZ53Y42rkd2eZQEUmOmglVhzUZRYVW9vLBwPqHQyhZgpRrWNx67G-556PphdHCE6OrKBHeu8wp2SxfF3aZYg6cxEPsV-UI6VKz1YfJlcvg"/>
</div>
</div>
</header>
<main class="ml-64 mt-14 p-container-margin">
<div class="max-w-6xl mx-auto">
<div class="flex items-center justify-between mb-6">
<div>
<h2 class="font-h1 text-h1 text-primary">Informasi Penjualan</h2>
<p class="font-body-sm text-body-sm text-slate-500">Lengkapi detail pesanan sebelum melakukan alokasi stok.</p>
</div>
<div class="flex gap-3">
<button class="px-4 py-2 border border-primary text-primary rounded-lg font-body-base hover:bg-slate-50 transition-colors">Simpan Draft</button>
<button class="px-4 py-2 bg-primary text-white rounded-lg font-body-base shadow-sm flex items-center gap-2 hover:opacity-90 transition-opacity">
<span>Lanjut ke Alokasi Lot</span>
<span class="material-symbols-outlined text-[18px]">arrow_forward</span>
</button>
</div>
</div>
<div class="grid grid-cols-12 gap-gutter">
<div class="col-span-8 space-y-gutter">
<section class="bg-white rounded-xl border border-slate-200 shadow-sm overflow-hidden">
<div class="p-4 border-b border-slate-100 bg-slate-50/50">
<h3 class="font-h2 text-h2 flex items-center gap-2">
<span class="material-symbols-outlined text-primary">person</span>
Pilih Pelanggan
</h3>
</div>
<div class="p-6 grid grid-cols-2 gap-6">
<div class="space-y-2">
<label class="font-label-caps text-label-caps text-on-surface-variant uppercase">NAMA PELANGGAN</label>
<select class="w-full h-10 border border-slate-200 rounded px-3 font-body-base focus:ring-2 focus:ring-primary focus:border-primary outline-none appearance-none bg-white">
<option>PT. Global Export Indo</option>
<option>BirdNest Co. Guangzhou</option>
<option>Sejahtera Trading Singapore</option>
</select>
</div>
<div class="space-y-2">
<label class="font-label-caps text-label-caps text-on-surface-variant uppercase">TANGGAL PENJUALAN</label>
<input class="w-full h-10 border border-slate-200 rounded px-3 font-body-base focus:ring-2 focus:ring-primary outline-none" type="date" value="2023-11-25"/>
</div>
<div class="col-span-2 space-y-2">
<label class="font-label-caps text-label-caps text-on-surface-variant uppercase">CATATAN PENJUALAN</label>
<textarea class="w-full h-24 border border-slate-200 rounded p-3 font-body-base focus:ring-2 focus:ring-primary outline-none resize-none" placeholder="Masukkan instruksi khusus atau catatan pengiriman..."></textarea>
</div>
</div>
</section>
<section class="bg-white rounded-xl border border-slate-200 shadow-sm overflow-hidden">
<div class="p-4 border-b border-slate-100 bg-slate-50/50 flex justify-between items-center">
<h3 class="font-h2 text-h2 flex items-center gap-2">
<span class="material-symbols-outlined text-primary">list_alt</span>
Tabel Detail Barang
</h3>
<button class="text-primary font-body-sm font-semibold flex items-center gap-1 hover:underline">
<span class="material-symbols-outlined text-[18px]">add_circle</span>
Tambah Item
</button>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left border-collapse">
<thead class="bg-slate-50 border-b border-slate-200">
<tr>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant uppercase">JENIS ITEM</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant uppercase">GRADE</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant uppercase text-right">QTY DIBUTUHKAN</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant uppercase">SATUAN</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant uppercase text-right">HARGA JUAL (IDR)</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant uppercase text-right">SUBTOTAL</th>
<th class="px-4 py-3 w-10"></th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<select class="w-full bg-transparent border-none p-0 font-table-data focus:ring-0">
<option>Sarang Putih Mangkok</option>
<option>Sarang Sudut</option>
</select>
</td>
<td class="px-4 py-3">
<select class="w-full bg-transparent border-none p-0 font-table-data focus:ring-0">
<option>Grade AAA</option>
<option>Grade AA</option>
<option>Grade A</option>
</select>
</td>
<td class="px-4 py-3 text-right">
<input class="w-20 text-right bg-transparent border-none p-0 font-table-data focus:ring-0" type="number" value="50.00"/>
</td>
<td class="px-4 py-3 font-table-data text-slate-500">kg</td>
<td class="px-4 py-3 text-right">
<input class="w-28 text-right bg-transparent border-none p-0 font-table-data focus:ring-0" type="text" value="15.500.000"/>
</td>
<td class="px-4 py-3 text-right font-table-data text-primary">775.000.000</td>
<td class="px-4 py-3 text-right">
<span class="material-symbols-outlined text-slate-300 hover:text-error cursor-pointer">delete</span>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<select class="w-full bg-transparent border-none p-0 font-table-data focus:ring-0">
<option>Sarang Sudut</option>
<option>Sarang Putih Mangkok</option>
</select>
</td>
<td class="px-4 py-3">
<select class="w-full bg-transparent border-none p-0 font-table-data focus:ring-0">
<option>Grade Super</option>
<option>Grade A</option>
</select>
</td>
<td class="px-4 py-3 text-right">
<input class="w-20 text-right bg-transparent border-none p-0 font-table-data focus:ring-0" type="number" value="25.00"/>
</td>
<td class="px-4 py-3 font-table-data text-slate-500">kg</td>
<td class="px-4 py-3 text-right">
<input class="w-28 text-right bg-transparent border-none p-0 font-table-data focus:ring-0" type="text" value="12.000.000"/>
</td>
<td class="px-4 py-3 text-right font-table-data text-primary">300.000.000</td>
<td class="px-4 py-3 text-right">
<span class="material-symbols-outlined text-slate-300 hover:text-error cursor-pointer">delete</span>
</td>
</tr>
</tbody>
<tfoot class="bg-slate-50/80">
<tr>
<td class="px-4 py-4 text-right font-h2 text-slate-600" colspan="5">Grand Total</td>
<td class="px-4 py-4 text-right font-display-lot text-primary">1.075.000.000</td>
<td></td>
</tr>
</tfoot>
</table>
</div>
</section>
</div>
<div class="col-span-4 space-y-gutter">
<section class="bg-primary rounded-xl border border-primary-container shadow-lg text-white overflow-hidden relative">
<div class="absolute top-0 right-0 p-4 opacity-10">
<span class="material-symbols-outlined text-[80px]">account_balance</span>
</div>
<div class="p-4 border-b border-white/10">
<h3 class="font-h2 text-h2 flex items-center gap-2">
<span class="material-symbols-outlined">payments</span>
Info Bank Pelanggan
</h3>
</div>
<div class="p-6 space-y-4">
<div>
<label class="text-[10px] font-bold opacity-60 uppercase tracking-widest">BANK TUJUAN</label>
<p class="font-body-base font-semibold">Bank Central Asia (BCA)</p>
</div>
<div>
<label class="text-[10px] font-bold opacity-60 uppercase tracking-widest">NOMOR REKENING</label>
<p class="text-h1 font-display-lot tracking-wide">8830 1928 440</p>
</div>
<div>
<label class="text-[10px] font-bold opacity-60 uppercase tracking-widest">ATAS NAMA</label>
<p class="font-body-base">PT GLOBAL EXPORT INDO</p>
</div>
<div class="pt-4 flex items-center gap-2 text-xs opacity-80">
<span class="material-symbols-outlined text-[16px]">verified</span>
<span>Verified Payment Channel</span>
</div>
</div>
</section>
<section class="bg-white rounded-xl border border-slate-200 shadow-sm p-6">
<h3 class="font-h2 text-h2 mb-4 flex items-center gap-2 text-on-surface">
<span class="material-symbols-outlined text-primary">history</span>
Ringkasan Lot
</h3>
<div class="space-y-4">
<div class="flex justify-between items-center text-body-sm">
<span class="text-slate-500">Total Berat (Netto)</span>
<span class="font-semibold text-on-surface">75.00 kg</span>
</div>
<div class="flex justify-between items-center text-body-sm">
<span class="text-slate-500">Estimasi Jumlah Lot</span>
<span class="font-semibold text-on-surface">~12 Lots</span>
</div>
<div class="h-[1px] bg-slate-100"></div>
<div class="flex justify-between items-center text-body-sm">
<span class="text-slate-500">PPN (11%)</span>
<span class="font-semibold text-on-surface">118.250.000</span>
</div>
<div class="flex justify-between items-center">
<span class="font-body-base font-bold text-on-surface">Total Tagihan</span>
<span class="font-h2 text-h1 text-[#0D5E67]">1.193.250.000</span>
</div>
</div>
</section>
<div class="bg-secondary-container/30 border border-secondary-container p-4 rounded-xl">
<div class="flex gap-3">
<span class="material-symbols-outlined text-secondary">info</span>
<p class="text-body-sm text-secondary leading-relaxed">
Pastikan stok fisik tersedia di warehouse sebelum melanjutkan ke tahap <strong>Alokasi Lot</strong>. Draft ini akan tersimpan secara otomatis.
</p>
</div>
</div>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

View File

@ -0,0 +1,325 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary-container": "#cfe2f9",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"on-secondary-fixed": "#091d2e",
"on-background": "#191c1d",
"outline": "#6f797a",
"on-primary": "#ffffff",
"inverse-on-surface": "#eff1f1",
"on-secondary": "#ffffff",
"error-container": "#ffdad6",
"secondary": "#4e6073",
"primary": "#00454c",
"on-tertiary-container": "#ffbb91",
"inverse-primary": "#8ed1db",
"on-primary-fixed": "#001f23",
"secondary-fixed-dim": "#b5c8df",
"on-surface": "#191c1d",
"tertiary-container": "#7c4824",
"on-tertiary-fixed": "#311300",
"surface-variant": "#e1e3e3",
"surface-bright": "#f8fafa",
"on-surface-variant": "#3f484a",
"surface": "#f8fafa",
"surface-container": "#eceeee",
"surface-container-low": "#f2f4f4",
"tertiary-fixed": "#ffdbc7",
"surface-container-high": "#e6e8e9",
"primary-fixed-dim": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"on-error": "#ffffff",
"background": "#f8fafa",
"surface-dim": "#d8dadb",
"surface-tint": "#1d6871",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"surface-container-highest": "#e1e3e3",
"on-primary-fixed-variant": "#004f57",
"error": "#ba1a1a",
"primary-fixed": "#aaeef8",
"on-tertiary": "#ffffff",
"inverse-surface": "#2e3131",
"tertiary": "#60320f",
"on-tertiary-fixed-variant": "#6b3a17",
"surface-container-lowest": "#ffffff",
"on-secondary-container": "#526478",
"tertiary-fixed-dim": "#feb78a",
"primary-container": "#0d5e67"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"container-margin": "24px",
"row-height-sm": "32px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-md": "48px"
},
"fontFamily": {
"body-sm": ["Inter"],
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"]
},
"fontSize": {
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-background text-on-background">
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 dark:border-slate-800 bg-slate-50 dark:bg-slate-950 flex flex-col h-screen py-4 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-8 h-8 bg-primary rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white" style="font-variation-settings: 'FILL' 1;">nest_eco</span>
</div>
<div>
<h1 class="text-teal-900 dark:text-teal-100 font-black text-[15px]">Sarang Ops</h1>
<p class="text-[11px] text-slate-500 uppercase tracking-wider font-bold">Processing Plant A</p>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">dashboard</span>
<span class="font-inter text-[13px] font-medium">Dashboard</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 bg-white dark:bg-slate-900 text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">content_cut</span>
<span class="font-inter text-[13px] font-medium">Sortasi</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">sell</span>
<span class="font-inter text-[13px] font-medium">Penjualan</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">assignment_turned_in</span>
<span class="font-inter text-[13px] font-medium">Alokasi Lot</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">inventory</span>
<span class="font-inter text-[13px] font-medium">Picking</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">inventory_2</span>
<span class="font-inter text-[13px] font-medium">Inventory</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">monitoring</span>
<span class="font-inter text-[13px] font-medium">Analytics</span>
</div>
</nav>
<div class="px-3 mt-auto pt-4 border-t border-slate-200 dark:border-slate-800 space-y-1">
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">settings</span>
<span class="font-inter text-[13px] font-medium">Settings</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 cursor-pointer rounded">
<span class="material-symbols-outlined">contact_support</span>
<span class="font-inter text-[13px] font-medium">Support</span>
</div>
</div>
</aside>
<!-- Main Content Area -->
<main class="ml-64 min-h-screen flex flex-col">
<!-- TopNavBar -->
<header class="sticky top-0 z-40 bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 shadow-sm flex justify-between items-center h-14 px-6 w-full">
<div class="flex items-center gap-6">
<span class="text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight">SwiftLot Walet</span>
<div class="relative flex items-center">
<span class="material-symbols-outlined absolute left-3 text-slate-400 text-sm">search</span>
<input class="bg-slate-100 dark:bg-slate-800 border-none rounded-full py-1.5 pl-9 pr-4 text-sm w-64 focus:ring-2 focus:ring-primary" placeholder="Cari lot atau grade..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 hover:bg-slate-50 dark:hover:bg-slate-800 p-2 rounded-full cursor-pointer transition-colors">notifications</span>
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 hover:bg-slate-50 dark:hover:bg-slate-800 p-2 rounded-full cursor-pointer transition-colors">help_outline</span>
</div>
<div class="h-8 w-8 rounded-full bg-slate-200 overflow-hidden border border-slate-300">
<img alt="User profile" class="h-full w-full object-cover" data-alt="Close-up of a professional warehouse manager profile picture with a clean office background" src="https://lh3.googleusercontent.com/aida-public/AB6AXuDcwI2A1pYlDgvqlJGfZycIQPrRt_FK8j7xpgQIgxXPOEAodYnPEUE0x3BsEJwiEfWeERGwqCOHCsdEDuAB8vC2RhxIRy4TEwY0MFWtTtVk-xCzrcdSSfSjJ3f6-FGYdyROQdHjJVrrxKpDKjvaxu3wpuwRZCAcHVaXMSDmFhUG7tkzvvKkdX79rVE88CU7M_u-P6pO0_qahgWOIg4HSx0eLaRMkNYy14B0pU-hQmuYWcC8zE-C5rw0qNDioHm-Xcp5nM0LwFghIg"/>
</div>
</div>
</header>
<!-- Page Canvas -->
<div class="flex-1 p-container-margin overflow-auto">
<!-- Breadcrumbs -->
<nav class="flex mb-6 text-body-sm font-body-sm text-on-surface-variant gap-2 items-center">
<span class="cursor-pointer hover:text-primary">Sortasi</span>
<span class="material-symbols-outlined text-base">chevron_right</span>
<span class="cursor-pointer hover:text-primary">Inventory Logs</span>
<span class="material-symbols-outlined text-base">chevron_right</span>
<span class="text-on-surface font-semibold">Formulir Regrade</span>
</nav>
<div class="grid grid-cols-12 gap-gutter">
<!-- Left: Form Card -->
<div class="col-span-12 lg:col-span-7 space-y-gutter">
<div class="bg-surface-container-lowest border border-outline-variant p-6 shadow-sm">
<div class="flex items-center justify-between mb-6">
<h2 class="text-h1 font-h1 text-primary">Regrade Lot</h2>
<span class="bg-primary-container/10 text-primary-container px-3 py-1 text-label-caps font-label-caps rounded-full">ACTION REQUIRED</span>
</div>
<form class="space-y-6">
<!-- Source Lot & Readonly Grade -->
<div class="grid grid-cols-2 gap-4">
<div class="space-y-2">
<label class="text-label-caps font-label-caps text-on-surface-variant">SOURCE LOT ID</label>
<div class="relative">
<input class="w-full bg-surface-container-low border border-outline-variant px-compact-padding py-2 font-display-lot text-body-base focus:ring-2 focus:ring-primary" readonly="" type="text" value="LOT-2023-X9921"/>
<span class="material-symbols-outlined absolute right-3 top-2.5 text-slate-400">lock</span>
</div>
</div>
<div class="space-y-2">
<label class="text-label-caps font-label-caps text-on-surface-variant">GRADE ASAL (READONLY)</label>
<input class="w-full bg-surface-container-low border border-outline-variant px-compact-padding py-2 font-table-data text-body-base text-slate-500" readonly="" type="text" value="Super AAA - Premium"/>
</div>
</div>
<!-- Target Grade & Qty -->
<div class="grid grid-cols-2 gap-4">
<div class="space-y-2">
<label class="text-label-caps font-label-caps text-on-surface-variant">GRADE TUJUAN</label>
<select class="w-full bg-white border border-outline-variant px-compact-padding py-2 font-table-data text-body-base focus:ring-2 focus:ring-primary">
<option value="">Pilih Grade Tujuan...</option>
<option value="A1">Super AAA - Regular</option>
<option value="A2">Standard Grade A</option>
<option value="B1">Broken - Large</option>
</select>
</div>
<div class="space-y-2">
<label class="text-label-caps font-label-caps text-on-surface-variant">QTY YANG DIUBAH (KG)</label>
<div class="relative">
<input class="w-full bg-white border border-outline-variant px-compact-padding py-2 font-table-data text-body-base focus:ring-2 focus:ring-primary text-right pr-12" placeholder="0.00" type="number"/>
<span class="absolute right-3 top-2 text-on-surface-variant font-bold text-xs">kg</span>
</div>
</div>
</div>
<!-- Reason & Notes -->
<div class="space-y-2">
<label class="text-label-caps font-label-caps text-on-surface-variant">ALASAN REGRADE</label>
<select class="w-full bg-white border border-outline-variant px-compact-padding py-2 font-table-data text-body-base focus:ring-2 focus:ring-primary">
<option value="">Pilih Alasan...</option>
<option value="qc_failed">Gagal Standar QC Internal</option>
<option value="moisture_adj">Penyesuaian Kadar Air</option>
<option value="sorting_error">Kesalahan Sortasi Awal</option>
<option value="client_request">Permintaan Khusus Klien</option>
</select>
</div>
<div class="space-y-2">
<label class="text-label-caps font-label-caps text-on-surface-variant">CATATAN TAMBAHAN</label>
<textarea class="w-full bg-white border border-outline-variant px-compact-padding py-2 font-body-base text-body-base focus:ring-2 focus:ring-primary" placeholder="Berikan rincian jika perlu..." rows="3"></textarea>
</div>
<div class="pt-4 flex gap-4">
<button class="flex-1 py-3 border border-primary text-primary font-bold text-label-caps hover:bg-primary-container hover:text-white transition-colors" type="button">BATALKAN</button>
<button class="flex-1 py-3 bg-primary text-white font-bold text-label-caps hover:bg-primary-container transition-colors shadow-sm" type="submit">SIMPAN PERUBAHAN</button>
</div>
</form>
</div>
</div>
<!-- Right: Preview & Context -->
<div class="col-span-12 lg:col-span-5 space-y-gutter">
<!-- Real-time Preview Card -->
<div class="bg-white border border-outline-variant shadow-sm flex flex-col">
<div class="p-4 border-b border-outline-variant bg-surface-container-low">
<h3 class="text-h2 font-h2 text-on-surface flex items-center gap-2">
<span class="material-symbols-outlined text-primary">analytics</span>
Preview Perubahan Lot
</h3>
</div>
<div class="p-6 space-y-8">
<!-- Source Change -->
<div class="relative pl-6 border-l-2 border-red-200">
<span class="absolute -left-[9px] top-0 w-4 h-4 rounded-full bg-red-100 border-2 border-red-500"></span>
<div class="flex justify-between items-start mb-2">
<div>
<p class="text-label-caps text-on-surface-variant">LOT ASAL (-)</p>
<p class="font-display-lot text-h2">LOT-2023-X9921</p>
</div>
<span class="text-error font-bold text-body-base">-1.50 kg</span>
</div>
<div class="flex justify-between text-body-sm text-on-surface-variant italic">
<span>Stok Awal: 12.45 kg</span>
<span>Estimasi Akhir: 10.95 kg</span>
</div>
</div>
<!-- Target Change -->
<div class="relative pl-6 border-l-2 border-primary/20">
<span class="absolute -left-[9px] top-0 w-4 h-4 rounded-full bg-primary/10 border-2 border-primary"></span>
<div class="flex justify-between items-start mb-2">
<div>
<p class="text-label-caps text-on-surface-variant">LOT TUJUAN (+)</p>
<p class="font-display-lot text-h2">A2 - Standard Grade A</p>
</div>
<span class="text-primary font-bold text-body-base">+1.50 kg</span>
</div>
<div class="flex justify-between text-body-sm text-on-surface-variant italic">
<span>Stok Awal: 45.00 kg</span>
<span>Estimasi Akhir: 46.50 kg</span>
</div>
</div>
</div>
</div>
<!-- Summary Info -->
<div class="bg-secondary-container/20 border border-secondary-container p-6">
<div class="flex items-start gap-4">
<span class="material-symbols-outlined text-secondary text-2xl">info</span>
<div>
<h4 class="font-bold text-on-secondary-container text-body-base mb-1">Informasi Kebijakan Regrade</h4>
<p class="text-body-sm text-secondary leading-relaxed">
Regrade lot akan mencatat histori perubahan pada kartu stok masing-masing grade. Pastikan tim QC telah melakukan validasi fisik sebelum menekan simpan.
</p>
</div>
</div>
</div>
<!-- Image/Illustration Context -->
<div class="h-48 relative overflow-hidden group">
<img alt="Sorting Process" class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105" data-alt="High-density macro photography of white bird nests being carefully sorted by grade on a clean surgical steel table under bright industrial lights" src="https://lh3.googleusercontent.com/aida-public/AB6AXuD0q2OMn-TzDfY5jGMVa5cWUoA6-iOzjTjmhnqf0SnIJDBqLO6XKyPvnlWB7_InE6_ibW5dhNwx7-tVG4mk_PuYrQeELOBhQPxFC7nE10WxhiuJz3_esEU35C9na5X2PD6enScZ9kUWT878P0g-WYO-XmX_FgsNNhyArWaP-eTaAjBSHC3ayXyvT3KP-lrXzn9m7k7EINCphvXzHVzCl1nZ7lBXwcN48XGPRW831P8F2fFHuVG1Mq-uR47xzr79_RxxC-PiOUhOnQ"/>
<div class="absolute inset-0 bg-gradient-to-t from-primary/80 to-transparent flex items-end p-4">
<p class="text-white text-label-caps">STANDAR EKSPOR: GRADE AAA PREMIUM</p>
</div>
</div>
</div>
</div>
</div>
<!-- Footer -->
<footer class="mt-auto border-t border-outline-variant bg-white p-4 text-center">
<p class="text-label-caps text-on-surface-variant">© 2024 SWIFTLOT WALET SYSTEM • OPERATIONAL STACK V.2.1.0</p>
</footer>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

View File

@ -0,0 +1,420 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Laporan Penelusuran - Sistem Inventaris Walet</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-primary-container": "#92d5df",
"on-primary": "#ffffff",
"secondary-fixed": "#d1e4fb",
"on-tertiary": "#ffffff",
"surface-tint": "#1d6871",
"primary": "#00454c",
"tertiary-fixed-dim": "#feb78a",
"on-background": "#191c1d",
"tertiary": "#60320f",
"surface": "#f8fafa",
"on-secondary": "#ffffff",
"on-surface": "#191c1d",
"on-surface-variant": "#3f484a",
"error": "#ba1a1a",
"on-primary-fixed-variant": "#004f57",
"tertiary-fixed": "#ffdbc7",
"primary-fixed": "#aaeef8",
"on-tertiary-fixed-variant": "#6b3a17",
"on-secondary-fixed-variant": "#36485b",
"inverse-on-surface": "#eff1f1",
"error-container": "#ffdad6",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"outline": "#6f797a",
"surface-container-highest": "#e1e3e3",
"secondary-container": "#cfe2f9",
"on-secondary-container": "#526478",
"on-primary-fixed": "#001f23",
"tertiary-container": "#7c4824",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"on-secondary-fixed": "#091d2e",
"surface-bright": "#f8fafa",
"secondary": "#4e6073",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-dim": "#d8dadb",
"surface-container-low": "#f2f4f4",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-tertiary-fixed": "#311300",
"background": "#f8fafa",
"surface-container": "#eceeee",
"on-tertiary-container": "#ffbb91",
"inverse-surface": "#2e3131"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"h2": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"table-data": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 10px; }
.trace-line { background-image: radial-gradient(#cbd5e1 1px, transparent 1px); background-size: 8px 8px; }
</style>
</head>
<body class="bg-surface text-on-surface font-body-base antialiased">
<!-- TopNavBar -->
<header class="fixed top-0 left-0 w-full z-40 flex justify-between items-center px-6 h-16 bg-white border-b border-slate-200 shadow-sm">
<div class="flex items-center gap-4">
<img alt="Logo" class="h-10 w-auto" data-alt="Official logo of Sistem Inventaris Walet featuring a minimalist bird icon in teal colors" src="https://lh3.googleusercontent.com/aida-public/AB6AXuD7e9zkXtnDKN_UYutEd5nXQHLSoXwzKxupORW49B9rs31gq2B93kEXiXEzyPhNfAtOgOYx2H1f4xyK_y_yBNbs8TQOvBLmrRI1VsS6ZpDt_uUNo8jP6Mt2fr2sPZOu6PsO9tqhwQ_SbzgI-yBUPh1i-gi7b3tYyxs49LfLMJbmPxXHI0EfPJeFFfb6Xc7MT23tB5Vl3QkODKsDUYPstNY8JP3Mk0H-r8FSz1rn46hfzPT4kCC1LoBgqtRvufB56_0MUZG-CcCE0w"/>
<span class="text-xl font-bold text-teal-700 font-inter">Sistem Inventaris Walet</span>
</div>
<div class="flex items-center gap-6">
<div class="relative hidden md:block">
<input class="pl-10 pr-4 py-2 border border-outline-variant rounded-lg text-body-sm focus:ring-2 focus:ring-primary-container outline-none w-64 bg-surface-container-lowest" placeholder="Cari Lot ID..." type="text"/>
<span class="material-symbols-outlined absolute left-3 top-2.5 text-slate-400">search</span>
</div>
<div class="flex items-center gap-4">
<button class="p-2 hover:bg-slate-50 rounded-full transition-colors relative">
<span class="material-symbols-outlined text-slate-600">notifications</span>
<span class="absolute top-2 right-2 w-2 h-2 bg-error rounded-full"></span>
</button>
<button class="p-2 hover:bg-slate-50 rounded-full transition-colors">
<span class="material-symbols-outlined text-slate-600">help_outline</span>
</button>
<button class="flex items-center gap-2 bg-primary text-on-primary px-4 py-2 rounded-lg font-h2 active:opacity-80 transition-all">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 0;">qr_code_scanner</span>
<span>Scan Barcode</span>
</button>
<img alt="Profil Pengguna" class="w-10 h-10 rounded-full border border-slate-200" data-alt="Close up professional portrait of a warehouse manager in a clean white uniform" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCAY6P18auIsPE9Jy0cxz2Ufiu06_5HcFhvb_BvOfdNBpu8HjX3nlXuW3UbS58-jV-3ZMbZHyEEccyX7riV5zkXBfV6tO2RrCSSKvZv8_iU-_perAI0eBzXcsA0EK099Si3yH4NgZs46aUOE9dh9WrQYO-lvJlor0LS5YhNBq95e5M2l2Bk-C8YjhS6s191h-OQ1jGUgEqvvzZEgOj53QVCVuGd9jvAexfCeNyxDlYq35dL9m24o-qq-fwMKQ7tAhOkIwOKEoDKLA"/>
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 flex flex-col py-6 bg-slate-50 border-r border-slate-200 z-30 pt-20">
<div class="px-6 mb-8">
<h2 class="text-lg font-black text-teal-800 font-inter">Inventory Walet</h2>
<p class="text-[10px] font-medium uppercase tracking-widest text-slate-500">Sistem Traceability</p>
</div>
<nav class="flex-1 px-4 space-y-1">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 rounded-r-lg" href="#">
<span class="material-symbols-outlined">dashboard</span>
<span class="font-label-caps uppercase">Dashboard</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 rounded-r-lg" href="#">
<span class="material-symbols-outlined">inventory_2</span>
<span class="font-label-caps uppercase">Laporan Stok</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 rounded-r-lg" href="#">
<span class="material-symbols-outlined">database</span>
<span class="font-label-caps uppercase">Data Master</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 bg-teal-50 text-teal-700 rounded-r-lg border-l-4 border-teal-700 font-bold" href="#">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">qr_code_scanner</span>
<span class="font-label-caps uppercase">Pelacakan</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 rounded-r-lg" href="#">
<span class="material-symbols-outlined">settings</span>
<span class="font-label-caps uppercase">Pengaturan</span>
</a>
</nav>
<div class="px-4 mt-auto space-y-1">
<button class="w-full mb-4 bg-teal-700 text-white py-3 rounded-lg font-h2 hover:bg-teal-800 transition-colors">
Tambah Lot Baru
</button>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 transition-colors" href="#">
<span class="material-symbols-outlined">help</span>
<span class="font-label-caps uppercase">Bantuan</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-error hover:bg-red-50 transition-colors" href="#">
<span class="material-symbols-outlined">logout</span>
<span class="font-label-caps uppercase">Log Keluar</span>
</a>
</div>
</aside>
<!-- Main Content -->
<main class="ml-64 pt-20 p-container-margin">
<div class="max-w-7xl mx-auto">
<!-- Header Section -->
<div class="flex justify-between items-end mb-8">
<div>
<h1 class="font-h1 text-on-surface mb-1">Laporan Penelusuran (Traceability)</h1>
<p class="text-body-sm text-on-surface-variant">Lacak riwayat material dari asal pemasok hingga tujuan pengiriman.</p>
</div>
<div class="flex gap-3">
<button class="flex items-center gap-2 border border-outline px-4 py-2 rounded-lg font-h2 text-primary hover:bg-primary-fixed-dim transition-colors">
<span class="material-symbols-outlined">download</span>
Ekspor PDF
</button>
<button class="flex items-center gap-2 border border-outline px-4 py-2 rounded-lg font-h2 text-primary hover:bg-primary-fixed-dim transition-colors">
<span class="material-symbols-outlined">share</span>
Bagikan
</button>
</div>
</div>
<!-- Search & Quick Filters -->
<div class="grid grid-cols-12 gap-gutter mb-8">
<div class="col-span-12 lg:col-span-8 bg-white p-4 rounded-xl shadow-sm border border-outline-variant flex gap-4">
<div class="flex-1 relative">
<label class="block text-label-caps text-slate-500 mb-1">LOT ID / KODE PRODUKSI</label>
<input class="w-full border-none bg-surface-container px-4 py-3 rounded text-display-lot font-display-lot focus:ring-2 focus:ring-teal-700 outline-none" type="text" value="LOT-2023-WB0042"/>
<button class="absolute right-3 top-[34px] text-teal-700 hover:text-teal-900">
<span class="material-symbols-outlined">search</span>
</button>
</div>
<div class="w-px bg-slate-200"></div>
<div class="flex flex-col justify-center">
<label class="block text-label-caps text-slate-500 mb-1">STATUS SAAT INI</label>
<span class="inline-flex items-center gap-1.5 bg-green-100 text-green-800 px-3 py-1 rounded-full text-table-data">
<span class="w-2 h-2 bg-green-600 rounded-full"></span>
Export Ready
</span>
</div>
</div>
<div class="col-span-12 lg:col-span-4 bg-primary-container text-white p-4 rounded-xl shadow-sm border border-teal-800 flex items-center justify-between">
<div>
<p class="text-label-caps opacity-80">TOTAL BERAT BERSIH</p>
<h2 class="text-3xl font-black">24.50 <span class="text-sm font-normal">kg</span></h2>
</div>
<div class="text-right">
<p class="text-label-caps opacity-80">KADAR AIR</p>
<h2 class="text-3xl font-black">8.2 <span class="text-sm font-normal">%</span></h2>
</div>
</div>
</div>
<!-- Traceability Diagram -->
<div class="bg-white rounded-xl shadow-sm border border-outline-variant p-6 mb-8 overflow-hidden relative">
<div class="flex items-center gap-2 mb-8">
<span class="material-symbols-outlined text-teal-700">account_tree</span>
<h2 class="font-h1 text-slate-800">Diagram Alur Penelusuran</h2>
</div>
<div class="relative flex justify-between items-start pt-8 pb-12 overflow-x-auto min-w-[800px]">
<!-- Horizontal Line -->
<div class="absolute top-1/2 left-0 w-full h-[2px] bg-slate-200 -translate-y-12 z-0"></div>
<!-- Supplier Node -->
<div class="relative z-10 flex flex-col items-center w-1/4">
<div class="w-12 h-12 bg-white border-2 border-teal-600 rounded-full flex items-center justify-center mb-4 shadow-md">
<span class="material-symbols-outlined text-teal-600">agriculture</span>
</div>
<div class="bg-white p-3 rounded-lg border border-slate-200 shadow-sm w-48 text-center">
<p class="text-label-caps text-teal-700 mb-1">SUMBER ASAL</p>
<p class="font-bold text-slate-800">PT. Walet Sejahtera</p>
<p class="text-body-sm text-slate-500">Kab. Kotawaringin</p>
<div class="mt-2 text-[10px] bg-slate-100 py-1 rounded">ID: SUP-KAL-01</div>
</div>
<div class="mt-4 text-center">
<p class="text-body-sm font-bold text-slate-400 italic">Diterima: 12 Okt 2023</p>
</div>
</div>
<!-- Warehouse Node -->
<div class="relative z-10 flex flex-col items-center w-1/4">
<div class="w-12 h-12 bg-white border-2 border-teal-600 rounded-full flex items-center justify-center mb-4 shadow-md">
<span class="material-symbols-outlined text-teal-600">warehouse</span>
</div>
<div class="bg-white p-3 rounded-lg border border-teal-600 shadow-md ring-2 ring-teal-100 w-48 text-center scale-110">
<p class="text-label-caps text-teal-700 mb-1">PROSES BERJALAN</p>
<p class="font-bold text-slate-800">Gudang Utama (Pusat)</p>
<p class="text-body-sm text-slate-500">Sortir &amp; Grading</p>
<div class="mt-2 text-[10px] bg-teal-600 text-white py-1 rounded">LOT: 2023-WB0042</div>
</div>
<div class="mt-6 text-center">
<p class="text-body-sm font-bold text-slate-400 italic">Diproses: 14 Okt 2023</p>
</div>
</div>
<!-- QC Node -->
<div class="relative z-10 flex flex-col items-center w-1/4">
<div class="w-12 h-12 bg-white border-2 border-teal-600 rounded-full flex items-center justify-center mb-4 shadow-md">
<span class="material-symbols-outlined text-teal-600">verified_user</span>
</div>
<div class="bg-white p-3 rounded-lg border border-slate-200 shadow-sm w-48 text-center">
<p class="text-label-caps text-teal-700 mb-1">PENGECEKAN MUTU</p>
<p class="font-bold text-slate-800">Grade AAA - Putih</p>
<p class="text-body-sm text-slate-500">Lolos Uji Lab</p>
<div class="mt-2 text-[10px] bg-green-100 text-green-800 py-1 rounded">Sertifikat: QC-8821</div>
</div>
<div class="mt-4 text-center">
<p class="text-body-sm font-bold text-slate-400 italic">Disetujui: 16 Okt 2023</p>
</div>
</div>
<!-- Customer Node -->
<div class="relative z-10 flex flex-col items-center w-1/4">
<div class="w-12 h-12 bg-slate-100 border-2 border-dashed border-slate-400 rounded-full flex items-center justify-center mb-4">
<span class="material-symbols-outlined text-slate-400">local_shipping</span>
</div>
<div class="bg-slate-50 p-3 rounded-lg border border-dashed border-slate-300 w-48 text-center">
<p class="text-label-caps text-slate-400 mb-1">TUJUAN EKSPOR</p>
<p class="font-bold text-slate-400">Global Trade Corp</p>
<p class="text-body-sm text-slate-400">Hong Kong SAR</p>
<div class="mt-2 text-[10px] bg-slate-200 text-slate-500 py-1 rounded">Rencana: 25 Okt 2023</div>
</div>
</div>
</div>
</div>
<!-- Detailed History & Specs -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Log Pergerakan -->
<div class="col-span-12 lg:col-span-7 bg-white rounded-xl shadow-sm border border-outline-variant overflow-hidden">
<div class="p-4 border-b border-slate-100 flex justify-between items-center bg-slate-50/50">
<h3 class="font-h2 text-slate-800">Log Aktivitas Detail</h3>
<span class="text-body-sm text-slate-500">4 Riwayat Ditemukan</span>
</div>
<div class="divide-y divide-slate-100">
<div class="p-4 hover:bg-slate-50 transition-colors flex gap-4">
<div class="w-10 h-10 rounded-full bg-blue-50 text-blue-600 flex items-center justify-center shrink-0">
<span class="material-symbols-outlined text-sm">edit_document</span>
</div>
<div class="flex-1">
<div class="flex justify-between items-start">
<h4 class="font-bold text-slate-800">Dokumen Ekspor Disiapkan</h4>
<span class="text-[11px] text-slate-400">Hari ini, 09:12</span>
</div>
<p class="text-body-sm text-slate-600">Penerbitan Phytosanitary Certificate dan Packing List untuk Lot 2023-WB0042.</p>
<p class="text-[11px] text-slate-400 mt-1 uppercase tracking-tighter">Oleh: Budi Santoso (Admin)</p>
</div>
</div>
<div class="p-4 hover:bg-slate-50 transition-colors flex gap-4">
<div class="w-10 h-10 rounded-full bg-green-50 text-green-600 flex items-center justify-center shrink-0">
<span class="material-symbols-outlined text-sm">fact_check</span>
</div>
<div class="flex-1">
<div class="flex justify-between items-start">
<h4 class="font-bold text-slate-800">Lolos Quality Control</h4>
<span class="text-[11px] text-slate-400">16 Okt 2023, 14:30</span>
</div>
<p class="text-body-sm text-slate-600">Hasil uji nitrit &lt; 30ppm. Warna putih alami, tekstur mangkok sempurna.</p>
<p class="text-[11px] text-slate-400 mt-1 uppercase tracking-tighter">Oleh: Dr. Siti Aminah (Lab)</p>
</div>
</div>
<div class="p-4 hover:bg-slate-50 transition-colors flex gap-4">
<div class="w-10 h-10 rounded-full bg-teal-50 text-teal-600 flex items-center justify-center shrink-0">
<span class="material-symbols-outlined text-sm">cleaning_services</span>
</div>
<div class="flex-1">
<div class="flex justify-between items-start">
<h4 class="font-bold text-slate-800">Tahap Pencucian &amp; Pembersihan</h4>
<span class="text-[11px] text-slate-400">14 Okt 2023, 08:00</span>
</div>
<p class="text-body-sm text-slate-600">Pencucian manual menggunakan air RO. Pengeringan pada suhu 40°C.</p>
<p class="text-[11px] text-slate-400 mt-1 uppercase tracking-tighter">Oleh: Tim Produksi A</p>
</div>
</div>
<div class="p-4 hover:bg-slate-50 transition-colors flex gap-4">
<div class="w-10 h-10 rounded-full bg-orange-50 text-orange-600 flex items-center justify-center shrink-0">
<span class="material-symbols-outlined text-sm">download_done</span>
</div>
<div class="flex-1">
<div class="flex justify-between items-start">
<h4 class="font-bold text-slate-800">Penerimaan Bahan Baku</h4>
<span class="text-[11px] text-slate-400">12 Okt 2023, 11:20</span>
</div>
<p class="text-body-sm text-slate-600">Diterima dari PT Walet Sejahtera. Berat kotor: 26.12 kg.</p>
<p class="text-[11px] text-slate-400 mt-1 uppercase tracking-tighter">Oleh: Ahmad Fauzi (Logistik)</p>
</div>
</div>
</div>
</div>
<!-- Informasi Spesifikasi Card -->
<div class="col-span-12 lg:col-span-5 space-y-gutter">
<div class="bg-white rounded-xl shadow-sm border border-outline-variant p-6">
<h3 class="font-h2 text-slate-800 mb-4 flex items-center gap-2">
<span class="material-symbols-outlined text-primary">info</span>
Spesifikasi Teknis Lot
</h3>
<div class="space-y-4">
<div class="flex justify-between items-center pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Grade Produk</span>
<span class="font-bold text-slate-800">Super AAA - Mangkok</span>
</div>
<div class="flex justify-between items-center pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Metode Pengeringan</span>
<span class="font-bold text-slate-800">Heat-Pump Dryers</span>
</div>
<div class="flex justify-between items-center pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Kandungan Nitrit</span>
<span class="font-bold text-green-600">22 ppm (Aman)</span>
</div>
<div class="flex justify-between items-center pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Lokasi Penyimpanan</span>
<span class="font-bold text-slate-800">Cold Storage - Ruang 02</span>
</div>
<div class="flex justify-between items-center">
<span class="text-body-sm text-slate-500">ID Sertifikasi</span>
<span class="font-bold text-slate-800">GACC-ID-2023-01</span>
</div>
</div>
</div>
<!-- Photo Documentation -->
<div class="bg-white rounded-xl shadow-sm border border-outline-variant p-6">
<h3 class="font-h2 text-slate-800 mb-4 flex items-center gap-2">
<span class="material-symbols-outlined text-primary">image</span>
Dokumentasi Visual
</h3>
<div class="grid grid-cols-2 gap-3">
<div class="aspect-square bg-slate-100 rounded-lg overflow-hidden relative group">
<img class="w-full h-full object-cover group-hover:scale-110 transition-transform duration-300" data-alt="High quality close up of raw edible bird's nest in a wooden crate with sharp details and natural lighting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCubNVztzYK7_tACXNrRCF5KdeY5Vx5bdijUUhEk7B6CVxcBLVbnM-dhMjxNpleb5nUXX_N79zm2J5ZeIscxEiC3irKmxavNlJC-j_Mdv545NyEt3HPoKkg9o_WvMZw5us4MgK6DWxIBLPEpj8HgxX5LPM27WlgGttUvuphrTXwWIsITDsUn3ZRfIwH9OzFxoOp9fvdx3wpXaUJUhaspE4c-08UmnJoi5LFjq41B94G3WCiDtjnk5g9J5cMkFsMFBBFq-OfcdeeCQ"/>
<div class="absolute bottom-0 left-0 w-full p-2 bg-gradient-to-t from-black/60 to-transparent">
<p class="text-[10px] text-white">Bahan Baku</p>
</div>
</div>
<div class="aspect-square bg-slate-100 rounded-lg overflow-hidden relative group">
<img class="w-full h-full object-cover group-hover:scale-110 transition-transform duration-300" data-alt="Bird nest cups being processed in a clean, clinical laboratory environment with sterile equipment" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCRGHYbwk2awqUrOjo9522Yy4wD9trXbSaQIGZJ8L0Y6U-DB3aEG-fYFXR4rf3s_01GiKC68hyJ5UtlAxHIoj6K7-QhnLoZafp4aiV5tqSqbFE_41DQI4-da616DCWOv_HM63WWfV_6KWKR3yqswECZ_jmWkOTIHJR7EoPIv383z7_x_0aPM15MROhUfZ8ZErRBgyJSMz3YokEd1TDstw8oMATjwJb3-EELOCU1zqZsZMMi_Ehhftud4dFs3fNFGGcgjLkN52K23A"/>
<div class="absolute bottom-0 left-0 w-full p-2 bg-gradient-to-t from-black/60 to-transparent">
<p class="text-[10px] text-white">Proses QC</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- FAB for quick actions (only on relevant top-level) -->
<button class="fixed bottom-8 right-8 w-14 h-14 bg-teal-700 text-white rounded-full shadow-lg flex items-center justify-center hover:bg-teal-800 active:scale-95 transition-all z-50">
<span class="material-symbols-outlined" style="font-variation-settings: 'opsz' 40;">add</span>
</button>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

View File

@ -0,0 +1,452 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary": "#4e6073",
"on-primary-fixed": "#001f23",
"primary-fixed": "#aaeef8",
"outline": "#6f797a",
"background": "#f8fafa",
"on-tertiary-fixed-variant": "#6b3a17",
"on-primary-fixed-variant": "#004f57",
"error-container": "#ffdad6",
"tertiary": "#60320f",
"on-secondary-container": "#526478",
"surface-container": "#eceeee",
"on-tertiary": "#ffffff",
"secondary-container": "#cfe2f9",
"on-error-container": "#93000a",
"inverse-primary": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"surface-tint": "#1d6871",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"inverse-surface": "#2e3131",
"on-secondary-fixed": "#091d2e",
"on-surface": "#191c1d",
"tertiary-fixed": "#ffdbc7",
"surface": "#f8fafa",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"outline-variant": "#bfc8ca",
"on-surface-variant": "#3f484a",
"surface-container-highest": "#e1e3e3",
"inverse-on-surface": "#eff1f1",
"secondary-fixed-dim": "#b5c8df",
"surface-container-high": "#e6e8e9",
"surface-container-low": "#f2f4f4",
"on-tertiary-container": "#ffbb91",
"on-tertiary-fixed": "#311300",
"error": "#ba1a1a",
"surface-bright": "#f8fafa",
"primary": "#00454c",
"primary-fixed-dim": "#8ed1db",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"on-background": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"on-primary": "#ffffff",
"surface-dim": "#d8dadb",
"on-secondary": "#ffffff",
"tertiary-container": "#7c4824"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"compact-padding": "8px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"gutter": "16px"
},
"fontFamily": {
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"h2": ["Inter"],
"label-caps": ["Inter"]
},
"fontSize": {
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
font-size: 20px;
}
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
</style>
</head>
<body class="bg-background font-body-base text-on-surface antialiased overflow-hidden">
<!-- Sidebar Navigation -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 bg-slate-50 flex flex-col h-screen py-4 z-50">
<div class="px-6 mb-8">
<div class="flex items-center gap-3">
<div class="h-8 w-8 bg-primary flex items-center justify-center rounded-lg">
<span class="material-symbols-outlined text-white" data-icon="bird">flight</span>
</div>
<div>
<h2 class="text-teal-900 font-black text-sm tracking-tight leading-tight">Walet Operations</h2>
<p class="text-[10px] text-slate-500 font-medium">V1.0.4-Operational</p>
</div>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2.5 text-slate-600 hover:bg-slate-100 hover:text-teal-600 duration-150 ease-in-out font-inter text-[13px] font-medium rounded-lg" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
<span>Dashboard</span>
</a>
<a class="flex items-center gap-3 px-3 py-2.5 text-slate-600 hover:bg-slate-100 hover:text-teal-600 duration-150 ease-in-out font-inter text-[13px] font-medium rounded-lg" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
<span>Inventory Stock</span>
</a>
<a class="flex items-center gap-3 px-3 py-2.5 bg-teal-50 text-teal-700 border-r-4 border-teal-600 duration-150 ease-in-out font-inter text-[13px] font-semibold rounded-l-lg" href="#">
<span class="material-symbols-outlined" data-icon="account_tree">account_tree</span>
<span>Traceability Logs</span>
</a>
<a class="flex items-center gap-3 px-3 py-2.5 text-slate-600 hover:bg-slate-100 hover:text-teal-600 duration-150 ease-in-out font-inter text-[13px] font-medium rounded-lg" href="#">
<span class="material-symbols-outlined" data-icon="database">database</span>
<span>Master Data</span>
</a>
<a class="flex items-center gap-3 px-3 py-2.5 text-slate-600 hover:bg-slate-100 hover:text-teal-600 duration-150 ease-in-out font-inter text-[13px] font-medium rounded-lg" href="#">
<span class="material-symbols-outlined" data-icon="qr_code_scanner">qr_code_scanner</span>
<span>Barcode Scanner</span>
</a>
</nav>
<div class="px-3 pt-4 mt-4 border-t border-slate-200">
<a class="flex items-center gap-3 px-3 py-2.5 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-inter text-[13px] font-medium rounded-lg" href="#">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
<span>Support</span>
</a>
<a class="flex items-center gap-3 px-3 py-2.5 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-inter text-[13px] font-medium rounded-lg" href="#">
<span class="material-symbols-outlined" data-icon="logout">logout</span>
<span>Sign Out</span>
</a>
</div>
</aside>
<!-- Main Content Area -->
<main class="ml-64 flex-1 flex flex-col h-screen">
<!-- Top Navigation Bar -->
<header class="bg-white border-b border-slate-200 shadow-sm flex items-center justify-between px-6 h-14 w-full z-40 sticky top-0">
<div class="flex items-center gap-4">
<h1 class="font-inter text-lg font-bold tracking-tight text-teal-800">SarangTrace ERP</h1>
<div class="h-6 w-px bg-slate-200"></div>
<div class="flex items-center bg-slate-100 rounded-md px-3 py-1.5 w-64">
<span class="material-symbols-outlined text-slate-400 mr-2" data-icon="search">search</span>
<input class="bg-transparent border-none text-body-sm focus:ring-0 p-0 w-full placeholder:text-slate-400" placeholder="Cari Lot Code..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<button class="relative p-2 text-slate-500 hover:bg-slate-50 transition-colors rounded-full active:opacity-80">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
<span class="absolute top-1.5 right-1.5 w-2 h-2 bg-error rounded-full border-2 border-white"></span>
</button>
<button class="p-2 text-slate-500 hover:bg-slate-50 transition-colors rounded-full active:opacity-80">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
</button>
<div class="h-8 w-8 rounded-full overflow-hidden border border-slate-200">
<img alt="User Profile" class="w-full h-full object-cover" data-alt="professional portrait of a warehouse manager in a bright office setting with corporate attire" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBC4Ua3ZmuYLDZnlhk4RiDUhyjHFQAb84KXK1xMZ3urEylTDVFoGkAOJgv-de-jBgPMEyUH82FUrJXeobkimYYx9G2fFJ6wzG_F1NaUpnFFzHhoR9MPBI0S-g_e_gx6qmmny7mx9w1umGeFKJe-uy_NoOOAL3GYt10FySNtjNWFewWWbXYYBsQJDE-38NmglGc5aRsD0jfuL1rDAyO7oFkAqUe-zBopLf8lDKA0_HcmWE1z_WRBmi9CE2xK-sYGnqV-xLTDUAXCPg"/>
</div>
</div>
</header>
<!-- Page Canvas -->
<div class="flex-1 overflow-y-auto p-container-margin">
<!-- Page Header & Filters -->
<div class="flex flex-col gap-6 mb-8">
<div class="flex justify-between items-end">
<div>
<p class="text-label-caps text-secondary uppercase font-bold tracking-wider mb-1">AUDIT &amp; TRACEABILITY</p>
<h2 class="font-h1 text-h1 text-on-surface">Laporan Penelusuran (Traceability)</h2>
</div>
<div class="flex gap-3">
<button class="flex items-center gap-2 px-4 py-2 border border-primary text-primary font-medium text-body-sm rounded-lg hover:bg-primary-fixed/20 transition-all">
<span class="material-symbols-outlined" data-icon="download">download</span>
Export PDF
</button>
<button class="flex items-center gap-2 px-4 py-2 bg-primary text-white font-medium text-body-sm rounded-lg hover:opacity-90 active:opacity-80 shadow-sm transition-all">
<span class="material-symbols-outlined" data-icon="print">print</span>
Cetak Laporan
</button>
</div>
</div>
<!-- Filter Panel -->
<div class="bg-white border border-slate-200 rounded-xl p-4 shadow-sm grid grid-cols-1 md:grid-cols-4 gap-4">
<div class="space-y-1.5">
<label class="text-label-caps text-slate-500">LOT CODE</label>
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400" data-icon="qr_code">qr_code</span>
<input class="w-full pl-10 pr-3 py-2 border border-slate-200 rounded-lg text-body-sm focus:border-primary focus:ring-2 focus:ring-primary/20 transition-all" placeholder="Contoh: LOT-W-2023-089" type="text"/>
</div>
</div>
<div class="space-y-1.5">
<label class="text-label-caps text-slate-500">SUPPLIER / SUMBER</label>
<select class="w-full px-3 py-2 border border-slate-200 rounded-lg text-body-sm focus:border-primary focus:ring-2 focus:ring-primary/20 transition-all">
<option>Semua Supplier</option>
<option>Farm Mandiri - Sukabumi</option>
<option>UD. Walet Lestari</option>
<option>Peternak Rakyat Jatim</option>
</select>
</div>
<div class="space-y-1.5">
<label class="text-label-caps text-slate-500">CUSTOMER</label>
<select class="w-full px-3 py-2 border border-slate-200 rounded-lg text-body-sm focus:border-primary focus:ring-2 focus:ring-primary/20 transition-all">
<option>Semua Customer</option>
<option>Global Bird's Nest Ltd</option>
<option>China Export Trading</option>
</select>
</div>
<div class="space-y-1.5">
<label class="text-label-caps text-slate-500">RENTANG TANGGAL</label>
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400" data-icon="calendar_today">calendar_today</span>
<input class="w-full pl-10 pr-3 py-2 border border-slate-200 rounded-lg text-body-sm focus:border-primary focus:ring-2 focus:ring-primary/20 transition-all" placeholder="01 Jan 2024 - 31 Jan 2024" type="text"/>
</div>
</div>
</div>
</div>
<!-- Traceability Timeline / Bento Grid -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Summary Card -->
<div class="col-span-12 lg:col-span-4 space-y-gutter">
<div class="bg-primary-container p-6 rounded-xl border border-primary/20 relative overflow-hidden">
<div class="relative z-10">
<span class="text-white/80 font-label-caps">STATUS SAAT INI</span>
<h3 class="text-display-lot text-white mt-1">LOT-2023-AX78</h3>
<div class="mt-4 flex items-center gap-2">
<span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-label-caps">SIAP EKSPOR</span>
<span class="text-white/60 text-body-sm">| Update 2 Jam yang lalu</span>
</div>
</div>
<span class="material-symbols-outlined absolute -bottom-4 -right-4 text-9xl text-white/10 rotate-12" data-icon="inventory">inventory</span>
</div>
<div class="bg-white border border-slate-200 rounded-xl p-5 shadow-sm">
<h3 class="font-h2 text-h2 mb-4">Detail Material</h3>
<div class="space-y-4">
<div class="flex justify-between pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Jenis</span>
<span class="text-body-sm font-bold">Mangkok Putih A</span>
</div>
<div class="flex justify-between pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Total Berat (In)</span>
<span class="text-body-sm font-bold">25.40 kg</span>
</div>
<div class="flex justify-between pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Total Berat (Out)</span>
<span class="text-body-sm font-bold">22.15 kg</span>
</div>
<div class="flex justify-between pb-2 border-b border-slate-50">
<span class="text-body-sm text-slate-500">Kadar Air</span>
<span class="text-body-sm font-bold">11% - 13%</span>
</div>
<div class="flex justify-between">
<span class="text-body-sm text-slate-500">Efisiensi</span>
<span class="text-body-sm font-bold text-teal-600">87.2%</span>
</div>
</div>
</div>
</div>
<!-- Timeline View -->
<div class="col-span-12 lg:col-span-8">
<div class="bg-white border border-slate-200 rounded-xl p-6 shadow-sm">
<div class="flex items-center justify-between mb-8">
<h3 class="font-h2 text-h2">Alur Genealogi Lot</h3>
<div class="flex gap-2">
<span class="flex items-center gap-1.5 text-label-caps text-slate-500">
<span class="w-3 h-3 rounded-full bg-blue-500"></span> Supplier
</span>
<span class="flex items-center gap-1.5 text-label-caps text-slate-500">
<span class="w-3 h-3 rounded-full bg-orange-500"></span> Proses
</span>
<span class="flex items-center gap-1.5 text-label-caps text-slate-500">
<span class="w-3 h-3 rounded-full bg-teal-500"></span> Keluar
</span>
</div>
</div>
<!-- Vertical Timeline -->
<div class="relative pl-8 space-y-10 before:content-[''] before:absolute before:left-[11px] before:top-2 before:bottom-2 before:w-[2px] before:bg-slate-100">
<!-- Node: Lot In -->
<div class="relative">
<div class="absolute -left-[32px] top-0 w-6 h-6 rounded-full bg-blue-500 border-4 border-white shadow-sm flex items-center justify-center z-10"></div>
<div class="flex items-start justify-between">
<div>
<h4 class="text-table-data font-bold text-blue-700">LOT IN (Penerimaan Material)</h4>
<p class="text-body-sm font-semibold mt-1">Farm Mandiri - Sukabumi</p>
<p class="text-[12px] text-slate-500">Lot ID: <span class="font-mono">FMS-23-001</span> • 25.40 kg • Grade Raw</p>
</div>
<div class="text-right">
<span class="text-[11px] font-bold text-slate-400 block">12 OKT 2023</span>
<span class="text-[11px] text-slate-400 block">08:45 WIB</span>
</div>
</div>
</div>
<!-- Node: Transformation 1 -->
<div class="relative">
<div class="absolute -left-[32px] top-0 w-6 h-6 rounded-full bg-orange-500 border-4 border-white shadow-sm flex items-center justify-center z-10"></div>
<div class="flex items-start justify-between">
<div>
<h4 class="text-table-data font-bold text-orange-700">PENCUCIAN &amp; PEMBERSIHAN</h4>
<p class="text-body-sm font-semibold mt-1">Workstation A-04 (Anto S.)</p>
<p class="text-[12px] text-slate-500">Penyusutan: 1.2 kg • Status: Selesai</p>
<!-- Sub-component: Transformation Detail -->
<div class="mt-3 bg-slate-50 p-3 rounded border border-slate-100 text-[12px] max-w-md">
<div class="flex items-center gap-2 mb-1">
<span class="material-symbols-outlined text-[14px] text-slate-400" data-icon="info">info</span>
<span class="font-bold text-slate-600">Catatan QC:</span>
</div>
Tingkat kebersihan optimal, bulu ringan minim. Siap proses grading.
</div>
</div>
<div class="text-right">
<span class="text-[11px] font-bold text-slate-400 block">14 OKT 2023</span>
<span class="text-[11px] text-slate-400 block">13:20 WIB</span>
</div>
</div>
</div>
<!-- Node: Transformation 2 (Regrading) -->
<div class="relative">
<div class="absolute -left-[32px] top-0 w-6 h-6 rounded-full bg-orange-500 border-4 border-white shadow-sm flex items-center justify-center z-10"></div>
<div class="flex items-start justify-between">
<div>
<h4 class="text-table-data font-bold text-orange-700">REGRADING (Penyortiran Kualitas)</h4>
<p class="text-body-sm font-semibold mt-1">Lab Quality Control</p>
<div class="mt-2 flex gap-2">
<span class="bg-teal-50 text-teal-700 px-2 py-0.5 rounded text-[10px] font-bold">MANGKOK A: 18kg</span>
<span class="bg-amber-50 text-amber-700 px-2 py-0.5 rounded text-[10px] font-bold">SUDUT: 4.15kg</span>
</div>
</div>
<div class="text-right">
<span class="text-[11px] font-bold text-slate-400 block">15 OKT 2023</span>
<span class="text-[11px] text-slate-400 block">10:00 WIB</span>
</div>
</div>
</div>
<!-- Node: Lot Out -->
<div class="relative">
<div class="absolute -left-[32px] top-0 w-6 h-6 rounded-full bg-teal-500 border-4 border-white shadow-sm flex items-center justify-center z-10"></div>
<div class="flex items-start justify-between">
<div>
<h4 class="text-table-data font-bold text-teal-700">LOT OUT (Pengiriman/Ekspor)</h4>
<p class="text-body-sm font-semibold mt-1">Global Bird's Nest Ltd (Hong Kong)</p>
<p class="text-[12px] text-slate-500">Invoice: <span class="font-mono">INV/EXP/10/2023-99</span> • Ship via: Air Cargo</p>
</div>
<div class="text-right">
<span class="text-[11px] font-bold text-slate-400 block">20 OKT 2023</span>
<span class="text-[11px] text-slate-400 block">15:45 WIB</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Detailed Table View -->
<div class="mt-gutter">
<div class="bg-white border border-slate-200 rounded-xl overflow-hidden shadow-sm">
<div class="px-6 py-4 border-b border-slate-200 flex items-center justify-between">
<h3 class="font-h2 text-h2">Daftar Transformasi Detail</h3>
<div class="flex items-center gap-2">
<span class="text-body-sm text-slate-400">Tampilan Baris:</span>
<select class="text-body-sm border-slate-200 rounded p-1">
<option>Compact</option>
<option>Standard</option>
</select>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left">
<thead class="bg-slate-50">
<tr>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">ID Aktivitas</th>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">Operator</th>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">Tahapan</th>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">Input (kg)</th>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">Output (kg)</th>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">Loss (%)</th>
<th class="px-6 py-3 text-label-caps text-slate-500 border-b border-slate-200">Status QC</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-compact-padding font-mono text-table-data text-slate-600">ACT-90234</td>
<td class="px-6 py-compact-padding text-table-data">Budi Santoso</td>
<td class="px-6 py-compact-padding text-table-data">Pembersihan Bulu</td>
<td class="px-6 py-compact-padding text-table-data text-right">25.40</td>
<td class="px-6 py-compact-padding text-table-data text-right">24.20</td>
<td class="px-6 py-compact-padding text-table-data text-right">4.72%</td>
<td class="px-6 py-compact-padding">
<span class="px-2 py-0.5 rounded-full bg-green-50 text-green-700 text-[11px] font-bold">LULUS</span>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-compact-padding font-mono text-table-data text-slate-600">ACT-90288</td>
<td class="px-6 py-compact-padding text-table-data">Siti Aminah</td>
<td class="px-6 py-compact-padding text-table-data">Pengeringan</td>
<td class="px-6 py-compact-padding text-table-data text-right">24.20</td>
<td class="px-6 py-compact-padding text-table-data text-right">22.85</td>
<td class="px-6 py-compact-padding text-table-data text-right">5.58%</td>
<td class="px-6 py-compact-padding">
<span class="px-2 py-0.5 rounded-full bg-green-50 text-green-700 text-[11px] font-bold">LULUS</span>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-compact-padding font-mono text-table-data text-slate-600">ACT-90312</td>
<td class="px-6 py-compact-padding text-table-data">Rian Pratama</td>
<td class="px-6 py-compact-padding text-table-data">Grading Akhir</td>
<td class="px-6 py-compact-padding text-table-data text-right">22.85</td>
<td class="px-6 py-compact-padding text-table-data text-right">22.15</td>
<td class="px-6 py-compact-padding text-table-data text-right">3.06%</td>
<td class="px-6 py-compact-padding">
<span class="px-2 py-0.5 rounded-full bg-blue-50 text-blue-700 text-[11px] font-bold">DITINJAU</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</main>
<!-- Floating Tooltip / Alert (Optional Contextual Information) -->
<div class="fixed bottom-6 right-6 z-40 bg-white border border-slate-200 rounded-xl shadow-lg p-4 max-w-sm flex gap-4 items-start border-l-4 border-l-teal-600">
<div class="p-2 bg-teal-50 rounded-lg text-teal-600">
<span class="material-symbols-outlined" data-icon="verified">verified</span>
</div>
<div>
<h4 class="font-bold text-body-sm text-teal-900">Validasi Audit Berhasil</h4>
<p class="text-[12px] text-slate-500 leading-normal mt-1">Sertifikasi nomor SNI-8922/WLT-23 telah diverifikasi untuk rantai pasok lot ini.</p>
</div>
<button class="text-slate-400 hover:text-slate-600">
<span class="material-symbols-outlined text-[18px]" data-icon="close">close</span>
</button>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

View File

@ -0,0 +1,482 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-primary-container": "#92d5df",
"on-primary": "#ffffff",
"secondary-fixed": "#d1e4fb",
"on-tertiary": "#ffffff",
"surface-tint": "#1d6871",
"primary": "#00454c",
"tertiary-fixed-dim": "#feb78a",
"on-background": "#191c1d",
"tertiary": "#60320f",
"surface": "#f8fafa",
"on-secondary": "#ffffff",
"on-surface": "#191c1d",
"on-surface-variant": "#3f484a",
"error": "#ba1a1a",
"on-primary-fixed-variant": "#004f57",
"tertiary-fixed": "#ffdbc7",
"primary-fixed": "#aaeef8",
"on-tertiary-fixed-variant": "#6b3a17",
"on-secondary-fixed-variant": "#36485b",
"inverse-on-surface": "#eff1f1",
"error-container": "#ffdad6",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"outline": "#6f797a",
"surface-container-highest": "#e1e3e3",
"secondary-container": "#cfe2f9",
"on-secondary-container": "#526478",
"on-primary-fixed": "#001f23",
"tertiary-container": "#7c4824",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"on-secondary-fixed": "#091d2e",
"surface-bright": "#f8fafa",
"secondary": "#4e6073",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-dim": "#d8dadb",
"surface-container-low": "#f2f4f4",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-tertiary-fixed": "#311300",
"background": "#f8fafa",
"surface-container": "#eceeee",
"on-tertiary-container": "#ffbb91",
"inverse-surface": "#2e3131"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"h2": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"table-data": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
body { font-family: 'Inter', sans-serif; }
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
</style>
</head>
<body class="bg-surface text-on-surface font-body-base">
<!-- TopNavBar Shell -->
<header class="fixed top-0 left-0 w-full z-40 flex justify-between items-center px-6 h-16 bg-white border-b border-slate-200 shadow-sm font-inter text-sm antialiased">
<div class="flex items-center gap-4">
<img alt="Logo Perusahaan Walet" class="h-8 w-auto" data-alt="minimalist professional logo of a bird's nest company with abstract bird wings and teal color palette" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAB8QDnSGyROfSVUaI5vXszOWT_OlKqsx41QffWX1c75sv4VfD3-oFqRrA6z7APkD5VxG6SLKQlU0C4b65zaFszfYNzg3od0Wd13LpdpAbQREyHnIJXdsY9di9_Nl96Ngjh9JGtYIONo7IYCCPbBFKb1Ajn2L3mL3kmrHlGtM9rMD0v-sOFtKH45VFoek5dLQOg8ZlubavWEZ6dmDQrNb3qAWY-MMb31nWrM_eSNYmupe51IUHEl_4rsHEx4Vg57QIc4ZN0g0t6jA"/>
<span class="text-xl font-bold text-teal-700">Sistem Inventaris Walet</span>
</div>
<div class="flex items-center gap-6">
<div class="relative hidden lg:block">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400">search</span>
<input class="pl-10 pr-4 py-2 bg-slate-50 border border-slate-200 rounded text-sm focus:ring-2 focus:ring-primary focus:border-transparent outline-none w-64" placeholder="Cari lot atau laporan..." type="text"/>
</div>
<div class="flex items-center gap-2">
<button class="p-2 text-slate-500 hover:bg-slate-50 transition-colors rounded">
<span class="material-symbols-outlined">notifications</span>
</button>
<button class="p-2 text-slate-500 hover:bg-slate-50 transition-colors rounded">
<span class="material-symbols-outlined">help_outline</span>
</button>
<div class="h-8 w-[1px] bg-slate-200 mx-2"></div>
<button class="flex items-center gap-2 px-4 py-2 bg-primary text-white rounded font-medium hover:opacity-90 active:scale-95 transition-all">
<span class="material-symbols-outlined text-sm">qr_code_scanner</span>
<span>Scan Barcode</span>
</button>
<div class="ml-4 h-8 w-8 rounded-full bg-slate-200 flex items-center justify-center border border-slate-300 overflow-hidden">
<img alt="Profil Pengguna" data-alt="professional portrait of a warehouse manager in business casual attire" src="https://lh3.googleusercontent.com/aida-public/AB6AXuC5c_VDQtpbOxidxQ2Q0qdK-Vy10YGZvLhjouM5Qz3R59gCpRch5paNgwUUP6_wpiyfu8rz3Ucvx2IcVlqlMgGqqzzbaeOOaN-2jsbA224_4VZUxqReoL8bxp0HpjVRMs20dSAuXzTBa2U8Q8J2DKZnpsGzfud_8B4bsTICKf9uD6e85FpGGxLAcWMn319R-gBBPrBw18GWeezFJ3gM4EfeFLKs3fxqMXwPc6_zKlQA13ISrdlWvKu_D77-tOu3scXxJg42jN5ATw"/>
</div>
</div>
</div>
</header>
<!-- SideNavBar Shell -->
<nav class="fixed left-0 top-0 h-full w-64 flex flex-col py-6 bg-slate-50 border-r border-slate-200 z-30 pt-20">
<div class="px-6 mb-8">
<h2 class="text-lg font-black text-teal-800">Inventory Walet</h2>
<p class="text-[10px] uppercase tracking-widest text-slate-400 font-bold">Sistem Traceability</p>
</div>
<div class="flex-1 flex flex-col gap-1 px-2">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">dashboard</span>
<span>Dashboard</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 bg-teal-50 text-teal-700 rounded-r-lg border-l-4 border-teal-700 font-inter text-xs font-bold uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">inventory_2</span>
<span>Laporan Stok</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">database</span>
<span>Data Master</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">qr_code_scanner</span>
<span>Pelacakan</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-all duration-200 font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">settings</span>
<span>Pengaturan</span>
</a>
<div class="mt-6 px-4">
<button class="w-full py-3 bg-white border border-teal-700 text-teal-700 rounded font-bold text-[10px] uppercase tracking-widest hover:bg-teal-50 transition-colors">
+ Tambah Lot Baru
</button>
</div>
</div>
<div class="px-2 mt-auto border-t border-slate-200 pt-4">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 transition-all font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">help</span>
<span>Bantuan</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-red-600 hover:bg-red-50 transition-all font-inter text-xs font-medium uppercase tracking-wider" href="#">
<span class="material-symbols-outlined">logout</span>
<span>Log Keluar</span>
</a>
</div>
</nav>
<!-- Main Content Canvas -->
<main class="ml-64 pt-16 min-h-screen">
<div class="p-container-margin">
<!-- Header Section -->
<div class="flex flex-col md:flex-row md:items-center justify-between gap-4 mb-8">
<div>
<h1 class="font-h1 text-h1 text-on-surface">Laporan Stok Terkini</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant">Data inventaris real-time per <span class="font-bold">24 Mei 2024</span></p>
</div>
<div class="flex items-center gap-3">
<div class="flex items-center bg-white border border-outline-variant rounded px-3 py-1.5 shadow-sm">
<span class="material-symbols-outlined text-sm mr-2">calendar_today</span>
<span class="text-body-sm font-medium">Bulan Ini</span>
<span class="material-symbols-outlined text-sm ml-2">expand_more</span>
</div>
<button class="flex items-center gap-2 px-4 py-2 border border-primary text-primary rounded font-medium hover:bg-teal-50 transition-colors">
<span class="material-symbols-outlined text-sm">download</span>
<span class="text-body-base">Ekspor Laporan</span>
</button>
</div>
</div>
<!-- Bento Grid Stats -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-gutter mb-8">
<!-- Main Stat: Total Value -->
<div class="md:col-span-2 bg-white p-6 rounded-lg border border-outline-variant shadow-sm relative overflow-hidden group">
<div class="absolute top-0 right-0 p-4 opacity-10 group-hover:opacity-20 transition-opacity">
<span class="material-symbols-outlined text-6xl text-primary">payments</span>
</div>
<p class="font-label-caps text-label-caps text-on-surface-variant mb-2">TOTAL NILAI INVENTARIS</p>
<h2 class="font-display-lot text-display-lot text-primary mb-4">Rp 4.280.550.000</h2>
<div class="flex items-center gap-2">
<span class="flex items-center text-green-600 bg-green-50 px-2 py-0.5 rounded text-xs font-bold">
<span class="material-symbols-outlined text-xs mr-1">trending_up</span> +12.4%
</span>
<span class="text-body-sm text-on-surface-variant">vs bulan lalu</span>
</div>
</div>
<!-- Stock Movement Summary -->
<div class="bg-white p-6 rounded-lg border border-outline-variant shadow-sm">
<p class="font-label-caps text-label-caps text-on-surface-variant mb-2">TOTAL BERAT (KG)</p>
<div class="flex items-baseline gap-2">
<h2 class="font-h1 text-h1">1,425.80</h2>
<span class="text-body-sm font-medium text-on-surface-variant">kg</span>
</div>
<div class="mt-4 h-12 w-full bg-slate-50 flex items-end gap-1 px-1">
<div class="h-1/2 w-full bg-teal-200 rounded-t-sm"></div>
<div class="h-2/3 w-full bg-teal-200 rounded-t-sm"></div>
<div class="h-3/4 w-full bg-teal-300 rounded-t-sm"></div>
<div class="h-1/2 w-full bg-teal-400 rounded-t-sm"></div>
<div class="h-full w-full bg-primary rounded-t-sm"></div>
<div class="h-5/6 w-full bg-teal-500 rounded-t-sm"></div>
<div class="h-3/4 w-full bg-teal-400 rounded-t-sm"></div>
</div>
</div>
<!-- Average Shrinkage -->
<div class="bg-white p-6 rounded-lg border border-outline-variant shadow-sm">
<p class="font-label-caps text-label-caps text-on-surface-variant mb-2">TINGKAT SUSUT (AVG)</p>
<div class="flex items-baseline gap-2">
<h2 class="font-h1 text-h1 text-tertiary">3.12</h2>
<span class="text-body-sm font-medium text-on-surface-variant">%</span>
</div>
<div class="mt-4 flex flex-col gap-2">
<div class="w-full bg-slate-100 h-2 rounded-full overflow-hidden">
<div class="bg-tertiary h-full" style="width: 32%"></div>
</div>
<div class="flex justify-between text-[10px] font-bold text-on-surface-variant uppercase tracking-widest">
<span>Target &lt; 3%</span>
<span class="text-tertiary">Alert!</span>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-gutter mb-8">
<!-- Shrinkage Analysis per Grade -->
<div class="lg:col-span-1 bg-white rounded-lg border border-outline-variant shadow-sm overflow-hidden">
<div class="p-4 border-b border-outline-variant bg-surface-container-low flex justify-between items-center">
<h3 class="font-h2 text-h2">Analisis Susut per Grade</h3>
<span class="material-symbols-outlined text-on-surface-variant text-sm">info</span>
</div>
<div class="p-4">
<div class="space-y-4">
<!-- Grade item -->
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded flex items-center justify-center bg-teal-50 text-primary font-bold text-xs border border-teal-100">AAA</div>
<div>
<p class="text-body-base font-bold">Super Premium</p>
<p class="text-[10px] text-on-surface-variant uppercase">Moisture Content: 12%</p>
</div>
</div>
<div class="text-right">
<p class="text-body-base font-bold text-green-600">1.8%</p>
<p class="text-[10px] text-on-surface-variant">OPTIMAL</p>
</div>
</div>
<!-- Grade item -->
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded flex items-center justify-center bg-teal-50 text-primary font-bold text-xs border border-teal-100">AA</div>
<div>
<p class="text-body-base font-bold">Premium High</p>
<p class="text-[10px] text-on-surface-variant uppercase">Moisture Content: 14%</p>
</div>
</div>
<div class="text-right">
<p class="text-body-base font-bold text-secondary">2.5%</p>
<p class="text-[10px] text-on-surface-variant">NORMAL</p>
</div>
</div>
<!-- Grade item -->
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded flex items-center justify-center bg-teal-50 text-primary font-bold text-xs border border-teal-100">B</div>
<div>
<p class="text-body-base font-bold">Standard Grade</p>
<p class="text-[10px] text-on-surface-variant uppercase">Moisture Content: 18%</p>
</div>
</div>
<div class="text-right">
<p class="text-body-base font-bold text-error">4.2%</p>
<p class="text-[10px] text-error font-bold uppercase">HIGH RISK</p>
</div>
</div>
</div>
<button class="w-full mt-6 py-2 text-primary font-medium text-body-sm hover:underline">Lihat Detail Semua Grade →</button>
</div>
</div>
<!-- Stock Movement Trend visualization area -->
<div class="lg:col-span-2 bg-white rounded-lg border border-outline-variant shadow-sm overflow-hidden flex flex-col">
<div class="p-4 border-b border-outline-variant bg-surface-container-low flex justify-between items-center">
<h3 class="font-h2 text-h2">Tren Arus Barang (30 Hari)</h3>
<div class="flex items-center gap-4 text-[10px] font-bold tracking-widest text-on-surface-variant uppercase">
<div class="flex items-center gap-1.5">
<div class="w-2 h-2 rounded-full bg-primary"></div> Masuk
</div>
<div class="flex items-center gap-1.5">
<div class="w-2 h-2 rounded-full bg-tertiary"></div> Keluar
</div>
</div>
</div>
<div class="p-compact-padding flex-1 bg-slate-50/50">
<div class="w-full h-full min-h-[250px] relative flex flex-col">
<img alt="Stock trend graph visualization" class="w-full h-full object-cover opacity-20 absolute inset-0 mix-blend-multiply" data-alt="clean professional dashboard line chart showing inventory trends with teal and orange lines on a light grid background" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCWkZlVV-asCKrQsuVbc8ShE6tBBgmqLlpwLir3IJck1sBTco9RF36pvFjlLIrUsLNGtVveXpbiUIsUtXWLq-__2i1sYEYSAggF3-9lUW5ROFGeAJaeh1FZnpTcgfvCaVncxzUtBlyxKuYwO7a6BbRGOdYsr-C4I5DvfB9w9-mOShUQZE6syMxLBF3ffUMxKiJ0mPYy7_m2nOekcs0NE6PRfwPII07R6xN_QustDLw5bgxrrGessq5qmvBGx9mEYv_T495FNHHKow"/>
<div class="mt-auto p-4 flex justify-between items-end relative z-10">
<div class="space-y-1">
<p class="text-[10px] font-bold text-on-surface-variant uppercase">Minggu Ini</p>
<p class="text-body-base font-bold text-primary">+245 kg masuk</p>
<p class="text-body-base font-bold text-tertiary">-112 kg keluar</p>
</div>
<div class="text-right">
<p class="text-[28px] font-black text-on-surface leading-tight">+133 kg</p>
<p class="text-[10px] font-bold text-green-600 uppercase">Net Stock Growth</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Warehouse Inventory Table -->
<div class="bg-white rounded-lg border border-outline-variant shadow-sm overflow-hidden">
<div class="p-4 border-b border-outline-variant bg-surface-container-low flex flex-col sm:flex-row sm:items-center justify-between gap-4">
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-primary">warehouse</span>
<h3 class="font-h2 text-h2">Detail Stok per Gudang</h3>
</div>
<div class="flex items-center gap-2">
<div class="relative">
<span class="material-symbols-outlined absolute left-2 top-1/2 -translate-y-1/2 text-xs text-on-surface-variant">filter_list</span>
<select class="pl-8 pr-4 py-1.5 bg-white border border-outline-variant rounded text-xs focus:ring-1 focus:ring-primary outline-none appearance-none">
<option>Semua Wilayah</option>
<option>Jakarta (Head Office)</option>
<option>Surabaya (Plant 1)</option>
<option>Medan (Logistics)</option>
</select>
</div>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full border-collapse">
<thead>
<tr class="bg-slate-50 text-left border-b border-outline-variant">
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">NAMA GUDANG</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">LOKASI</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">TOTAL LOT</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">BERAT NETTO</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">GRADE DOMINAN</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">STATUS</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant text-right">AKSI</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<!-- Warehouse Row -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<div class="w-2 h-2 rounded-full bg-green-500"></div>
<span class="font-table-data text-table-data text-on-surface">Gudang Jakarta Utama</span>
</div>
</td>
<td class="px-4 py-3 text-body-sm text-on-surface-variant">Jakarta Timur, DKI Jakarta</td>
<td class="px-4 py-3 font-table-data text-table-data">412</td>
<td class="px-4 py-3 font-table-data text-table-data">682.45 kg</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-teal-50 text-primary border border-teal-100 rounded text-[10px] font-bold">AAA (45%)</span>
</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-green-50 text-green-700 rounded-full text-[10px] font-bold">AKTIF</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-primary hover:text-teal-900 font-bold text-xs">DETAIL</button>
</td>
</tr>
<!-- Warehouse Row -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<div class="w-2 h-2 rounded-full bg-green-500"></div>
<span class="font-table-data text-table-data text-on-surface">Plant Surabaya - Room A</span>
</div>
</td>
<td class="px-4 py-3 text-body-sm text-on-surface-variant">Sidoarjo, Jawa Timur</td>
<td class="px-4 py-3 font-table-data text-table-data">288</td>
<td class="px-4 py-3 font-table-data text-table-data">415.10 kg</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-teal-50 text-primary border border-teal-100 rounded text-[10px] font-bold">AA (32%)</span>
</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-green-50 text-green-700 rounded-full text-[10px] font-bold">AKTIF</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-primary hover:text-teal-900 font-bold text-xs">DETAIL</button>
</td>
</tr>
<!-- Warehouse Row -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<div class="w-2 h-2 rounded-full bg-orange-500"></div>
<span class="font-table-data text-table-data text-on-surface">Logistics Medan</span>
</div>
</td>
<td class="px-4 py-3 text-body-sm text-on-surface-variant">Belawan, Sumatera Utara</td>
<td class="px-4 py-3 font-table-data text-table-data">156</td>
<td class="px-4 py-3 font-table-data text-table-data">328.25 kg</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-teal-50 text-primary border border-teal-100 rounded text-[10px] font-bold">B (28%)</span>
</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-orange-50 text-orange-700 rounded-full text-[10px] font-bold">TRANSIT</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-primary hover:text-teal-900 font-bold text-xs">DETAIL</button>
</td>
</tr>
<!-- Warehouse Row -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<div class="w-2 h-2 rounded-full bg-blue-500"></div>
<span class="font-table-data text-table-data text-on-surface">QC Processing Lab</span>
</div>
</td>
<td class="px-4 py-3 text-body-sm text-on-surface-variant">Tangerang, Banten</td>
<td class="px-4 py-3 font-table-data text-table-data">45</td>
<td class="px-4 py-3 font-table-data text-table-data">0 kg</td>
<td class="px-4 py-3">
<span class="text-body-sm text-on-surface-variant italic">-</span>
</td>
<td class="px-4 py-3">
<span class="px-2 py-0.5 bg-blue-50 text-blue-700 rounded-full text-[10px] font-bold">STANDBY</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-primary hover:text-teal-900 font-bold text-xs">DETAIL</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p-4 border-t border-outline-variant bg-slate-50 flex items-center justify-between">
<p class="text-body-sm text-on-surface-variant">Menampilkan 4 dari 12 lokasi gudang</p>
<div class="flex items-center gap-1">
<button class="p-1 rounded hover:bg-slate-200 border border-transparent disabled:opacity-30" disabled="">
<span class="material-symbols-outlined">chevron_left</span>
</button>
<button class="px-2.5 py-1 text-xs font-bold bg-primary text-white rounded">1</button>
<button class="px-2.5 py-1 text-xs font-bold hover:bg-slate-200 rounded">2</button>
<button class="px-2.5 py-1 text-xs font-bold hover:bg-slate-200 rounded">3</button>
<button class="p-1 rounded hover:bg-slate-200 border border-transparent">
<span class="material-symbols-outlined">chevron_right</span>
</button>
</div>
</div>
</div>
</div>
</main>
<!-- Contextual FAB -->
<div class="fixed bottom-8 right-8 z-50">
<button class="group flex items-center gap-2 bg-primary text-white pl-4 pr-5 py-3 rounded-full shadow-lg hover:shadow-xl active:scale-95 transition-all">
<span class="material-symbols-outlined">add</span>
<span class="font-bold text-sm tracking-wide">INPUT STOCK OPNAME</span>
</button>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

View File

@ -0,0 +1,533 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary": "#4e6073",
"on-primary-fixed": "#001f23",
"primary-fixed": "#aaeef8",
"outline": "#6f797a",
"background": "#f8fafa",
"on-tertiary-fixed-variant": "#6b3a17",
"on-primary-fixed-variant": "#004f57",
"error-container": "#ffdad6",
"tertiary": "#60320f",
"on-secondary-container": "#526478",
"surface-container": "#eceeee",
"on-tertiary": "#ffffff",
"secondary-container": "#cfe2f9",
"on-error-container": "#93000a",
"inverse-primary": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"surface-tint": "#1d6871",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"inverse-surface": "#2e3131",
"on-secondary-fixed": "#091d2e",
"on-surface": "#191c1d",
"tertiary-fixed": "#ffdbc7",
"surface": "#f8fafa",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"outline-variant": "#bfc8ca",
"on-surface-variant": "#3f484a",
"surface-container-highest": "#e1e3e3",
"inverse-on-surface": "#eff1f1",
"secondary-fixed-dim": "#b5c8df",
"surface-container-high": "#e6e8e9",
"surface-container-low": "#f2f4f4",
"on-tertiary-container": "#ffbb91",
"on-tertiary-fixed": "#311300",
"error": "#ba1a1a",
"surface-bright": "#f8fafa",
"primary": "#00454c",
"primary-fixed-dim": "#8ed1db",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"on-background": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"on-primary": "#ffffff",
"surface-dim": "#d8dadb",
"on-secondary": "#ffffff",
"tertiary-container": "#7c4824"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"compact-padding": "8px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"gutter": "16px"
},
"fontFamily": {
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"h2": ["Inter"],
"label-caps": ["Inter"]
},
"fontSize": {
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
.custom-scrollbar::-webkit-scrollbar {
width: 4px;
height: 4px;
}
.custom-scrollbar::-webkit-scrollbar-track {
background: #f1f5f9;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 2px;
}
</style>
</head>
<body class="bg-background font-body-base text-on-background antialiased">
<!-- Side Navigation -->
<aside class="fixed left-0 top-0 h-full w-64 bg-slate-50 border-r border-slate-200 flex flex-col py-4 z-50">
<div class="px-6 mb-8">
<h2 class="text-teal-900 font-black text-lg">Walet Operations</h2>
<p class="text-[11px] text-slate-500 uppercase tracking-widest font-bold">V1.0.4-Operational</p>
</div>
<nav class="flex-1 space-y-1 px-3">
<a class="flex items-center gap-3 px-3 h-10 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="dashboard">dashboard</span>
Dashboard
</a>
<a class="flex items-center gap-3 px-3 h-10 bg-teal-50 text-teal-700 border-r-4 border-teal-600 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="inventory_2">inventory_2</span>
Inventory Stock
</a>
<a class="flex items-center gap-3 px-3 h-10 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="account_tree">account_tree</span>
Traceability Logs
</a>
<a class="flex items-center gap-3 px-3 h-10 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="database">database</span>
Master Data
</a>
<a class="flex items-center gap-3 px-3 h-10 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="qr_code_scanner">qr_code_scanner</span>
Barcode Scanner
</a>
</nav>
<div class="px-3 pt-4 border-t border-slate-200 space-y-1">
<a class="flex items-center gap-3 px-3 h-10 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="help_outline">help_outline</span>
Support
</a>
<a class="flex items-center gap-3 px-3 h-10 text-slate-600 hover:bg-slate-100 duration-150 ease-in-out font-medium text-[13px]" href="#">
<span class="material-symbols-outlined text-[20px]" data-icon="logout">logout</span>
Sign Out
</a>
</div>
</aside>
<!-- Main Content Area -->
<main class="ml-64 min-h-screen">
<!-- Top Bar -->
<header class="sticky top-0 z-40 bg-white border-b border-slate-200 shadow-sm flex items-center justify-between px-6 h-14 w-full">
<div class="flex items-center gap-4">
<span class="text-teal-800 font-bold tracking-tight text-lg">SarangTrace ERP</span>
<div class="h-6 w-px bg-slate-200 mx-2"></div>
<h1 class="font-h1 text-h1 text-on-surface">Laporan Stok Inventaris</h1>
</div>
<div class="flex items-center gap-4">
<button class="p-2 text-slate-500 hover:bg-slate-50 transition-colors rounded-lg">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
</button>
<button class="p-2 text-slate-500 hover:bg-slate-50 transition-colors rounded-lg">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
</button>
<div class="w-8 h-8 bg-primary-container rounded-full flex items-center justify-center text-white font-bold text-xs">
JD
</div>
</div>
</header>
<!-- Filters Section -->
<section class="p-6 bg-surface border-b border-outline-variant">
<div class="flex flex-wrap items-end gap-4">
<div class="flex-1 min-w-[200px]">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1">RENTANG TANGGAL</label>
<div class="relative">
<input class="w-full h-10 bg-white border border-outline-variant px-3 py-2 text-body-sm focus:ring-2 focus:ring-primary-container focus:border-primary-container outline-none" type="text" value="01 Jan 2024 - 31 Jan 2024"/>
<span class="material-symbols-outlined absolute right-3 top-2 text-slate-400 pointer-events-none" data-icon="calendar_today">calendar_today</span>
</div>
</div>
<div class="flex-1 min-w-[160px]">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1">GUDANG</label>
<select class="w-full h-10 bg-white border border-outline-variant px-3 py-2 text-body-sm focus:ring-2 focus:ring-primary-container outline-none">
<option>Semua Gudang</option>
<option>Gudang Utama (Pusat)</option>
<option>Gudang Transit A</option>
<option>Gudang Ekspor</option>
</select>
</div>
<div class="flex-1 min-w-[160px]">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1">KATEGORI ITEM</label>
<select class="w-full h-10 bg-white border border-outline-variant px-3 py-2 text-body-sm focus:ring-2 focus:ring-primary-container outline-none">
<option>Semua Kategori</option>
<option>Bahan Baku (Raw)</option>
<option>Semi-Processed</option>
<option>Siap Ekspor (Finished)</option>
</select>
</div>
<div class="flex-1 min-w-[120px]">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1">GRADE</label>
<select class="w-full h-10 bg-white border border-outline-variant px-3 py-2 text-body-sm focus:ring-2 focus:ring-primary-container outline-none">
<option>Semua Grade</option>
<option>Grade SSS</option>
<option>Grade AA</option>
<option>Grade A</option>
<option>Grade B</option>
</select>
</div>
<button class="h-10 px-6 bg-primary text-white font-bold text-body-sm flex items-center gap-2 hover:bg-opacity-90 transition-all">
<span class="material-symbols-outlined text-[18px]" data-icon="filter_list">filter_list</span>
TERAPKAN FILTER
</button>
</div>
</section>
<!-- KPI Bento Grid -->
<section class="p-6 grid grid-cols-1 md:grid-cols-4 gap-6">
<div class="bg-white border border-outline-variant p-4 flex flex-col justify-between shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">TOTAL STOK (KG)</p>
<p class="font-display-lot text-display-lot text-primary mt-1">1,245.82</p>
</div>
<div class="mt-4 flex items-center gap-2">
<span class="bg-green-100 text-green-800 text-[10px] font-bold px-1.5 py-0.5 rounded flex items-center">
<span class="material-symbols-outlined text-[12px]" data-icon="trending_up">trending_up</span>
4.2%
</span>
<span class="text-body-sm text-slate-400">vs bulan lalu</span>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 flex flex-col justify-between shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">TOTAL NILAI (IDR)</p>
<p class="font-display-lot text-display-lot text-on-surface mt-1">18.42M</p>
</div>
<div class="mt-4 flex items-center gap-2">
<span class="bg-green-100 text-green-800 text-[10px] font-bold px-1.5 py-0.5 rounded flex items-center">
<span class="material-symbols-outlined text-[12px]" data-icon="trending_up">trending_up</span>
1.8%
</span>
<span class="text-body-sm text-slate-400">vs bulan lalu</span>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 flex flex-col justify-between shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">SUSUT (SHRINKAGE)</p>
<p class="font-display-lot text-display-lot text-error mt-1">2.14%</p>
</div>
<div class="mt-4 flex items-center gap-2">
<span class="bg-red-100 text-red-800 text-[10px] font-bold px-1.5 py-0.5 rounded flex items-center">
<span class="material-symbols-outlined text-[12px]" data-icon="trending_up">trending_up</span>
0.4%
</span>
<span class="text-body-sm text-slate-400">Target &lt; 2%</span>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 flex flex-col justify-between shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div>
<p class="font-label-caps text-label-caps text-on-surface-variant">PERPUTARAN (TURNOVER)</p>
<p class="font-display-lot text-display-lot text-tertiary-container mt-1">4.5x</p>
</div>
<div class="mt-4 flex items-center gap-2">
<span class="bg-green-100 text-green-800 text-[10px] font-bold px-1.5 py-0.5 rounded flex items-center">
<span class="material-symbols-outlined text-[12px]" data-icon="check_circle">check_circle</span>
Sehat
</span>
<span class="text-body-sm text-slate-400">Rata-rata industri</span>
</div>
</div>
</section>
<!-- Main Visuals (Chart and Table) -->
<section class="px-6 pb-6 grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Chart: Stock Trends -->
<div class="lg:col-span-2 bg-white border border-outline-variant flex flex-col shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="p-4 border-b border-outline-variant flex items-center justify-between">
<h2 class="font-h2 text-h2">Tren Pergerakan Stok</h2>
<div class="flex gap-2">
<button class="px-2 py-1 bg-slate-100 text-slate-600 text-xs font-bold rounded">MINGGUAN</button>
<button class="px-2 py-1 bg-primary text-white text-xs font-bold rounded">BULANAN</button>
</div>
</div>
<div class="flex-1 p-6 flex flex-col">
<div class="flex-1 min-h-[300px] w-full relative">
<!-- Mock Chart Visualization -->
<div class="absolute inset-0 flex items-end justify-between px-2 pt-10">
<div class="w-8 bg-primary/10 rounded-t-sm relative group h-[40%]">
<div class="absolute -top-6 left-1/2 -translate-x-1/2 opacity-0 group-hover:opacity-100 bg-black text-white text-[10px] px-1 rounded transition-opacity">840kg</div>
</div>
<div class="w-8 bg-primary/10 rounded-t-sm relative group h-[45%]"></div>
<div class="w-8 bg-primary/10 rounded-t-sm relative group h-[55%]"></div>
<div class="w-8 bg-primary/10 rounded-t-sm relative group h-[50%]"></div>
<div class="w-8 bg-primary/20 rounded-t-sm relative group h-[65%]"></div>
<div class="w-8 bg-primary/20 rounded-t-sm relative group h-[75%]"></div>
<div class="w-8 bg-primary/40 rounded-t-sm relative group h-[85%]"></div>
<div class="w-8 bg-primary/40 rounded-t-sm relative group h-[80%]"></div>
<div class="w-8 bg-primary/60 rounded-t-sm relative group h-[90%]"></div>
<div class="w-8 bg-primary/60 rounded-t-sm relative group h-[95%]"></div>
<div class="w-8 bg-primary/80 rounded-t-sm relative group h-[88%]"></div>
<div class="w-8 bg-primary rounded-t-sm relative group h-[100%]">
<div class="absolute -top-6 left-1/2 -translate-x-1/2 bg-black text-white text-[10px] px-1 rounded">1,245kg</div>
</div>
</div>
<!-- Axis Labels -->
<div class="absolute bottom-[-24px] left-0 right-0 flex justify-between px-2 text-[10px] text-slate-400 font-bold">
<span>JAN</span><span>FEB</span><span>MAR</span><span>APR</span><span>MEI</span><span>JUN</span><span>JUL</span><span>AGU</span><span>SEP</span><span>OKT</span><span>NOV</span><span>DES</span>
</div>
</div>
</div>
<div class="p-4 border-t border-outline-variant bg-surface-container-low flex items-center gap-6">
<div class="flex items-center gap-2">
<div class="w-3 h-3 bg-primary rounded-full"></div>
<span class="text-body-sm font-medium">Stok Tersedia</span>
</div>
<div class="flex items-center gap-2">
<div class="w-3 h-3 bg-secondary-fixed-dim rounded-full"></div>
<span class="text-body-sm font-medium">Stok Terkunci (QC)</span>
</div>
</div>
</div>
<!-- Table: Category Breakdown -->
<div class="bg-white border border-outline-variant flex flex-col shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="p-4 border-b border-outline-variant flex items-center justify-between">
<h2 class="font-h2 text-h2">Rincian Per Kategori</h2>
<button class="p-1 hover:bg-slate-50 rounded">
<span class="material-symbols-outlined text-[20px] text-slate-400" data-icon="more_vert">more_vert</span>
</button>
</div>
<div class="overflow-auto custom-scrollbar flex-1">
<table class="w-full text-left">
<thead class="sticky top-0 bg-slate-50 border-b border-outline-variant z-10">
<tr>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">KATEGORI</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant text-right">STOK (KG)</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant text-right">NILAI (JT)</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-teal-500"></span>
<span class="font-table-data text-table-data">Grade SSS - Mangkok</span>
</div>
</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">242.50</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">4,850.0</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-teal-400"></span>
<span class="font-table-data text-table-data">Grade AA - Oval</span>
</div>
</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">315.20</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">5,358.4</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-teal-300"></span>
<span class="font-table-data text-table-data">Grade A - Segitiga</span>
</div>
</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">198.15</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">2,972.2</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-amber-400"></span>
<span class="font-table-data text-table-data">Bahan Baku (Raw)</span>
</div>
</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">420.00</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">4,200.0</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3">
<div class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-slate-300"></span>
<span class="font-table-data text-table-data">Lainnya (Patahan)</span>
</div>
</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">69.97</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">1,049.5</td>
</tr>
</tbody>
</table>
</div>
<div class="p-4 bg-surface-container-low border-t border-outline-variant">
<button class="w-full h-9 border border-teal-600 text-teal-700 font-bold text-body-sm hover:bg-teal-50 transition-all flex items-center justify-center gap-2">
<span class="material-symbols-outlined text-[18px]" data-icon="description">description</span>
LIHAT LAPORAN LENGKAP
</button>
</div>
</div>
</section>
<!-- Detailed Inventory Logs Table -->
<section class="px-6 pb-6">
<div class="bg-white border border-outline-variant shadow-[0px_2px_4px_rgba(0,0,0,0.05)] overflow-hidden">
<div class="p-4 border-b border-outline-variant flex items-center justify-between">
<h2 class="font-h2 text-h2">Detail Log Pergerakan Inventaris</h2>
<div class="flex items-center gap-2">
<div class="relative">
<input class="h-9 w-64 bg-surface-container-low border border-outline-variant px-3 py-1 text-body-sm focus:ring-1 focus:ring-primary-container outline-none" placeholder="Cari Lot ID..." type="text"/>
<span class="material-symbols-outlined absolute right-3 top-1.5 text-slate-400 text-[18px]" data-icon="search">search</span>
</div>
<button class="h-9 px-3 border border-outline-variant bg-white flex items-center gap-2 hover:bg-slate-50 transition-all text-body-sm font-medium">
<span class="material-symbols-outlined text-[18px]" data-icon="file_download">file_download</span>
Export Excel
</button>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left whitespace-nowrap">
<thead class="bg-slate-50 border-b border-outline-variant">
<tr>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">LOT ID</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">TANGGAL</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">TIPE TRANSAKSI</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">KATEGORI</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant text-right">BERAT (KG)</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant text-right">KADAR AIR</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant">STATUS</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-on-surface-variant text-right">AKSI</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3 font-table-data text-table-data text-teal-800">#LOT-2024-0581</td>
<td class="px-4 py-3 font-table-data text-table-data">15 Jan 2024, 09:12</td>
<td class="px-4 py-3 font-table-data text-table-data">Masuk (Gudang Utama)</td>
<td class="px-4 py-3 font-table-data text-table-data">Raw Material</td>
<td class="px-4 py-3 text-right font-table-data text-table-data text-on-surface">25.50</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">12.5%</td>
<td class="px-4 py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-bold bg-green-100 text-green-800">
TERSEDIA
</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-slate-400 hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="visibility">visibility</span>
</button>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3 font-table-data text-table-data text-teal-800">#LOT-2024-0579</td>
<td class="px-4 py-3 font-table-data text-table-data">14 Jan 2024, 14:45</td>
<td class="px-4 py-3 font-table-data text-table-data">Proses (Cleaning)</td>
<td class="px-4 py-3 font-table-data text-table-data">Semi-Processed</td>
<td class="px-4 py-3 text-right font-table-data text-table-data text-on-surface">12.20</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">8.2%</td>
<td class="px-4 py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-bold bg-amber-100 text-amber-800 uppercase">
DALAM QC
</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-slate-400 hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="visibility">visibility</span>
</button>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3 font-table-data text-table-data text-teal-800">#LOT-2024-0575</td>
<td class="px-4 py-3 font-table-data text-table-data">14 Jan 2024, 08:30</td>
<td class="px-4 py-3 font-table-data text-table-data">Keluar (Ekspor)</td>
<td class="px-4 py-3 font-table-data text-table-data">Finished Goods</td>
<td class="px-4 py-3 text-right font-table-data text-table-data text-on-surface">50.00</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">5.0%</td>
<td class="px-4 py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-bold bg-blue-100 text-blue-800 uppercase">
DIKIRIM
</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-slate-400 hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="visibility">visibility</span>
</button>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-3 font-table-data text-table-data text-teal-800">#LOT-2023-9942</td>
<td class="px-4 py-3 font-table-data text-table-data">12 Jan 2024, 16:20</td>
<td class="px-4 py-3 font-table-data text-table-data">Adjustment (Susut)</td>
<td class="px-4 py-3 font-table-data text-table-data">Raw Material</td>
<td class="px-4 py-3 text-right font-table-data text-table-data text-error">-0.45</td>
<td class="px-4 py-3 text-right font-table-data text-table-data">-</td>
<td class="px-4 py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-bold bg-red-100 text-red-800 uppercase">
SUSUT
</span>
</td>
<td class="px-4 py-3 text-right">
<button class="text-slate-400 hover:text-primary transition-colors">
<span class="material-symbols-outlined text-[18px]" data-icon="visibility">visibility</span>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p-4 border-t border-outline-variant bg-slate-50 flex items-center justify-between">
<span class="text-body-sm text-slate-500">Menampilkan 1-15 dari 1,248 transaksi</span>
<div class="flex items-center gap-1">
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant bg-white hover:bg-slate-50 disabled:opacity-50">
<span class="material-symbols-outlined text-[18px]" data-icon="chevron_left">chevron_left</span>
</button>
<button class="w-8 h-8 flex items-center justify-center bg-primary text-white font-bold text-xs">1</button>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant bg-white hover:bg-slate-50 text-xs">2</button>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant bg-white hover:bg-slate-50 text-xs">3</button>
<span class="px-1 text-slate-400">...</span>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant bg-white hover:bg-slate-50 text-xs">84</button>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant bg-white hover:bg-slate-50">
<span class="material-symbols-outlined text-[18px]" data-icon="chevron_right">chevron_right</span>
</button>
</div>
</div>
</div>
</section>
</main>
<!-- Floating Action Button (FAB) - For New Movement Log -->
<button class="fixed bottom-8 right-8 w-14 h-14 bg-primary text-white rounded-full shadow-lg flex items-center justify-center hover:scale-105 transition-all z-50">
<span class="material-symbols-outlined" data-icon="add">add</span>
</button>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

View File

@ -0,0 +1,177 @@
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"surface-variant": "#e1e3e3",
"tertiary-container": "#7c4824",
"surface-container-high": "#e6e8e9",
"on-tertiary-fixed-variant": "#6b3a17",
"primary": "#00454c",
"secondary-container": "#cfe2f9",
"error": "#ba1a1a",
"outline": "#6f797a",
"secondary-fixed": "#d1e4fb",
"tertiary": "#60320f",
"inverse-on-surface": "#eff1f1",
"surface-bright": "#f8fafa",
"on-secondary": "#ffffff",
"on-primary-fixed": "#001f23",
"on-primary-container": "#92d5df",
"on-surface-variant": "#3f484a",
"on-surface": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"surface-container-highest": "#e1e3e3",
"primary-fixed": "#aaeef8",
"surface-dim": "#d8dadb",
"on-primary-fixed-variant": "#004f57",
"on-tertiary-fixed": "#311300",
"surface-container": "#eceeee",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-error-container": "#93000a",
"secondary": "#4e6073",
"on-secondary-fixed": "#091d2e",
"error-container": "#ffdad6",
"on-secondary-fixed-variant": "#36485b",
"outline-variant": "#bfc8ca",
"on-background": "#191c1d",
"inverse-surface": "#2e3131",
"on-error": "#ffffff",
"on-tertiary-container": "#ffbb91",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"background": "#f8fafa",
"tertiary-fixed": "#ffdbc7",
"surface-container-lowest": "#ffffff",
"on-tertiary": "#ffffff",
"on-primary": "#ffffff",
"surface-tint": "#1d6871",
"surface-container-low": "#f2f4f4",
"surface": "#f8fafa",
"on-secondary-container": "#526478"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"container-margin": "24px",
"row-height-sm": "32px",
"row-height-md": "48px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"body-base": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"],
"body-sm": ["Inter"],
"table-data": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}]
}
}
}
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
body {
font-family: 'Inter', sans-serif;
}
</style>
</head>
<body class="bg-background text-on-background min-h-screen flex items-center justify-center">
<main class="w-full max-w-6xl mx-auto flex flex-col md:flex-row items-center justify-between p-container-margin md:gap-16">
<div class="hidden md:flex flex-1 flex-col items-center justify-center space-y-8">
<div class="relative w-full max-w-md aspect-square bg-surface-container rounded-xl overflow-hidden shadow-sm border border-outline-variant">
<img alt="Logo Sarang Inventory Pro" class="w-full h-full object-cover opacity-90" data-alt="Close-up of premium edible bird nests in a clean warehouse setting with soft teal lighting and professional atmosphere" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBcipFNsMUT4XbRCkOtm3g4GLHTvyM7vfgH6Gm5Myj-4UZjkQl4vATiJYgMjCA_oYCtIgtsRU5BYZLM-Xg-guZY8Bfze0zFTGqFAFyzFa8QTALIGK8I21csvMEzwummGnH7NnH4MTyLz_2IKacjh-uWve_mEpDPjNGqlqBi729kN5GCIC2mY9rPvSikxb93CLnon1DP4NaCWbftbG_3EqPIKnkLb8qoAaZlL2YlfsPXCAIQjcLoFmwvhu7JnQmngO9FQITX6zYkNw"/>
<div class="absolute inset-0 bg-gradient-to-t from-primary/60 to-transparent flex flex-col justify-end p-8">
<h2 class="font-display-lot text-display-lot text-white mb-2">Sarang Inventory Pro</h2>
<p class="font-body-sm text-body-sm text-white/80">Solusi Manajemen Inventaris Sarang Burung Walet Profesional.</p>
</div>
</div>
<div class="text-center">
<div class="flex items-center justify-center gap-2 text-primary font-h2 text-h2 mb-2">
<span class="material-symbols-outlined" data-icon="verified" style="font-variation-settings: 'FILL' 1;">verified</span>
Terpercaya di Seluruh Indonesia
</div>
<p class="font-body-sm text-body-sm text-on-surface-variant max-w-xs">Akurasi data untuk kualitas ekspor yang terjamin dan traceability lot yang presisi.</p>
</div>
</div>
<div class="w-full max-w-md bg-surface-container-lowest p-8 md:p-12 border border-outline-variant rounded-lg shadow-sm">
<div class="md:hidden flex justify-center mb-8">
<img alt="Sarang Logo" class="h-16 w-16 object-contain" data-alt="Minimalist teal logo icon representing an edible birds nest with clean lines and professional design" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBUI1ZaqHRlTVChiRGNFMWvaFgxdk4cAjnlO_yoz99FFmzm84x9Ms10AYAc2JtFaeIgLEeccyr0IhzYyMyzVUHLYBrNBWOfg29tsj6yfIrs8wXm-Bh-KEJbNPz7FaEPbuYEPtJ4evPaXJuR9_wZI4DjrXERU0LgbSDZxMyl59dbYThBvDqLXOwWVQrbcYBnGd7v0f58cxjNnpWZIMZaAV_H0hxngvAPGNGtZJ54ne_nr8PS21B9F-P_9Pbx5RiHmsTlHTy3y0ttNw"/>
</div>
<header class="mb-10 text-left">
<h1 class="font-h1 text-h1 text-on-surface mb-2">Selamat Datang Kembali</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant">Masuk ke Operational Hub SarangWMS untuk mengelola lot inventaris Anda.</p>
</header>
<form class="space-y-6" onsubmit="return false">
<div class="space-y-1.5">
<label class="font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider block" for="identity">Email atau Username</label>
<div class="relative">
<span class="absolute left-3 top-1/2 -translate-y-1/2 material-symbols-outlined text-outline text-[20px]" data-icon="person">person</span>
<input class="w-full pl-10 pr-4 py-2.5 bg-surface border border-outline-variant rounded-lg focus:ring-2 focus:ring-primary focus:border-primary font-body-base text-body-base placeholder:text-outline/50 transition-all outline-none" id="identity" name="identity" placeholder="nama@perusahaan.com" type="text"/>
</div>
</div>
<div class="space-y-1.5">
<div class="flex justify-between items-end">
<label class="font-label-caps text-label-caps text-on-surface-variant uppercase tracking-wider block" for="password">Kata Sandi</label>
<a class="font-label-caps text-label-caps text-primary hover:underline" href="#">Lupa Password?</a>
</div>
<div class="relative">
<span class="absolute left-3 top-1/2 -translate-y-1/2 material-symbols-outlined text-outline text-[20px]" data-icon="lock">lock</span>
<input class="w-full pl-10 pr-12 py-2.5 bg-surface border border-outline-variant rounded-lg focus:ring-2 focus:ring-primary focus:border-primary font-body-base text-body-base placeholder:text-outline/50 transition-all outline-none" id="password" name="password" placeholder="••••••••" type="password"/>
<button class="absolute right-3 top-1/2 -translate-y-1/2 text-outline hover:text-primary transition-colors" type="button">
<span class="material-symbols-outlined text-[20px]" data-icon="visibility">visibility</span>
</button>
</div>
</div>
<div class="flex items-center space-x-3 py-1">
<input class="w-4 h-4 rounded border-outline-variant text-primary focus:ring-primary" id="remember" type="checkbox"/>
<label class="font-body-sm text-body-sm text-on-surface-variant" for="remember">Ingat perangkat ini</label>
</div>
<button class="w-full bg-primary text-on-primary font-h2 text-h2 py-3 rounded-lg hover:bg-primary-container hover:text-on-primary-container transition-all flex items-center justify-center gap-2 group" type="submit">
Masuk Sekarang
<span class="material-symbols-outlined group-hover:translate-x-1 transition-transform" data-icon="arrow_forward">arrow_forward</span>
</button>
</form>
<footer class="mt-12 pt-8 border-t border-outline-variant/30 text-center space-y-4">
<p class="font-body-sm text-body-sm text-on-surface-variant">Belum memiliki akun operasional? <a class="text-primary font-h2 hover:underline" href="#">Hubungi Admin</a></p>
<div class="flex flex-wrap justify-center gap-x-6 gap-y-2 opacity-60">
<a class="font-label-caps text-label-caps hover:text-primary transition-colors" href="#">Bantuan</a>
<a class="font-label-caps text-label-caps hover:text-primary transition-colors" href="#">Kebijakan Privasi</a>
<a class="font-label-caps text-label-caps hover:text-primary transition-colors" href="#">Syarat &amp; Ketentuan</a>
</div>
</footer>
</div>
</main>
<div class="fixed bottom-0 left-0 w-full p-4 flex justify-between items-center text-on-surface-variant/40 font-label-caps text-label-caps pointer-events-none">
<div>v2.4.0-PRO</div>
<div>© 2024 SarangWMS Global</div>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

View File

@ -0,0 +1,158 @@
---
name: Lot-Based Inventory System
colors:
surface: '#f8fafa'
surface-dim: '#d8dadb'
surface-bright: '#f8fafa'
surface-container-lowest: '#ffffff'
surface-container-low: '#f2f4f4'
surface-container: '#eceeee'
surface-container-high: '#e6e8e9'
surface-container-highest: '#e1e3e3'
on-surface: '#191c1d'
on-surface-variant: '#3f484a'
inverse-surface: '#2e3131'
inverse-on-surface: '#eff1f1'
outline: '#6f797a'
outline-variant: '#bfc8ca'
surface-tint: '#1d6871'
primary: '#00454c'
on-primary: '#ffffff'
primary-container: '#0d5e67'
on-primary-container: '#92d5df'
inverse-primary: '#8ed1db'
secondary: '#4e6073'
on-secondary: '#ffffff'
secondary-container: '#cfe2f9'
on-secondary-container: '#526478'
tertiary: '#60320f'
on-tertiary: '#ffffff'
tertiary-container: '#7c4824'
on-tertiary-container: '#ffbb91'
error: '#ba1a1a'
on-error: '#ffffff'
error-container: '#ffdad6'
on-error-container: '#93000a'
primary-fixed: '#aaeef8'
primary-fixed-dim: '#8ed1db'
on-primary-fixed: '#001f23'
on-primary-fixed-variant: '#004f57'
secondary-fixed: '#d1e4fb'
secondary-fixed-dim: '#b5c8df'
on-secondary-fixed: '#091d2e'
on-secondary-fixed-variant: '#36485b'
tertiary-fixed: '#ffdbc7'
tertiary-fixed-dim: '#feb78a'
on-tertiary-fixed: '#311300'
on-tertiary-fixed-variant: '#6b3a17'
background: '#f8fafa'
on-background: '#191c1d'
surface-variant: '#e1e3e3'
typography:
display-lot:
fontFamily: Inter
fontSize: 24px
fontWeight: '700'
lineHeight: 32px
letterSpacing: -0.02em
h1:
fontFamily: Inter
fontSize: 20px
fontWeight: '600'
lineHeight: 28px
h2:
fontFamily: Inter
fontSize: 16px
fontWeight: '600'
lineHeight: 24px
body-base:
fontFamily: Inter
fontSize: 14px
fontWeight: '400'
lineHeight: 20px
body-sm:
fontFamily: Inter
fontSize: 13px
fontWeight: '400'
lineHeight: 18px
table-data:
fontFamily: Inter
fontSize: 13px
fontWeight: '500'
lineHeight: 16px
label-caps:
fontFamily: Inter
fontSize: 11px
fontWeight: '700'
lineHeight: 16px
letterSpacing: 0.05em
rounded:
sm: 0.125rem
DEFAULT: 0.25rem
md: 0.375rem
lg: 0.5rem
xl: 0.75rem
full: 9999px
spacing:
container-margin: 24px
gutter: 16px
compact-padding: 8px
row-height-sm: 32px
row-height-md: 48px
---
## Brand & Style
The design system is engineered for high-stakes operational environments where precision and speed are paramount. The visual language communicates reliability and institutional trust, specifically tailored for the birds nest (Sarang Burung Walet) export and processing industry.
The aesthetic follows a **Corporate Modern** approach. It avoids unnecessary decoration, focusing instead on structural clarity and high information density. The interface feels like a high-performance tool—utilitarian, crisp, and robust. By utilizing a "Scan-First" philosophy, the design ensures that lot codes, weights, and processing stages are immediately identifiable within complex data environments.
## Colors
The palette is anchored by a sophisticated **Deep Teal**, chosen for its balance between professional authority and the natural, organic origins of the product.
- **Primary Deep Teal:** Used for primary actions, active navigation states, and key branding elements.
- **Surface & Backgrounds:** A tiered system of whites and very light grays (Slate 50/White) creates a clean workspace that minimizes eye strain during long operational shifts.
- **Functional Status Colors:** High-saturation greens, oranges, and reds are reserved strictly for operational status (e.g., 'In Quality Control', 'Pending Export', 'Contaminated').
- **Neutral Gray:** Specifically designated for 'Closed' or 'Archived' lots to visually de-emphasize completed data.
## Typography
This design system utilizes **Inter** for its exceptional legibility in data-heavy contexts. The typographic scale is condensed to prioritize content density without sacrificing readability.
- **Data Optimization:** The `table-data` style uses a Medium weight (500) to ensure that alphanumeric lot codes are legible even at smaller sizes.
- **Emphasis:** A specialized `display-lot` style is used for header-level lot identification, ensuring the primary object of focus is never missed.
- **Labels:** Uppercase labels with slight letter spacing are used for table headers and form field captions to create a clear hierarchy between the UI structure and the user's data.
## Layout & Spacing
The layout employs a **Fluid Grid** system with fixed sidebars for navigation. To accommodate high information density, the spacing scale is built on a 4px baseline grid.
- **Information Density:** Tables and forms utilize `compact-padding` to maximize the number of visible rows on a single screen, reducing the need for excessive scrolling.
- **Grid Structure:** A 12-column system is used for dashboard layouts, while inventory logs utilize a full-width fluid layout to maximize the horizontal space for multi-column data (e.g., Lot ID, Harvest Date, Grade, Weight, Moisture Content, Status).
- **Margins:** Generous `container-margin` ensures the interface feels professional and organized, preventing the dense data from feeling cluttered.
## Elevation & Depth
Hierarchy is established through **Tonal Layers** and **Low-Contrast Outlines** rather than aggressive shadows.
- **Surface Levels:** The background uses `bg_primary`, while active work surfaces like cards and table containers use `bg_secondary`.
- **Borders:** Every container is defined by a 1px solid border in `border_subtle`. This provides a clear "box" for data without adding visual weight.
- **Shadows:** A single, consistent "Soft Drop" shadow (0px 2px 4px rgba(0,0,0,0.05)) is used exclusively for floating elements like dropdown menus and modals to lift them off the work surface.
## Shapes
The shape language is **Soft (0.25rem)**, reflecting a precise and geometric personality.
- **Components:** Buttons, input fields, and checkboxes all use the base 4px (0.25rem) radius.
- **Badges:** Status badges use a slightly higher `rounded-lg` (0.5rem) to differentiate them as interactive or informational "pills" within the rigid rectangular grid of the data tables.
- **Selection States:** Focus states and active row selections should use sharp, clear colored borders (Primary) to eliminate any ambiguity regarding user focus.
## Components
- **Lot Status Badges:** Compact pills with light background tints and dark text of the corresponding status color (e.g., Light Green background with Dark Green text).
- **Data Tables:** High-density rows with subtle hover states (#F1F5F9). Headers must remain sticky during vertical scrolls.
- **Input Fields:** Inset borders with a 2px Teal focus ring. For numerical data like "Weight (kg)", include right-aligned unit labels within the field.
- **Primary Buttons:** Solid Teal backgrounds with white text. Secondary buttons use a Teal outline with a transparent background.
- **Inventory Cards:** Used for summary stats (e.g., "Total Stock", "Pending QC"). These feature a large numerical display and a small trend indicator.
- **Progress Steppers:** Horizontal indicators showing the lifecycle of a lot—from "Raw Material" to "Processed" to "Export Ready."

View File

@ -0,0 +1,439 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Detail Lot - SwiftLot Walet</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error-container": "#93000a",
"surface-bright": "#f8fafa",
"tertiary": "#60320f",
"inverse-primary": "#8ed1db",
"error-container": "#ffdad6",
"error": "#ba1a1a",
"surface-container-low": "#f2f4f4",
"secondary-container": "#cfe2f9",
"primary": "#00454c",
"outline-variant": "#bfc8ca",
"on-secondary-fixed-variant": "#36485b",
"on-surface-variant": "#3f484a",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-variant": "#e1e3e3",
"surface-dim": "#d8dadb",
"outline": "#6f797a",
"on-secondary-container": "#526478",
"on-secondary-fixed": "#091d2e",
"tertiary-container": "#7c4824",
"inverse-surface": "#2e3131",
"background": "#f8fafa",
"on-tertiary": "#ffffff",
"on-surface": "#191c1d",
"secondary": "#4e6073",
"primary-container": "#0d5e67",
"on-primary-fixed-variant": "#004f57",
"surface-container": "#eceeee",
"on-primary-container": "#92d5df",
"primary-fixed-dim": "#8ed1db",
"tertiary-fixed-dim": "#feb78a",
"on-tertiary-fixed": "#311300",
"secondary-fixed": "#d1e4fb",
"inverse-on-surface": "#eff1f1",
"on-primary-fixed": "#001f23",
"on-secondary": "#ffffff",
"surface-tint": "#1d6871",
"on-tertiary-container": "#ffbb91",
"primary-fixed": "#aaeef8",
"secondary-fixed-dim": "#b5c8df",
"on-primary": "#ffffff",
"surface": "#f8fafa",
"surface-container-highest": "#e1e3e3",
"on-error": "#ffffff",
"on-tertiary-fixed-variant": "#6b3a17",
"tertiary-fixed": "#ffdbc7",
"on-background": "#191c1d"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-sm": "32px"
},
"fontFamily": {
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
body {
background-color: #f8fafa;
}
.timeline-line::before {
content: '';
position: absolute;
left: 11px;
top: 24px;
bottom: 0;
width: 2px;
background-color: #e6e8e9;
}
.timeline-item:last-child .timeline-line::before {
display: none;
}
</style>
</head>
<body class="font-body-base text-on-surface">
<!-- TopNavBar -->
<header class="fixed top-0 z-40 h-14 w-full bg-white dark:bg-slate-900 flex justify-between items-center px-6 border-b border-slate-200 dark:border-slate-800 shadow-sm font-inter text-sm antialiased">
<div class="flex items-center gap-8">
<span class="text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight">SwiftLot Walet</span>
<div class="hidden md:flex items-center gap-6">
<span class="text-[#0D5E67] font-semibold cursor-pointer active:opacity-80">Inventaris</span>
<span class="text-slate-600 dark:text-slate-400 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors px-2 py-1 rounded">Pengadaan</span>
<span class="text-slate-600 dark:text-slate-400 cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors px-2 py-1 rounded">Kontrol Kualitas</span>
</div>
</div>
<div class="flex items-center gap-4">
<div class="flex items-center gap-2 px-3 py-1.5 bg-slate-100 rounded-lg">
<span class="material-symbols-outlined text-slate-500 text-lg">search</span>
<input class="bg-transparent border-none focus:ring-0 text-xs w-48" placeholder="Cari Kode Lot..." type="text"/>
</div>
<span class="material-symbols-outlined text-[#0D5E67] cursor-pointer">notifications</span>
<span class="material-symbols-outlined text-[#0D5E67] cursor-pointer">help_outline</span>
<div class="h-8 w-8 rounded-full bg-primary-container flex items-center justify-center text-on-primary-container font-bold text-xs">
JD
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 dark:border-slate-800 bg-slate-50 dark:bg-slate-950 flex flex-col py-4 z-30 pt-16">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="h-10 w-10 bg-teal-900 rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white" data-icon="factory">factory</span>
</div>
<div>
<h2 class="text-teal-900 dark:text-teal-100 font-black text-sm">Ops Sarang</h2>
<p class="text-[11px] text-slate-500 uppercase tracking-widest font-bold">Pabrik A</p>
</div>
</div>
<nav class="flex-1 px-4 space-y-1">
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded cursor-pointer group">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
<span class="font-medium text-[13px]">Dasbor</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded cursor-pointer group">
<span class="material-symbols-outlined" data-icon="shopping_cart">shopping_cart</span>
<span class="font-medium text-[13px]">Pembelian</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded cursor-pointer group">
<span class="material-symbols-outlined" data-icon="receipt_long">receipt_long</span>
<span class="font-medium text-[13px]">Penerimaan</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 bg-white dark:bg-slate-900 text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm rounded cursor-pointer group">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
<span class="font-medium text-[13px]">Inventaris</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded cursor-pointer group">
<span class="material-symbols-outlined" data-icon="monitoring">monitoring</span>
<span class="font-medium text-[13px]">Analitik</span>
</div>
</nav>
<div class="px-4 mt-auto space-y-1">
<button class="w-full bg-[#0D5E67] text-white py-2.5 rounded flex items-center justify-center gap-2 mb-4 hover:opacity-90 active:scale-[0.98] transition-transform">
<span class="material-symbols-outlined text-sm" data-icon="add_circle">add_circle</span>
<span class="text-[13px] font-bold">Scan Lot Baru</span>
</button>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 rounded cursor-pointer transition-all">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
<span class="font-medium text-[13px]">Pengaturan</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 rounded cursor-pointer transition-all">
<span class="material-symbols-outlined" data-icon="contact_support">contact_support</span>
<span class="font-medium text-[13px]">Bantuan</span>
</div>
</div>
</aside>
<!-- Main Content Canvas -->
<main class="ml-64 pt-14 min-h-screen bg-background">
<div class="p-container-margin">
<!-- Summary Header -->
<div class="bg-surface-container-lowest border border-outline-variant p-6 rounded-lg mb-gutter shadow-sm">
<div class="flex flex-col md:flex-row justify-between items-start md:items-center gap-4">
<div class="flex items-center gap-4">
<div class="bg-primary-container text-on-primary-container p-3 rounded-lg">
<span class="material-symbols-outlined text-3xl" data-icon="qr_code_2">qr_code_2</span>
</div>
<div>
<div class="flex items-center gap-3">
<h1 class="font-display-lot text-display-lot text-primary">LOT-WAL-2023-0892</h1>
<span class="bg-[#D1E4FB] text-[#091D2E] text-[11px] font-bold px-2 py-0.5 rounded-full uppercase tracking-wider">Aktif</span>
</div>
<p class="text-secondary font-body-sm mt-1">Dibuat pada 14 Okt 2023 oleh Tim Operasional A</p>
</div>
</div>
<div class="grid grid-cols-3 gap-8 pr-4">
<div class="text-center">
<p class="font-label-caps text-outline uppercase">Kualitas</p>
<p class="font-h1 text-on-surface">Super A++</p>
</div>
<div class="text-center">
<p class="font-label-caps text-outline uppercase">Jenis</p>
<p class="font-h1 text-on-surface">Bentuk Mangkok</p>
</div>
<div class="text-center">
<p class="font-label-caps text-outline uppercase">Jumlah Saat Ini</p>
<p class="font-h1 text-primary">12.450 kg</p>
</div>
</div>
</div>
</div>
<!-- Bento Layout Content -->
<div class="grid grid-cols-12 gap-gutter items-start">
<!-- Left Column: Primary Data -->
<div class="col-span-12 lg:col-span-8 space-y-gutter">
<!-- Details Card & Qty Breakdown -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-gutter">
<!-- Details Card -->
<section class="bg-white border border-outline-variant rounded-lg p-5">
<div class="flex items-center gap-2 mb-4 border-b border-surface-container pb-2">
<span class="material-symbols-outlined text-primary" data-icon="info">info</span>
<h2 class="font-h2 text-primary">Detail Administrasi</h2>
</div>
<div class="space-y-4">
<div>
<p class="font-label-caps text-outline uppercase mb-1">Pemasok</p>
<div class="flex items-center gap-3">
<div class="w-8 h-8 rounded bg-surface-container flex items-center justify-center">
<span class="material-symbols-outlined text-on-surface-variant text-sm" data-icon="person">person</span>
</div>
<div>
<p class="font-table-data text-on-surface">Borneo Harvest Co.</p>
<p class="text-[11px] text-secondary">Akun BCA: **** 9012</p>
</div>
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<p class="font-label-caps text-outline uppercase mb-1">Ref. Penerimaan</p>
<a class="text-[#0D5E67] font-table-data flex items-center gap-1 hover:underline" href="#">
<span class="material-symbols-outlined text-xs" data-icon="link">link</span>
RC-88192
</a>
</div>
<div>
<p class="font-label-caps text-outline uppercase mb-1">Gudang</p>
<p class="font-table-data text-on-surface">Zona B-4 / Ruang Dingin</p>
</div>
</div>
</div>
</section>
<!-- Qty Breakdown -->
<section class="bg-white border border-outline-variant rounded-lg p-5">
<div class="flex items-center gap-2 mb-4 border-b border-surface-container pb-2">
<span class="material-symbols-outlined text-primary" data-icon="analytics">analytics</span>
<h2 class="font-h2 text-primary">Audit Jumlah</h2>
</div>
<div class="grid grid-cols-2 gap-y-4">
<div>
<p class="font-label-caps text-outline mb-1">Penerimaan Awal</p>
<p class="font-table-data text-on-surface">15.000 kg</p>
</div>
<div>
<p class="font-label-caps text-outline mb-1">Stok Tersedia</p>
<p class="font-table-data text-primary text-base">12.450 kg</p>
</div>
<div>
<p class="font-label-caps text-outline mb-1">Dipesan (Penjualan)</p>
<p class="font-table-data text-[#7C4824]">2.000 kg</p>
</div>
<div>
<p class="font-label-caps text-outline mb-1">Rusak/Susut</p>
<p class="font-table-data text-error">0.550 kg</p>
</div>
</div>
<div class="mt-4 pt-3 border-t border-dashed border-surface-container">
<div class="flex justify-between items-center text-[11px] text-secondary">
<span>Verifikasi berat terakhir:</span>
<span class="font-medium">Hari ini, 09:45 WIB</span>
</div>
</div>
</section>
</div>
<!-- Movement History Timeline -->
<section class="bg-white border border-outline-variant rounded-lg p-5">
<div class="flex items-center justify-between mb-6">
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-primary" data-icon="route">route</span>
<h2 class="font-h2 text-primary">Lini Masa Pergerakan &amp; Pemrosesan</h2>
</div>
<button class="text-xs font-bold text-[#0D5E67] uppercase tracking-wider hover:underline">Lihat Log Lengkap</button>
</div>
<div class="space-y-6 pl-2 relative">
<!-- Timeline items -->
<div class="timeline-item flex gap-4 relative timeline-line pb-6">
<div class="z-10 h-6 w-6 rounded-full bg-primary flex items-center justify-center border-4 border-white">
<span class="material-symbols-outlined text-[12px] text-white" data-icon="check" data-weight="fill">check</span>
</div>
<div class="flex-1 -mt-0.5">
<div class="flex justify-between">
<p class="font-table-data text-on-surface">Alokasi Penjualan (LOT-RES-99)</p>
<span class="text-[11px] text-secondary">21 Okt, 14:20</span>
</div>
<p class="text-body-sm text-secondary mt-1">2.000 kg dialokasikan untuk Pesanan #ORD-552. Dipesan di Zona B-4.</p>
</div>
</div>
<div class="timeline-item flex gap-4 relative timeline-line pb-6">
<div class="z-10 h-6 w-6 rounded-full bg-primary flex items-center justify-center border-4 border-white">
<span class="material-symbols-outlined text-[12px] text-white" data-icon="check" data-weight="fill">check</span>
</div>
<div class="flex-1 -mt-0.5">
<div class="flex justify-between">
<p class="font-table-data text-on-surface">Perpindahan Gudang</p>
<span class="text-[11px] text-secondary">18 Okt, 09:12</span>
</div>
<p class="text-body-sm text-secondary mt-1">Dipindahkan dari Ruang Pengeringan ke Ruang Dingin Zona B-4.</p>
</div>
</div>
<div class="timeline-item flex gap-4 relative timeline-line pb-6">
<div class="z-10 h-6 w-6 rounded-full bg-primary flex items-center justify-center border-4 border-white">
<span class="material-symbols-outlined text-[12px] text-white" data-icon="check" data-weight="fill">check</span>
</div>
<div class="flex-1 -mt-0.5">
<div class="flex justify-between">
<p class="font-table-data text-on-surface">Penyortiran &amp; Penentuan Kualitas Selesai</p>
<span class="text-[11px] text-secondary">15 Okt, 11:30</span>
</div>
<p class="text-body-sm text-secondary mt-1">Lot dipecah dari Induk LOT-RAW-442. Disertifikasi sebagai Kualitas Super A++.</p>
</div>
</div>
<div class="timeline-item flex gap-4 relative timeline-line">
<div class="z-10 h-6 w-6 rounded-full bg-secondary flex items-center justify-center border-4 border-white">
<span class="material-symbols-outlined text-[12px] text-white" data-icon="login">login</span>
</div>
<div class="flex-1 -mt-0.5">
<div class="flex justify-between">
<p class="font-table-data text-on-surface">Penerimaan Awal</p>
<span class="text-[11px] text-secondary">14 Okt, 08:00</span>
</div>
<p class="text-body-sm text-secondary mt-1">Bahan mentah diterima dari Borneo Harvest Co. Berat: 15.000 kg.</p>
</div>
</div>
</div>
</section>
</div>
<!-- Right Column: Sidebar Actions & Traceability -->
<div class="col-span-12 lg:col-span-4 space-y-gutter">
<!-- Actions Panel -->
<section class="bg-[#0D5E67] rounded-lg p-5 text-white shadow-md">
<h2 class="font-h2 text-white mb-4 flex items-center gap-2">
<span class="material-symbols-outlined text-white" data-icon="bolt">bolt</span>
Aksi Cepat
</h2>
<div class="space-y-3">
<button class="w-full bg-white/10 hover:bg-white/20 text-white font-bold py-3 rounded border border-white/20 flex items-center px-4 gap-3 transition-colors text-sm">
<span class="material-symbols-outlined" data-icon="print">print</span>
Cetak Label QR
</button>
<button class="w-full bg-white/10 hover:bg-white/20 text-white font-bold py-3 rounded border border-white/20 flex items-center px-4 gap-3 transition-colors text-sm">
<span class="material-symbols-outlined" data-icon="sync_alt">sync_alt</span>
Pindah Lokasi
</button>
<button class="w-full bg-white/10 hover:bg-white/20 text-white font-bold py-3 rounded border border-white/20 flex items-center px-4 gap-3 transition-colors text-sm">
<span class="material-symbols-outlined" data-icon="edit_square">edit_square</span>
Ubah Kualitas / Sortir
</button>
<button class="w-full bg-[#FFDAD6] hover:bg-[#FFB4AB] text-[#93000A] font-bold py-3 rounded flex items-center px-4 gap-3 transition-colors text-sm">
<span class="material-symbols-outlined" data-icon="pan_tool">pan_tool</span>
Tahan Lot
</button>
</div>
</section>
<!-- Traceability Tree -->
<section class="bg-white border border-outline-variant rounded-lg p-5">
<div class="flex items-center gap-2 mb-5">
<span class="material-symbols-outlined text-primary" data-icon="account_tree">account_tree</span>
<h2 class="font-h2 text-primary">Silsilah</h2>
</div>
<div class="space-y-6">
<!-- Origin -->
<div>
<p class="font-label-caps text-outline uppercase mb-2">Asal (Induk)</p>
<div class="p-3 border border-dashed border-primary/30 rounded bg-primary/5 flex justify-between items-center">
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-primary text-sm" data-icon="subdirectory_arrow_right">subdirectory_arrow_right</span>
<span class="font-table-data text-primary">LOT-RAW-442</span>
</div>
<span class="material-symbols-outlined text-outline cursor-pointer" data-icon="visibility">visibility</span>
</div>
</div>
<!-- Children -->
<div>
<p class="font-label-caps text-outline uppercase mb-2">Pecahan (Anak)</p>
<div class="space-y-2">
<div class="p-3 border border-surface-container rounded flex justify-between items-center group hover:bg-surface-container-low transition-colors">
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-secondary text-sm" data-icon="chevron_right">chevron_right</span>
<span class="font-table-data text-on-surface">LOT-SAL-8821</span>
</div>
<span class="text-[11px] text-secondary">Siap Ekspor</span>
</div>
<div class="p-3 border border-surface-container rounded flex justify-between items-center group hover:bg-surface-container-low transition-colors">
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-secondary text-sm" data-icon="chevron_right">chevron_right</span>
<span class="font-table-data text-on-surface">LOT-SAL-8822</span>
</div>
<span class="text-[11px] text-secondary">Menunggu QC</span>
</div>
<p class="text-[11px] text-center text-secondary py-1 italic">Akhir Silsilah</p>
</div>
</div>
</div>
</section>
<!-- QR Preview Decorative Card -->
<section class="bg-surface-container-high rounded-lg p-5 border border-outline-variant flex flex-col items-center">
<div class="bg-white p-4 rounded shadow-inner mb-4 w-40 h-40 flex items-center justify-center">
<img alt="Kode QR" class="w-full h-full opacity-80" data-alt="crisp black and white qr code centered on a clean white background with technical detail" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBSJS3qNrm63SEXbJ1lYDrJKwBXXyfWSC_UfWLYBEV40xSxNJy5tFptW0O3EXSFG24UB1TGmBWE2yIwztGUP119rFanYrw3iVBwelWbMLPjbbmALs5-mX1lnYM9_Skc18sM1K3uXVky2awroJhwz5xEC6BiwbhfGLqg5tzbup9-Bzhc9vKdTbJoy5Fz24OiwUtyLlRorFTPGvQSa09VkM4pIdiX_UiZcJn9m4UWuJdP4FAQUCOZ2DOAAXES-FbHFKtiYLpq5rfwuQ"/>
</div>
<p class="font-label-caps text-outline text-center">Label Dibuat Sistem</p>
<p class="font-table-data text-on-surface-variant text-center mt-1">ID: LW-23-0892</p>
</section>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

View File

@ -0,0 +1,441 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"surface-variant": "#e1e3e3",
"tertiary-container": "#7c4824",
"surface-container-high": "#e6e8e9",
"on-tertiary-fixed-variant": "#6b3a17",
"primary": "#00454c",
"secondary-container": "#cfe2f9",
"error": "#ba1a1a",
"outline": "#6f797a",
"secondary-fixed": "#d1e4fb",
"tertiary": "#60320f",
"inverse-on-surface": "#eff1f1",
"surface-bright": "#f8fafa",
"on-secondary": "#ffffff",
"on-primary-fixed": "#001f23",
"on-primary-container": "#92d5df",
"on-surface-variant": "#3f484a",
"on-surface": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"surface-container-highest": "#e1e3e3",
"primary-fixed": "#aaeef8",
"surface-dim": "#d8dadb",
"on-primary-fixed-variant": "#004f57",
"on-tertiary-fixed": "#311300",
"surface-container": "#eceeee",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-error-container": "#93000a",
"secondary": "#4e6073",
"on-secondary-fixed": "#091d2e",
"error-container": "#ffdad6",
"on-secondary-fixed-variant": "#36485b",
"outline-variant": "#bfc8ca",
"on-background": "#191c1d",
"inverse-surface": "#2e3131",
"on-error": "#ffffff",
"on-tertiary-container": "#ffbb91",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"background": "#f8fafa",
"tertiary-fixed": "#ffdbc7",
"surface-container-lowest": "#ffffff",
"on-tertiary": "#ffffff",
"on-primary": "#ffffff",
"surface-tint": "#1d6871",
"surface-container-low": "#f2f4f4",
"surface": "#f8fafa",
"on-secondary-container": "#526478"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"container-margin": "24px",
"row-height-sm": "32px",
"row-height-md": "48px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"body-base": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"],
"body-sm": ["Inter"],
"table-data": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
body {
background-color: #f8fafa;
}
</style>
</head>
<body class="font-body-base text-on-surface antialiased overflow-hidden flex h-screen">
<!-- SideNavBar (Authority: JSON & Style Guidance) -->
<aside class="fixed left-0 top-0 h-screen w-64 border-r border-slate-200 bg-slate-50 flex flex-col py-4 space-y-1 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<img alt="Warehouse Logo" class="w-8 h-8 rounded-lg" data-alt="professional minimalist logo for a bird's nest processing factory featuring clean lines and teal accents" src="https://lh3.googleusercontent.com/aida-public/AB6AXuADCM_hRlZSgRGssfTnenNlfEClLGWx_Yo-BLdLyVQF32Q7ftqZCYCyjFPDAmd6Q449SeFbwvY0NSI-3RAMg2wzw-1G_1n9Ji0aq5nWEv5BdYOUA2UdUWX-ZgCsCMCvEq4G66hs9OkymEy4DXc0eI0inak2qAR5tkzJ0tQT41PcA55caPszKr9Ay-OUOT0bNNaVmt-_lohu2hOPer-21sWC3oU0OCLlhTz1Hb-7OdSTNDgXbb8dBtICstF_XsYA9fejw0L-_8ZPFA"/>
<div>
<h1 class="text-teal-800 font-black tracking-tighter text-lg leading-none">SarangWMS</h1>
<p class="text-[10px] text-slate-500 font-medium tracking-widest uppercase mt-1">Operational Hub</p>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 transition-all duration-200 ease-in-out rounded-lg" href="#">
<span class="material-symbols-outlined mr-3 text-xl">dashboard</span>
<span class="font-medium text-sm">Dashboard</span>
</a>
<!-- Active State: Master Data -->
<a class="flex items-center px-3 py-2 bg-teal-50 text-teal-800 border-r-4 border-teal-600 transition-all duration-200 ease-in-out rounded-lg" href="#">
<span class="material-symbols-outlined mr-3 text-xl">database</span>
<span class="font-medium text-sm">Master Data</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 transition-all duration-200 ease-in-out rounded-lg" href="#">
<span class="material-symbols-outlined mr-3 text-xl">inventory_2</span>
<span class="font-medium text-sm">Inventory Logs</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 transition-all duration-200 ease-in-out rounded-lg" href="#">
<span class="material-symbols-outlined mr-3 text-xl">edit_note</span>
<span class="font-medium text-sm">Stock Adjust</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 transition-all duration-200 ease-in-out rounded-lg" href="#">
<span class="material-symbols-outlined mr-3 text-xl">swap_horiz</span>
<span class="font-medium text-sm">Transfers</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 transition-all duration-200 ease-in-out rounded-lg" href="#">
<span class="material-symbols-outlined mr-3 text-xl">verified</span>
<span class="font-medium text-sm">QC Reports</span>
</a>
</nav>
<div class="px-3 pt-4 border-t border-slate-200 space-y-1">
<button class="w-full flex items-center px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg">
<span class="material-symbols-outlined mr-3 text-xl">support_agent</span>
<span class="font-medium text-sm">Support</span>
</button>
<button class="w-full flex items-center px-3 py-2 text-error hover:bg-red-50 rounded-lg">
<span class="material-symbols-outlined mr-3 text-xl">logout</span>
<span class="font-medium text-sm">Logout</span>
</button>
</div>
</aside>
<!-- Main Content Area -->
<main class="flex-1 ml-64 flex flex-col h-screen overflow-hidden">
<!-- TopAppBar (Authority: JSON) -->
<header class="flex justify-between items-center h-14 px-6 w-full z-40 bg-white border-b border-slate-200 sticky top-0">
<div class="flex items-center gap-4">
<span class="text-teal-800 font-bold text-lg">Sarang Inventory Pro</span>
<div class="h-4 w-px bg-slate-300 mx-2"></div>
<h2 class="font-h1 text-h1 text-on-surface">Master Jenis &amp; Grade</h2>
</div>
<div class="flex items-center gap-6">
<div class="flex items-center gap-4 text-slate-500">
<span class="material-symbols-outlined cursor-pointer hover:text-teal-700 transition-colors">notifications</span>
<span class="material-symbols-outlined cursor-pointer hover:text-teal-700 transition-colors">settings</span>
<span class="material-symbols-outlined cursor-pointer hover:text-teal-700 transition-colors">help_outline</span>
</div>
<div class="flex items-center gap-3 pl-4 border-l border-slate-200">
<div class="text-right">
<p class="text-sm font-bold text-teal-900 leading-tight">Admin Gudang</p>
<p class="text-[10px] text-slate-500 uppercase tracking-tighter">Superuser</p>
</div>
<img alt="Manager Avatar" class="w-8 h-8 rounded-full ring-2 ring-teal-50" data-alt="close up profile photo of a professional warehouse manager in office attire" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCRFmLATnCBjyyO2ekXhznh65JBnErrXJsEs2x9HALMpbtPVFsDFFhbPTpZklV2mPY86iaOgKyDeGA9NT-etVWi_gtYsl9RVwLPYB3PdRwU5nLzEGmmSt-O8wg6LwVJXG3OvdFwKGQeDi8YBMlZcaF02enJPAMGmSSmbO0-0GuVy-bw0IMbKOF8lMF5jlYg7_WYv1SAqoIYihRXQvNK93l5JNM1-eYDOQAHk09fa2QwdoAJaPO4S0Hb86THN9MjNHM6dCa22_C5jg"/>
</div>
</div>
</header>
<!-- Canvas Area -->
<div class="flex-1 p-6 overflow-y-auto bg-surface space-y-6">
<!-- Action Bar -->
<div class="flex justify-between items-end">
<div>
<h3 class="font-h2 text-h2 text-primary">Standardisasi Produk</h3>
<p class="text-body-sm text-on-surface-variant">Konfigurasi standar kualitas dan harga untuk operasional gudang.</p>
</div>
<button class="bg-primary text-on-primary px-4 py-2 rounded shadow-sm hover:opacity-90 transition-all flex items-center gap-2">
<span class="material-symbols-outlined text-lg">add_circle</span>
<span class="font-medium text-sm">Tambah Jenis/Grade</span>
</button>
</div>
<!-- Bento Statistics Grid -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-4">
<div class="bg-white border border-outline-variant p-4 rounded-xl flex flex-col justify-between">
<span class="text-label-caps text-on-surface-variant uppercase">Total Jenis</span>
<div class="mt-2 flex items-baseline gap-2">
<span class="text-display-lot text-primary">12</span>
<span class="text-xs text-secondary-fixed-dim font-bold">+2 bulan ini</span>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 rounded-xl flex flex-col justify-between">
<span class="text-label-caps text-on-surface-variant uppercase">Grade Aktif</span>
<div class="mt-2 flex items-baseline gap-2">
<span class="text-display-lot text-primary">4</span>
<span class="text-xs text-on-surface-variant">AAA, AA, A, B</span>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 rounded-xl flex flex-col justify-between">
<span class="text-label-caps text-on-surface-variant uppercase">Harga Standard (Rata-rata)</span>
<div class="mt-2 flex items-baseline gap-2">
<span class="text-display-lot text-primary">14.2M</span>
<span class="text-xs text-on-surface-variant">IDR/Kg</span>
</div>
</div>
<div class="bg-white border border-outline-variant p-4 rounded-xl flex flex-col justify-between">
<span class="text-label-caps text-on-surface-variant uppercase">Terakhir Update</span>
<div class="mt-2 flex items-baseline gap-2 text-on-surface-variant">
<span class="material-symbols-outlined text-lg">history</span>
<span class="text-body-base">Hari ini, 09:12</span>
</div>
</div>
</div>
<!-- Main Table Section -->
<div class="bg-white border border-outline-variant rounded-xl overflow-hidden shadow-sm">
<div class="px-6 py-4 border-b border-outline-variant flex justify-between items-center bg-slate-50/50">
<div class="flex items-center gap-3 bg-white border border-outline-variant px-3 py-1.5 rounded-lg w-72">
<span class="material-symbols-outlined text-on-surface-variant">search</span>
<input class="border-none focus:ring-0 p-0 text-sm bg-transparent w-full placeholder:text-slate-400" placeholder="Cari jenis atau kualitas..." type="text"/>
</div>
<div class="flex items-center gap-2">
<button class="p-2 hover:bg-surface-container rounded-lg transition-colors border border-outline-variant bg-white">
<span class="material-symbols-outlined text-xl text-on-surface-variant">filter_list</span>
</button>
<button class="p-2 hover:bg-surface-container rounded-lg transition-colors border border-outline-variant bg-white">
<span class="material-symbols-outlined text-xl text-on-surface-variant">download</span>
</button>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left border-collapse">
<thead>
<tr class="bg-slate-50 border-b border-outline-variant">
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase">Nama Jenis</th>
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase text-center">Grade</th>
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase">Deskripsi Kualitas</th>
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase text-right">Harga Beli (IDR)</th>
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase text-right">Harga Jual (IDR)</th>
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase text-center">Status</th>
<th class="px-6 py-4 text-label-caps text-on-surface-variant uppercase"></th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<!-- Row 1 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-teal-100 flex items-center justify-center text-teal-800">
<span class="material-symbols-outlined">inventory_2</span>
</div>
<div>
<p class="font-table-data text-on-surface">Mangkok Putih</p>
<p class="text-[11px] text-on-surface-variant uppercase">ID: BRG-001</p>
</div>
</div>
</td>
<td class="px-6 py-4 text-center">
<span class="px-2.5 py-0.5 rounded-full bg-primary text-on-primary text-[11px] font-bold">AAA</span>
</td>
<td class="px-6 py-4">
<p class="text-body-sm text-on-surface max-w-xs truncate">Warna putih kristal, bentuk sempurna, kadar air &lt; 12%</p>
</td>
<td class="px-6 py-4 text-right font-table-data">14,500,000</td>
<td class="px-6 py-4 text-right font-table-data text-primary">18,200,000</td>
<td class="px-6 py-4 text-center">
<span class="inline-flex items-center rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20">Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-on-surface-variant hover:text-primary"><span class="material-symbols-outlined">more_vert</span></button>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-slate-100 flex items-center justify-center text-slate-800">
<span class="material-symbols-outlined">inventory_2</span>
</div>
<div>
<p class="font-table-data text-on-surface">Mangkok Putih</p>
<p class="text-[11px] text-on-surface-variant uppercase">ID: BRG-002</p>
</div>
</div>
</td>
<td class="px-6 py-4 text-center">
<span class="px-2.5 py-0.5 rounded-full bg-teal-600 text-on-primary text-[11px] font-bold">AA</span>
</td>
<td class="px-6 py-4">
<p class="text-body-sm text-on-surface max-w-xs truncate">Putih bersih, ada sedikit serabut, bentuk utuh</p>
</td>
<td class="px-6 py-4 text-right font-table-data">12,200,000</td>
<td class="px-6 py-4 text-right font-table-data text-primary">15,800,000</td>
<td class="px-6 py-4 text-center">
<span class="inline-flex items-center rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20">Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-on-surface-variant hover:text-primary"><span class="material-symbols-outlined">more_vert</span></button>
</td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-orange-50 flex items-center justify-center text-orange-800">
<span class="material-symbols-outlined text-orange-400">inventory_2</span>
</div>
<div>
<p class="font-table-data text-on-surface">Sudut/Patahan</p>
<p class="text-[11px] text-on-surface-variant uppercase">ID: BRG-045</p>
</div>
</div>
</td>
<td class="px-6 py-4 text-center">
<span class="px-2.5 py-0.5 rounded-full bg-tertiary text-on-tertiary text-[11px] font-bold">B</span>
</td>
<td class="px-6 py-4">
<p class="text-body-sm text-on-surface max-w-xs truncate">Patahan besar, warna putih krem, bersih</p>
</td>
<td class="px-6 py-4 text-right font-table-data">8,500,000</td>
<td class="px-6 py-4 text-right font-table-data text-primary">11,200,000</td>
<td class="px-6 py-4 text-center">
<span class="inline-flex items-center rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20">Aktif</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-on-surface-variant hover:text-primary"><span class="material-symbols-outlined">more_vert</span></button>
</td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-4">
<div class="flex items-center gap-3">
<div class="w-10 h-10 rounded bg-slate-100 flex items-center justify-center text-slate-800">
<span class="material-symbols-outlined">inventory_2</span>
</div>
<div>
<p class="font-table-data text-on-surface">Plontos Putih</p>
<p class="text-[11px] text-on-surface-variant uppercase">ID: BRG-009</p>
</div>
</div>
</td>
<td class="px-6 py-4 text-center">
<span class="px-2.5 py-0.5 rounded-full bg-teal-500 text-on-primary text-[11px] font-bold">A</span>
</td>
<td class="px-6 py-4">
<p class="text-body-sm text-on-surface max-w-xs truncate">Warna putih, bentuk segitiga/setengah mangkok</p>
</td>
<td class="px-6 py-4 text-right font-table-data">10,500,000</td>
<td class="px-6 py-4 text-right font-table-data text-primary">13,400,000</td>
<td class="px-6 py-4 text-center">
<span class="inline-flex items-center rounded-full bg-slate-100 px-2 py-1 text-xs font-medium text-slate-600 ring-1 ring-inset ring-slate-500/20">Draft</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-on-surface-variant hover:text-primary"><span class="material-symbols-outlined">more_vert</span></button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Pagination -->
<div class="px-6 py-3 border-t border-outline-variant flex items-center justify-between bg-white">
<span class="text-body-sm text-on-surface-variant">Menampilkan 1-4 dari 12 data</span>
<div class="flex gap-1">
<button class="p-1 border border-outline-variant rounded hover:bg-slate-50 disabled:opacity-50" disabled="">
<span class="material-symbols-outlined text-sm">chevron_left</span>
</button>
<button class="px-2.5 py-1 text-xs font-bold bg-primary text-on-primary rounded">1</button>
<button class="px-2.5 py-1 text-xs font-medium border border-outline-variant rounded hover:bg-slate-50">2</button>
<button class="px-2.5 py-1 text-xs font-medium border border-outline-variant rounded hover:bg-slate-50">3</button>
<button class="p-1 border border-outline-variant rounded hover:bg-slate-50">
<span class="material-symbols-outlined text-sm">chevron_right</span>
</button>
</div>
</div>
</div>
<!-- Footer Legend/Info Section -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="p-4 bg-secondary-container text-on-secondary-container rounded-xl">
<h4 class="font-h2 text-sm mb-2 flex items-center gap-2">
<span class="material-symbols-outlined text-lg">info</span>
Catatan Standardisasi
</h4>
<ul class="text-body-sm space-y-1.5 opacity-90">
<li class="flex items-start gap-2">
<span class="w-1 h-1 rounded-full bg-current mt-2 shrink-0"></span>
Harga standard direfresh setiap hari Senin pukul 08:00 WIB.
</li>
<li class="flex items-start gap-2">
<span class="w-1 h-1 rounded-full bg-current mt-2 shrink-0"></span>
Selisih harga jual-beli dipatok minimal 15% untuk operasional.
</li>
<li class="flex items-start gap-2">
<span class="w-1 h-1 rounded-full bg-current mt-2 shrink-0"></span>
QC wajib mengacu pada deskripsi kualitas di atas untuk grading Lot baru.
</li>
</ul>
</div>
<div class="p-4 border border-outline-variant bg-white rounded-xl">
<h4 class="font-h2 text-sm text-on-surface mb-3 flex items-center gap-2">
<span class="material-symbols-outlined text-lg">trending_up</span>
Analisis Margin Terakhir
</h4>
<div class="space-y-3">
<div>
<div class="flex justify-between text-[11px] font-bold mb-1 uppercase text-on-surface-variant">
<span>Mangkok Putih AAA</span>
<span>25.5% Margin</span>
</div>
<div class="w-full bg-slate-100 h-1.5 rounded-full overflow-hidden">
<div class="bg-primary h-full w-[75%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold mb-1 uppercase text-on-surface-variant">
<span>Sudut/Patahan B</span>
<span>31.7% Margin</span>
</div>
<div class="w-full bg-slate-100 h-1.5 rounded-full overflow-hidden">
<div class="bg-teal-500 h-full w-[88%]"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- FAB for Quick Actions (Mobile/Contextual) -->
<button class="fixed bottom-6 right-6 w-14 h-14 bg-primary text-on-primary rounded-full shadow-lg flex items-center justify-center hover:scale-105 transition-transform md:hidden">
<span class="material-symbols-outlined text-3xl">add</span>
</button>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

View File

@ -0,0 +1,393 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
</style>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-primary-container": "#92d5df",
"on-primary": "#ffffff",
"secondary-fixed": "#d1e4fb",
"on-tertiary": "#ffffff",
"surface-tint": "#1d6871",
"primary": "#00454c",
"tertiary-fixed-dim": "#feb78a",
"on-background": "#191c1d",
"tertiary": "#60320f",
"surface": "#f8fafa",
"on-secondary": "#ffffff",
"on-surface": "#191c1d",
"on-surface-variant": "#3f484a",
"error": "#ba1a1a",
"on-primary-fixed-variant": "#004f57",
"tertiary-fixed": "#ffdbc7",
"primary-fixed": "#aaeef8",
"on-tertiary-fixed-variant": "#6b3a17",
"on-secondary-fixed-variant": "#36485b",
"inverse-on-surface": "#eff1f1",
"error-container": "#ffdad6",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"outline": "#6f797a",
"surface-container-highest": "#e1e3e3",
"secondary-container": "#cfe2f9",
"on-secondary-container": "#526478",
"on-primary-fixed": "#001f23",
"tertiary-container": "#7c4824",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"on-secondary-fixed": "#091d2e",
"surface-bright": "#f8fafa",
"secondary": "#4e6073",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-dim": "#d8dadb",
"surface-container-low": "#f2f4f4",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-tertiary-fixed": "#311300",
"background": "#f8fafa",
"surface-container": "#eceeee",
"on-tertiary-container": "#ffbb91",
"inverse-surface": "#2e3131"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"h2": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"table-data": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
</head>
<body class="bg-surface font-body-base text-on-surface antialiased">
<!-- TopNavBar -->
<header class="fixed top-0 left-0 w-full z-40 flex justify-between items-center px-6 h-16 bg-white border-b border-slate-200 shadow-sm">
<div class="flex items-center gap-3">
<img alt="Sistem Inventaris Walet Logo" class="h-8 w-8 object-contain" data-alt="Minimalist teal-colored logo of a swiftlet bird in flight, vector style, professional corporate identity" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCWamUWCmb6jDBEfnKTi3DTRQmiQ2AD05-b1F1ql2KW1lw_Plh3v4IROiWLjSfBlzQnzVST04eptbZLLz6qR0poRRyIA4ij95JJFsbXYj00KuTQg5HiKrspMIsOpoIiQY--2FdKNeYg4wCsb2N8MP-DX8nt_5g2v5LPB2FT15afsZbj3pw5Rr8014jESizXmSp6F14K_m7UY53ma9p5U_FkIfGI8yJ6qYTBPthfATPWV7eamUQcH94S2CqlNNw-VzkGvpGwtkXZDg"/>
<span class="font-inter text-xl font-bold text-teal-700">Sistem Inventaris Walet</span>
</div>
<div class="flex items-center gap-4">
<div class="relative hidden md:block">
<input class="bg-slate-50 border-none rounded-lg px-4 py-2 text-sm w-64 focus:ring-2 focus:ring-primary" placeholder="Cari data lot..." type="text"/>
<span class="material-symbols-outlined absolute right-3 top-2 text-slate-400">search</span>
</div>
<button class="p-2 hover:bg-slate-50 transition-colors rounded-full">
<span class="material-symbols-outlined text-slate-500">notifications</span>
</button>
<button class="p-2 hover:bg-slate-50 transition-colors rounded-full">
<span class="material-symbols-outlined text-slate-500">help_outline</span>
</button>
<button class="ml-2 bg-primary text-on-primary px-4 py-2 rounded-lg text-sm font-semibold flex items-center gap-2 active:opacity-80 transition-all duration-150">
<span class="material-symbols-outlined text-sm">qr_code_scanner</span>
Scan Barcode
</button>
</div>
</header>
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 flex flex-col py-6 bg-slate-50 border-r border-slate-200 z-30 pt-20">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-10 h-10 rounded-lg bg-teal-100 flex items-center justify-center text-teal-700">
<span class="material-symbols-outlined">inventory_2</span>
</div>
<div>
<p class="font-inter text-lg font-black text-teal-800">Inventory Walet</p>
<p class="font-inter text-[10px] font-medium uppercase tracking-wider text-slate-500">Sistem Traceability</p>
</div>
</div>
<nav class="flex-1 space-y-1 px-2">
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">dashboard</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Dashboard</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">inventory_2</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Laporan Stok</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">database</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Data Master</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 bg-teal-50 text-teal-700 rounded-r-lg border-l-4 border-teal-700 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">qr_code_scanner</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Pelacakan</span>
</a>
<a class="flex items-center gap-3 px-4 py-3 text-slate-600 hover:bg-slate-100 hover:translate-x-1 transition-transform duration-200" href="#">
<span class="material-symbols-outlined">settings</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Pengaturan</span>
</a>
</nav>
<div class="px-4 py-6 border-t border-slate-200 space-y-2">
<button class="w-full bg-primary text-on-primary py-3 rounded-lg font-bold text-xs uppercase tracking-widest active:scale-95 duration-75">
Tambah Lot Baru
</button>
<a class="flex items-center gap-3 px-4 py-2 text-slate-500 hover:text-primary transition-colors" href="#">
<span class="material-symbols-outlined text-sm">help</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Bantuan</span>
</a>
<a class="flex items-center gap-3 px-4 py-2 text-slate-500 hover:text-error transition-colors" href="#">
<span class="material-symbols-outlined text-sm">logout</span>
<span class="font-inter text-xs font-medium uppercase tracking-wider">Log Keluar</span>
</a>
</div>
</aside>
<!-- Main Content -->
<main class="ml-64 pt-16 min-h-screen">
<div class="p-container-margin">
<!-- Header Section -->
<div class="mb-8 flex flex-col md:flex-row md:items-end justify-between gap-4">
<div>
<h1 class="font-h1 text-h1 text-on-surface mb-1">Scan Lookup</h1>
<p class="font-body-base text-body-base text-on-surface-variant">Pencarian cepat status dan histori lot sarang burung walet.</p>
</div>
<div class="flex items-center gap-2 text-slate-400 font-label-caps uppercase">
<span class="material-symbols-outlined text-sm">schedule</span>
Terakhir diperbarui: 12 Okt 2023, 14:30
</div>
</div>
<!-- Lookup Dashboard Grid -->
<div class="grid grid-cols-12 gap-6">
<!-- Left: Scan & Input Panel -->
<div class="col-span-12 lg:col-span-4 space-y-6">
<div class="bg-white p-6 rounded-xl border border-outline-variant shadow-sm">
<div class="flex items-center justify-between mb-6">
<h2 class="font-h2 text-h2 text-primary">Input Lot ID</h2>
<span class="material-symbols-outlined text-primary">camera_alt</span>
</div>
<!-- QR Scanner Placeholder UI -->
<div class="relative aspect-square w-full bg-slate-900 rounded-lg overflow-hidden mb-6 flex items-center justify-center">
<div class="absolute inset-0 opacity-20" style="background-image: radial-gradient(circle, #ffffff 1px, transparent 1px); background-size: 20px 20px;"></div>
<div class="relative z-10 text-center">
<div class="w-48 h-48 border-2 border-primary border-dashed rounded-2xl flex items-center justify-center mb-4 relative">
<div class="absolute -top-1 -left-1 w-6 h-6 border-t-4 border-l-4 border-primary"></div>
<div class="absolute -top-1 -right-1 w-6 h-6 border-t-4 border-r-4 border-primary"></div>
<div class="absolute -bottom-1 -left-1 w-6 h-6 border-b-4 border-l-4 border-primary"></div>
<div class="absolute -bottom-1 -right-1 w-6 h-6 border-b-4 border-r-4 border-primary"></div>
<span class="material-symbols-outlined text-white text-6xl opacity-20">qr_code_2</span>
</div>
<p class="text-white text-body-sm font-medium">Arahkan kamera ke QR Code</p>
</div>
</div>
<div class="space-y-4">
<div>
<label class="block font-label-caps text-on-surface-variant uppercase mb-2">Masukkan Manual ID</label>
<div class="relative">
<input class="w-full bg-surface-container-low border border-outline-variant rounded-lg px-4 py-3 font-display-lot text-primary focus:ring-2 focus:ring-primary focus:outline-none transition-all" type="text" value="LOT-2023-XB99"/>
<button class="absolute right-2 top-2 p-1.5 bg-primary text-on-primary rounded">
<span class="material-symbols-outlined text-lg">search</span>
</button>
</div>
</div>
<button class="w-full py-4 border-2 border-primary text-primary font-bold rounded-lg hover:bg-primary/5 transition-colors flex items-center justify-center gap-2">
<span class="material-symbols-outlined">image</span>
Unggah dari Galeri
</button>
</div>
</div>
<!-- Quick Stats Card -->
<div class="bg-secondary-container p-6 rounded-xl border border-secondary/20">
<h2 class="font-h2 text-h2 text-on-secondary-container mb-4">Statistik Pencarian</h2>
<div class="space-y-4">
<div class="flex justify-between items-center">
<span class="text-body-sm text-secondary">Total Scan Hari Ini</span>
<span class="font-bold text-on-secondary-container">142 Scan</span>
</div>
<div class="w-full bg-white/50 h-1.5 rounded-full overflow-hidden">
<div class="bg-primary h-full w-[75%]"></div>
</div>
<div class="flex justify-between items-center text-xs text-secondary italic">
<span>Target harian: 200 lot</span>
<span>71% tercapai</span>
</div>
</div>
</div>
</div>
<!-- Right: Result Panel -->
<div class="col-span-12 lg:col-span-8 space-y-6">
<!-- Result Card Header -->
<div class="bg-white rounded-xl border border-outline-variant shadow-sm overflow-hidden">
<div class="bg-primary p-6 text-on-primary flex flex-col md:flex-row justify-between items-start md:items-center gap-4">
<div>
<p class="font-label-caps text-on-primary-container uppercase opacity-80 mb-1">Lot Identifikasi</p>
<h2 class="font-display-lot text-display-lot tracking-tight">LOT-2023-XB99</h2>
</div>
<div class="flex items-center gap-2 bg-white/10 px-4 py-2 rounded-lg backdrop-blur-sm">
<span class="material-symbols-outlined text-lg" style="font-variation-settings: 'FILL' 1;">verified</span>
<span class="font-h2 text-h2">Terverifikasi QC</span>
</div>
</div>
<!-- Data Grid -->
<div class="p-6 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 border-b border-slate-100">
<div>
<p class="font-label-caps text-on-surface-variant uppercase mb-1">Status Saat Ini</p>
<span class="inline-flex items-center px-3 py-1 rounded-full bg-green-100 text-green-800 text-xs font-bold border border-green-200">
Siap Ekspor
</span>
</div>
<div>
<p class="font-label-caps text-on-surface-variant uppercase mb-1">Berat Bersih</p>
<p class="font-h2 text-h2 text-primary">2.450 <span class="text-xs font-medium text-on-surface-variant">kg</span></p>
</div>
<div>
<p class="font-label-caps text-on-surface-variant uppercase mb-1">Kualitas / Grade</p>
<p class="font-h2 text-h2 text-primary">Super AAA</p>
</div>
<div>
<p class="font-label-caps text-on-surface-variant uppercase mb-1">Kadar Air</p>
<p class="font-h2 text-h2 text-primary">12.5 <span class="text-xs font-medium text-on-surface-variant">%</span></p>
</div>
</div>
<div class="p-6 grid grid-cols-1 md:grid-cols-2 gap-8">
<!-- Traceability List -->
<div>
<h3 class="font-h2 text-h2 text-on-surface mb-4">Riwayat Perjalanan</h3>
<div class="space-y-6 relative before:content-[''] before:absolute before:left-[11px] before:top-2 before:bottom-2 before:w-[2px] before:bg-slate-200">
<div class="relative pl-10">
<div class="absolute left-0 top-1 w-6 h-6 rounded-full bg-primary flex items-center justify-center z-10">
<span class="material-symbols-outlined text-[12px] text-white">warehouse</span>
</div>
<p class="font-h2 text-[14px] leading-tight">Gudang Penyimpanan Final</p>
<p class="text-body-sm text-on-surface-variant">Seksi C - Rak 04 | 12 Okt 2023, 09:15</p>
</div>
<div class="relative pl-10">
<div class="absolute left-0 top-1 w-6 h-6 rounded-full bg-slate-200 flex items-center justify-center z-10">
<span class="material-symbols-outlined text-[12px] text-slate-500">fact_check</span>
</div>
<p class="font-h2 text-[14px] leading-tight">Pengecekan Kualitas Akhir</p>
<p class="text-body-sm text-on-surface-variant">QC Passed oleh Budi S. | 11 Okt 2023, 15:40</p>
</div>
<div class="relative pl-10">
<div class="absolute left-0 top-1 w-6 h-6 rounded-full bg-slate-200 flex items-center justify-center z-10">
<span class="material-symbols-outlined text-[12px] text-slate-500">dry_cleaning</span>
</div>
<p class="font-h2 text-[14px] leading-tight">Tahap Pengeringan</p>
<p class="text-body-sm text-on-surface-variant">Suhu 35°C - Kelembaban 40% | 10 Okt 2023</p>
</div>
<div class="relative pl-10">
<div class="absolute left-0 top-1 w-6 h-6 rounded-full bg-slate-200 flex items-center justify-center z-10">
<span class="material-symbols-outlined text-[12px] text-slate-500">inventory</span>
</div>
<p class="font-h2 text-[14px] leading-tight">Penerimaan Bahan Baku</p>
<p class="text-body-sm text-on-surface-variant">Dari Vendor: Lestari Alam | 08 Okt 2023</p>
</div>
</div>
</div>
<!-- Map & Location Details -->
<div class="space-y-4">
<h3 class="font-h2 text-h2 text-on-surface">Lokasi Saat Ini</h3>
<div class="rounded-lg overflow-hidden border border-outline-variant h-40 bg-slate-100 relative group">
<img alt="Map of warehouse location" class="w-full h-full object-cover grayscale opacity-60 group-hover:grayscale-0 transition-all duration-500" data-alt="Schematic professional architectural map of a large industrial warehouse interior layout with highlighted storage sections" data-location="Jakarta Warehouse" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBS6ZmJgtHXJQmNnGnKU_PX4qPwtyi18w8NfPSZSk_HSea76pLF0SA39Oq6hSlH2OISE36WBe_7WGcRYm0acIargHvLBihVzsR4KbEQHrcBr1EJQocg7VvphDUliBN3sVCNsTw6IK9gbu93Kwj6r-wt4-jJli6RhDgkvf_vOx0AY6yK5FqhGd1CU703wY0zH2Hsw8p5qrYFpB2Rw7DdrKvocElq2HNPzvw85u3MRSmZZaAgZ0chwrELqdvod_4FOVjJKFPUDPeVmg"/>
<div class="absolute inset-0 flex items-center justify-center">
<div class="w-10 h-10 bg-primary/20 rounded-full animate-ping absolute"></div>
<span class="material-symbols-outlined text-primary text-4xl relative z-10" style="font-variation-settings: 'FILL' 1;">location_on</span>
</div>
</div>
<div class="p-4 bg-surface-container-low rounded-lg border border-outline-variant">
<div class="flex items-center gap-3">
<span class="material-symbols-outlined text-primary">apartment</span>
<div>
<p class="font-h2 text-[14px]">Gudang Utama Jakarta</p>
<p class="text-xs text-on-surface-variant">Jl. Industri Walet No. 8, Jakarta Utara</p>
</div>
</div>
</div>
<div class="flex gap-2">
<button class="flex-1 py-3 bg-primary text-on-primary rounded-lg font-bold text-xs uppercase tracking-widest active:scale-95 transition-all">Cetak Label</button>
<button class="flex-1 py-3 border-2 border-primary text-primary rounded-lg font-bold text-xs uppercase tracking-widest active:scale-95 transition-all">Pindahkan Lot</button>
</div>
</div>
</div>
</div>
<!-- Related Lots / Items -->
<div class="bg-white rounded-xl border border-outline-variant shadow-sm overflow-hidden">
<div class="p-6 border-b border-slate-100 flex justify-between items-center">
<h2 class="font-h2 text-h2 text-on-surface">Lot Terkait dalam Pengiriman</h2>
<button class="text-primary font-bold text-xs uppercase hover:underline">Lihat Semua</button>
</div>
<table class="w-full border-collapse">
<thead>
<tr class="bg-slate-50">
<th class="px-6 py-3 text-left font-label-caps text-on-surface-variant uppercase">Lot ID</th>
<th class="px-6 py-3 text-left font-label-caps text-on-surface-variant uppercase">Berat</th>
<th class="px-6 py-3 text-left font-label-caps text-on-surface-variant uppercase">Grade</th>
<th class="px-6 py-3 text-left font-label-caps text-on-surface-variant uppercase">Status</th>
<th class="px-6 py-3 text-right"></th>
</tr>
</thead>
<tbody>
<tr class="border-t border-slate-100 hover:bg-slate-50 transition-colors">
<td class="px-6 py-4 font-table-data">LOT-2023-XB97</td>
<td class="px-6 py-4 font-table-data">1.200 kg</td>
<td class="px-6 py-4 font-table-data">Super AAA</td>
<td class="px-6 py-4">
<span class="px-2 py-0.5 rounded-full bg-green-100 text-green-700 text-[10px] font-bold">READY</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-primary"><span class="material-symbols-outlined text-lg">open_in_new</span></button>
</td>
</tr>
<tr class="border-t border-slate-100 hover:bg-slate-50 transition-colors">
<td class="px-6 py-4 font-table-data">LOT-2023-XB98</td>
<td class="px-6 py-4 font-table-data">0.850 kg</td>
<td class="px-6 py-4 font-table-data">Grade A</td>
<td class="px-6 py-4">
<span class="px-2 py-0.5 rounded-full bg-green-100 text-green-700 text-[10px] font-bold">READY</span>
</td>
<td class="px-6 py-4 text-right">
<button class="text-primary"><span class="material-symbols-outlined text-lg">open_in_new</span></button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</main>
<!-- Floating Action Button (for Mobile Quick Scan) -->
<button class="md:hidden fixed bottom-6 right-6 w-14 h-14 bg-primary text-on-primary rounded-full shadow-lg flex items-center justify-center z-50">
<span class="material-symbols-outlined">qr_code_scanner</span>
</button>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

View File

@ -0,0 +1,260 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Sarang Ops - Layar Picking</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary-container": "#cfe2f9",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"on-secondary-fixed": "#091d2e",
"on-background": "#191c1d",
"outline": "#6f797a",
"on-primary": "#ffffff",
"inverse-on-surface": "#eff1f1",
"on-secondary": "#ffffff",
"error-container": "#ffdad6",
"secondary": "#4e6073",
"primary": "#00454c",
"on-tertiary-container": "#ffbb91",
"inverse-primary": "#8ed1db",
"on-primary-fixed": "#001f23",
"secondary-fixed-dim": "#b5c8df",
"on-surface": "#191c1d",
"tertiary-container": "#7c4824",
"on-tertiary-fixed": "#311300",
"surface-variant": "#e1e3e3",
"surface-bright": "#f8fafa",
"on-surface-variant": "#3f484a",
"surface": "#f8fafa",
"surface-container": "#eceeee",
"surface-container-low": "#f2f4f4",
"tertiary-fixed": "#ffdbc7",
"surface-container-high": "#e6e8e9",
"primary-fixed-dim": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"on-error": "#ffffff",
"background": "#f8fafa",
"surface-dim": "#d8dadb",
"surface-tint": "#1d6871",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"surface-container-highest": "#e1e3e3",
"on-primary-fixed-variant": "#004f57",
"error": "#ba1a1a",
"primary-fixed": "#aaeef8",
"on-tertiary": "#ffffff",
"inverse-surface": "#2e3131",
"tertiary": "#60320f",
"on-tertiary-fixed-variant": "#6b3a17",
"surface-container-lowest": "#ffffff",
"on-secondary-container": "#526478",
"tertiary-fixed-dim": "#feb78a",
"primary-container": "#0d5e67"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"container-margin": "24px",
"row-height-sm": "32px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-md": "48px"
},
"fontFamily": {
"body-sm": ["Inter"],
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"]
},
"fontSize": {
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}]
}
}
}
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
display: inline-block;
vertical-align: middle;
}
body { font-family: 'Inter', sans-serif; }
</style>
<style>
body {
min-height: max(884px, 100dvh);
}
</style>
</head>
<body class="bg-background text-on-background min-h-screen flex flex-col">
<!-- Top Navigation Bar (Shared Component) -->
<header class="flex justify-between items-center h-14 px-6 w-full bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 shadow-sm fixed top-0 z-40">
<div class="flex items-center gap-3">
<span class="material-symbols-outlined text-[#0D5E67] cursor-pointer" data-icon="arrow_back">arrow_back</span>
<div class="flex flex-col">
<span class="text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight">SO-2023-0892</span>
<span class="font-label-caps text-[10px] text-slate-500 uppercase">Sales Order</span>
</div>
</div>
<div class="flex items-center gap-4">
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 cursor-pointer" data-icon="help_outline">help_outline</span>
<div class="w-8 h-8 rounded-full overflow-hidden border border-slate-200">
<img alt="User profile" data-alt="Professional warehouse supervisor portrait, clean lighting, corporate style" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCCkepvjR3I1p1wdJoIsFS8IwnyZQxlMnyYHJqw49QRUHHDhreZhQW37jb1v8LskeLDEXCYCRIYH2bHl96R0-FR7o3F-iM-S7yIcMfVUhf5_TZQ5-9fonMWY8RuDfQhE-si_sbADGtaDFdtxNwDDoON5Pv_2_D4-P1O5CuG6c6ya8-hq7mHSpXrQ8MAwXvl_uEl0fIBWq9ttAK1oL2HeksnxrWsEAcvmyZTunSun7dgqQxh5JAEDi0l72wB9XXpb7NgkMK8pUvcBQ"/>
</div>
</div>
</header>
<!-- Main Content Canvas -->
<main class="flex-grow pt-20 pb-24 px-4 max-w-md mx-auto w-full">
<!-- Progress Summary Card -->
<section class="bg-white rounded-xl border border-outline-variant p-4 mb-6 shadow-sm">
<div class="flex justify-between items-center mb-3">
<h2 class="font-h2 text-on-surface">Progres Pengambilan</h2>
<span class="font-display-lot text-primary">2/5 <span class="text-body-sm font-normal text-slate-500">Item</span></span>
</div>
<div class="w-full bg-surface-container-high rounded-full h-2.5">
<div class="bg-primary h-2.5 rounded-full" style="width: 40%"></div>
</div>
<div class="flex justify-between mt-2">
<span class="text-body-sm text-slate-500">40% Selesai</span>
<span class="text-body-sm text-slate-500">3 Tersisa</span>
</div>
</section>
<!-- QR Scanner Area -->
<section class="mb-6">
<div class="relative rounded-xl overflow-hidden aspect-square bg-black flex items-center justify-center border-4 border-primary/20">
<div class="absolute inset-0 opacity-40">
<img class="w-full h-full object-cover" data-alt="Close up of a person using a mobile phone to scan a QR code on a package in a warehouse" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCijmxb9rtn-wW11U0C9Equb_H6JTRcUEKWd38nCFMJGCHFHVRpCNtclbCqcihhPopzqj-QPGjV5bhf7nJfvQ91sFUB_ikXaYKtYRArdGihBpEM-GA1R9_XJAJhhrURDw7Hu6UxlBlsAqc9xa2NNWAT_VaMaOR0hTD9-KWkrBLzXHk0vBr8F_XcMdf5RvAVmYpg0IjOemal9IyBq0LPqI9q7NvYNFToyeOrdV3KPUd-XTx-DzYC88FVzDuvee2VAgF4MpAByF76_Q"/>
</div>
<!-- Scanner Overlay -->
<div class="relative z-10 w-48 h-48 border-2 border-white/80 rounded-lg">
<div class="absolute -top-1 -left-1 w-6 h-6 border-t-4 border-l-4 border-primary-fixed-dim"></div>
<div class="absolute -top-1 -right-1 w-6 h-6 border-t-4 border-r-4 border-primary-fixed-dim"></div>
<div class="absolute -bottom-1 -left-1 w-6 h-6 border-b-4 border-l-4 border-primary-fixed-dim"></div>
<div class="absolute -bottom-1 -right-1 w-6 h-6 border-b-4 border-r-4 border-primary-fixed-dim"></div>
<!-- Scanning Line -->
<div class="w-full h-0.5 bg-primary-fixed-dim shadow-[0_0_15px_#8ed1db] absolute top-1/2 -translate-y-1/2"></div>
</div>
<div class="absolute bottom-4 left-0 right-0 text-center">
<span class="bg-black/60 text-white px-3 py-1 rounded-full text-body-sm backdrop-blur-sm">Scan QR Code pada Lot</span>
</div>
</div>
</section>
<!-- Item List / Picking Queue -->
<div class="space-y-4">
<h3 class="font-label-caps text-slate-500 mb-2">DAFTAR ITEM TERJADWAL</h3>
<!-- Item Card: Active/Next -->
<div class="bg-white border-2 border-primary rounded-xl p-4 shadow-sm relative overflow-hidden">
<div class="absolute top-0 right-0 bg-primary text-white px-3 py-1 text-[10px] font-bold rounded-bl-lg">AKTIF</div>
<div class="flex justify-between items-start mb-2">
<div>
<span class="font-display-lot text-lg block">LOT-SW-23110</span>
<span class="font-label-caps text-primary">GRADE AAA+</span>
</div>
<div class="text-right">
<span class="font-label-caps text-slate-500 block">LOKASI RAK</span>
<span class="font-h2 text-primary">A1-22-B</span>
</div>
</div>
<div class="grid grid-cols-2 gap-4 py-3 border-y border-slate-100 my-3">
<div class="flex flex-col">
<span class="text-body-sm text-slate-500">Target Qty</span>
<span class="font-table-data text-base">5.00 kg</span>
</div>
<div class="flex flex-col border-l border-slate-100 pl-4">
<span class="text-body-sm text-slate-500">Diambil</span>
<div class="flex items-center gap-2">
<input class="w-20 h-8 border-slate-200 rounded text-table-data text-primary focus:ring-primary focus:border-primary" type="number" value="5.00"/>
<span class="text-body-sm font-bold">kg</span>
</div>
</div>
</div>
<button class="w-full bg-primary text-white font-h2 py-3 rounded-lg flex justify-center items-center gap-2 active:scale-95 transition-transform">
<span class="material-symbols-outlined" data-icon="check_circle">check_circle</span>
Konfirmasi Pengambilan
</button>
</div>
<!-- Item Card: Pending -->
<div class="bg-slate-50 border border-outline-variant rounded-xl p-4 opacity-75">
<div class="flex justify-between items-start">
<div>
<span class="font-h2 block text-slate-700">LOT-SW-23111</span>
<span class="font-label-caps text-slate-500">GRADE AA</span>
</div>
<div class="text-right">
<span class="font-label-caps text-slate-400 block">LOKASI RAK</span>
<span class="font-h2 text-slate-600">B2-04-A</span>
</div>
</div>
<div class="flex justify-between mt-3 text-body-sm">
<span class="text-slate-500">Target: 2.50 kg</span>
<span class="text-slate-400 italic">Antre</span>
</div>
</div>
<!-- Item Card: Completed -->
<div class="bg-secondary-container/20 border border-secondary-container rounded-xl p-4">
<div class="flex justify-between items-center">
<div class="flex items-center gap-3">
<div class="bg-green-100 text-green-700 p-1 rounded-full">
<span class="material-symbols-outlined text-[20px]" data-icon="done">done</span>
</div>
<div>
<span class="font-h2 block text-slate-400 line-through">LOT-SW-23098</span>
<span class="font-label-caps text-slate-400">SELESAI (1.20 kg)</span>
</div>
</div>
<span class="text-[10px] bg-white border border-slate-200 text-slate-400 px-2 py-1 rounded">08:45 WIB</span>
</div>
</div>
</div>
</main>
<!-- Bottom Navigation Bar (Shared Component - Mobile Only View) -->
<nav class="fixed bottom-0 left-0 right-0 bg-white border-t border-slate-200 h-16 flex items-center justify-around z-40 md:hidden">
<div class="flex flex-col items-center justify-center text-slate-500 hover:text-primary transition-colors cursor-pointer">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
<span class="text-[10px] font-medium mt-0.5">Dashboard</span>
</div>
<div class="flex flex-col items-center justify-center text-primary transition-colors cursor-pointer border-t-2 border-primary pt-1">
<span class="material-symbols-outlined" data-icon="inventory">inventory</span>
<span class="text-[10px] font-bold mt-0.5">Picking</span>
</div>
<div class="flex flex-col items-center justify-center text-slate-500 hover:text-primary transition-colors cursor-pointer">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
<span class="text-[10px] font-medium mt-0.5">Inventory</span>
</div>
<div class="flex flex-col items-center justify-center text-slate-500 hover:text-primary transition-colors cursor-pointer">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
<span class="text-[10px] font-medium mt-0.5">Settings</span>
</div>
</nav>
<!-- Floating Action Button - Only for main screens -->
<div class="fixed bottom-20 right-6 z-30">
<button class="w-14 h-14 bg-primary text-white rounded-full shadow-lg flex items-center justify-center active:scale-90 transition-transform">
<span class="material-symbols-outlined text-[28px]" data-icon="add_a_photo">add_a_photo</span>
</button>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

View File

@ -0,0 +1,366 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Formulir Pembelian - SwiftLot Walet</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error-container": "#93000a",
"surface-bright": "#f8fafa",
"tertiary": "#60320f",
"inverse-primary": "#8ed1db",
"error-container": "#ffdad6",
"error": "#ba1a1a",
"surface-container-low": "#f2f4f4",
"secondary-container": "#cfe2f9",
"primary": "#00454c",
"outline-variant": "#bfc8ca",
"on-secondary-fixed-variant": "#36485b",
"on-surface-variant": "#3f484a",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-variant": "#e1e3e3",
"surface-dim": "#d8dadb",
"outline": "#6f797a",
"on-secondary-container": "#526478",
"on-secondary-fixed": "#091d2e",
"tertiary-container": "#7c4824",
"inverse-surface": "#2e3131",
"background": "#f8fafa",
"on-tertiary": "#ffffff",
"on-surface": "#191c1d",
"secondary": "#4e6073",
"primary-container": "#0d5e67",
"on-primary-fixed-variant": "#004f57",
"surface-container": "#eceeee",
"on-primary-container": "#92d5df",
"primary-fixed-dim": "#8ed1db",
"tertiary-fixed-dim": "#feb78a",
"on-tertiary-fixed": "#311300",
"secondary-fixed": "#d1e4fb",
"inverse-on-surface": "#eff1f1",
"on-primary-fixed": "#001f23",
"on-secondary": "#ffffff",
"surface-tint": "#1d6871",
"on-tertiary-container": "#ffbb91",
"primary-fixed": "#aaeef8",
"secondary-fixed-dim": "#b5c8df",
"on-primary": "#ffffff",
"surface": "#f8fafa",
"surface-container-highest": "#e1e3e3",
"on-error": "#ffffff",
"on-tertiary-fixed-variant": "#6b3a17",
"tertiary-fixed": "#ffdbc7",
"on-background": "#191c1d"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-sm": "32px"
},
"fontFamily": {
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
.hide-scrollbar::-webkit-scrollbar { display: none; }
.hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
</style>
</head>
<body class="bg-background font-body-base text-on-background antialiased flex">
<!-- SideNavBar (Shared Component) -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 dark:border-slate-800 bg-slate-50 dark:bg-slate-950 flex flex-col h-screen py-4 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-8 h-8 rounded bg-primary-container flex items-center justify-center text-white">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
</div>
<div>
<h1 class="text-teal-900 dark:text-teal-100 font-black text-[15px] leading-none">Sarang Ops</h1>
<p class="text-[11px] text-slate-500 font-medium">Pabrik Pengolahan A</p>
</div>
</div>
<nav class="flex-1 space-y-1 px-3">
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
<span class="font-inter text-[13px] font-medium">Dashboard</span>
</a>
<!-- Active State: Purchase -->
<a class="flex items-center gap-3 px-3 py-2 bg-white dark:bg-slate-900 text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm transition-all duration-150 rounded active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="shopping_cart">shopping_cart</span>
<span class="font-inter text-[13px] font-medium">Pembelian</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="receipt_long">receipt_long</span>
<span class="font-inter text-[13px] font-medium">Kuitansi</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
<span class="font-inter text-[13px] font-medium">Inventaris</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 rounded active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="monitoring">monitoring</span>
<span class="font-inter text-[13px] font-medium">Analitik</span>
</a>
</nav>
<div class="px-3 mt-auto space-y-1">
<button class="w-full mb-4 bg-[#0D5E67] text-white py-2.5 rounded text-[13px] font-semibold flex items-center justify-center gap-2 hover:opacity-90 active:scale-[0.98] transition-all">
<span class="material-symbols-outlined text-[18px]" data-icon="add">add</span>
Scan Lot Baru
</button>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
<span class="font-inter text-[13px] font-medium">Pengaturan</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 transition-all rounded" href="#">
<span class="material-symbols-outlined" data-icon="contact_support">contact_support</span>
<span class="font-inter text-[13px] font-medium">Bantuan</span>
</a>
</div>
</aside>
<!-- Main Content -->
<main class="flex-1 ml-64 min-h-screen flex flex-col">
<!-- TopNavBar (Shared Component) -->
<header class="sticky top-0 z-40 w-full flex justify-between items-center h-14 px-6 bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 shadow-sm">
<div class="flex items-center gap-4">
<span class="font-inter text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight">SwiftLot Walet</span>
<div class="h-6 w-[1px] bg-slate-200 mx-2"></div>
<h2 class="font-h2 text-h2 text-primary">Formulir Pembelian Baru</h2>
</div>
<div class="flex items-center gap-5">
<div class="relative group">
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 cursor-pointer" data-icon="notifications">notifications</span>
<span class="absolute top-0 right-0 w-2 h-2 bg-error rounded-full"></span>
</div>
<span class="material-symbols-outlined text-slate-600 dark:text-slate-400 cursor-pointer" data-icon="help_outline">help_outline</span>
<div class="flex items-center gap-2 pl-2 cursor-pointer">
<img alt="User profile" class="w-8 h-8 rounded-full border border-slate-200 object-cover" data-alt="portrait of a professional supply chain manager in a bright office environment" src="https://lh3.googleusercontent.com/aida-public/AB6AXuD-y__w3tcRMOguNsqtAJT7TMj2QhhJLYkYzmTuwzT-Izil12sZY-sPq8oPDMsQdTn3xwo4VoFKGu6E4BBlMVWCw1Zdlo6fdurR9yFabpj-jPvpKVzo8q2JnfX63jMZUcRU5OxZGINUXCz2OAYJ8wWF-6XtZIVi_FzpsWyJ7pAJCA4dc5eBuC1CpX4YfCl2JdVWWdYh0PJOimMZjaDw50yetwvPN3pGF-SpQWVkasvM4z8H-2foOC6kgDkELSxHpa9Osa_JQWM8KQ"/>
</div>
</div>
</header>
<!-- Canvas -->
<div class="p-container-margin flex-1 flex flex-col gap-gutter">
<!-- Header Section: Form Fields -->
<section class="bg-surface-container-lowest border border-outline-variant rounded shadow-sm p-6">
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6">
<div class="flex flex-col gap-1">
<label class="font-label-caps text-label-caps text-outline uppercase">No. Pembelian</label>
<input class="bg-surface-container-low border-outline-variant rounded px-3 py-2 text-body-sm font-medium focus:ring-0 cursor-not-allowed" readonly="" type="text" value="PUR-20231027-001"/>
</div>
<div class="flex flex-col gap-1">
<label class="font-label-caps text-label-caps text-outline uppercase">Pemasok</label>
<select class="border-outline-variant rounded px-3 py-2 text-body-sm focus:ring-2 focus:ring-[#0D5E67] focus:border-[#0D5E67] outline-none transition-all">
<option>Seafood Harvest Co.</option>
<option>West Coast Walet Hub</option>
<option>Global Nest Exporters</option>
</select>
</div>
<div class="flex flex-col gap-1">
<label class="font-label-caps text-label-caps text-outline uppercase">Tanggal Pembelian</label>
<div class="relative">
<input class="w-full border-outline-variant rounded px-3 py-2 text-body-sm focus:ring-2 focus:ring-[#0D5E67] focus:border-[#0D5E67] outline-none" type="date" value="2023-10-27"/>
</div>
</div>
<div class="flex flex-col gap-1">
<label class="font-label-caps text-label-caps text-outline uppercase">No. Faktur Pemasok</label>
<input class="border-outline-variant rounded px-3 py-2 text-body-sm focus:ring-2 focus:ring-[#0D5E67] focus:border-[#0D5E67] outline-none" placeholder="INV/2023/X12" type="text"/>
</div>
<div class="md:col-span-2 lg:col-span-3 flex flex-col gap-1">
<label class="font-label-caps text-label-caps text-outline uppercase">Catatan</label>
<textarea class="border-outline-variant rounded px-3 py-2 text-body-sm focus:ring-2 focus:ring-[#0D5E67] focus:border-[#0D5E67] outline-none" placeholder="Masukkan detail spesifik transaksi..." rows="1"></textarea>
</div>
<div class="flex flex-col gap-1">
<label class="font-label-caps text-label-caps text-outline uppercase">Pratinjau Info Bank</label>
<div class="bg-surface-container-low border border-dashed border-outline-variant rounded px-3 py-2 h-full">
<div class="flex items-center gap-2 mb-1">
<span class="material-symbols-outlined text-primary text-sm" data-icon="account_balance">account_balance</span>
<span class="text-body-sm font-semibold">Standard Chartered</span>
</div>
<p class="text-[12px] text-on-surface-variant font-mono">Acc: 9920-xxxx-1122</p>
</div>
</div>
</div>
</section>
<!-- Line Items Section: Table -->
<section class="flex-1 bg-surface-container-lowest border border-outline-variant rounded shadow-sm overflow-hidden flex flex-col">
<div class="px-6 py-4 border-b border-outline-variant flex justify-between items-center bg-surface-bright">
<h3 class="font-h2 text-h2 text-primary">Item Inventaris</h3>
<button class="flex items-center gap-1.5 text-[#0D5E67] hover:bg-[#0D5E67]/5 px-3 py-1.5 rounded transition-all active:scale-95">
<span class="material-symbols-outlined text-[20px]" data-icon="add_circle">add_circle</span>
<span class="font-table-data text-table-data">Tambah Baris</span>
</button>
</div>
<div class="overflow-x-auto flex-1">
<table class="w-full text-left border-collapse min-w-[1000px]">
<thead>
<tr class="bg-surface-container text-on-surface-variant font-label-caps text-[11px] uppercase tracking-wider">
<th class="px-6 py-3 border-b border-outline-variant">Jenis Item</th>
<th class="px-4 py-3 border-b border-outline-variant">Kualitas</th>
<th class="px-4 py-3 border-b border-outline-variant text-right">Jumlah</th>
<th class="px-4 py-3 border-b border-outline-variant">Satuan</th>
<th class="px-4 py-3 border-b border-outline-variant text-right">Harga Satuan</th>
<th class="px-4 py-3 border-b border-outline-variant text-right">Subtotal</th>
<th class="px-4 py-3 border-b border-outline-variant">Status</th>
<th class="px-4 py-3 border-b border-outline-variant">Catatan</th>
<th class="px-6 py-3 border-b border-outline-variant text-center w-10"></th>
</tr>
</thead>
<tbody class="text-table-data font-table-data divide-y divide-outline-variant/30">
<!-- Row 1 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-6 py-compact-padding">
<select class="w-full bg-transparent border-none p-0 focus:ring-0 text-table-data cursor-pointer">
<option>Sarang Mentah - Mangkok</option>
<option>Sarang Mentah - Sudut</option>
</select>
</td>
<td class="px-4 py-compact-padding">
<select class="w-full bg-transparent border-none p-0 focus:ring-0 text-table-data cursor-pointer">
<option>Super AAA</option>
<option>Grade A</option>
<option>Grade B</option>
</select>
</td>
<td class="px-4 py-compact-padding text-right">
<input class="w-20 text-right bg-transparent border-none p-0 focus:ring-0 text-table-data" type="number" value="12.50"/>
</td>
<td class="px-4 py-compact-padding">
<span class="text-on-surface-variant">kg</span>
</td>
<td class="px-4 py-compact-padding text-right">
<input class="w-24 text-right bg-transparent border-none p-0 focus:ring-0 text-table-data" type="number" value="12500"/>
</td>
<td class="px-4 py-compact-padding text-right font-semibold text-primary">156,250.00</td>
<td class="px-4 py-compact-padding">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-green-100 text-green-800 text-[11px] font-bold">
RAW_MAT
</span>
</td>
<td class="px-4 py-compact-padding">
<input class="w-full bg-transparent border-none p-0 focus:ring-0 text-table-data placeholder:opacity-30" placeholder="-" type="text"/>
</td>
<td class="px-6 py-compact-padding text-center">
<span class="material-symbols-outlined text-slate-300 hover:text-error cursor-pointer transition-colors" data-icon="delete">delete</span>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-6 py-compact-padding">
<select class="w-full bg-transparent border-none p-0 focus:ring-0 text-table-data cursor-pointer">
<option>Sarang Mentah - Sudut</option>
<option>Sarang Mentah - Mangkok</option>
</select>
</td>
<td class="px-4 py-compact-padding">
<select class="w-full bg-transparent border-none p-0 focus:ring-0 text-table-data cursor-pointer">
<option>Grade B</option>
<option>Super AAA</option>
<option>Grade A</option>
</select>
</td>
<td class="px-4 py-compact-padding text-right">
<input class="w-20 text-right bg-transparent border-none p-0 focus:ring-0 text-table-data" type="number" value="4.25"/>
</td>
<td class="px-4 py-compact-padding">
<span class="text-on-surface-variant">kg</span>
</td>
<td class="px-4 py-compact-padding text-right">
<input class="w-24 text-right bg-transparent border-none p-0 focus:ring-0 text-table-data" type="number" value="8200"/>
</td>
<td class="px-4 py-compact-padding text-right font-semibold text-primary">34,850.00</td>
<td class="px-4 py-compact-padding">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-blue-100 text-blue-800 text-[11px] font-bold">
PENDING_QC
</span>
</td>
<td class="px-4 py-compact-padding">
<input class="w-full bg-transparent border-none p-0 focus:ring-0 text-table-data" type="text" value="Kelembaban tinggi"/>
</td>
<td class="px-6 py-compact-padding text-center">
<span class="material-symbols-outlined text-slate-300 hover:text-error cursor-pointer transition-colors" data-icon="delete">delete</span>
</td>
</tr>
<!-- Empty Add Row Helper -->
<tr class="bg-surface-container-low border-t border-outline-variant">
<td class="px-6 py-2 text-center" colspan="9">
<button class="text-body-sm font-medium text-outline hover:text-primary transition-colors flex items-center justify-center gap-2 mx-auto">
<span class="material-symbols-outlined text-[18px]" data-icon="add">add</span>
Masukkan entri lot baru
</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Footer Summary Section -->
<div class="bg-surface-container px-6 py-4 flex flex-col md:flex-row justify-between items-start md:items-center gap-4">
<div class="flex gap-8">
<div class="flex flex-col">
<span class="font-label-caps text-label-caps text-outline uppercase">Total Baris</span>
<span class="font-display-lot text-[18px] text-primary">02 Entri</span>
</div>
<div class="flex flex-col">
<span class="font-label-caps text-label-caps text-outline uppercase">Total Berat</span>
<span class="font-display-lot text-[18px] text-primary">16.75 kg</span>
</div>
</div>
<div class="flex items-baseline gap-4 bg-primary-container px-6 py-3 rounded shadow-lg text-white">
<span class="font-label-caps text-label-caps uppercase opacity-80">Total Keseluruhan</span>
<span class="font-display-lot text-display-lot">USD 191,100.00</span>
</div>
</div>
</section>
<!-- Actions Footer -->
<footer class="flex justify-between items-center py-4">
<button class="px-6 py-2 text-body-base font-semibold text-error hover:bg-error/5 rounded transition-all">
Batal
</button>
<div class="flex gap-3">
<button class="px-8 py-2.5 bg-white border border-[#0D5E67] text-[#0D5E67] font-semibold rounded-lg hover:bg-[#0D5E67]/5 active:scale-95 transition-all">
Simpan Draft
</button>
<button class="px-10 py-2.5 bg-[#0D5E67] text-white font-semibold rounded-lg shadow-md hover:opacity-90 active:scale-95 transition-all">
Kirim Pembelian
</button>
</div>
</footer>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View File

@ -0,0 +1,417 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Formulir Penerimaan - SwiftLot Walet</title>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
.compact-scrollbar::-webkit-scrollbar {
width: 4px;
height: 4px;
}
.compact-scrollbar::-webkit-scrollbar-track {
background: transparent;
}
.compact-scrollbar::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 10px;
}
</style>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error-container": "#93000a",
"surface-bright": "#f8fafa",
"tertiary": "#60320f",
"inverse-primary": "#8ed1db",
"error-container": "#ffdad6",
"error": "#ba1a1a",
"surface-container-low": "#f2f4f4",
"secondary-container": "#cfe2f9",
"primary": "#00454c",
"outline-variant": "#bfc8ca",
"on-secondary-fixed-variant": "#36485b",
"on-surface-variant": "#3f484a",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-variant": "#e1e3e3",
"surface-dim": "#d8dadb",
"outline": "#6f797a",
"on-secondary-container": "#526478",
"on-secondary-fixed": "#091d2e",
"tertiary-container": "#7c4824",
"inverse-surface": "#2e3131",
"background": "#f8fafa",
"on-tertiary": "#ffffff",
"on-surface": "#191c1d",
"secondary": "#4e6073",
"primary-container": "#0d5e67",
"on-primary-fixed-variant": "#004f57",
"surface-container": "#eceeee",
"on-primary-container": "#92d5df",
"primary-fixed-dim": "#8ed1db",
"tertiary-fixed-dim": "#feb78a",
"on-tertiary-fixed": "#311300",
"secondary-fixed": "#d1e4fb",
"inverse-on-surface": "#eff1f1",
"on-primary-fixed": "#001f23",
"on-secondary": "#ffffff",
"surface-tint": "#1d6871",
"on-tertiary-container": "#ffbb91",
"primary-fixed": "#aaeef8",
"secondary-fixed-dim": "#b5c8df",
"on-primary": "#ffffff",
"surface": "#f8fafa",
"surface-container-highest": "#e1e3e3",
"on-error": "#ffffff",
"on-tertiary-fixed-variant": "#6b3a17",
"tertiary-fixed": "#ffdbc7",
"on-background": "#191c1d"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-sm": "32px"
},
"fontFamily": {
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", { "lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700" }],
"table-data": ["13px", { "lineHeight": "16px", "fontWeight": "500" }],
"body-sm": ["13px", { "lineHeight": "18px", "fontWeight": "400" }],
"label-caps": ["11px", { "lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700" }],
"body-base": ["14px", { "lineHeight": "20px", "fontWeight": "400" }],
"h2": ["16px", { "lineHeight": "24px", "fontWeight": "600" }],
"h1": ["20px", { "lineHeight": "28px", "fontWeight": "600" }]
}
},
},
}
</script>
</head>
<body class="bg-background font-body-base text-on-surface min-h-screen">
<!-- TopNavBar -->
<header class="bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-800 shadow-sm fixed top-0 z-40 w-full flex justify-between items-center h-14 px-6">
<div class="flex items-center gap-4">
<span class="text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight">SwiftLot Walet</span>
<div class="h-6 w-[1px] bg-slate-200 mx-2"></div>
<h2 class="font-h1 text-h1 text-on-surface">Formulir Penerimaan Barang</h2>
</div>
<div class="flex items-center gap-4">
<div class="flex items-center gap-2 px-3 py-1.5 bg-slate-50 border border-slate-200 rounded">
<span class="material-symbols-outlined text-slate-400 text-sm">notifications</span>
<span class="material-symbols-outlined text-slate-400 text-sm">help_outline</span>
</div>
<div class="w-8 h-8 rounded-full overflow-hidden border border-slate-200">
<img alt="User profile" class="w-full h-full object-cover" data-alt="Professional headshot of a corporate inventory manager for a high-end logistics company" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBYUHb23_FlhaKb0YLS1pNIC3A7L07VmAYYc3PC6s3oKRPwxHcKGnwgQso2ITf528my0JYawpiuOy1SVr52zXRjfqGr0fFxPhEkd2KZUDbYt1LF_QlRot7wZXLaaRX4VU4zp4-prh0xpoBOdh3Zg4dUJ0ldPlW4Yj-dJIO6I976nfoLW6y170S1CBwwvC7p1MgzMSaJNcq4T6dJtHeAFi35GFV68iVmTVgHpeQB4hrFbDpq6bQN1kXuuo9Xzijqi35u6zmlIriWkA"/>
</div>
</div>
</header>
<!-- SideNavBar -->
<aside class="fixed left-0 top-14 h-[calc(100vh-3.5rem)] w-64 bg-slate-50 dark:bg-slate-950 border-r border-slate-200 dark:border-slate-800 flex flex-col py-4 font-inter text-[13px] font-medium">
<nav class="flex-1 space-y-1 px-3">
<a class="flex items-center gap-3 px-4 py-2.5 text-slate-500 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined">dashboard</span>
<span>Dasbor</span>
</a>
<a class="flex items-center gap-3 px-4 py-2.5 text-slate-500 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined">shopping_cart</span>
<span>Pembelian</span>
</a>
<a class="flex items-center gap-3 px-4 py-2.5 bg-white dark:bg-slate-900 text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined">receipt_long</span>
<span>Penerimaan</span>
</a>
<a class="flex items-center gap-3 px-4 py-2.5 text-slate-500 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined">inventory_2</span>
<span>Inventaris</span>
</a>
<a class="flex items-center gap-3 px-4 py-2.5 text-slate-500 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-900 transition-all duration-150 active:scale-[0.98]" href="#">
<span class="material-symbols-outlined">monitoring</span>
<span>Analitik</span>
</a>
</nav>
<div class="px-3 mb-6">
<button class="w-full py-2 bg-primary-container text-white rounded font-bold shadow-sm hover:opacity-90 active:scale-[0.98] transition-all flex items-center justify-center gap-2">
<span class="material-symbols-outlined text-[18px]">add_circle</span>
<span>Scan Lot Baru</span>
</button>
</div>
<div class="px-3 border-t border-slate-200 pt-4 space-y-1">
<a class="flex items-center gap-3 px-4 py-2 text-slate-500 hover:bg-slate-100 rounded" href="#">
<span class="material-symbols-outlined text-[20px]">settings</span>
<span>Pengaturan</span>
</a>
<a class="flex items-center gap-3 px-4 py-2 text-slate-500 hover:bg-slate-100 rounded" href="#">
<span class="material-symbols-outlined text-[20px]">contact_support</span>
<span>Bantuan</span>
</a>
</div>
</aside>
<!-- Main Content -->
<main class="ml-64 mt-14 p-6 overflow-x-hidden">
<div class="max-w-7xl mx-auto space-y-6">
<!-- Header Section: Form Fields -->
<div class="grid grid-cols-12 gap-6">
<!-- Receipt Metadata -->
<div class="col-span-8 bg-white border border-outline-variant p-5 shadow-sm rounded">
<div class="flex items-center justify-between mb-6">
<h3 class="font-h2 text-h2 text-primary flex items-center gap-2">
<span class="material-symbols-outlined">edit_document</span>
Informasi Dasar
</h3>
<span class="text-label-caps font-label-caps px-2 py-0.5 bg-slate-100 text-slate-600 rounded">DRAFT</span>
</div>
<div class="grid grid-cols-2 gap-x-6 gap-y-4">
<div>
<label class="block font-label-caps text-label-caps text-outline mb-1">NO. PENERIMAAN (AUTO)</label>
<input class="w-full bg-surface-container-low border-none font-table-data text-table-data py-2 px-3 rounded text-on-surface-variant cursor-not-allowed" readonly="" type="text" value="GRN/2023/10/0421"/>
</div>
<div>
<label class="block font-label-caps text-label-caps text-outline mb-1">REFERENSI PEMBELIAN</label>
<div class="relative">
<select class="w-full border-outline border focus:ring-2 focus:ring-primary-container font-table-data text-table-data py-2 px-3 rounded appearance-none cursor-pointer">
<option>PO-2023-WB-098 (Premium Walet Group)</option>
<option>PO-2023-WB-102 (Sumatra Nest Co)</option>
<option>PO-2023-WB-105 (Kalimantan Swiftlet Assoc)</option>
</select>
<span class="material-symbols-outlined absolute right-2 top-2 text-slate-400 pointer-events-none">search</span>
</div>
</div>
<div>
<label class="block font-label-caps text-label-caps text-outline mb-1">PEMASOK</label>
<input class="w-full bg-surface-container-low border-none font-table-data text-table-data py-2 px-3 rounded text-on-surface-variant cursor-not-allowed" readonly="" type="text" value="Premium Walet Group Ltd"/>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block font-label-caps text-label-caps text-outline mb-1">TANGGAL TERIMA</label>
<input class="w-full border-outline border focus:ring-2 focus:ring-primary-container font-table-data text-table-data py-2 px-3 rounded" type="date" value="2023-10-27"/>
</div>
<div>
<label class="block font-label-caps text-label-caps text-outline mb-1">NAMA PENERIMA</label>
<input class="w-full border-outline border focus:ring-2 focus:ring-primary-container font-table-data text-table-data py-2 px-3 rounded" placeholder="Masukkan nama..." type="text"/>
</div>
</div>
</div>
</div>
<!-- Supplier Bank Info -->
<div class="col-span-4 bg-white border border-outline-variant p-5 shadow-sm rounded flex flex-col">
<h3 class="font-h2 text-h2 text-primary flex items-center gap-2 mb-4">
<span class="material-symbols-outlined">account_balance</span>
Info Pembayaran Pemasok
</h3>
<div class="space-y-3 flex-1">
<div class="p-3 bg-secondary-container rounded-sm border border-blue-100">
<label class="block font-label-caps text-label-caps text-on-secondary-fixed-variant mb-0.5">NAMA BANK</label>
<div class="font-table-data text-table-data text-on-secondary-container">BCA International - Central Branch</div>
</div>
<div class="p-3 bg-secondary-container rounded-sm border border-blue-100">
<label class="block font-label-caps text-label-caps text-on-secondary-fixed-variant mb-0.5">NOMOR REKENING</label>
<div class="font-table-data text-table-data text-on-secondary-container">8830-441-2291</div>
</div>
<div class="p-3 bg-secondary-container rounded-sm border border-blue-100">
<label class="block font-label-caps text-label-caps text-on-secondary-fixed-variant mb-0.5">PEMILIK REKENING</label>
<div class="font-table-data text-table-data text-on-secondary-container">PREMIUM WALET GROUP LTD</div>
</div>
</div>
</div>
</div>
<!-- Lines Table -->
<div class="bg-white border border-outline-variant shadow-sm rounded overflow-hidden">
<div class="px-5 py-4 border-b border-outline-variant flex justify-between items-center bg-surface-container-lowest">
<h3 class="font-h2 text-h2 text-on-surface flex items-center gap-2">
<span class="material-symbols-outlined text-primary">list_alt</span>
Item Baris Inventaris
</h3>
<div class="flex gap-4">
<div class="flex items-center gap-2 px-3 py-1 bg-surface-container-high rounded-full">
<span class="text-label-caps font-label-caps text-outline">DIPESAN:</span>
<span class="font-display-lot text-[14px] text-on-surface">1,250.00 kg</span>
</div>
<div class="flex items-center gap-2 px-3 py-1 bg-green-50 rounded-full border border-green-200">
<span class="text-label-caps font-label-caps text-green-700">DISETUJUI:</span>
<span class="font-display-lot text-[14px] text-green-800">1,180.00 kg</span>
</div>
</div>
</div>
<div class="overflow-x-auto compact-scrollbar">
<table class="w-full text-left border-collapse">
<thead>
<tr class="bg-surface-container-low border-b border-outline-variant">
<th class="px-4 py-3 font-label-caps text-label-caps text-outline">DESKRIPSI ITEM</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline text-right">DIPESAN</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline w-24">DITERIMA</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline w-24">DISETUJUI</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline w-24">DITOLAK</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline text-right">BIAYA SATUAN</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline">GUDANG</th>
<th class="px-4 py-3 font-label-caps text-label-caps text-outline">LOKASI</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant">
<!-- Row 1 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-2">
<div class="font-table-data text-table-data">Grade 3A - Super White</div>
<div class="text-[11px] text-slate-400">LOT-REF: SW-001</div>
</td>
<td class="px-4 py-2 text-right font-table-data text-table-data">500.00 kg</td>
<td class="px-4 py-2">
<input class="w-full text-right border-outline border focus:ring-1 focus:ring-primary-container font-table-data text-table-data py-1 px-2 rounded" type="number" value="500.00"/>
</td>
<td class="px-4 py-2">
<input class="w-full text-right border-green-300 border focus:ring-1 focus:ring-green-500 font-table-data text-table-data py-1 px-2 rounded bg-green-50" type="number" value="480.00"/>
</td>
<td class="px-4 py-2">
<input class="w-full text-right border-error border focus:ring-1 focus:ring-error font-table-data text-table-data py-1 px-2 rounded bg-error-container text-on-error-container" type="number" value="20.00"/>
</td>
<td class="px-4 py-2 text-right font-table-data text-table-data">$1,200.00</td>
<td class="px-4 py-2">
<select class="w-full border-outline border text-[12px] py-1 px-2 rounded">
<option>Main WH - Zone A</option>
<option>Cold Storage 1</option>
</select>
</td>
<td class="px-4 py-2">
<select class="w-full border-outline border text-[12px] py-1 px-2 rounded">
<option>Rack A-01</option>
<option>Rack A-02</option>
</select>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-4 py-2">
<div class="font-table-data text-table-data">Grade 2B - Light Yellow</div>
<div class="text-[11px] text-slate-400">LOT-REF: LY-004</div>
</td>
<td class="px-4 py-2 text-right font-table-data text-table-data">750.00 kg</td>
<td class="px-4 py-2">
<input class="w-full text-right border-outline border focus:ring-1 focus:ring-primary-container font-table-data text-table-data py-1 px-2 rounded" type="number" value="750.00"/>
</td>
<td class="px-4 py-2">
<input class="w-full text-right border-green-300 border focus:ring-1 focus:ring-green-500 font-table-data text-table-data py-1 px-2 rounded bg-green-50" type="number" value="700.00"/>
</td>
<td class="px-4 py-2">
<input class="w-full text-right border-error border focus:ring-1 focus:ring-error font-table-data text-table-data py-1 px-2 rounded bg-error-container text-on-error-container" type="number" value="50.00"/>
</td>
<td class="px-4 py-2 text-right font-table-data text-table-data">$850.00</td>
<td class="px-4 py-2">
<select class="w-full border-outline border text-[12px] py-1 px-2 rounded">
<option>Main WH - Zone B</option>
<option>Cold Storage 2</option>
</select>
</td>
<td class="px-4 py-2">
<select class="w-full border-outline border text-[12px] py-1 px-2 rounded">
<option>Rack B-14</option>
<option>Rack B-15</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Validation Summary Bar -->
<div class="bg-surface-container-low px-5 py-3 border-t border-outline-variant flex items-center justify-between">
<div class="flex items-center gap-2 text-on-error-container font-body-sm text-body-sm">
<span class="material-symbols-outlined text-[18px]">warning</span>
<span>Validasi: Item Ditolak + Disetujui Baris 1 (500) sama dengan Diterima (500). Sistem OK.</span>
</div>
<div class="text-right">
<span class="text-label-caps font-label-caps text-outline mr-2">TOTAL ITEM:</span>
<span class="font-h2 text-h2 text-primary">2 Item</span>
</div>
</div>
</div>
<!-- Footer Actions -->
<div class="flex justify-between items-center bg-white p-4 border border-outline-variant rounded shadow-sm">
<div class="flex items-center gap-4">
<button class="px-4 py-2 text-slate-600 font-semibold hover:bg-slate-50 transition-colors flex items-center gap-2">
<span class="material-symbols-outlined">delete_outline</span>
Hapus
</button>
<button class="px-4 py-2 border border-primary text-primary font-semibold hover:bg-teal-50 transition-colors flex items-center gap-2 rounded">
<span class="material-symbols-outlined">save</span>
Simpan Draft
</button>
</div>
<div class="flex items-center gap-4">
<div class="text-right mr-4">
<div class="text-label-caps font-label-caps text-outline">ESTIMASI LOT</div>
<div class="font-h1 text-h1 text-primary">12 Lot Baru</div>
</div>
<button class="bg-primary-container text-white px-8 py-2.5 rounded font-bold shadow-lg hover:brightness-110 active:scale-[0.98] transition-all flex items-center gap-3">
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">inventory_2</span>
Selesaikan &amp; Buat Lot
</button>
</div>
</div>
</div>
</main>
<!-- Contextual Info Cards (Bento Style) -->
<section class="ml-64 px-6 pb-12">
<div class="max-w-7xl mx-auto grid grid-cols-3 gap-6">
<div class="bg-white p-4 border border-outline-variant rounded shadow-sm">
<div class="flex items-start justify-between">
<div>
<div class="text-label-caps font-label-caps text-outline mb-1">TREN KUALITAS</div>
<div class="font-h1 text-h1">94.4% Hasil</div>
</div>
<div class="p-2 bg-green-50 text-green-600 rounded">
<span class="material-symbols-outlined">trending_up</span>
</div>
</div>
<div class="mt-4 h-1 w-full bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-green-500" style="width: 94%"></div>
</div>
<div class="mt-2 text-[11px] text-slate-500">Rata-rata tingkat penerimaan dari pemasok ini kuartal ini.</div>
</div>
<div class="bg-white p-4 border border-outline-variant rounded shadow-sm flex items-center gap-4">
<div class="w-16 h-16 bg-slate-100 rounded flex items-center justify-center">
<span class="material-symbols-outlined text-3xl text-slate-400">qr_code_2</span>
</div>
<div>
<div class="text-label-caps font-label-caps text-outline mb-0.5">PELABELAN OTOMATIS</div>
<div class="font-h2 text-h2">12 Label Siap</div>
<div class="text-[11px] text-primary-container font-semibold mt-1 flex items-center gap-1">
<span class="material-symbols-outlined text-[14px]">print</span>
Antrian cetak terhubung
</div>
</div>
</div>
<div class="relative overflow-hidden bg-primary-container rounded shadow-sm flex flex-col justify-end p-4 group">
<img class="absolute inset-0 w-full h-full object-cover opacity-20 transition-transform duration-700 group-hover:scale-110" data-alt="Close up of high quality edible bird nests in a clean warehouse environment with industrial lighting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCyVXCingJDg1yF9nwNVeOKPutQEpxFvnJolhNKNMHvPBeAduiLchlPZgI4l_hmj9SKmEwm0cxM83I3lY2YK9bu1ewPJkV9AIMZRCRgpJaGSO0dIXAKFZrGDk3a2VP8MHkBBJF2aWBOB7ptBHRJFmt9PxFvLxqjZO82TmxoaGuuNFPRuBzTVMKy_75RfNtqJvCrr5aAbD58uB-ZzLDy0lNPD9X0mlMP0Xu8lwMLjKSruKg9E-6X9cWsosENbgRZA3jQt27EABcC9w"/>
<div class="relative z-10">
<div class="text-white/70 text-label-caps font-label-caps mb-1">TIP OPERASIONAL</div>
<div class="text-white font-h2 text-h2">Verifikasi Tingkat Kelembaban</div>
<p class="text-white/80 text-[11px] mt-1 leading-relaxed">Pastikan semua grade Super White berada dalam rentang kelembaban 12-14% sebelum finalisasi rak penyimpanan.</p>
</div>
</div>
</div>
</section>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

View File

@ -0,0 +1,350 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary": "#4e6073",
"on-primary-fixed": "#001f23",
"primary-fixed": "#aaeef8",
"outline": "#6f797a",
"background": "#f8fafa",
"on-tertiary-fixed-variant": "#6b3a17",
"on-primary-fixed-variant": "#004f57",
"error-container": "#ffdad6",
"tertiary": "#60320f",
"on-secondary-container": "#526478",
"surface-container": "#eceeee",
"on-tertiary": "#ffffff",
"secondary-container": "#cfe2f9",
"on-error-container": "#93000a",
"inverse-primary": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"surface-tint": "#1d6871",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"inverse-surface": "#2e3131",
"on-secondary-fixed": "#091d2e",
"on-surface": "#191c1d",
"tertiary-fixed": "#ffdbc7",
"surface": "#f8fafa",
"primary-container": "#0d5e67",
"surface-container-lowest": "#ffffff",
"outline-variant": "#bfc8ca",
"on-surface-variant": "#3f484a",
"surface-container-highest": "#e1e3e3",
"inverse-on-surface": "#eff1f1",
"secondary-fixed-dim": "#b5c8df",
"surface-container-high": "#e6e8e9",
"surface-container-low": "#f2f4f4",
"on-tertiary-container": "#ffbb91",
"on-tertiary-fixed": "#311300",
"error": "#ba1a1a",
"surface-bright": "#f8fafa",
"primary": "#00454c",
"primary-fixed-dim": "#8ed1db",
"on-error": "#ffffff",
"surface-variant": "#e1e3e3",
"on-background": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"on-primary": "#ffffff",
"surface-dim": "#d8dadb",
"on-secondary": "#ffffff",
"tertiary-container": "#7c4824"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"compact-padding": "8px",
"row-height-sm": "32px",
"row-height-md": "48px",
"container-margin": "24px",
"gutter": "16px"
},
"fontFamily": {
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"h2": ["Inter"],
"label-caps": ["Inter"]
},
"fontSize": {
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
.scanner-overlay {
background: linear-gradient(0deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.2) 50%, rgba(0,0,0,0.6) 100%);
}
.scan-frame {
box-shadow: 0 0 0 2000px rgba(0, 0, 0, 0.5);
}
</style>
</head>
<body class="bg-background font-body-base text-on-background selection:bg-primary-fixed selection:text-on-primary-fixed">
<!-- Sidebar Navigation -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 bg-slate-50 flex flex-col py-4 z-50">
<div class="px-6 mb-8">
<h2 class="text-teal-900 font-black font-h1">Walet Operations</h2>
<p class="text-[11px] text-slate-500 font-medium">V1.0.4-Operational</p>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 hover:text-teal-600 rounded-lg transition-all duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
<span>Dashboard</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 hover:text-teal-600 rounded-lg transition-all duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
<span>Inventory Stock</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 hover:text-teal-600 rounded-lg transition-all duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="account_tree">account_tree</span>
<span>Traceability Logs</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 hover:text-teal-600 rounded-lg transition-all duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="database">database</span>
<span>Master Data</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 bg-teal-50 text-teal-700 border-r-4 border-teal-600 rounded-l-lg transition-all duration-150 ease-in-out font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="qr_code_scanner">qr_code_scanner</span>
<span>Barcode Scanner</span>
</a>
</nav>
<div class="px-3 pt-4 border-t border-slate-200">
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg transition-all font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
<span>Support</span>
</a>
<a class="flex items-center gap-3 px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg transition-all font-inter text-[13px] font-medium" href="#">
<span class="material-symbols-outlined" data-icon="logout">logout</span>
<span>Sign Out</span>
</a>
</div>
</aside>
<!-- Top AppBar -->
<header class="fixed top-0 right-0 left-64 h-14 bg-white border-b border-slate-200 flex items-center justify-between px-6 z-40 shadow-sm">
<div class="flex items-center gap-4">
<span class="text-lg font-bold tracking-tight text-teal-800 font-h1">SarangTrace ERP</span>
</div>
<div class="flex items-center gap-4">
<button class="p-2 text-slate-500 hover:bg-slate-50 rounded-full transition-colors active:opacity-80">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
</button>
<button class="p-2 text-slate-500 hover:bg-slate-50 rounded-full transition-colors active:opacity-80">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
</button>
<div class="h-8 w-8 rounded-full bg-slate-200 overflow-hidden border border-slate-200">
<img alt="User Profile" class="w-full h-full object-cover" data-alt="professional portrait of a warehouse supervisor in a clean industrial setting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuARVXYHFOGloaGEc95MlVgvd7qA1tOCFpdByU9ijmuXuO4f_-Vq09xJtx1idx0paPaCVA5n-kv90SlftFo_PjYc6bTtLwfRnhRb8U-dCmnYxC8L76_oEXJsE50ApRL8LR90UDpGD0ECsGAYO-DjFKe_-UC1h8VGy09pyybilbKuGt4RKuHTAqSUXyMyq7iBXnmETuw4qDuCWTz8sFnwKq6BXJUeebaWs5ERKCBCm4msGCve0OfxHw7t_ORGEiNrh_ZWuBpRDFGvcQ"/>
</div>
</div>
</header>
<!-- Main Content Canvas -->
<main class="ml-64 pt-14 min-h-screen bg-surface">
<div class="p-container-margin">
<!-- Header Section -->
<div class="mb-6 flex justify-between items-end">
<div>
<h1 class="font-h1 text-h1 text-on-surface mb-1">Scan Lookup</h1>
<p class="font-body-sm text-body-sm text-on-surface-variant">Pindai kode QR atau masukkan ID Lot secara manual untuk melihat detail operasional.</p>
</div>
<div class="flex gap-2">
<span class="px-3 py-1 bg-teal-50 text-teal-700 text-label-caps rounded-full border border-teal-200">STATUS: OPERASIONAL</span>
</div>
</div>
<!-- Scanner & Input Section -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Left: Scanner View -->
<div class="col-span-12 lg:col-span-7">
<div class="bg-black rounded-xl overflow-hidden relative aspect-video shadow-sm border border-outline-variant">
<img alt="Scanner View" class="w-full h-full object-cover opacity-60" data-alt="POV through a smartphone camera scanning a QR code on a wooden crate in a bright warehouse" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAOCNtRY7V_VboiKG3-z1LGtxYZr4XaDszqWPa6IIGbhfHdNlGehWcCtNfwVrQzsf2s8rEfxSm6AHWW0kj0hq4jCT47h5lRgP15u87Sr6-rxmYH27xCXeCqlaRLmiKLlDa9MxDSlnqajPl9dqtYT0Uk-NZJnk93eH1N8S7Q6ofLLj8K-T8iw078jTO3sOMQYb40oHlbtCL8jr9cmfqRCyHf_oJqSmpwOQo5YIMqvVCqeHvcdSx_P3BAVnsui7HTj3JgamlUsve-nQ"/>
<!-- Scanning UI Overlays -->
<div class="absolute inset-0 flex flex-col items-center justify-center">
<div class="w-64 h-64 border-2 border-teal-400 rounded-lg scan-frame relative">
<div class="absolute inset-x-0 top-0 h-0.5 bg-teal-400 shadow-[0_0_15px_rgba(45,212,191,0.8)] animate-pulse"></div>
<!-- Corner Markers -->
<div class="absolute -top-1 -left-1 w-6 h-6 border-t-4 border-l-4 border-teal-500"></div>
<div class="absolute -top-1 -right-1 w-6 h-6 border-t-4 border-r-4 border-teal-500"></div>
<div class="absolute -bottom-1 -left-1 w-6 h-6 border-b-4 border-l-4 border-teal-500"></div>
<div class="absolute -bottom-1 -right-1 w-6 h-6 border-b-4 border-r-4 border-teal-500"></div>
</div>
<p class="mt-6 text-white font-body-base bg-black/40 backdrop-blur-md px-4 py-2 rounded-full">Posisikan Kode di Tengah Bingkai</p>
</div>
<!-- Scanner Controls -->
<div class="absolute bottom-4 right-4 flex flex-col gap-2">
<button class="w-10 h-10 bg-white/10 hover:bg-white/20 backdrop-blur-md text-white rounded-full flex items-center justify-center transition-all">
<span class="material-symbols-outlined" data-icon="flashlight_on">flashlight_on</span>
</button>
<button class="w-10 h-10 bg-white/10 hover:bg-white/20 backdrop-blur-md text-white rounded-full flex items-center justify-center transition-all">
<span class="material-symbols-outlined" data-icon="zoom_in">zoom_in</span>
</button>
</div>
</div>
<!-- Manual Input Field -->
<div class="mt-4 bg-white p-4 rounded-xl border border-slate-200 shadow-sm flex items-center gap-4">
<div class="flex-1 relative">
<input class="w-full pl-10 pr-4 py-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-teal-600 focus:border-transparent outline-none font-body-base" placeholder="Masukkan ID Lot Manual (Contoh: SBW-2023-10-001)" type="text"/>
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400" data-icon="keyboard">keyboard</span>
</div>
<button class="px-6 py-3 bg-primary text-white font-h2 rounded-lg hover:bg-teal-900 transition-colors flex items-center gap-2">
<span class="material-symbols-outlined" data-icon="search">search</span>
Cari
</button>
</div>
</div>
<!-- Right: Results Panel -->
<div class="col-span-12 lg:col-span-5 flex flex-col gap-gutter">
<!-- Result Card -->
<div class="bg-white rounded-xl border border-slate-200 shadow-sm overflow-hidden flex flex-col">
<div class="p-4 border-b border-slate-100 flex justify-between items-center bg-slate-50/50">
<span class="text-label-caps text-slate-500 uppercase">Hasil Pemindaian Terakhir</span>
<span class="text-label-caps text-teal-600 bg-teal-50 px-2 py-0.5 rounded">TERDETEKSI</span>
</div>
<div class="p-6 flex-1">
<div class="flex items-start justify-between mb-6">
<div>
<h3 class="font-display-lot text-display-lot text-teal-900 mb-1">SBW-LOT-4412</h3>
<p class="font-body-sm text-body-sm text-slate-500">Kategori: Sarang Putih (Super)</p>
</div>
<div class="text-right">
<div class="text-label-caps text-slate-400 mb-1">STATUS LOT</div>
<span class="px-3 py-1 bg-green-50 text-green-700 text-label-caps rounded-full border border-green-100 font-bold">READY TO EXPORT</span>
</div>
</div>
<!-- Data Grid -->
<div class="grid grid-cols-2 gap-y-6 gap-x-4 mb-8">
<div>
<label class="text-label-caps text-slate-400 block mb-1">GRADE PRODUK</label>
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-teal-600 text-lg" data-icon="verified">verified</span>
<span class="font-h2 text-h2 text-on-surface">AAA+ (Premium)</span>
</div>
</div>
<div>
<label class="text-label-caps text-slate-400 block mb-1">BERAT BERSIH</label>
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-teal-600 text-lg" data-icon="weight">weight</span>
<span class="font-h2 text-h2 text-on-surface">12.450 kg</span>
</div>
</div>
<div>
<label class="text-label-caps text-slate-400 block mb-1">LOKASI GUDANG</label>
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-teal-600 text-lg" data-icon="location_on">location_on</span>
<span class="font-h2 text-h2 text-on-surface">Sector B, Rack 42</span>
</div>
</div>
<div>
<label class="text-label-caps text-slate-400 block mb-1">KADAR AIR</label>
<div class="flex items-center gap-2">
<span class="material-symbols-outlined text-teal-600 text-lg" data-icon="humidity_low">humidity_low</span>
<span class="font-h2 text-h2 text-on-surface">8.4%</span>
</div>
</div>
</div>
<!-- Progress Lifecycle -->
<div class="mb-8">
<label class="text-label-caps text-slate-400 block mb-3 uppercase">Tahap Operasional</label>
<div class="relative flex items-center justify-between">
<div class="absolute left-0 top-1/2 -translate-y-1/2 w-full h-0.5 bg-slate-200"></div>
<div class="absolute left-0 top-1/2 -translate-y-1/2 w-3/4 h-0.5 bg-teal-600"></div>
<div class="relative z-10 w-6 h-6 rounded-full bg-teal-600 border-4 border-white shadow-sm flex items-center justify-center">
<span class="material-symbols-outlined text-[10px] text-white" data-icon="check" data-weight="fill">check</span>
</div>
<div class="relative z-10 w-6 h-6 rounded-full bg-teal-600 border-4 border-white shadow-sm flex items-center justify-center">
<span class="material-symbols-outlined text-[10px] text-white" data-icon="check" data-weight="fill">check</span>
</div>
<div class="relative z-10 w-6 h-6 rounded-full bg-teal-600 border-4 border-white shadow-sm flex items-center justify-center">
<span class="material-symbols-outlined text-[10px] text-white" data-icon="check" data-weight="fill">check</span>
</div>
<div class="relative z-10 w-6 h-6 rounded-full bg-slate-200 border-4 border-white shadow-sm"></div>
</div>
<div class="flex justify-between mt-2">
<span class="text-[10px] font-bold text-teal-800">BAHAN BAKU</span>
<span class="text-[10px] font-bold text-teal-800">SORTASI</span>
<span class="text-[10px] font-bold text-teal-800">PACKING</span>
<span class="text-[10px] font-bold text-slate-400">PENGIRIMAN</span>
</div>
</div>
<!-- Action Buttons -->
<div class="grid grid-cols-2 gap-3">
<button class="col-span-2 py-3 bg-primary text-white font-h2 rounded-lg hover:bg-teal-900 transition-colors flex items-center justify-center gap-2">
<span class="material-symbols-outlined" data-icon="visibility">visibility</span>
Lihat Detail
</button>
<button class="py-3 border border-teal-600 text-teal-700 font-h2 rounded-lg hover:bg-teal-50 transition-colors flex items-center justify-center gap-2">
<span class="material-symbols-outlined" data-icon="print">print</span>
Print Label
</button>
<button class="py-3 border border-teal-600 text-teal-700 font-h2 rounded-lg hover:bg-teal-50 transition-colors flex items-center justify-center gap-2">
<span class="material-symbols-outlined" data-icon="move_down">move_down</span>
Pindah Lokasi
</button>
</div>
</div>
</div>
<!-- History / Recent Scans (Simplified Bento) -->
<div class="bg-white rounded-xl border border-slate-200 p-4 shadow-sm">
<div class="flex items-center justify-between mb-4">
<h4 class="font-h2 text-h2 text-teal-900">Scan Terakhir</h4>
<a class="text-body-sm text-teal-600 hover:underline" href="#">Lihat Semua</a>
</div>
<div class="space-y-3">
<div class="flex items-center gap-3 p-2 hover:bg-slate-50 rounded-lg cursor-pointer transition-colors border-l-2 border-transparent hover:border-teal-500">
<div class="w-10 h-10 rounded bg-slate-100 flex items-center justify-center">
<span class="material-symbols-outlined text-slate-500" data-icon="barcode">barcode</span>
</div>
<div class="flex-1">
<div class="text-table-data text-on-surface">SBW-LOT-3990</div>
<div class="text-[11px] text-slate-400 uppercase">2 menit yang lalu • Raw Material</div>
</div>
<span class="material-symbols-outlined text-slate-300" data-icon="chevron_right">chevron_right</span>
</div>
<div class="flex items-center gap-3 p-2 hover:bg-slate-50 rounded-lg cursor-pointer transition-colors border-l-2 border-transparent hover:border-teal-500">
<div class="w-10 h-10 rounded bg-slate-100 flex items-center justify-center">
<span class="material-symbols-outlined text-slate-500" data-icon="qr_code">qr_code</span>
</div>
<div class="flex-1">
<div class="text-table-data text-on-surface">SBW-LOT-2281</div>
<div class="text-[11px] text-slate-400 uppercase">15 menit yang lalu • Sorting</div>
</div>
<span class="material-symbols-outlined text-slate-300" data-icon="chevron_right">chevron_right</span>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- FAB for Quick Actions -->
<button class="fixed bottom-8 right-8 w-14 h-14 bg-primary text-white rounded-full shadow-lg flex items-center justify-center hover:scale-105 transition-transform active:scale-95 z-50">
<span class="material-symbols-outlined" data-icon="add" style="font-variation-settings: 'wght' 600;">add</span>
</button>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 KiB

View File

@ -0,0 +1,434 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"secondary-container": "#cfe2f9",
"on-primary-container": "#92d5df",
"on-secondary-fixed-variant": "#36485b",
"on-secondary-fixed": "#091d2e",
"on-background": "#191c1d",
"outline": "#6f797a",
"on-primary": "#ffffff",
"inverse-on-surface": "#eff1f1",
"on-secondary": "#ffffff",
"error-container": "#ffdad6",
"secondary": "#4e6073",
"primary": "#00454c",
"on-tertiary-container": "#ffbb91",
"inverse-primary": "#8ed1db",
"on-primary-fixed": "#001f23",
"secondary-fixed-dim": "#b5c8df",
"on-surface": "#191c1d",
"tertiary-container": "#7c4824",
"on-tertiary-fixed": "#311300",
"surface-variant": "#e1e3e3",
"surface-bright": "#f8fafa",
"on-surface-variant": "#3f484a",
"surface": "#f8fafa",
"surface-container": "#eceeee",
"surface-container-low": "#f2f4f4",
"tertiary-fixed": "#ffdbc7",
"surface-container-high": "#e6e8e9",
"primary-fixed-dim": "#8ed1db",
"secondary-fixed": "#d1e4fb",
"on-error": "#ffffff",
"background": "#f8fafa",
"surface-dim": "#d8dadb",
"surface-tint": "#1d6871",
"outline-variant": "#bfc8ca",
"on-error-container": "#93000a",
"surface-container-highest": "#e1e3e3",
"on-primary-fixed-variant": "#004f57",
"error": "#ba1a1a",
"primary-fixed": "#aaeef8",
"on-tertiary": "#ffffff",
"inverse-surface": "#2e3131",
"tertiary": "#60320f",
"on-tertiary-fixed-variant": "#6b3a17",
"surface-container-lowest": "#ffffff",
"on-secondary-container": "#526478",
"tertiary-fixed-dim": "#feb78a",
"primary-container": "#0d5e67"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"container-margin": "24px",
"row-height-sm": "32px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-md": "48px"
},
"fontFamily": {
"body-sm": ["Inter"],
"body-base": ["Inter"],
"h1": ["Inter"],
"display-lot": ["Inter"],
"table-data": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"]
},
"fontSize": {
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
display: inline-block;
line-height: 1;
vertical-align: middle;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-background text-on-background antialiased flex">
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 bg-slate-50 flex flex-col py-4 z-50">
<div class="px-6 mb-8">
<div class="flex items-center gap-3">
<div class="w-8 h-8 bg-primary rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white text-lg">nest_eco</span>
</div>
<div>
<h2 class="text-teal-900 font-black text-body-base leading-tight">Sarang Ops</h2>
<p class="text-[11px] text-slate-500 font-medium">Processing Plant A</p>
</div>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">dashboard</span>
<span class="text-[13px] font-medium">Dashboard</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 bg-white text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">content_cut</span>
<span class="text-[13px] font-bold">Sortasi</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">sell</span>
<span class="text-[13px] font-medium">Penjualan</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">assignment_turned_in</span>
<span class="text-[13px] font-medium">Alokasi Lot</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">inventory</span>
<span class="text-[13px] font-medium">Picking</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">inventory_2</span>
<span class="text-[13px] font-medium">Inventory</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all duration-150">
<span class="material-symbols-outlined">monitoring</span>
<span class="text-[13px] font-medium">Analytics</span>
</div>
</nav>
<div class="mt-auto px-3 pt-4 border-t border-slate-200">
<button class="w-full bg-[#0D5E67] text-white py-2 px-4 rounded font-bold text-[13px] flex items-center justify-center gap-2 mb-4 hover:opacity-90 active:scale-[0.98] transition-all">
<span class="material-symbols-outlined text-sm">add_circle</span>
New Lot Scan
</button>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all">
<span class="material-symbols-outlined">settings</span>
<span class="text-[13px] font-medium">Settings</span>
</div>
<div class="flex items-center gap-3 px-3 py-2 text-slate-500 hover:bg-slate-100 rounded cursor-pointer transition-all">
<span class="material-symbols-outlined">contact_support</span>
<span class="text-[13px] font-medium">Support</span>
</div>
</div>
</aside>
<main class="flex-1 ml-64 min-h-screen">
<!-- TopNavBar -->
<header class="h-14 px-6 w-full flex justify-between items-center bg-white border-b border-slate-200 shadow-sm sticky top-0 z-40">
<div class="flex items-center gap-4">
<h1 class="text-lg font-bold text-[#0D5E67] tracking-tight">SwiftLot Walet</h1>
<div class="h-6 w-px bg-slate-200"></div>
<div class="text-slate-600 text-sm font-medium flex items-center gap-1">
<span class="material-symbols-outlined text-sm">navigate_next</span>
Sesi Sortasi Baru
</div>
</div>
<div class="flex items-center gap-4">
<div class="flex items-center bg-slate-100 px-3 py-1.5 rounded-full">
<span class="material-symbols-outlined text-slate-400 text-lg mr-2">search</span>
<input class="bg-transparent border-none focus:ring-0 text-sm w-48 text-slate-600" placeholder="Cari Lot atau Petugas..." type="text"/>
</div>
<button class="text-slate-600 hover:bg-slate-50 p-2 rounded-full transition-colors cursor-pointer active:opacity-80">
<span class="material-symbols-outlined">notifications</span>
</button>
<button class="text-slate-600 hover:bg-slate-50 p-2 rounded-full transition-colors cursor-pointer active:opacity-80">
<span class="material-symbols-outlined">help_outline</span>
</button>
<div class="w-8 h-8 rounded-full bg-slate-200 overflow-hidden border border-slate-300">
<img alt="User profile" class="w-full h-full object-cover" data-alt="professional male portrait with corporate background soft lighting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuDdmfrvD8VJX200RHkT2GTGLVeUqP6iY0vV_WxX_0LLnICGQeHTqKlEuGG2VEzxAvSeThOhsTvyLE1_KX3n8LRV2NfKuyM5HxDVl_6H-0Cm5NTVzZoGmoElwcbziGgsDt_ZdlUzusIKnxs86JDY3kmu08lbHKm0XHObdqqUyOh2XfN-CehZmqxX5OeDLlJ-ZxAeWch2rugtFDOmJW_CXQum8LNu7BTE17ImQtIW1QIoVoiEzjK3A3XBsU_bpkWDhNaUra5RMsgOqQ"/>
</div>
</div>
</header>
<!-- Main Content Area -->
<div class="p-container-margin max-w-7xl mx-auto space-y-6">
<!-- Header Section -->
<div class="flex justify-between items-end">
<div>
<h1 class="font-h1 text-h1 text-primary">Sesi Sortasi Baru</h1>
<p class="font-body-sm text-body-sm text-secondary">Pisahkan material lot sumber menjadi grade hasil akhir.</p>
</div>
<div class="flex items-center gap-3">
<div class="text-right">
<p class="font-label-caps text-label-caps text-secondary uppercase">OPERATOR</p>
<p class="font-table-data text-table-data">Budi Santoso</p>
</div>
<div class="h-8 w-px bg-slate-200"></div>
<div class="text-right">
<p class="font-label-caps text-label-caps text-secondary uppercase">ID SESI</p>
<p class="font-table-data text-table-data">#SORT-20231027-001</p>
</div>
</div>
</div>
<!-- Configuration Grid -->
<div class="grid grid-cols-12 gap-gutter">
<!-- Source Lot Card (3 Cols) -->
<div class="col-span-12 lg:col-span-4 bg-white p-6 border border-slate-200 rounded-xl shadow-sm">
<h2 class="font-h2 text-h2 mb-4 flex items-center gap-2">
<span class="material-symbols-outlined text-primary">input</span>
Input Material
</h2>
<div class="space-y-4">
<div>
<label class="font-label-caps text-label-caps text-secondary mb-1.5 block">LOT SUMBER (SOURCE)</label>
<div class="relative">
<select class="w-full border-slate-200 rounded focus:ring-2 focus:ring-primary focus:border-primary text-body-base font-body-base appearance-none bg-slate-50">
<option>RAW-JKT-102293 (Stock: 12.50 kg)</option>
<option>RAW-MDN-882102 (Stock: 5.20 kg)</option>
<option>RAW-SBY-330192 (Stock: 22.15 kg)</option>
</select>
<span class="material-symbols-outlined absolute right-3 top-2.5 text-slate-400 pointer-events-none">unfold_more</span>
</div>
</div>
<div>
<label class="font-label-caps text-label-caps text-secondary mb-1.5 block">KUANTITAS INPUT (KG)</label>
<div class="relative">
<input class="w-full border-slate-200 rounded focus:ring-2 focus:ring-primary focus:border-primary text-display-lot font-display-lot bg-white pr-12" step="0.01" type="number" value="10.00"/>
<span class="absolute right-4 top-1/2 -translate-y-1/2 text-slate-400 font-bold text-sm">KG</span>
</div>
</div>
<div class="p-3 bg-slate-50 border border-slate-100 rounded flex items-start gap-3">
<span class="material-symbols-outlined text-teal-600 mt-0.5">info</span>
<p class="text-[12px] text-slate-600 leading-relaxed">
Pastikan lot sumber sudah melalui tahap QC awal. Berat input akan dikurangi langsung dari stok gudang raw material.
</p>
</div>
</div>
</div>
<!-- Sorting Result Table (9 Cols) -->
<div class="col-span-12 lg:col-span-8 bg-white border border-slate-200 rounded-xl shadow-sm overflow-hidden flex flex-col">
<div class="px-6 py-4 border-b border-slate-100 flex justify-between items-center">
<h2 class="font-h2 text-h2 flex items-center gap-2">
<span class="material-symbols-outlined text-primary">splitscreen</span>
Hasil Pecahan (Output)
</h2>
<button class="text-primary font-bold text-[13px] flex items-center gap-1 hover:bg-teal-50 px-3 py-1.5 rounded transition-colors">
<span class="material-symbols-outlined text-sm">add</span>
Tambah Baris
</button>
</div>
<div class="flex-1 overflow-x-auto">
<table class="w-full text-left">
<thead class="bg-slate-50 border-b border-slate-100">
<tr>
<th class="px-6 py-3 font-label-caps text-label-caps text-secondary">JENIS ITEM</th>
<th class="px-6 py-3 font-label-caps text-label-caps text-secondary">GRADE HASIL</th>
<th class="px-12 py-3 font-label-caps text-label-caps text-secondary text-right">QTY (KG)</th>
<th class="px-6 py-3 font-label-caps text-label-caps text-secondary">CATATAN</th>
<th class="px-4 py-3"></th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-compact-padding">
<select class="w-full border-none focus:ring-0 text-table-data font-table-data bg-transparent">
<option>Mangkok (Bowl)</option>
<option>Sudut (Corner)</option>
<option>Patahan (Broken)</option>
</select>
</td>
<td class="px-6 py-compact-padding">
<select class="w-full border-none focus:ring-0 text-table-data font-table-data bg-transparent">
<option>Super AAA</option>
<option>Grade A</option>
<option>Grade B</option>
</select>
</td>
<td class="px-12 py-compact-padding">
<input class="w-full border-none focus:ring-0 text-table-data font-table-data text-right bg-transparent" step="0.01" type="number" value="4.50"/>
</td>
<td class="px-6 py-compact-padding">
<input class="w-full border-none focus:ring-0 text-[12px] bg-transparent" placeholder="Opsional..." type="text"/>
</td>
<td class="px-4 py-compact-padding text-right">
<button class="text-slate-300 hover:text-error transition-colors">
<span class="material-symbols-outlined text-lg">delete</span>
</button>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-compact-padding">
<select class="w-full border-none focus:ring-0 text-table-data font-table-data bg-transparent">
<option>Sudut (Corner)</option>
<option>Mangkok (Bowl)</option>
<option>Patahan (Broken)</option>
</select>
</td>
<td class="px-6 py-compact-padding">
<select class="w-full border-none focus:ring-0 text-table-data font-table-data bg-transparent">
<option>Grade A</option>
<option>Super AAA</option>
<option>Grade B</option>
</select>
</td>
<td class="px-12 py-compact-padding">
<input class="w-full border-none focus:ring-0 text-table-data font-table-data text-right bg-transparent" step="0.01" type="number" value="3.25"/>
</td>
<td class="px-6 py-compact-padding">
<input class="w-full border-none focus:ring-0 text-[12px] bg-transparent" placeholder="Opsional..." type="text"/>
</td>
<td class="px-4 py-compact-padding text-right">
<button class="text-slate-300 hover:text-error transition-colors">
<span class="material-symbols-outlined text-lg">delete</span>
</button>
</td>
</tr>
<tr class="hover:bg-slate-50 transition-colors">
<td class="px-6 py-compact-padding">
<select class="w-full border-none focus:ring-0 text-table-data font-table-data bg-transparent">
<option>Patahan (Broken)</option>
<option>Mangkok (Bowl)</option>
<option>Sudut (Corner)</option>
</select>
</td>
<td class="px-6 py-compact-padding">
<select class="w-full border-none focus:ring-0 text-table-data font-table-data bg-transparent">
<option>Standard</option>
<option>Grade A</option>
<option>Grade B</option>
</select>
</td>
<td class="px-12 py-compact-padding">
<input class="w-full border-none focus:ring-0 text-table-data font-table-data text-right bg-transparent" step="0.01" type="number" value="1.15"/>
</td>
<td class="px-6 py-compact-padding">
<input class="w-full border-none focus:ring-0 text-[12px] bg-transparent" placeholder="Opsional..." type="text"/>
</td>
<td class="px-4 py-compact-padding text-right">
<button class="text-slate-300 hover:text-error transition-colors">
<span class="material-symbols-outlined text-lg">delete</span>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Losses Section -->
<div class="p-6 bg-slate-50 border-t border-slate-100 grid grid-cols-1 md:grid-cols-3 gap-6">
<div>
<label class="font-label-caps text-label-caps text-secondary mb-1 block">REJECT (KG)</label>
<input class="w-full border-slate-200 rounded focus:ring-primary text-table-data font-table-data" step="0.01" type="number" value="0.25"/>
<p class="text-[11px] text-slate-500 mt-1">Material tidak layak proses</p>
</div>
<div>
<label class="font-label-caps text-label-caps text-secondary mb-1 block">SHRINKAGE / PENYUSUTAN (KG)</label>
<input class="w-full border-slate-200 rounded focus:ring-primary text-table-data font-table-data bg-slate-100" readonly="" step="0.01" type="number" value="0.85"/>
<p class="text-[11px] text-teal-600 mt-1 font-semibold">Dihitung otomatis (Loss 8.5%)</p>
</div>
<div class="bg-primary text-white p-4 rounded-lg flex flex-col justify-center items-end">
<span class="text-[11px] font-bold opacity-80 uppercase tracking-widest">TOTAL BALANCE</span>
<span class="text-2xl font-bold">10.00 <small class="text-sm font-normal">KG</small></span>
</div>
</div>
</div>
</div>
<!-- Dashboard Summary Widgets -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-gutter">
<div class="bg-white p-4 border border-slate-200 rounded-lg flex items-center gap-4">
<div class="w-10 h-10 rounded-full bg-teal-50 flex items-center justify-center text-primary">
<span class="material-symbols-outlined">analytics</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-secondary uppercase">EFEKTIVITAS</p>
<p class="font-display-lot text-lg text-primary">91.5%</p>
</div>
</div>
<div class="bg-white p-4 border border-slate-200 rounded-lg flex items-center gap-4">
<div class="w-10 h-10 rounded-full bg-amber-50 flex items-center justify-center text-amber-600">
<span class="material-symbols-outlined">trending_down</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-secondary uppercase">SHRINKAGE RATE</p>
<p class="font-display-lot text-lg text-amber-600">8.50%</p>
</div>
</div>
<div class="bg-white p-4 border border-slate-200 rounded-lg flex items-center gap-4">
<div class="w-10 h-10 rounded-full bg-blue-50 flex items-center justify-center text-blue-600">
<span class="material-symbols-outlined">category</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-secondary uppercase">JUMLAH GRADE</p>
<p class="font-display-lot text-lg text-blue-600">3 Kelas</p>
</div>
</div>
<div class="bg-white p-4 border border-slate-200 rounded-lg flex items-center gap-4">
<div class="w-10 h-10 rounded-full bg-slate-100 flex items-center justify-center text-slate-600">
<span class="material-symbols-outlined">timer</span>
</div>
<div>
<p class="font-label-caps text-label-caps text-secondary uppercase">DURASI SESI</p>
<p class="font-display-lot text-lg text-slate-600">00:42:15</p>
</div>
</div>
</div>
<!-- Action Footer -->
<div class="flex justify-between items-center bg-white p-6 border border-slate-200 rounded-xl shadow-sm">
<div class="flex items-center gap-2 text-slate-500">
<span class="material-symbols-outlined">history</span>
<p class="text-body-sm font-body-sm italic">Draft disimpan otomatis pada 14:20</p>
</div>
<div class="flex items-center gap-4">
<button class="px-6 py-2.5 border border-primary text-primary font-bold rounded-lg hover:bg-teal-50 transition-colors">
Simpan Draft
</button>
<button class="px-8 py-2.5 bg-primary text-white font-bold rounded-lg shadow-md hover:bg-opacity-90 active:scale-[0.98] transition-all flex items-center gap-2">
<span class="material-symbols-outlined">check_circle</span>
Selesaikan &amp; Buat Lot Baru
</button>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

View File

@ -0,0 +1,493 @@
<!DOCTYPE html>
<html class="light" lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"on-error-container": "#93000a",
"surface-bright": "#f8fafa",
"tertiary": "#60320f",
"inverse-primary": "#8ed1db",
"error-container": "#ffdad6",
"error": "#ba1a1a",
"surface-container-low": "#f2f4f4",
"secondary-container": "#cfe2f9",
"primary": "#00454c",
"outline-variant": "#bfc8ca",
"on-secondary-fixed-variant": "#36485b",
"on-surface-variant": "#3f484a",
"surface-container-lowest": "#ffffff",
"surface-container-high": "#e6e8e9",
"surface-variant": "#e1e3e3",
"surface-dim": "#d8dadb",
"outline": "#6f797a",
"on-secondary-container": "#526478",
"on-secondary-fixed": "#091d2e",
"tertiary-container": "#7c4824",
"inverse-surface": "#2e3131",
"background": "#f8fafa",
"on-tertiary": "#ffffff",
"on-surface": "#191c1d",
"secondary": "#4e6073",
"primary-container": "#0d5e67",
"on-primary-fixed-variant": "#004f57",
"surface-container": "#eceeee",
"on-primary-container": "#92d5df",
"primary-fixed-dim": "#8ed1db",
"tertiary-fixed-dim": "#feb78a",
"on-tertiary-fixed": "#311300",
"secondary-fixed": "#d1e4fb",
"inverse-on-surface": "#eff1f1",
"on-primary-fixed": "#001f23",
"on-secondary": "#ffffff",
"surface-tint": "#1d6871",
"on-tertiary-container": "#ffbb91",
"primary-fixed": "#aaeef8",
"secondary-fixed-dim": "#b5c8df",
"on-primary": "#ffffff",
"surface": "#f8fafa",
"surface-container-highest": "#e1e3e3",
"on-error": "#ffffff",
"on-tertiary-fixed-variant": "#6b3a17",
"tertiary-fixed": "#ffdbc7",
"on-background": "#191c1d"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"row-height-md": "48px",
"container-margin": "24px",
"compact-padding": "8px",
"gutter": "16px",
"row-height-sm": "32px"
},
"fontFamily": {
"display-lot": ["Inter"],
"table-data": ["Inter"],
"body-sm": ["Inter"],
"label-caps": ["Inter"],
"body-base": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
vertical-align: middle;
}
body { font-family: 'Inter', sans-serif; }
</style>
</head>
<body class="bg-background text-on-background antialiased flex overflow-hidden h-screen">
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-full w-64 border-r border-slate-200 dark:border-slate-800 bg-slate-50 dark:bg-slate-950 flex flex-col py-4 z-50">
<div class="px-6 mb-8 flex items-center gap-3">
<div class="w-8 h-8 bg-primary-container rounded flex items-center justify-center">
<span class="material-symbols-outlined text-white text-sm" data-icon="nest_eco_friendly">nest_eco</span>
</div>
<div>
<h1 class="text-teal-900 dark:text-teal-100 font-black font-inter text-[13px] leading-tight">Sarang Ops</h1>
<p class="text-slate-500 text-[11px]">Pabrik Pengolahan A</p>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center gap-3 px-3 py-2.5 rounded transition-all duration-150 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
Dasbor
</a>
<a class="flex items-center gap-3 px-3 py-2.5 rounded transition-all duration-150 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="shopping_cart">shopping_cart</span>
Pembelian
</a>
<a class="flex items-center gap-3 px-3 py-2.5 rounded transition-all duration-150 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="receipt_long">receipt_long</span>
Kuitansi
</a>
<a class="flex items-center gap-3 px-3 py-2.5 rounded transition-all duration-150 bg-white dark:bg-slate-900 text-[#0D5E67] border-r-4 border-[#0D5E67] shadow-sm font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
Inventaris
</a>
<a class="flex items-center gap-3 px-3 py-2.5 rounded transition-all duration-150 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="monitoring">monitoring</span>
Analitik
</a>
</nav>
<div class="px-3 mb-6">
<button class="w-full py-2.5 bg-primary-container text-white rounded font-inter text-[13px] font-semibold flex items-center justify-center gap-2 hover:opacity-90 active:scale-[0.98] transition-all shadow-sm">
<span class="material-symbols-outlined text-sm" data-icon="add">add</span>
Pindai Lot Baru
</button>
</div>
<div class="px-3 border-t border-slate-200 dark:border-slate-800 pt-4 space-y-1">
<a class="flex items-center gap-3 px-3 py-2 rounded transition-all duration-150 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
Pengaturan
</a>
<a class="flex items-center gap-3 px-3 py-2 rounded transition-all duration-150 text-slate-500 dark:text-slate-400 hover:text-[#0D5E67] hover:bg-slate-100 dark:hover:bg-slate-900 font-inter text-[13px] font-medium active:scale-[0.98]" href="#">
<span class="material-symbols-outlined" data-icon="contact_support">contact_support</span>
Bantuan
</a>
</div>
</aside>
<!-- Main Content Wrapper -->
<main class="flex-1 ml-64 flex flex-col overflow-hidden">
<!-- TopNavBar -->
<header class="h-14 px-6 w-full border-b border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 flex justify-between items-center z-40 shadow-sm sticky top-0">
<div class="flex items-center gap-4 flex-1">
<span class="text-lg font-bold text-[#0D5E67] dark:text-white tracking-tight font-inter">SwiftLot Walet</span>
<div class="relative w-64 ml-4">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-sm" data-icon="search">search</span>
<input class="w-full pl-9 pr-3 py-1.5 bg-slate-50 border-none rounded-lg text-sm focus:ring-2 focus:ring-primary-container/20 placeholder-slate-400" placeholder="Cari berdasarkan Kode Lot..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<button class="p-2 text-slate-600 dark:text-slate-400 hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors rounded-lg relative">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
<span class="absolute top-2 right-2 w-2 h-2 bg-error rounded-full border-2 border-white"></span>
</button>
<button class="p-2 text-slate-600 dark:text-slate-400 hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors rounded-lg">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
</button>
<div class="h-8 w-8 rounded-full bg-secondary-container flex items-center justify-center overflow-hidden border border-slate-200">
<img class="w-full h-full object-cover" data-alt="professional male profile photo with corporate background" src="https://lh3.googleusercontent.com/aida-public/AB6AXuDvaGEZVNKVZwEPoAZgHpTp3tBfad9HqX-tSqZ_SiYs1YTxpNQc0hVQcP8efBtj1nxvoeS5oSQLGQ6MPWio2tDzsESWuViW5G1drrIyXQoZwgYb3yFPcpOH1pFWjDNms3nx53a1U3pKuyEjynRcfeODTfCLwsndnpQwbFQWwsbMjKPuh5zd3tzb9xvJHEQWNSdYUv8ydDOnI62XtNH0pr0XjPgI9o1Iev8C9xP9WjQqinTZkGQGaH7Xl23teXu-hV_cNt4fZFc8eA"/>
</div>
</div>
</header>
<!-- Main Body Scroll Area -->
<div class="flex-1 overflow-auto p-6 bg-background">
<!-- Page Title & Quick Stats -->
<div class="flex flex-col md:flex-row md:items-end justify-between mb-8 gap-4">
<div>
<h2 class="font-h1 text-h1 text-on-surface mb-1">Daftar Lot Stok Inventaris</h2>
<p class="font-body-sm text-body-sm text-on-surface-variant">Manajemen waktu nyata untuk bahan baku sarang burung dan barang jadi.</p>
</div>
<div class="flex gap-3">
<div class="bg-surface-container-lowest border border-outline-variant p-3 rounded-lg flex items-center gap-4 shadow-sm min-w-[140px]">
<div class="w-10 h-10 rounded-full bg-secondary-container flex items-center justify-center text-on-secondary-container">
<span class="material-symbols-outlined" data-icon="inventory">inventory</span>
</div>
<div>
<p class="text-label-caps font-label-caps text-outline uppercase">Total Stok</p>
<p class="text-display-lot font-display-lot text-primary">1,420 kg</p>
</div>
</div>
<div class="bg-surface-container-lowest border border-outline-variant p-3 rounded-lg flex items-center gap-4 shadow-sm min-w-[140px]">
<div class="w-10 h-10 rounded-full bg-tertiary-fixed flex items-center justify-center text-tertiary">
<span class="material-symbols-outlined" data-icon="timer">timer</span>
</div>
<div>
<p class="text-label-caps font-label-caps text-outline uppercase">Menunggu QC</p>
<p class="text-display-lot font-display-lot text-tertiary">85 kg</p>
</div>
</div>
</div>
</div>
<!-- Filter Bar Section -->
<div class="bg-surface-container-lowest rounded-xl border border-outline-variant p-4 mb-6 shadow-sm">
<div class="flex flex-wrap items-center gap-4">
<div class="flex-1 min-w-[150px]">
<label class="block text-[11px] font-bold text-outline uppercase mb-1.5 px-1">Pemasok</label>
<select class="w-full bg-white border border-outline-variant rounded px-3 py-1.5 text-[13px] focus:ring-2 focus:ring-primary-container outline-none appearance-none">
<option>Semua Pemasok</option>
<option>Kalimantan Source A</option>
<option>Sumatra Direct</option>
<option>Java Highland</option>
</select>
</div>
<div class="flex-1 min-w-[150px]">
<label class="block text-[11px] font-bold text-outline uppercase mb-1.5 px-1">Jenis Item</label>
<select class="w-full bg-white border border-outline-variant rounded px-3 py-1.5 text-[13px] focus:ring-2 focus:ring-primary-container outline-none">
<option>Semua Jenis</option>
<option>Bowl (SGP)</option>
<option>Corner (SGP)</option>
<option>Fines (SGP)</option>
</select>
</div>
<div class="flex-1 min-w-[120px]">
<label class="block text-[11px] font-bold text-outline uppercase mb-1.5 px-1">Kualitas</label>
<select class="w-full bg-white border border-outline-variant rounded px-3 py-1.5 text-[13px] focus:ring-2 focus:ring-primary-container outline-none">
<option>Semua Kualitas</option>
<option>AAA</option>
<option>AA</option>
<option>A</option>
<option>B</option>
</select>
</div>
<div class="flex-1 min-w-[150px]">
<label class="block text-[11px] font-bold text-outline uppercase mb-1.5 px-1">Gudang</label>
<select class="w-full bg-white border border-outline-variant rounded px-3 py-1.5 text-[13px] focus:ring-2 focus:ring-primary-container outline-none">
<option>Pengolahan Utama</option>
<option>Cold Storage B</option>
<option>Outbound Dock</option>
</select>
</div>
<div class="flex-1 min-w-[120px]">
<label class="block text-[11px] font-bold text-outline uppercase mb-1.5 px-1">Status</label>
<select class="w-full bg-white border border-outline-variant rounded px-3 py-1.5 text-[13px] focus:ring-2 focus:ring-primary-container outline-none">
<option>Aktif</option>
<option>Ditahan</option>
<option>Ditutup</option>
</select>
</div>
<div class="flex-1 min-w-[140px]">
<label class="block text-[11px] font-bold text-outline uppercase mb-1.5 px-1">Rentang Umur</label>
<select class="w-full bg-white border border-outline-variant rounded px-3 py-1.5 text-[13px] focus:ring-2 focus:ring-primary-container outline-none">
<option>Semua Umur</option>
<option>0-30 Hari</option>
<option>30-90 Hari</option>
<option>90+ Hari</option>
</select>
</div>
<div class="pt-5">
<button class="bg-surface-container-high hover:bg-surface-container-highest text-on-surface font-semibold px-4 py-1.5 rounded transition-colors text-[13px] flex items-center gap-2">
<span class="material-symbols-outlined text-sm" data-icon="filter_list">filter_list</span>
Atur Ulang
</button>
</div>
</div>
</div>
<!-- Main Data Table Container -->
<div class="bg-surface-container-lowest rounded-xl border border-outline-variant shadow-sm overflow-hidden">
<div class="overflow-x-auto">
<table class="w-full text-left border-collapse">
<thead>
<tr class="bg-surface-container-low border-b border-outline-variant">
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase pl-6">Kode Lot</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase">Pemasok</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase">Jenis Item</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase text-center">Kualitas</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase text-right">Jumlah Tersedia</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase text-right">Biaya Satuan</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase">Gudang</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase text-center">Umur</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase">Status</th>
<th class="px-compact-padding py-3 font-label-caps text-label-caps text-outline uppercase pr-6 text-right">Aksi</th>
</tr>
</thead>
<tbody class="divide-y divide-outline-variant font-table-data text-table-data text-on-surface">
<!-- Row 1 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-compact-padding py-3 pl-6 font-bold text-primary tracking-tight">LOT-202311-001</td>
<td class="px-compact-padding py-3">Kalimantan Source A</td>
<td class="px-compact-padding py-3">Bowl (SGP)</td>
<td class="px-compact-padding py-3 text-center">AAA</td>
<td class="px-compact-padding py-3 text-right">24.50 kg</td>
<td class="px-compact-padding py-3 text-right">$850.00</td>
<td class="px-compact-padding py-3">
<div class="flex flex-col">
<span>Pengolahan Utama</span>
<span class="text-[11px] text-outline">Zona A-04</span>
</div>
</td>
<td class="px-compact-padding py-3 text-center">12h</td>
<td class="px-compact-padding py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-[#E8F5E9] text-[#2E7D32] text-[11px] font-bold">Aktif</span>
</td>
<td class="px-compact-padding py-3 pr-6 text-right">
<button class="text-primary-container font-semibold hover:underline text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 2 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-compact-padding py-3 pl-6 font-bold text-primary tracking-tight">LOT-202311-042</td>
<td class="px-compact-padding py-3">Sumatra Direct</td>
<td class="px-compact-padding py-3">Corner (SGP)</td>
<td class="px-compact-padding py-3 text-center">AA</td>
<td class="px-compact-padding py-3 text-right">12.15 kg</td>
<td class="px-compact-padding py-3 text-right">$720.00</td>
<td class="px-compact-padding py-3">
<div class="flex flex-col">
<span>Pengolahan Utama</span>
<span class="text-[11px] text-outline">Zona B-12</span>
</div>
</td>
<td class="px-compact-padding py-3 text-center text-error font-semibold">45h</td>
<td class="px-compact-padding py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-[#FFF3E0] text-[#E65100] text-[11px] font-bold">Ditahan</span>
</td>
<td class="px-compact-padding py-3 pr-6 text-right">
<button class="text-primary-container font-semibold hover:underline text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 3 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-compact-padding py-3 pl-6 font-bold text-primary tracking-tight">LOT-202310-156</td>
<td class="px-compact-padding py-3">Java Highland</td>
<td class="px-compact-padding py-3">Broken</td>
<td class="px-compact-padding py-3 text-center">B</td>
<td class="px-compact-padding py-3 text-right">0.00 kg</td>
<td class="px-compact-padding py-3 text-right">$450.00</td>
<td class="px-compact-padding py-3">
<div class="flex flex-col text-outline">
<span>Penyimpanan Arsip</span>
<span class="text-[11px]">Zona X-01</span>
</div>
</td>
<td class="px-compact-padding py-3 text-center text-outline">98h</td>
<td class="px-compact-padding py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-[#F5F5F5] text-[#757575] text-[11px] font-bold">Ditutup</span>
</td>
<td class="px-compact-padding py-3 pr-6 text-right">
<button class="text-primary-container font-semibold hover:underline text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 4 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-compact-padding py-3 pl-6 font-bold text-primary tracking-tight">LOT-202311-088</td>
<td class="px-compact-padding py-3">Sumatra Direct</td>
<td class="px-compact-padding py-3">Bowl (SGP)</td>
<td class="px-compact-padding py-3 text-center">AAA</td>
<td class="px-compact-padding py-3 text-right">45.00 kg</td>
<td class="px-compact-padding py-3 text-right">$865.00</td>
<td class="px-compact-padding py-3">
<div class="flex flex-col">
<span>Cold Storage B</span>
<span class="text-[11px] text-outline">Rak 02-A</span>
</div>
</td>
<td class="px-compact-padding py-3 text-center">5h</td>
<td class="px-compact-padding py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-[#E8F5E9] text-[#2E7D32] text-[11px] font-bold">Aktif</span>
</td>
<td class="px-compact-padding py-3 pr-6 text-right">
<button class="text-primary-container font-semibold hover:underline text-[12px]">Lihat Detail</button>
</td>
</tr>
<!-- Row 5 -->
<tr class="hover:bg-slate-50 transition-colors group">
<td class="px-compact-padding py-3 pl-6 font-bold text-primary tracking-tight">LOT-202311-102</td>
<td class="px-compact-padding py-3">Kalimantan Source A</td>
<td class="px-compact-padding py-3">Fines</td>
<td class="px-compact-padding py-3 text-center">C</td>
<td class="px-compact-padding py-3 text-right">8.40 kg</td>
<td class="px-compact-padding py-3 text-right">$320.00</td>
<td class="px-compact-padding py-3">
<div class="flex flex-col">
<span>Pengolahan Utama</span>
<span class="text-[11px] text-outline">Zona A-10</span>
</div>
</td>
<td class="px-compact-padding py-3 text-center">2h</td>
<td class="px-compact-padding py-3">
<span class="inline-flex items-center px-2 py-0.5 rounded-full bg-[#E8F5E9] text-[#2E7D32] text-[11px] font-bold">Aktif</span>
</td>
<td class="px-compact-padding py-3 pr-6 text-right">
<button class="text-primary-container font-semibold hover:underline text-[12px]">Lihat Detail</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Pagination -->
<div class="px-6 py-4 bg-surface-container-low border-t border-outline-variant flex items-center justify-between">
<p class="text-body-sm font-body-sm text-outline">Menampilkan <span class="font-bold text-on-surface">1 - 5</span> dari 128 lot</p>
<div class="flex items-center gap-2">
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant rounded bg-white text-outline hover:bg-slate-50 disabled:opacity-50" disabled="">
<span class="material-symbols-outlined text-sm" data-icon="chevron_left">chevron_left</span>
</button>
<button class="w-8 h-8 flex items-center justify-center border border-primary-container rounded bg-primary-container text-white text-[13px] font-bold">1</button>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant rounded bg-white text-on-surface text-[13px] hover:bg-slate-50">2</button>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant rounded bg-white text-on-surface text-[13px] hover:bg-slate-50">3</button>
<span class="text-outline px-1">...</span>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant rounded bg-white text-on-surface text-[13px] hover:bg-slate-50">26</button>
<button class="w-8 h-8 flex items-center justify-center border border-outline-variant rounded bg-white text-outline hover:bg-slate-50">
<span class="material-symbols-outlined text-sm" data-icon="chevron_right">chevron_right</span>
</button>
</div>
</div>
</div>
<!-- Dashboard Visual Insights (Bento Style) -->
<div class="mt-8 grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="col-span-1 bg-surface-container-lowest border border-outline-variant rounded-xl p-5 shadow-sm">
<h3 class="font-h2 text-h2 mb-4 flex items-center gap-2">
<span class="material-symbols-outlined text-primary" data-icon="pie_chart">pie_chart</span>
Distribusi Berdasarkan Kualitas
</h3>
<div class="space-y-4">
<div>
<div class="flex justify-between text-[11px] font-bold text-outline uppercase mb-1">
<span>Kualitas AAA</span>
<span>65%</span>
</div>
<div class="w-full h-2 bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-primary-container w-[65%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold text-outline uppercase mb-1">
<span>Kualitas AA</span>
<span>25%</span>
</div>
<div class="w-full h-2 bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-[#14B8A6] w-[25%]"></div>
</div>
</div>
<div>
<div class="flex justify-between text-[11px] font-bold text-outline uppercase mb-1">
<span>Kualitas A / Di Bawah</span>
<span>10%</span>
</div>
<div class="w-full h-2 bg-slate-100 rounded-full overflow-hidden">
<div class="h-full bg-secondary w-[10%]"></div>
</div>
</div>
</div>
</div>
<div class="col-span-2 bg-primary text-white rounded-xl p-5 shadow-sm overflow-hidden relative">
<div class="relative z-10">
<h3 class="font-h2 text-h2 mb-2 flex items-center gap-2">
<span class="material-symbols-outlined" data-icon="precision_manufacturing">precision_manufacturing</span>
Efisiensi Pemrosesan
</h3>
<p class="text-[13px] opacity-80 mb-6 max-w-md">Rata-rata waktu penyelesaian dari Bahan Baku ke Grade Ekspor telah meningkat sebesar 12% bulan ini.</p>
<div class="flex gap-8">
<div>
<p class="text-[32px] font-black leading-none">4.2h</p>
<p class="text-[11px] font-bold opacity-60 uppercase mt-1">Rata-rata Waktu Tunggu</p>
</div>
<div class="h-10 w-[1px] bg-white/20 self-center"></div>
<div>
<p class="text-[32px] font-black leading-none">98.4%</p>
<p class="text-[11px] font-bold opacity-60 uppercase mt-1">Tingkat Kelulusan QC</p>
</div>
<div class="h-10 w-[1px] bg-white/20 self-center"></div>
<div>
<p class="text-[32px] font-black leading-none">2.8t</p>
<p class="text-[11px] font-bold opacity-60 uppercase mt-1">Kapasitas Bulanan</p>
</div>
</div>
</div>
<!-- Decorative Graphic -->
<div class="absolute right-0 bottom-0 top-0 w-1/3 opacity-20 pointer-events-none">
<img class="w-full h-full object-cover grayscale brightness-200" data-alt="high-tech laboratory interior with modern equipment and surgical precision environment" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBiom7LbF5epFEnj8Qf-ieq3DaKB0N1iLDR_N7QMlB0qqFxXvAbBlHA-pRnuZfgjOOJjXTGheAXziVsM5eCLgaUlmCVu3-M8Xm4olzj67aDf7IJ63aHQXBftksbtRSfE0-I4zdcD9ZYo4rYBebFBvY8T62dEjwhJ4N09ZBOJci5AdStecoAY8vPHbVPLKfSWZg15UN3k7MESSO1FS1BT1V45_vfayutlRrYbExhmCtzQxQOXeTTWLcAo4RsO3GnP-agQEnVa08sHg"/>
</div>
</div>
</div>
</div>
</main>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

View File

@ -0,0 +1,372 @@
<!DOCTYPE html>
<html lang="id"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"surface-variant": "#e1e3e3",
"tertiary-container": "#7c4824",
"surface-container-high": "#e6e8e9",
"on-tertiary-fixed-variant": "#6b3a17",
"primary": "#00454c",
"secondary-container": "#cfe2f9",
"error": "#ba1a1a",
"outline": "#6f797a",
"secondary-fixed": "#d1e4fb",
"tertiary": "#60320f",
"inverse-on-surface": "#eff1f1",
"surface-bright": "#f8fafa",
"on-secondary": "#ffffff",
"on-primary-fixed": "#001f23",
"on-primary-container": "#92d5df",
"on-surface-variant": "#3f484a",
"on-surface": "#191c1d",
"tertiary-fixed-dim": "#feb78a",
"surface-container-highest": "#e1e3e3",
"primary-fixed": "#aaeef8",
"surface-dim": "#d8dadb",
"on-primary-fixed-variant": "#004f57",
"on-tertiary-fixed": "#311300",
"surface-container": "#eceeee",
"primary-fixed-dim": "#8ed1db",
"inverse-primary": "#8ed1db",
"on-error-container": "#93000a",
"secondary": "#4e6073",
"on-secondary-fixed": "#091d2e",
"error-container": "#ffdad6",
"on-secondary-fixed-variant": "#36485b",
"outline-variant": "#bfc8ca",
"on-background": "#191c1d",
"inverse-surface": "#2e3131",
"on-error": "#ffffff",
"on-tertiary-container": "#ffbb91",
"secondary-fixed-dim": "#b5c8df",
"primary-container": "#0d5e67",
"background": "#f8fafa",
"tertiary-fixed": "#ffdbc7",
"surface-container-lowest": "#ffffff",
"on-tertiary": "#ffffff",
"on-primary": "#ffffff",
"surface-tint": "#1d6871",
"surface-container-low": "#f2f4f4",
"surface": "#f8fafa",
"on-secondary-container": "#526478"
},
"borderRadius": {
"DEFAULT": "0.125rem",
"lg": "0.25rem",
"xl": "0.5rem",
"full": "0.75rem"
},
"spacing": {
"gutter": "16px",
"container-margin": "24px",
"row-height-sm": "32px",
"row-height-md": "48px",
"compact-padding": "8px"
},
"fontFamily": {
"display-lot": ["Inter"],
"body-base": ["Inter"],
"label-caps": ["Inter"],
"h2": ["Inter"],
"h1": ["Inter"],
"body-sm": ["Inter"],
"table-data": ["Inter"]
},
"fontSize": {
"display-lot": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "700"}],
"body-base": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
"h2": ["16px", {"lineHeight": "24px", "fontWeight": "600"}],
"h1": ["20px", {"lineHeight": "28px", "fontWeight": "600"}],
"body-sm": ["13px", {"lineHeight": "18px", "fontWeight": "400"}],
"table-data": ["13px", {"lineHeight": "16px", "fontWeight": "500"}]
}
},
},
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
body { font-family: 'Inter', sans-serif; }
.no-scrollbar::-webkit-scrollbar { display: none; }
</style>
</head>
<body class="bg-background text-on-background antialiased flex">
<!-- SideNavBar -->
<aside class="fixed left-0 top-0 h-screen w-64 border-r border-slate-200 bg-slate-50 flex flex-col h-full py-4 space-y-1 z-50">
<div class="px-6 mb-8">
<div class="flex items-center gap-3">
<img alt="Warehouse Logo" class="w-10 h-10 rounded" data-alt="minimalist professional corporate logo for a logistics company using teal and white color palette" src="https://lh3.googleusercontent.com/aida-public/AB6AXuDzHht_N2ne3a1nwn1MaPtt55wbWMs8YhSGQ9U30D_-BPIkFsitrfhdFFpcwJyQi13PpaJBWPp8ikNCKwsRBemweY8uuBgaZC4c_Ldj0U4RkcJz43n76GHOHNrJOzEPPetIj2IeJfLWXWk92nuDEigft-TG1_ozbYYjAk_-jzrH0JjJqGJlNKpgisHWLjNd8zFoYKPAEfghpzux6rZcJIIKeVwAHBllgoncJXo7dN2TA5PMlYmcM63_QeuXY7XYXZszoujQFnP5VQ"/>
<div>
<h1 class="text-teal-800 font-black tracking-tighter text-lg leading-tight">SarangWMS</h1>
<p class="text-[10px] text-slate-500 font-medium tracking-widest uppercase">Operational Hub</p>
</div>
</div>
</div>
<nav class="flex-1 px-3 space-y-1">
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 rounded-lg transition-all duration-200" href="#">
<span class="material-symbols-outlined mr-3" data-icon="dashboard">dashboard</span>
<span class="font-medium text-sm">Dashboard</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 rounded-lg transition-all duration-200" href="#">
<span class="material-symbols-outlined mr-3" data-icon="database">database</span>
<span class="font-medium text-sm">Master Data</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 rounded-lg transition-all duration-200" href="#">
<span class="material-symbols-outlined mr-3" data-icon="inventory_2">inventory_2</span>
<span class="font-medium text-sm">Inventory Logs</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 rounded-lg transition-all duration-200" href="#">
<span class="material-symbols-outlined mr-3" data-icon="edit_note">edit_note</span>
<span class="font-medium text-sm">Stock Adjust</span>
</a>
<a class="flex items-center px-3 py-2 bg-teal-50 text-teal-800 border-r-4 border-teal-600 rounded-sm transition-all duration-200" href="#">
<span class="material-symbols-outlined mr-3" data-icon="swap_horiz">swap_horiz</span>
<span class="font-medium text-sm">Transfers</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:text-teal-700 hover:bg-slate-100 rounded-lg transition-all duration-200" href="#">
<span class="material-symbols-outlined mr-3" data-icon="verified">verified</span>
<span class="font-medium text-sm">QC Reports</span>
</a>
</nav>
<div class="px-3 mt-auto space-y-1">
<a class="flex items-center px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg transition-all" href="#">
<span class="material-symbols-outlined mr-3" data-icon="support_agent">support_agent</span>
<span class="font-medium text-sm">Support</span>
</a>
<a class="flex items-center px-3 py-2 text-slate-600 hover:bg-slate-100 rounded-lg transition-all" href="#">
<span class="material-symbols-outlined mr-3" data-icon="logout">logout</span>
<span class="font-medium text-sm">Logout</span>
</a>
</div>
</aside>
<!-- Main Content -->
<main class="ml-64 flex-1 min-h-screen flex flex-col">
<!-- TopNavBar -->
<header class="bg-white sticky top-0 z-40 border-b border-slate-200 flex justify-between items-center h-14 px-6 w-full">
<div class="flex items-center flex-1">
<div class="relative w-64">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 text-sm">search</span>
<input class="w-full bg-slate-50 border-none rounded-md py-1.5 pl-9 pr-4 text-xs focus:ring-2 focus:ring-teal-600/20" placeholder="Cari lot atau lokasi..." type="text"/>
</div>
</div>
<div class="flex items-center gap-4">
<button class="text-slate-500 hover:bg-slate-50 p-2 rounded-full transition-colors relative">
<span class="material-symbols-outlined" data-icon="notifications">notifications</span>
<span class="absolute top-2 right-2 w-2 h-2 bg-error rounded-full border-2 border-white"></span>
</button>
<button class="text-slate-500 hover:bg-slate-50 p-2 rounded-full transition-colors">
<span class="material-symbols-outlined" data-icon="settings">settings</span>
</button>
<button class="text-slate-500 hover:bg-slate-50 p-2 rounded-full transition-colors">
<span class="material-symbols-outlined" data-icon="help_outline">help_outline</span>
</button>
<div class="h-8 w-[1px] bg-slate-200 mx-1"></div>
<div class="flex items-center gap-3">
<div class="text-right">
<p class="text-xs font-bold text-slate-700">Ahmad Manager</p>
<p class="text-[10px] text-teal-600 font-medium">Warehouse Head</p>
</div>
<img alt="Manager Avatar" class="w-8 h-8 rounded-full border border-slate-200" data-alt="professional portrait of a warehouse manager in a clean warehouse office setting" src="https://lh3.googleusercontent.com/aida-public/AB6AXuBAeDICWVEbtZxsjdraD21POyPjMTZOSBH8UIYN_ex3N52iGvDxbfBlGk7NmA2itgerUL4ZEjcX5w-aRhpg1_SWpAzCq3_HHarCN09zQpcyY-xyBT-XW-j9xeGrwbJJvVyp-kYlyDEzp6mANJDS6B0kh__8sPRThpjsNa8hDQ-yqVopvoQgepsYoWuPcQcGLHHBGQEFZ2uNtzo7xVXotzjGCgT4GCIR8AkFLe67HshdWuaZRlogsizyezW79UyUq5hoeTh5rtE-wA"/>
</div>
</div>
</header>
<!-- Canvas -->
<div class="p-container-margin">
<!-- Header Section -->
<div class="mb-8 flex justify-between items-end">
<div>
<nav class="flex items-center gap-2 text-xs text-slate-500 mb-2 font-medium">
<span>Inventory</span>
<span class="material-symbols-outlined text-[10px]">chevron_right</span>
<span class="text-teal-700 font-bold">Transfer Antar Gudang</span>
</nav>
<h2 class="font-h1 text-h1 text-on-surface">Transfer Lot Internal</h2>
<p class="font-body-sm text-body-sm text-on-surface-variant mt-1">Lakukan pemindahan stok antar gedung atau rak penyimpanan di dalam area operasional.</p>
</div>
<div class="flex items-center gap-3">
<button class="px-4 py-2 text-teal-700 border border-teal-600 rounded-lg text-sm font-semibold hover:bg-teal-50 transition-colors">Batal</button>
<button class="px-4 py-2 bg-primary text-white rounded-lg text-sm font-semibold hover:bg-teal-900 transition-shadow shadow-sm">Simpan Transfer</button>
</div>
</div>
<div class="grid grid-cols-12 gap-6">
<!-- Main Form Column -->
<div class="col-span-12 lg:col-span-8 space-y-6">
<!-- Step 1: Lot Information -->
<div class="bg-white border border-outline-variant rounded-xl overflow-hidden shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="px-6 py-4 border-b border-slate-100 flex items-center justify-between bg-slate-50/50">
<div class="flex items-center gap-2">
<span class="w-6 h-6 rounded-full bg-primary text-white flex items-center justify-center text-[10px] font-bold">1</span>
<h3 class="font-h2 text-h2 text-on-surface">Pilih Lot Inventaris</h3>
</div>
<span class="px-2 py-1 bg-secondary-container text-on-secondary-container text-[10px] font-bold rounded uppercase tracking-wider">Wajib Diisi</span>
</div>
<div class="p-6 grid grid-cols-2 gap-4">
<div class="col-span-2">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">LOT ID / BARCODE</label>
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400">qr_code_scanner</span>
<select class="w-full bg-surface border-outline focus:ring-2 focus:ring-primary rounded-lg py-2.5 pl-10 text-body-base font-body-base appearance-none cursor-pointer">
<option value="">Pilih Lot yang akan dipindah...</option>
<option value="LOT-SBW-2023-001">LOT-SBW-2023-001 (Super Grade A - 15.5 kg)</option>
<option value="LOT-SBW-2023-042">LOT-SBW-2023-042 (Premium Bowl - 8.2 kg)</option>
<option value="LOT-SBW-2023-115">LOT-SBW-2023-115 (Triangular Grade - 22.0 kg)</option>
</select>
</div>
</div>
<div>
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">GUDANG ASAL</label>
<input class="w-full bg-surface-container-low border-outline-variant text-slate-500 rounded-lg py-2.5 text-body-base font-body-base" readonly="" type="text" value="Gudang Utama (Main Hub)"/>
</div>
<div>
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">LOKASI ASAL</label>
<input class="w-full bg-surface-container-low border-outline-variant text-slate-500 rounded-lg py-2.5 text-body-base font-body-base" readonly="" type="text" value="RAK-A-04-12"/>
</div>
</div>
</div>
<!-- Step 2: Destination -->
<div class="bg-white border border-outline-variant rounded-xl overflow-hidden shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="px-6 py-4 border-b border-slate-100 flex items-center justify-between bg-slate-50/50">
<div class="flex items-center gap-2">
<span class="w-6 h-6 rounded-full bg-primary text-white flex items-center justify-center text-[10px] font-bold">2</span>
<h3 class="font-h2 text-h2 text-on-surface">Detail Tujuan Transfer</h3>
</div>
</div>
<div class="p-6 grid grid-cols-2 gap-4">
<div>
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">PILIH GUDANG TUJUAN</label>
<select class="w-full bg-surface border-outline focus:ring-2 focus:ring-primary rounded-lg py-2.5 text-body-base font-body-base">
<option value="">Pilih Gudang...</option>
<option value="WH2">Gudang Karantina (WH-02)</option>
<option value="WH3">Gudang Ekspor (WH-03)</option>
<option value="WH4">Area Pembersihan (Processing)</option>
</select>
</div>
<div>
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">PILIH LOKASI TUJUAN</label>
<select class="w-full bg-surface border-outline focus:ring-2 focus:ring-primary rounded-lg py-2.5 text-body-base font-body-base">
<option value="">Pilih Rak/Slot...</option>
<option value="R1">RAK-EX-01</option>
<option value="R2">RAK-EX-02</option>
<option value="R3">RAK-EX-03</option>
</select>
</div>
<div class="col-span-2">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">QTY TRANSFER</label>
<div class="relative">
<input class="w-full bg-surface border-outline focus:ring-2 focus:ring-primary rounded-lg py-2.5 pr-16 text-body-base font-bold text-primary" placeholder="0.00" type="number"/>
<span class="absolute right-4 top-1/2 -translate-y-1/2 text-xs font-bold text-on-surface-variant">KILOGRAM</span>
</div>
<p class="text-[11px] text-slate-500 mt-1 font-medium italic">*Maksimal transfer: 15.5 kg (stok tersedia)</p>
</div>
</div>
</div>
<!-- Step 3: Administration -->
<div class="bg-white border border-outline-variant rounded-xl overflow-hidden shadow-[0px_2px_4px_rgba(0,0,0,0.05)]">
<div class="px-6 py-4 border-b border-slate-100 flex items-center justify-between bg-slate-50/50">
<div class="flex items-center gap-2">
<span class="w-6 h-6 rounded-full bg-primary text-white flex items-center justify-center text-[10px] font-bold">3</span>
<h3 class="font-h2 text-h2 text-on-surface">Administrasi &amp; Tanggal</h3>
</div>
</div>
<div class="p-6 grid grid-cols-2 gap-4">
<div>
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">PETUGAS PELAKSANA</label>
<div class="flex items-center gap-3 bg-surface-container-low p-2 rounded-lg border border-outline-variant">
<img alt="Staff" class="w-6 h-6 rounded-full" data-alt="close up headshot of a logistics worker wearing a safety vest" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAS1LIfEoBfZoDvVw5vLWT-JZ-G_9vAeN9V6PAHShd9LYYkkpf6gEUUogLVpO_h7t2zk5GIIl2OpXVHBoAGqynNaUmUL0YNMOYMtmSmDHi0zOwvLQW508dz6xp1fyY1ykib1FpkPjruXUSIU5faVKzZbXsw25MshZwX13U1rXls1RElvfNpcYxW3OwSyg_cIv5SJ10aicLqLh9eoH-fZiStom7UmNHlGvhf2wu4sytS4ZDCvGn77A-qCnKPtRLZhaDD514X7zFWIQ"/>
<span class="text-body-sm font-medium text-slate-700">Budi Pratama (W-Staff)</span>
</div>
</div>
<div>
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">TANGGAL TRANSFER</label>
<div class="relative">
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-slate-400">calendar_today</span>
<input class="w-full bg-surface border-outline focus:ring-2 focus:ring-primary rounded-lg py-2.5 pl-10 text-body-base font-body-base" type="date" value="2023-11-24"/>
</div>
</div>
<div class="col-span-2">
<label class="block font-label-caps text-label-caps text-on-surface-variant mb-1.5 uppercase">CATATAN TRANSFER (OPSIONAL)</label>
<textarea class="w-full bg-surface border-outline focus:ring-2 focus:ring-primary rounded-lg p-3 text-body-base font-body-base" placeholder="Alasan pemindahan atau detail tambahan..." rows="2"></textarea>
</div>
</div>
</div>
</div>
<!-- Sidebar Information Column -->
<div class="col-span-12 lg:col-span-4 space-y-6">
<!-- Real-time Summary Card -->
<div class="bg-primary text-white rounded-xl p-6 shadow-xl relative overflow-hidden">
<div class="relative z-10">
<h4 class="font-label-caps text-label-caps text-on-primary-container mb-4 uppercase">Ringkasan Transfer</h4>
<div class="flex flex-col gap-4">
<div class="flex justify-between items-center pb-3 border-b border-teal-800">
<span class="text-sm opacity-80">Lot Terpilih</span>
<span class="text-sm font-bold">---</span>
</div>
<div class="flex justify-between items-center pb-3 border-b border-teal-800">
<span class="text-sm opacity-80">Dari</span>
<span class="text-sm font-bold">Main Hub</span>
</div>
<div class="flex justify-between items-center pb-3 border-b border-teal-800">
<span class="text-sm opacity-80">Ke</span>
<span class="text-sm font-bold">---</span>
</div>
<div class="pt-2">
<p class="text-xs opacity-70 mb-1">Estimasi Berat Transfer</p>
<p class="text-3xl font-black">0.00 <span class="text-sm font-normal">kg</span></p>
</div>
</div>
</div>
<span class="material-symbols-outlined absolute -bottom-4 -right-4 text-9xl opacity-10 rotate-12" data-icon="swap_horiz">swap_horiz</span>
</div>
<!-- Safety Checklist -->
<div class="bg-white border border-outline-variant rounded-xl p-6 shadow-sm">
<h4 class="font-h2 text-h2 text-on-surface mb-4">Panduan Keamanan</h4>
<ul class="space-y-4">
<li class="flex gap-3">
<span class="material-symbols-outlined text-teal-600 text-lg">check_circle</span>
<p class="text-body-sm text-on-surface-variant">Pastikan timbangan telah dikalibrasi sebelum melakukan transfer fisik.</p>
</li>
<li class="flex gap-3">
<span class="material-symbols-outlined text-teal-600 text-lg">check_circle</span>
<p class="text-body-sm text-on-surface-variant">Gunakan sarung tangan steril saat menangani kotak lot sarang burung.</p>
</li>
<li class="flex gap-3">
<span class="material-symbols-outlined text-teal-600 text-lg">check_circle</span>
<p class="text-body-sm text-on-surface-variant">Update label fisik pada kotak setelah dipindahkan ke rak baru.</p>
</li>
</ul>
</div>
<!-- Image Section -->
<div class="rounded-xl overflow-hidden border border-outline-variant shadow-sm aspect-video relative group">
<img alt="Warehouse Map" class="w-full h-full object-cover" data-alt="architectural clean blueprint layout of a modern warehouse showing zones A B and C with color coded shelving" src="https://lh3.googleusercontent.com/aida-public/AB6AXuAebgB5qWnPcAHLKIn0NVXSgEXH2bcxgoHCdpG0jvGvpM2iDaopbrgZPGXuFfh3zOF4188JeObOqnpyt5Wwg7uEDOuOHkJJ3Lxy_UGxbU3Lc6EnU_ist4PnZfH8P5JGnPRF_OT8h8CeR0ggeyQ-DbKWJkHoOZJWu4fqKDZQ8DfTTnb9LM7h7bzDSJUJUiI4HlSSJc81r85XqsNv6qCeKKLqG1MoQmihOFYS3lV9T3o4bqRPhnkwWB9QL-ilhLsjhGcA8GgKrABEEw"/>
<div class="absolute inset-0 bg-primary/20 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity">
<span class="px-4 py-2 bg-white text-primary text-xs font-bold rounded-full shadow-lg cursor-pointer">Lihat Peta Lokasi</span>
</div>
</div>
</div>
</div>
</div>
<!-- Footer -->
<footer class="mt-auto p-6 bg-slate-50 border-t border-slate-200">
<div class="flex justify-between items-center opacity-60">
<p class="text-[10px] font-medium text-slate-500 uppercase tracking-widest">Sarang Inventory Pro v2.4.0</p>
<p class="text-[10px] font-medium text-slate-500 uppercase tracking-widest">© 2023 SarangWMS Logistics System</p>
</div>
</footer>
</main>
<!-- Contextual FAB (Hidden on this specific task page as per rules, but showing for UI completeness if needed by layout) -->
<!-- Suppressed on Form/Details pages per "Contextual FAB Suppression" rule -->
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB