Build [v.1.3.6]
This commit is contained in:
@@ -71,17 +71,25 @@ export default function Home() {
|
||||
const [categories, setCategories] = useState<any[]>([]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!localStorage.getItem('inventory_token')) {
|
||||
window.location.href = '/login';
|
||||
return;
|
||||
}
|
||||
setMounted(true);
|
||||
const savedUser = localStorage.getItem('inventory_user');
|
||||
if (savedUser) {
|
||||
setCurrentUser(JSON.parse(savedUser));
|
||||
}
|
||||
|
||||
|
||||
// Initial categories fetch
|
||||
inventoryApi.getCategories().then(c => setCategories(c)).catch(() => {});
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (!localStorage.getItem('inventory_token')) {
|
||||
window.location.href = '/login';
|
||||
return;
|
||||
}
|
||||
setMounted(true);
|
||||
setIsOnline(navigator.onLine);
|
||||
const handleOnline = () => {
|
||||
@@ -366,11 +374,18 @@ export default function Home() {
|
||||
);
|
||||
});
|
||||
|
||||
// Extract unique item types for suggestions
|
||||
const existingTypes = Array.from(new Set(inventory.map(i => i.type).filter(Boolean))).sort() as string[];
|
||||
|
||||
if (!mounted) return null;
|
||||
|
||||
return (
|
||||
<PageShell>
|
||||
<div className="p-3 md:p-8 overflow-x-hidden w-full">
|
||||
{/* Search datalist for types */}
|
||||
<datalist id="existing-types">
|
||||
{existingTypes.map(t => <option key={t} value={t} />)}
|
||||
</datalist>
|
||||
|
||||
{/* Header */}
|
||||
<header className="flex flex-col sm:flex-row justify-between sm:items-center gap-4 mb-6 w-full max-w-4xl mx-auto px-1">
|
||||
@@ -487,7 +502,7 @@ export default function Home() {
|
||||
className="w-full h-16 rounded-[1.5rem] bg-slate-900/50 border border-slate-800 flex items-center justify-center gap-3 group hover:border-primary/40 transition-all font-bold"
|
||||
>
|
||||
<Sparkles size={18} className="text-primary group-hover:scale-110 transition-transform" />
|
||||
<span className="text-sm">Add New Item (AI Onboarding)</span>
|
||||
<span className="text-sm">Add NEW Item<br />(AI Onboarding)</span>
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
@@ -498,6 +513,7 @@ export default function Home() {
|
||||
{showOnboarding && (
|
||||
<AIOnboarding
|
||||
categories={categories}
|
||||
inventory={inventory}
|
||||
onCancel={() => setShowOnboarding(false)}
|
||||
onComplete={handleOnboardingComplete}
|
||||
/>
|
||||
@@ -587,6 +603,7 @@ export default function Home() {
|
||||
<label className="text-xs font-black text-slate-500 ml-1">Item Type (e.g. SFP, Patch Cord)</label>
|
||||
<input
|
||||
type="text"
|
||||
list="existing-types"
|
||||
value={editedItem.type || ''}
|
||||
onChange={e => setEditedItem({...editedItem, type: e.target.value})}
|
||||
className="w-full bg-slate-950 border border-slate-800 rounded-xl py-3 px-4 text-sm outline-none text-slate-100"
|
||||
|
||||
Reference in New Issue
Block a user