diff --git a/src/main/java/org/mangorage/mangobotsite/website/WebsiteConstants.java b/src/main/java/org/mangorage/mangobotsite/website/WebsiteConstants.java
index 9636410..30d6117 100644
--- a/src/main/java/org/mangorage/mangobotsite/website/WebsiteConstants.java
+++ b/src/main/java/org/mangorage/mangobotsite/website/WebsiteConstants.java
@@ -9,6 +9,7 @@ public final class WebsiteConstants {
new HeaderData("/home", "Home", true),
new HeaderData("/home#plugins", "Plugins", true),
new HeaderData("/tricks", "Tricks", true),
- new HeaderData("/home#contact", "Contact", true)
+ new HeaderData("/home#contact", "Contact", true),
+ new HeaderData("/commands", "Commands", true)
);
}
diff --git a/src/main/java/org/mangorage/mangobotsite/website/servlet/CommandsServlet.java b/src/main/java/org/mangorage/mangobotsite/website/servlet/CommandsServlet.java
index 2ef2069..894983d 100644
--- a/src/main/java/org/mangorage/mangobotsite/website/servlet/CommandsServlet.java
+++ b/src/main/java/org/mangorage/mangobotsite/website/servlet/CommandsServlet.java
@@ -6,6 +6,7 @@
import org.mangorage.mangobotcore.api.command.v1.AbstractCommand;
import org.mangorage.mangobotcore.api.plugin.v1.PluginManager;
import org.mangorage.mangobotplugin.entrypoint.MangoBot;
+import org.mangorage.mangobotsite.website.WebsiteConstants;
import org.mangorage.mangobotsite.website.servlet.impl.StandardHttpServlet;
import org.mangorage.mangobotsite.website.util.MapBuilder;
import org.mangorage.mangobotsite.website.util.WebUtil;
@@ -20,6 +21,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
WebUtil.processTemplate(
MapBuilder.of()
+ .put("headers", WebsiteConstants.headers)
.put("commandDataList",
dispatcher.getAllRegisteredCommands()
.stream()
diff --git a/src/main/resources/templates/commands.ftl b/src/main/resources/templates/commands.ftl
index f2fc1ef..ff81af6 100644
--- a/src/main/resources/templates/commands.ftl
+++ b/src/main/resources/templates/commands.ftl
@@ -1,131 +1,118 @@
-
-
- Commands
-
-
-
-
- Command List
-
+
+
+
+
+ Commands - MangoBot
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<#list commandDataList as data>
-
-
${data.cmd()}
<#list data.commandParts() as cmd>
-
-
<#if cmd.getCommandNotes()?has_content>
- ${cmd.getName()}
-
- <#list cmd.getCommandNotes() as note>
- • ${note}
- #list>
+ ${cmd.getName()}
+
+ <#list cmd.getCommandNotes() as note>
+ ${note}
+ #list>
+
-
<#else>
-
${cmd.getName()}
+
${cmd.getName()}
#if>
-
<#list cmd.getParameters() as p>
- <#if p.isRequired()>
- <${p.getName()}>
- <#else>
- [${p.getName()}]
- #if>
-
-
- Name: ${p.getName()}
- Type: ${p.getType()}
- Argument Type: ${p.getArgumentType()}
- Description: ${p.getDescription()}
- Suggestions: ${p.getSuggestions()}
- Required: ${p.isRequired()?string("yes","no")}
+ <#if p.isRequired()>
+ <${p.getName()}>
+ <#else>
+ [${p.getName()}]
+ #if>
+
+
+ Name: ${p.getName()}
+ Type: ${p.getType()}
+ Argument Type: ${p.getArgumentType()}
+ Description: ${p.getDescription()}
+ Suggestions: ${p.getSuggestions()}
+ Required: ${p.isRequired()?string("yes","no")}
+
-
#list>
-
#list>
-
#list>
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/webpage-internal/css/main.css b/src/main/resources/webpage-internal/css/main.css
index 2e36346..70a7378 100644
--- a/src/main/resources/webpage-internal/css/main.css
+++ b/src/main/resources/webpage-internal/css/main.css
@@ -58,13 +58,16 @@ body {
color: var(--color-text);
line-height: 1.6;
overflow-x: hidden;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
}
-
a {
text-decoration: none;
color: inherit;
}
+
ul {
list-style: none;
}
@@ -141,11 +144,6 @@ img {
background: var(--color-bg-tertiary);
}
-.nav-link.active {
- color: var(--color-primary);
- background: rgba(255, 149, 0, 0.1);
-}
-
.nav-cta {
display: flex;
align-items: center;
@@ -856,6 +854,7 @@ section {
background: var(--color-bg-secondary);
border-top: 1px solid var(--color-border);
padding: 40px 0;
+ margin-top: auto;
}
.footer-content {
@@ -1243,3 +1242,184 @@ html {
justify-content: center;
}
}
+.page-header {
+ padding-top: 140px;
+ padding-bottom: 60px;
+ background: var(--gradient-hero);
+}
+
+.header-content {
+ text-align: center;
+}
+
+.header-subtitle {
+ font-size: 1.1rem;
+ color: var(--color-text-secondary);
+ max-width: 600px;
+ margin: 0 auto;
+}
+
+.commands-content {
+ padding: 60px 0 100px;
+}
+
+.command-block {
+ margin-bottom: 40px;
+ background: var(--color-bg-card);
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+ transition: all var(--transition-base);
+}
+
+.command-block:hover {
+ border-color: var(--color-border-light);
+ box-shadow: var(--shadow-md);
+}
+
+.command-block > h2 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--color-primary);
+ margin-bottom: 20px;
+ padding-bottom: 16px;
+ border-bottom: 1px solid var(--color-border);
+ display: flex;
+ align-items: center;
+ gap: 12px;
+}
+
+.command-block > h2::before {
+ content: "⚡";
+ font-size: 1.25rem;
+}
+
+.command {
+ margin: 12px 0;
+ padding: 14px 16px;
+ background: var(--color-bg-tertiary);
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius-md);
+ font-family: 'JetBrains Mono', 'SF Mono', 'Fira Code', 'Consolas', monospace;
+ font-size: 0.9rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 8px;
+ transition: all var(--transition-fast);
+}
+
+.command:hover {
+ background: var(--color-bg-elevated);
+ border-color: var(--color-border-light);
+}
+
+.cmd {
+ cursor: help;
+ position: relative;
+ color: var(--color-primary);
+ font-weight: 600;
+ padding: 4px 8px;
+ background: rgba(255, 149, 0, 0.1);
+ border-radius: var(--radius-sm);
+}
+
+.cmd .tooltip {
+ display: none;
+ position: absolute;
+ background: var(--color-bg-elevated);
+ border: 1px solid var(--color-border-light);
+ padding: 12px;
+ border-radius: var(--radius-md);
+ top: calc(100% + 8px);
+ left: 0;
+ white-space: nowrap;
+ z-index: 100;
+ box-shadow: var(--shadow-lg);
+ font-family: var(--font-sans);
+ font-size: 0.85rem;
+ min-width: 200px;
+}
+
+.cmd .tooltip > div {
+ margin: 4px 0;
+ padding-left: 8px;
+ color: var(--color-text-secondary);
+}
+
+.cmd .tooltip > div::before {
+ content: "•";
+ color: var(--color-primary);
+ margin-right: 8px;
+}
+
+.cmd:hover .tooltip {
+ display: block;
+ animation: fadeIn 0.2s ease;
+}
+
+.param {
+ cursor: help;
+ position: relative;
+ color: var(--color-secondary);
+ font-weight: 500;
+ padding: 4px 8px;
+ background: rgba(88, 101, 242, 0.1);
+ border-radius: var(--radius-sm);
+}
+
+.param.required {
+ color: #ef4444;
+ background: rgba(239, 68, 68, 0.1);
+}
+
+.param .tooltip {
+ display: none;
+ position: absolute;
+ background: var(--color-bg-elevated);
+ border: 1px solid var(--color-border-light);
+ padding: 12px 16px;
+ border-radius: var(--radius-md);
+ top: calc(100% + 8px);
+ left: 0;
+ z-index: 100;
+ box-shadow: var(--shadow-lg);
+ font-family: var(--font-sans);
+ font-size: 0.85rem;
+ min-width: 280px;
+ white-space: normal;
+}
+
+.param .tooltip > div {
+ margin: 6px 0;
+ line-height: 1.5;
+}
+
+.param .tooltip b {
+ color: var(--color-text);
+ font-weight: 600;
+ display: inline-block;
+ min-width: 120px;
+}
+
+.param:hover .tooltip {
+ display: block;
+ animation: fadeIn 0.2s ease;
+}
+
+@media (max-width: 768px) {
+ .command {
+ font-size: 0.85rem;
+ }
+
+ .param .tooltip,
+ .cmd .tooltip {
+ left: auto;
+ right: 0;
+ min-width: 250px;
+ }
+
+ .command-block {
+ padding: 16px;
+ }
+}
\ No newline at end of file