FiveM Menu V1
Customization

Customization

Customize the appearance and behavior of FiveM Menu V1 to match your server's branding and style.

Theme Customization

Built-in Themes

FiveM Menu V1 comes with pre-configured themes in config/menu.json:

{
  "theme": "dark",  // Options: "dark", "light", "custom"
  "styling": {
    "width": 400,
    "maxHeight": 600,
    "opacity": 0.95,
    "blur": true,
    "shadow": true,
    "borderRadius": 8
  }
}

Available Themes

Dark Theme (Default):

  • Dark background with light text
  • Optimized for nighttime gameplay
  • Reduced eye strain

Light Theme:

  • Light background with dark text
  • Better visibility in bright areas
  • Clean, modern appearance

Custom Theme:

  • Fully customizable CSS
  • Define your own colors and styles

Custom CSS Styling

Creating a Custom Theme

Create a new CSS file in html/css/custom-theme.css:

/* Custom Theme Variables */
:root {
    --menu-primary-color: #6366f1;
    --menu-secondary-color: #4f46e5;
    --menu-background: rgba(17, 24, 39, 0.95);
    --menu-text-color: #f9fafb;
    --menu-border-color: rgba(99, 102, 241, 0.3);
    --menu-hover-bg: rgba(99, 102, 241, 0.2);
    --menu-selected-bg: rgba(99, 102, 241, 0.3);
}
 
/* Menu Container */
.menu-container {
    background: var(--menu-background);
    border: 2px solid var(--menu-border-color);
    border-radius: 12px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(10px);
}
 
/* Menu Header */
.menu-header {
    background: linear-gradient(135deg, var(--menu-primary-color), var(--menu-secondary-color));
    color: white;
    padding: 1rem;
    border-radius: 10px 10px 0 0;
}
 
.menu-title {
    font-size: 1.5rem;
    font-weight: bold;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
 
/* Menu Items */
.menu-item {
    padding: 0.75rem 1rem;
    color: var(--menu-text-color);
    transition: all 0.2s ease;
    border-left: 3px solid transparent;
}
 
.menu-item:hover {
    background: var(--menu-hover-bg);
    border-left-color: var(--menu-primary-color);
}
 
.menu-item.selected {
    background: var(--menu-selected-bg);
    border-left-color: var(--menu-primary-color);
}
 
/* Menu Icons */
.menu-icon {
    width: 20px;
    height: 20px;
    margin-right: 0.75rem;
    color: var(--menu-primary-color);
}
 
/* Submenu Indicator */
.submenu-arrow {
    color: var(--menu-primary-color);
    font-size: 0.875rem;
}

Apply Custom Theme

Update config/menu.json:

{
  "theme": "custom",
  "customThemeFile": "custom-theme.css"
}

Icon Customization

Default Icon Library

FiveM Menu V1 uses a built-in icon library. Available icons include:

user
users
car
heart
shield
settings
wrench
map-pin
dollar-sign
star
home
briefcase

Adding Custom Icons

Step 1: Add Icon File

Place your icon files in html/icons/ folder. Supported formats:

  • SVG (recommended)
  • PNG (with transparency)
  • WebP
fivem-menu/
├── html/
│   ├── icons/
│   │   ├── custom-police.svg
│   │   ├── custom-medic.svg
│   │   └── custom-mechanic.png

Step 2: Reference in Menu Items

Update config/menu-items.json:

{
  "label": "Police Actions",
  "icon": "custom-police",
  "description": "Law enforcement menu"
}

Step 3: Configure Icon Path (Optional)

In config/menu.json, specify custom icon directory:

{
  "icons": {
    "customPath": "icons/",
    "format": "svg",
    "fallback": "default"
  }
}

Using SVG Icons

Custom SVG icon example:

<!-- html/icons/custom-badge.svg -->
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
    <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>
</svg>

Using in menu:

{
  "label": "VIP Menu",
  "icon": "custom-badge"
}

Layout Customization

Position Options

Configure menu position in config/menu.json:

{
  "position": "top-left",
  "offset": {
    "x": 20,
    "y": 20
  }
}

Available Positions:

  • top-left
  • top-right
  • center
  • bottom-left
  • bottom-right
  • custom (use x/y coordinates)

Size Configuration

{
  "styling": {
    "width": 400,           // Menu width in pixels
    "maxHeight": 600,       // Maximum height before scrolling
    "minHeight": 200,       // Minimum height
    "itemHeight": 45,       // Individual item height
    "fontSize": 14,         // Base font size
    "iconSize": 20          // Icon size in pixels
  }
}

Spacing and Padding

{
  "spacing": {
    "itemPadding": "12px 16px",
    "itemGap": 4,
    "sectionGap": 12,
    "headerPadding": "16px",
    "footerPadding": "12px"
  }
}

Animation Customization

Animation Settings

Configure animations in config/menu.json:

{
  "animation": {
    "enabled": true,
    "type": "slide",           // Options: "slide", "fade", "scale", "none"
    "duration": 300,           // Animation duration in ms
    "easing": "ease-in-out",   // CSS easing function
    "slideDirection": "left"   // For slide animation: "left", "right", "top", "bottom"
  }
}

Animation Types

Slide Animation:

{
  "type": "slide",
  "slideDirection": "left",
  "duration": 250
}

Fade Animation:

{
  "type": "fade",
  "duration": 200
}

Scale Animation:

{
  "type": "scale",
  "duration": 300,
  "scaleFrom": 0.9
}

Custom CSS Animation:

Create in html/css/animations.css:

@keyframes customMenuOpen {
    from {
        opacity: 0;
        transform: translateY(-20px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
 
.menu-container.opening {
    animation: customMenuOpen 0.3s ease-out;
}

Sound Customization

Audio Configuration

Configure menu sounds in config/menu.json:

{
  "audio": {
    "enabled": true,
    "volume": 0.5,
    "sounds": {
      "open": "menu_open.ogg",
      "close": "menu_close.ogg",
      "navigate": "menu_navigate.ogg",
      "select": "menu_select.ogg",
      "back": "menu_back.ogg",
      "error": "menu_error.ogg"
    }
  }
}

Adding Custom Sounds

Step 1: Add sound files to html/sounds/:

html/
├── sounds/
│   ├── menu_open.ogg
│   ├── menu_close.ogg
│   ├── menu_select.ogg
│   └── custom_sound.ogg

Step 2: Reference in configuration:

{
  "sounds": {
    "select": "custom_sound.ogg"
  }
}

Supported formats:

  • OGG (recommended)
  • MP3
  • WAV

Color Schemes

Predefined Color Schemes

Modern Blue:

:root {
    --menu-primary: #3b82f6;
    --menu-secondary: #2563eb;
    --menu-accent: #60a5fa;
}

Professional Purple:

:root {
    --menu-primary: #8b5cf6;
    --menu-secondary: #7c3aed;
    --menu-accent: #a78bfa;
}

Elegant Green:

:root {
    --menu-primary: #10b981;
    --menu-secondary: #059669;
    --menu-accent: #34d399;
}

Classic Red:

:root {
    --menu-primary: #ef4444;
    --menu-secondary: #dc2626;
    --menu-accent: #f87171;
}

Creating Color Scheme

Step 1: Define colors in CSS:

/* html/css/color-scheme.css */
:root {
    /* Primary Colors */
    --color-primary-50: #faf5ff;
    --color-primary-100: #f3e8ff;
    --color-primary-500: #a855f7;
    --color-primary-600: #9333ea;
    --color-primary-700: #7e22ce;
    
    /* Background Colors */
    --bg-primary: rgba(17, 24, 39, 0.95);
    --bg-secondary: rgba(31, 41, 55, 0.9);
    --bg-hover: rgba(55, 65, 81, 0.8);
    
    /* Text Colors */
    --text-primary: #f9fafb;
    --text-secondary: #d1d5db;
    --text-muted: #9ca3af;
}

Step 2: Apply to menu elements:

.menu-container {
    background: var(--bg-primary);
    color: var(--text-primary);
}
 
.menu-item:hover {
    background: var(--bg-hover);
}
 
.menu-item.selected {
    background: var(--color-primary-600);
}

Advanced Customization

Custom Fonts

Step 1: Add font files:

html/
├── fonts/
│   ├── CustomFont-Regular.woff2
│   └── CustomFont-Bold.woff2

Step 2: Define font-face:

@font-face {
    font-family: 'CustomFont';
    src: url('../fonts/CustomFont-Regular.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
}
 
@font-face {
    font-family: 'CustomFont';
    src: url('../fonts/CustomFont-Bold.woff2') format('woff2');
    font-weight: bold;
    font-style: normal;
}

Step 3: Apply font:

.menu-container {
    font-family: 'CustomFont', sans-serif;
}

Background Effects

Blur Background:

.menu-container {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

Glassmorphism Effect:

.menu-container {
    background: rgba(255, 255, 255, 0.1);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.2);
    box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
}

Gradient Border:

.menu-container {
    border: 2px solid transparent;
    background: 
        linear-gradient(var(--bg-primary), var(--bg-primary)) padding-box,
        linear-gradient(135deg, #667eea 0%, #764ba2 100%) border-box;
}

Responsive Design

Tablet/Mobile optimizations:

@media (max-width: 768px) {
    .menu-container {
        width: 90vw;
        max-width: 400px;
    }
    
    .menu-item {
        padding: 1rem 0.75rem;
        font-size: 0.875rem;
    }
}

Customization Examples

Example 1: Police Menu Theme

:root {
    --police-blue: #1e40af;
    --police-light: #3b82f6;
}
 
.menu-container.police-theme {
    background: rgba(30, 64, 175, 0.95);
    border: 2px solid var(--police-light);
}
 
.police-theme .menu-header {
    background: linear-gradient(135deg, #1e3a8a, #1e40af);
}
 
.police-theme .menu-item:hover {
    background: rgba(59, 130, 246, 0.3);
    border-left: 3px solid var(--police-light);
}

Example 2: Minimalist Theme

.menu-container.minimal-theme {
    background: rgba(0, 0, 0, 0.85);
    border: none;
    border-radius: 0;
    box-shadow: none;
}
 
.minimal-theme .menu-item {
    padding: 0.5rem 1rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
 
.minimal-theme .menu-icon {
    display: none;
}

Example 3: Neon Theme

:root {
    --neon-pink: #ff10f0;
    --neon-blue: #00d9ff;
}
 
.menu-container.neon-theme {
    background: rgba(0, 0, 0, 0.9);
    border: 2px solid var(--neon-pink);
    box-shadow: 
        0 0 10px var(--neon-pink),
        0 0 20px var(--neon-pink),
        0 0 30px var(--neon-pink);
}
 
.neon-theme .menu-item.selected {
    color: var(--neon-blue);
    text-shadow: 0 0 10px var(--neon-blue);
}

Best Practices

  1. Test on different resolutions: Ensure menu looks good on various screen sizes
  2. Use web-safe fonts: Include fallback fonts for compatibility
  3. Optimize images: Compress icons and images for better performance
  4. Maintain contrast: Ensure text is readable against backgrounds
  5. Keep it simple: Don't over-complicate the design
  6. Consider accessibility: Use sufficient color contrast and font sizes
  7. Test animations: Ensure animations don't impact game performance

Troubleshooting Customization

Icons not displaying

  • Check file paths in configuration
  • Verify icon files exist in html/icons/
  • Ensure correct file format (SVG, PNG)

Custom CSS not applied

  • Verify CSS file is referenced in config
  • Check for syntax errors in CSS
  • Clear browser cache (Ctrl+F5 in-game)

Colors not changing

  • Ensure CSS variables are properly defined
  • Check that custom theme is selected in config
  • Verify CSS specificity

Next Steps