## Skeleton za List View
```jsx
// src/components/common/UniversalList.jsx
import { h } from 'preact';
import { useEffect, useState } from 'preact/hooks';
import { useStore } from '@nanostores/preact';
import { getBaseUrl } from '../lib/nav';
import LoadingSpinner from './LoadingSpinner.jsx';
export default function UniversalList({ store, setter, fetchMethod, limit, baseName, children }) {
const [loading, setLoading] = useState(true);
const list = useStore(store);
// Ako je baseName poslan, dohvati URL, inače ostavi undefined
const baseUrl = baseName ? getBaseUrl(baseName) : undefined;
useEffect(() => {
async function fetchData() {
if (list.length > 0) {
setLoading(false);
return;
}
try {
setLoading(true);
const data = await fetchMethod();
setter(data || []);
} catch (error) {
console.error("Greška pri dohvatu:", error);
setter([]);
} finally {
setTimeout(() => setLoading(false), 1000);
}
}
fetchData();
}, []);
if (loading) return