Index: components/ComponentDetailsDialog.tsx
===================================================================
--- components/ComponentDetailsDialog.tsx	(revision a932c9ee67f19f8edeb101f6ee34cb81e6572601)
+++ components/ComponentDetailsDialog.tsx	(revision a932c9ee67f19f8edeb101f6ee34cb81e6572601)
@@ -0,0 +1,189 @@
+import React, {useEffect, useState} from 'react';
+import {
+    Dialog, DialogTitle, DialogContent, DialogActions, Button,
+    Typography, Box, Grid, Chip, CircularProgress, IconButton,
+    Table, TableBody, TableCell, TableContainer, TableRow, Paper
+} from '@mui/material';
+import CloseIcon from '@mui/icons-material/Close';
+import {onGetComponentDetails} from '../pages/+Layout.telefunc';
+
+export default function ComponentDetailsDialog({open, component, onClose}: any) {
+    const [fullData, setFullData] = useState<any>(null);
+    const [loading, setLoading] = useState(false);
+
+    useEffect(() => {
+        if (open && component) {
+            setLoading(true);
+            onGetComponentDetails({componentId: component.id})
+                .then(data => setFullData(data))
+                .catch(console.error)
+                .finally(() => setLoading(false));
+        } else {
+            setFullData(null);
+        }
+    }, [open, component]);
+
+    if (!open || !component) return null;
+
+    const displayData = fullData || component;
+    const specs = fullData?.details || {};
+
+    const formatMoney = (amount: number) => `$${Number(amount).toFixed(2)}`;
+
+    const renderValue = (key: string, val: any) => {
+        if (Array.isArray(val)) {
+            if (val.length > 0 && typeof val[0] === 'object') {
+                return val.map((v: any) => v.formFactor || v.socket || JSON.stringify(v)).join(', ');
+            }
+            return val.join(', ');
+        }
+
+        const strVal = String(val);
+        const lowerKey = key.toLowerCase();
+
+        // Dodava merni edinici vo zavisnost koja komponenta e
+        if (lowerKey.includes('capacity') || lowerKey.includes('vram') || lowerKey === 'memory') {
+            return `${strVal} GB`;
+        }
+
+        if (lowerKey.includes('tdp') || lowerKey.includes('wattage')) {
+            return `${strVal} W`;
+        }
+
+        if (lowerKey.includes('length') || lowerKey.includes('height') || lowerKey.includes('width')) {
+            return `${strVal} mm`;
+        }
+
+        if (lowerKey.includes('clock')) {
+            return `${strVal} GHz`;
+        }
+        if (lowerKey.includes('speed')) {
+            return `${strVal} MHz`;
+        }
+
+        return strVal;
+    };
+
+    const formatKey = (key: string) => {
+        return key
+            .replace(/([A-Z])/g, ' $1')
+            .replace(/_/g, ' ')
+            .replace(/\b\w/g, c => c.toUpperCase());
+    };
+
+    return (
+        <Dialog
+            open={open}
+            onClose={onClose}
+            maxWidth="lg"
+            // fullWidth
+            sx={{zIndex: 1400}}
+        >
+            <DialogTitle sx={{
+                display: 'flex',
+                justifyContent: 'space-between',
+                alignItems: 'center',
+                bgcolor: '#333',
+                color: 'white'
+            }}>
+                <Box>
+                    <Typography variant="caption" sx={{textTransform: 'uppercase', opacity: 0.7}}>
+                        {displayData.brand}
+                    </Typography>
+                    <Typography variant="h6" fontWeight="bold">
+                        {displayData.name}
+                    </Typography>
+                </Box>
+                <IconButton onClick={onClose} sx={{color: 'white'}}>
+                    <CloseIcon/>
+                </IconButton>
+            </DialogTitle>
+
+            <DialogContent dividers>
+                {loading ? (
+                    <Box sx={{display: 'flex', justifyContent: 'center', p: 5}}>
+                        <CircularProgress/>
+                    </Box>
+                ) : (
+                    <Grid container spacing={4}>
+                        <Grid item xs={12} md={4} sx={{display: 'flex', flexDirection: 'column', alignItems: 'center'}}>
+                            <Box
+                                component="img"
+                                src={`https://placehold.co/400x400?text=${encodeURIComponent(displayData.name)}`}
+                                alt={displayData.name}
+                                sx={{
+                                    width: '100%',
+                                    maxHeight: 300,
+                                    objectFit: 'contain',
+                                    mb: 2,
+                                    border: '1px solid #eee',
+                                    borderRadius: 2,
+                                    p: 2
+                                }}
+                            />
+                            <Chip
+                                label={displayData.type?.toUpperCase()}
+                                color="primary"
+                                sx={{fontWeight: 'bold'}}
+                            />
+                        </Grid>
+
+                        <Grid item xs={12} md={8}>
+                            <Typography variant="subtitle1" fontWeight="bold" gutterBottom
+                                        sx={{borderBottom: '2px solid #ff8201', display: 'inline-block', mb: 0.5}}>
+                                Technical Specifications
+                            </Typography>
+
+                            <TableContainer component={Paper} variant="outlined">
+                                <Table size="small">
+                                    <TableBody>
+                                        <TableRow>
+                                            <TableCell component="th" scope="row"
+                                                       sx={{fontWeight: 'bold', width: '30%', bgcolor: '#1e1e1e'}}>
+                                                Brand
+                                            </TableCell>
+                                            <TableCell>{displayData.brand}</TableCell>
+                                        </TableRow>
+
+                                        {Object.entries(specs).map(([key, val]) => {
+                                            if (key === 'componentId' || key === 'id') return null;
+
+                                            return (
+                                                <TableRow key={key}>
+                                                    <TableCell component="th" scope="row" sx={{
+                                                        fontWeight: 'bold',
+                                                        width: '30%',
+                                                        bgcolor: '#1e1e1e'
+                                                    }}>
+                                                        {formatKey(key)}
+                                                    </TableCell>
+                                                    <TableCell>{renderValue(key, val)}</TableCell>
+                                                </TableRow>
+                                            );
+                                        })}
+                                    </TableBody>
+                                </Table>
+                            </TableContainer>
+                            <Box sx={{display: 'flex', justifyContent: 'space-between', alignItems: 'center', mt: 0.5}}>
+                                <Typography variant="h4" color="primary.main" fontWeight="bold">
+                                    {formatMoney(displayData.price)}
+                                </Typography>
+                            </Box>
+                        </Grid>
+                    </Grid>
+                )}
+            </DialogContent>
+
+            <DialogActions sx={{p: 2}}>
+                <Button onClick={onClose} variant="contained"
+                        sx={{
+                            backgroundColor: '#ff8201',
+                            color: 'white',
+                            borderColor: '#ff8201',
+                            onHover: {backgroundColor: '#ba5d02', borderColor: '#ba5d02'}
+                        }}
+                >Close</Button>
+            </DialogActions>
+        </Dialog>
+    );
+}
Index: components/ComponentDialog.tsx
===================================================================
--- components/ComponentDialog.tsx	(revision a932c9ee67f19f8edeb101f6ee34cb81e6572601)
+++ components/ComponentDialog.tsx	(revision a932c9ee67f19f8edeb101f6ee34cb81e6572601)
@@ -0,0 +1,204 @@
+import React, { useEffect, useState } from 'react';
+import {
+    Dialog, DialogContent, IconButton, Grid, Box, Typography,
+    Slider, FormControl, InputLabel, Select, MenuItem, Checkbox, ListItemText,
+    Card, CardContent, CardMedia, Button, CircularProgress, Divider, AppBar, Toolbar
+} from '@mui/material';
+import CloseIcon from '@mui/icons-material/Close';
+import FilterListIcon from '@mui/icons-material/FilterList';
+import SortIcon from '@mui/icons-material/Sort';
+
+import { onGetAllComponents } from '../pages/+Layout.telefunc';
+import ComponentDetailsDialog from "./ComponentDetailsDialog";
+
+const formatMoney = (amount: number) => `$${amount}`;
+
+export default function ComponentBrowserDialog({ open, category, onClose }: any) {
+    const [components, setComponents] = useState<any[]>([]);
+    const [loading, setLoading] = useState(false);
+
+    const [selectedComponent, setSelectedComponent] = useState<any>(null);
+    const [priceRange, setPriceRange] = useState<number[]>([0, 2000]);
+    const [selectedBrands, setSelectedBrands] = useState<string[]>([]);
+    const [availableBrands, setAvailableBrands] = useState<string[]>([]);
+
+    const [sortOrder, setSortOrder] = useState<string>('default');
+
+    useEffect(() => {
+        if (open && category) {
+            setLoading(true);
+            setSortOrder('price_desc');
+
+            onGetAllComponents({ componentType: category })
+                .then((data) => {
+                    setComponents(data);
+
+                    const brands = Array.from(new Set(data.map((c: any) => c.brand)));
+                    setAvailableBrands(brands as string[]);
+
+                    const maxPrice = data.length > 0 ? Math.max(...data.map((c: any) => Number(c.price))) : 2000;
+                    setPriceRange([0, Math.ceil(maxPrice)]);
+                })
+                .catch(console.error)
+                .finally(() => setLoading(false));
+        }
+    }, [open, category]);
+
+    let processedComponents = components.filter(comp => {
+        const matchesBrand = selectedBrands.length === 0 || selectedBrands.includes(comp.brand);
+        const matchesPrice = Number(comp.price) >= priceRange[0] && Number(comp.price) <= priceRange[1];
+        return matchesBrand && matchesPrice;
+    });
+
+    if (sortOrder === 'price_asc') {
+        processedComponents.sort((a, b) => Number(a.price) - Number(b.price));
+    } else if (sortOrder === 'price_desc') {
+        processedComponents.sort((a, b) => Number(b.price) - Number(a.price));
+    }
+
+    const handleBrandChange = (event: any) => {
+        const value = event.target.value;
+        setSelectedBrands(typeof value === 'string' ? value.split(',') : value);
+    };
+
+    if (!open) return null;
+
+    return (
+        <Dialog
+            open={open}
+            onClose={onClose}
+            maxWidth="xl"
+            fullWidth
+            PaperProps={{ sx: { height: '90vh' } }}
+        >
+            <AppBar position="relative" sx={{ bgcolor: '#ff8201' }}>
+                <Toolbar>
+                    <Typography sx={{ ml: 2, flex: 1, textTransform: 'capitalize' }} variant="h6" component="div">
+                        Browsing: <b>{category === 'gpu' ? 'Graphics Cards' : category?.toUpperCase()}</b>
+                    </Typography>
+                    <IconButton edge="start" color="inherit" onClick={onClose}>
+                        <CloseIcon />
+                    </IconButton>
+                </Toolbar>
+            </AppBar>
+
+            <DialogContent sx={{ p: 0, display: 'flex', height: '100%' }}>
+                <Box sx={{ width: 300, borderRight: '1px solid #ddd', p: 3, bgcolor: '#1e1e1e', display: { xs: 'none', md: 'block' } }}>
+                    <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
+                        <SortIcon sx={{ mr: 1 }} />
+                        <Typography variant="h6">Sort By</Typography>
+                    </Box>
+                    <FormControl fullWidth size="small" sx={{ mb: 4 }}>
+                        <InputLabel>Price</InputLabel>
+                        <Select
+                            value={sortOrder}
+                            label="Price"
+                            onChange={(e) => setSortOrder(e.target.value)}>
+                            {/*<MenuItem value="default">Featured</MenuItem>*/}
+                            <MenuItem value="price_asc">Price: Low to High</MenuItem>
+                            <MenuItem value="price_desc">Price: High to Low</MenuItem>
+                        </Select>
+                    </FormControl>
+
+                    <Divider sx={{ mb: 3 }} />
+
+                    <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
+                        <FilterListIcon sx={{ mr: 1 }} />
+                        <Typography variant="h6">Filters</Typography>
+                    </Box>
+
+                    <Typography gutterBottom fontWeight="bold">Price Range</Typography>
+                    <Slider
+                        value={priceRange}
+                        onChange={(_, newValue) => setPriceRange(newValue as number[])}
+                        valueLabelDisplay="auto"
+                        min={0}
+                        max={components.length > 0 ? Math.max(...components.map(c => Number(c.price))) : 2000}
+                        sx={{ color: '#ff8201', mb: 2}}
+                    />
+                    <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 2 }}>
+                        <Typography variant="caption">{formatMoney(priceRange[0])}</Typography>
+                        <Typography variant="caption">{formatMoney(priceRange[1])}</Typography>
+                    </Box>
+
+                    <FormControl fullWidth size="small">
+                        <InputLabel>Brands</InputLabel>
+                        <Select
+                            multiple
+                            value={selectedBrands}
+                            onChange={handleBrandChange}
+                            renderValue={(selected) => selected.join(', ')}
+                            label="Brands"
+                        >
+                            {availableBrands.map((brand) => (
+                                <MenuItem key={brand} value={brand}>
+                                    <Checkbox checked={selectedBrands.indexOf(brand) > -1} />
+                                    <ListItemText primary={brand} />
+                                </MenuItem>
+                            ))}
+                        </Select>
+                    </FormControl>
+                </Box>
+
+                <Box sx={{ flex: 1, p: 3, overflowY: 'auto' }}>
+                    {loading ? (
+                        <Box sx={{ display: 'flex', justifyContent: 'center', mt: 10 }}>
+                            <CircularProgress sx={{ color: '#ff8201' }} />
+                        </Box>
+                    ) : (
+                        <Grid container spacing={3}>
+                            {processedComponents.map((comp) => (
+                                <Grid item xs={12} sm={6} md={4} lg={3} key={comp.id}>
+                                    <Card elevation={3} sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
+                                        <CardMedia
+                                            component="img"
+                                            height="140"
+
+                                            image={`https://placehold.co/400x400?text=${encodeURIComponent(comp.name)}`}
+                                            alt={comp.name}
+                                            sx={{ p: 2, objectFit: 'contain' }}
+                                        />
+                                        <CardContent sx={{ flexGrow: 1 }}>
+                                            <Typography variant="caption" color="text.secondary" sx={{ textTransform: 'uppercase' }}>
+                                                {comp.brand}
+                                            </Typography>
+                                            <Typography variant="subtitle1" fontWeight="bold" sx={{ lineHeight: 1.2, mb: 1 }}>
+                                                {comp.name}
+                                            </Typography>
+
+                                            <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mt: 2 }}>
+                                                <Typography variant="h6" color="primary.main">
+                                                    {formatMoney(comp.price)}
+                                                </Typography>
+                                            </Box>
+                                        </CardContent>
+                                        <Box sx={{ p: 2, pt: 0}}>
+                                            <Button
+                                                fullWidth
+                                                variant="outlined"
+                                                onClick={()=> setSelectedComponent(comp)}
+                                                sx={{backgroundColor:'#ff8201', color: 'white', borderColor: '#ff8201', onHover: { backgroundColor: '#e67300', borderColor: '#e67300' } }}
+                                            >
+                                                Details
+                                            </Button>
+                                        </Box>
+                                    </Card>
+                                </Grid>
+                            ))}
+                            {processedComponents.length === 0 && (
+                                <Box sx={{ width: '100%', textAlign: 'center', mt: 5 }}>
+                                    <Typography variant="h6" color="text.secondary">No components match.</Typography>
+                                </Box>
+                            )}
+                        </Grid>
+                    )}
+                </Box>
+            </DialogContent>
+            <ComponentDetailsDialog
+                open={!!selectedComponent}
+                component={selectedComponent}
+                onClose={() => setSelectedComponent(null)}
+            />
+        </Dialog>
+    );
+}
Index: pages/dashboard/admin/+Page.tsx
===================================================================
--- pages/dashboard/admin/+Page.tsx	(revision a932c9ee67f19f8edeb101f6ee34cb81e6572601)
+++ pages/dashboard/admin/+Page.tsx	(revision a932c9ee67f19f8edeb101f6ee34cb81e6572601)
@@ -0,0 +1,232 @@
+import React, { useEffect, useState } from 'react';
+import {
+    Container, Grid, Paper, Typography, Box, Avatar, Divider, Button,
+    CircularProgress, Table, TableBody, TableCell, TableHead, TableRow,
+    Chip, IconButton, TextField, Dialog, DialogTitle, DialogContent, DialogActions
+} from '@mui/material';
+import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings';
+import CheckCircleIcon from '@mui/icons-material/CheckCircle';
+import CancelIcon from '@mui/icons-material/Cancel';
+import BuildIcon from '@mui/icons-material/Build';
+import MemoryIcon from '@mui/icons-material/Memory';
+
+import {
+    getAdminInfoAndData,
+    onSetBuildApprovalStatus,
+    onSetComponentSuggestionStatus
+} from './adminDashboard.telefunc';
+
+import BuildCard from '../../../components/BuildCard';
+import BuildDetailsDialog from '../../../components/BuildDetailsDialog';
+
+export default function AdminDashboard() {
+    const [data, setData] = useState<any>(null);
+    const [loading, setLoading] = useState(true);
+    const [selectedBuildId, setSelectedBuildId] = useState<number | null>(null);
+
+    const [suggestionDialog, setSuggestionDialog] = useState<{ open: boolean, id: number | null, action: 'approved' | 'rejected' }>({ open: false, id: null, action: 'approved' });
+    const [adminComment, setAdminComment] = useState("");
+
+    const loadData = () => {
+        getAdminInfoAndData()
+            .then(res => { setData(res); setLoading(false); })
+            .catch(err => {
+                console.error(err);
+                alert("Failed to load admin data. Are you an admin?");
+            });
+    };
+
+    useEffect(() => { loadData(); }, []);
+
+    const handleBuildReview = async (buildId: number, isApproved: boolean) => {
+        if (!confirm(`Are you sure you want to ${isApproved ? 'APPROVE' : 'REJECT'} this build?`)) return;
+        try {
+            await onSetBuildApprovalStatus({ buildId, isApproved });
+            loadData();
+        } catch (e) { alert("Action failed"); }
+    };
+
+    const openSuggestionReview = (id: number, action: 'approved' | 'rejected') => {
+        setSuggestionDialog({ open: true, id, action });
+        setAdminComment(action === 'approved' ? "Approved by admin." : "Rejected: ");
+    };
+
+    const submitSuggestionReview = async () => {
+        if (!suggestionDialog.id) return;
+        try {
+            await onSetComponentSuggestionStatus({
+                suggestionId: suggestionDialog.id,
+                status: suggestionDialog.action,
+                adminComment: adminComment
+            });
+            // console.error("Test za admincomment: ", adminComment);
+            setSuggestionDialog({ ...suggestionDialog, open: false });
+            loadData();
+        } catch (e) { alert("Failed to update suggestion"); }
+    };
+
+    if (loading) return <Box sx={{ p: 5, textAlign: 'center' }}><CircularProgress /></Box>;
+    if (!data) return <Box sx={{ p: 5, textAlign: 'center' }}>Access Denied</Box>;
+
+    return (
+        <Container maxWidth="xl" sx={{ mt: 4, mb: 10 }}>
+            <Grid container spacing={4}>
+                <Grid item xs={12} md={3}>
+                    <Paper elevation={3} sx={{ p: 4, display: 'flex', flexDirection: 'column', alignItems: 'center', height: '100%', bgcolor: '#1e1e1e', color: 'white' }}>
+                        <Avatar sx={{ width: 120, height: 120, mb: 2, bgcolor: 'error.main' }}>
+                            <AdminPanelSettingsIcon sx={{ fontSize: 70 }} />
+                        </Avatar>
+                        <Typography variant="h5" fontWeight="bold">{data.admin.username}</Typography>
+                        <Typography variant="body2" sx={{ opacity: 0.7, mb: 3 }}>{data.admin.email}</Typography>
+
+                        <Chip label="ADMINISTRATOR" color="error" variant="outlined" sx={{ fontWeight: 'bold' }} />
+                        <Divider sx={{ width: '100%', my: 3, bgcolor: 'rgba(255,255,255,0.1)' }} />
+
+                        <Box sx={{ width: '100%', textAlign: 'center' }}>
+                            <Typography variant="h3" fontWeight="bold" color="primary.main">
+                                {data.pendingBuilds?.length || 0}
+                            </Typography>
+                            <Typography variant="caption">Pending Builds</Typography>
+                        </Box>
+                    </Paper>
+                </Grid>
+
+                <Grid item xs={12} md={9}>
+                    <Grid container spacing={4} direction="column">
+                        <Grid item xs={12}>
+                            <Paper sx={{ p: 3, borderLeft: '6px solid #9c27b0' }}>
+                                <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
+                                    <MemoryIcon color="secondary" sx={{ mr: 1 }} />
+                                    <Typography variant="h6" fontWeight="bold">
+                                        Suggested Components ({data.componentSuggestions?.length || 0})
+                                    </Typography>
+                                </Box>
+
+                                {data.componentSuggestions?.length === 0 ? (
+                                    <Typography color="text.secondary">No pending suggestions.</Typography>
+                                ) : (
+                                    <Table size="small">
+                                        <TableHead>
+                                            <TableRow>
+                                                <TableCell>Link/Description</TableCell>
+                                                <TableCell>Type</TableCell>
+                                                <TableCell>User</TableCell>
+                                                <TableCell align="right">Actions</TableCell>
+                                            </TableRow>
+                                        </TableHead>
+                                        <TableBody>
+                                            {data.componentSuggestions.map((sug: any) => (
+                                                <TableRow key={sug.id}>
+                                                    <TableCell sx={{ maxWidth: 300 }}>
+                                                        <a href={sug.link} title={sug.link} style={{textDecoration: 'none', color: 'inherit'}}>
+                                                            {sug.description || sug.link}
+                                                        </a>
+                                                    </TableCell>
+                                                    <TableCell>{sug.componentType}</TableCell>
+                                                    <TableCell>{sug.userId}</TableCell>
+                                                    <TableCell align="right">
+                                                        <IconButton size="small" color="success" onClick={() => openSuggestionReview(sug.id, 'approved')}>
+                                                            <CheckCircleIcon />
+                                                        </IconButton>
+                                                        <IconButton size="small" color="error" onClick={() => openSuggestionReview(sug.id, 'rejected')}>
+                                                            <CancelIcon />
+                                                        </IconButton>
+                                                    </TableCell>
+                                                </TableRow>
+                                            ))}
+                                        </TableBody>
+                                    </Table>
+                                )}
+                            </Paper>
+                        </Grid>
+
+                        <Grid item xs={12}>
+                            <Paper sx={{ p: 3, borderLeft: '6px solid #ed6c02', bgcolor: '#121212' }}>
+                                <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
+                                    <BuildIcon color="warning" sx={{ mr: 1 }} />
+                                    <Typography variant="h6" fontWeight="bold">
+                                        Builds Waiting for Approval ({data.pendingBuilds?.length || 0})
+                                    </Typography>
+                                </Box>
+
+                                {data.pendingBuilds?.length === 0 ? (
+                                    <Typography color="text.secondary">No pending builds.</Typography>
+                                ) : (
+                                    <Grid container spacing={2}>
+                                        {data.pendingBuilds.map((build: any) => (
+                                            <Grid item xs={12} md={4} key={build.id}>
+                                                <Box sx={{ position: 'relative' }}>
+                                                    <BuildCard
+                                                        build={build}
+                                                        onClick={() => setSelectedBuildId(build.id)}
+                                                    />
+                                                    <Box sx={{
+                                                        mt: 1, display: 'flex', gap: 1,
+                                                        justifyContent: 'center', bgcolor: '#121212', p: 1, borderRadius: 1
+                                                    }}>
+                                                        <Button variant="contained" color="success" size="small" onClick={() => handleBuildReview(build.id, true)}>
+                                                            Approve
+                                                        </Button>
+                                                        <Button variant="contained" color="error" size="small" onClick={() => handleBuildReview(build.id, false)}>
+                                                            Reject
+                                                        </Button>
+                                                    </Box>
+                                                </Box>
+                                            </Grid>
+                                        ))}
+                                    </Grid>
+                                )}
+                            </Paper>
+                        </Grid>
+
+                        <Grid item xs={12}>
+                            <Paper sx={{ p: 3, borderLeft: '6px solid #2e7d32' }}>
+                                <Typography variant="h6" fontWeight="bold" gutterBottom>
+                                    My Builds / Sandbox
+                                </Typography>
+                                {data.userBuilds?.length === 0 ? (
+                                    <Typography color="text.secondary">No builds created by admin.</Typography>
+                                ) : (
+                                    <Grid container spacing={2}>
+                                        {data.userBuilds.slice(0, 4).map((build: any) => (
+                                            <Grid item xs={12} md={3} key={build.id}>
+                                                <BuildCard
+                                                    build={build}
+                                                    onClick={() => setSelectedBuildId(build.id)}
+                                                />
+                                            </Grid>
+                                        ))}
+                                    </Grid>
+                                )}
+                            </Paper>
+                        </Grid>
+
+                    </Grid>
+                </Grid>
+            </Grid>
+
+            <Dialog open={suggestionDialog.open} onClose={() => setSuggestionDialog({...suggestionDialog, open: false})}>
+                <DialogTitle>Review Suggestion</DialogTitle>
+                <DialogContent>
+                    <Typography gutterBottom>Status: <b>{suggestionDialog.action.toUpperCase()}</b></Typography>
+                    <TextField
+                        fullWidth label="Admin Comment" multiline rows={3}
+                        value={adminComment} onChange={(e) => setAdminComment(e.target.value)}
+                    />
+                </DialogContent>
+                <DialogActions>
+                    <Button onClick={() => setSuggestionDialog({...suggestionDialog, open: false})}>Cancel</Button>
+                    <Button variant="contained" onClick={submitSuggestionReview}>Submit</Button>
+                </DialogActions>
+            </Dialog>
+
+            <BuildDetailsDialog
+                open={!!selectedBuildId}
+                buildId={selectedBuildId}
+                currentUser={data.admin?.id}
+                onClose={() => setSelectedBuildId(null)}
+                onClone={() => alert("Clone disabled in admin view")}
+            />
+        </Container>
+    );
+}
