diff --git a/resources/css/app.css b/resources/css/app.css index 3e6abea..1fe3aea 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -9,3 +9,63 @@ --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.tab-button { + transition: all 0.2s ease-in-out; +} + +.tab-content { + animation: fadeIn 0.3s ease-in-out; +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.code-block-wrapper { + position: relative; +} + +.copy-button { + position: absolute; + top: 0.5rem; + right: 0.5rem; + padding: 0.375rem 0.75rem; + background-color: rgba(55, 65, 81, 0.8); + color: white; + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 0.375rem; + font-size: 0.75rem; + font-weight: 500; + cursor: pointer; + opacity: 0; + transition: all 0.2s ease-in-out; + display: flex; + align-items: center; + gap: 0.25rem; +} + +.code-block-wrapper:hover .copy-button { + opacity: 1; +} + +.copy-button:hover { + background-color: rgba(55, 65, 81, 1); +} + +.copy-button.copied { + background-color: rgba(16, 185, 129, 0.9); + border-color: rgba(16, 185, 129, 1); +} + +.copy-button svg { + width: 1rem; + height: 1rem; +} diff --git a/resources/js/app.js b/resources/js/app.js index e59d6a0..1c58a0c 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1 +1,38 @@ import './bootstrap'; + +document.addEventListener('DOMContentLoaded', () => { + const codeBlocks = document.querySelectorAll('pre'); + + codeBlocks.forEach((pre) => { + if (!pre.parentElement.classList.contains('code-block-wrapper')) { + const wrapper = document.createElement('div'); + wrapper.className = 'code-block-wrapper'; + pre.parentNode.insertBefore(wrapper, pre); + wrapper.appendChild(pre); + } + + const wrapper = pre.parentElement; + const copyButton = document.createElement('button'); + copyButton.className = 'copy-button'; + copyButton.innerHTML = ` Copy`; + + copyButton.addEventListener('click', () => { + const code = pre.querySelector('code'); + const text = code ? code.textContent : pre.textContent; + + navigator.clipboard.writeText(text).then(() => { + copyButton.classList.add('copied'); + copyButton.innerHTML = ` Copied!`; + + setTimeout(() => { + copyButton.classList.remove('copied'); + copyButton.innerHTML = `Copy`; + }, 2000); + }).catch((err) => { + console.error('Failed to copy:', err); + }); + }); + + wrapper.appendChild(copyButton); + }); +}); diff --git a/resources/views/docs/documentation.blade.php b/resources/views/docs/documentation.blade.php index 69eec19..ad0a549 100644 --- a/resources/views/docs/documentation.blade.php +++ b/resources/views/docs/documentation.blade.php @@ -3,27 +3,6 @@ @section('title', 'Full Documentation - FiveM MCP Server') @section('content') - -

FiveM Development MCP Server

@@ -85,7 +64,7 @@
{
   "mcpServers": {
     "fivem": {
-      "url": "https://your-domain.com/mcp"
+      "url": "https://your-domain.com/fivem"
     }
   }
 }
@@ -103,7 +82,7 @@ "mcp": { "servers": { "fivem": { - "url": "https://your-domain.com/mcp" + "url": "https://your-domain.com/fivem" } } } diff --git a/resources/views/docs/index.blade.php b/resources/views/docs/index.blade.php index 1941fb7..9880d6d 100644 --- a/resources/views/docs/index.blade.php +++ b/resources/views/docs/index.blade.php @@ -22,7 +22,7 @@
-
+
@@ -43,7 +43,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
@@ -85,7 +85,7 @@
-
+
@@ -106,7 +106,7 @@
-
+
@@ -127,7 +127,7 @@
-
+
diff --git a/resources/views/docs/layout.blade.php b/resources/views/docs/layout.blade.php index 9cc758f..cb868fb 100644 --- a/resources/views/docs/layout.blade.php +++ b/resources/views/docs/layout.blade.php @@ -5,43 +5,6 @@ @yield('title', 'FiveM MCP Server Documentation') @vite(['resources/css/app.css', 'resources/js/app.js']) -
@@ -50,17 +13,17 @@
-
+

FiveM MCP Server

@@ -83,65 +46,5 @@
- - diff --git a/resources/views/docs/quickstart.blade.php b/resources/views/docs/quickstart.blade.php index d84268b..39ca8e7 100644 --- a/resources/views/docs/quickstart.blade.php +++ b/resources/views/docs/quickstart.blade.php @@ -3,27 +3,6 @@ @section('title', 'Quick Start Guide - FiveM MCP Server') @section('content') - -

FiveM MCP Quick Start Guide

@@ -94,7 +73,11 @@

Ask your server administrator for the MCP server URL. It will look like:

-
https://your-domain.com/mcp
+
https://your-domain.com/fivem
+

+ If you're using the official hosted server, use this URL: +

+
{{ route('fivem') }}
@@ -110,7 +93,7 @@
{
   "mcpServers": {
     "fivem": {
-      "url": "https://your-domain.com/mcp"
+      "url": "https://your-domain.com/fivem"
     }
   }
 }
@@ -121,7 +104,7 @@ "mcp": { "servers": { "fivem": { - "url": "https://your-domain.com/mcp" + "url": "https://your-domain.com/fivem" } } } diff --git a/routes/ai.php b/routes/ai.php index 65a609a..e491130 100644 --- a/routes/ai.php +++ b/routes/ai.php @@ -5,4 +5,4 @@ use Laravel\Mcp\Facades\Mcp; Mcp::local('fivem', FiveMServer::class); -Mcp::web('fivem', FiveMServer::class); +Mcp::web('fivem', FiveMServer::class)->name('fivem');