visual consolidation

This commit is contained in:
overcuriousity 2025-07-19 17:04:12 +02:00
parent 2d01db907a
commit ba3a5461b4
4 changed files with 37 additions and 11 deletions

View File

@ -32,7 +32,7 @@ const hasKnowledgebase = tool.knowledgebase === true;
const cardClass = hasValidProjectUrl ? 'card card-hosted tool-card' : (tool.license !== 'Proprietary' ? 'card card-oss tool-card' : 'card tool-card'); const cardClass = hasValidProjectUrl ? 'card card-hosted tool-card' : (tool.license !== 'Proprietary' ? 'card card-oss tool-card' : 'card tool-card');
--- ---
<div class={cardClass} onclick={`window.showToolDetails('${tool.name}')`} style="cursor: pointer;"> <div class={cardClass} onclick={`window.showToolDetails('${tool.name}')`} style="cursor: pointer; border-left: 4px solid ${hasValidProjectUrl ? 'var(--color-hosted)' : tool.license !== 'Proprietary' ? 'var(--color-oss)' : 'var(--color-border)'};">
<!-- Card Header with Fixed Height --> <!-- Card Header with Fixed Height -->
<div class="tool-card-header"> <div class="tool-card-header">
<h3>{tool.name}</h3> <h3>{tool.name}</h3>

View File

@ -34,9 +34,15 @@ domains.forEach((domain: any) => {
<div id="matrix-container" class="matrix-wrapper" style="display: none;"> <div id="matrix-container" class="matrix-wrapper" style="display: none;">
<!-- Domain-Agnostic Software Sections --> <!-- Domain-Agnostic Software Sections -->
{domainAgnosticTools.map((sectionData: any, index: number) => ( {domainAgnosticTools.map((sectionData: any, index: number) => (
<div id={`domain-agnostic-section-${sectionData.section.id}`} class="collaboration-section-collapsed" style="margin-bottom: 1.5rem;"> <div id={`domain-agnostic-section-${sectionData.section.id}`} class="card collaboration-section-collapsed" style="margin-bottom: 1.5rem; border-left: 4px solid var(--color-accent);">
<div class="collaboration-header" onclick={`toggleDomainAgnosticSection('${sectionData.section.id}')`} style="cursor: pointer; display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.1rem;"> <div class="collaboration-header" onclick={`toggleDomainAgnosticSection('${sectionData.section.id}')`} style="cursor: pointer; display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.1rem;">
<h3 style="margin: 0; color: var(--color-text); font-size: 1.125rem;"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--color-accent)" stroke-width="2" style="margin-right: 0.5rem;">
<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
<circle cx="8.5" cy="7" r="4"/>
<line x1="20" y1="8" x2="20" y2="14"/>
<line x1="23" y1="11" x2="17" y2="11"/>
</svg>
<h3 style="margin: 0; color: var(--color-accent); font-size: 1.125rem;">
{sectionData.section.name} {sectionData.section.name}
<span id={`count-${sectionData.section.id}`} class="badge" style="background-color: var(--color-text-secondary); color: var(--color-bg); margin-left: 0.5rem; font-size: 0.75rem;"> <span id={`count-${sectionData.section.id}`} class="badge" style="background-color: var(--color-text-secondary); color: var(--color-bg); margin-left: 0.5rem; font-size: 0.75rem;">
{sectionData.tools.length} {sectionData.tools.length}

View File

@ -14,12 +14,12 @@ const tools = data.tools;
<BaseLayout title="~/"> <BaseLayout title="~/">
<!-- Hero Section --> <!-- Hero Section -->
<section style="text-align: center; padding: 3rem 0; border-bottom: 1px solid var(--color-border);"> <section style="padding: 2rem 0 1rem; border-bottom: 1px solid var(--color-border);">
<h1 style="margin-bottom: 1.5rem;">CC24 Incident Response Framework</h1> <div style="text-align: center; margin-bottom: 2rem; padding: 2rem; background: linear-gradient(135deg, var(--color-bg-secondary) 0%, var(--color-bg-tertiary) 100%); border-radius: 1rem; border: 1px solid var(--color-border);">
<h1 style="margin-bottom: 1rem; font-size: 2.5rem; color: var(--color-primary);">CC24 Incident Response Framework</h1>
<div style="max-width: 900px; margin: 0 auto;">
<p style="font-size: 1.25rem; margin-bottom: 1.5rem; color: var(--color-text);"> <p style="font-size: 1.25rem; margin-bottom: 1rem; color: var(--color-text);">
<strong>Das richtige Werkzeug zur richtigen Zeit</strong> in der digitalen Forensik entscheidet oft die Wahl des passenden Tools über Erfolg oder Misserfolg einer Untersuchung. <strong>Das richtige Werkzeug zur richtigen Zeit</strong> in der digitalen Forensik entscheidet oft die Wahl der passenden Methode oder Software über Erfolg oder Misserfolg einer Untersuchung.
</p> </p>
<p class="text-muted" style="font-size: 1.125rem; margin-bottom: 1.5rem; line-height: 1.7;"> <p class="text-muted" style="font-size: 1.125rem; margin-bottom: 1.5rem; line-height: 1.7;">
@ -44,7 +44,7 @@ const tools = data.tools;
SSO & Zugang erfahren SSO & Zugang erfahren
</a> </a>
<!-- New AI Query Button --> <!-- AI Query Button -->
<button id="ai-query-btn" class="btn btn-accent" style="padding: 0.75rem 1.5rem; background-color: var(--color-accent); color: white;"> <button id="ai-query-btn" class="btn btn-accent" style="padding: 0.75rem 1.5rem; background-color: var(--color-accent); color: white;">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="margin-right: 0.5rem;"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="margin-right: 0.5rem;">
<path d="M9 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2h-4"/> <path d="M9 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2h-4"/>
@ -72,6 +72,7 @@ const tools = data.tools;
<!-- AI Query Interface --> <!-- AI Query Interface -->
<AIQueryInterface /> <AIQueryInterface />
<!-- Tools Grid --> <!-- Tools Grid -->
<section id="tools-grid" style="padding-bottom: 2rem;"> <section id="tools-grid" style="padding-bottom: 2rem;">

View File

@ -423,18 +423,37 @@ input[type="checkbox"] {
border-collapse: collapse; border-collapse: collapse;
min-width: 800px; min-width: 800px;
table-layout: fixed; table-layout: fixed;
background-color: var(--color-bg);
border-radius: 0.75rem;
overflow: hidden;
box-shadow: var(--shadow-md);
}
.matrix-table th {
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
color: white;
font-weight: 600;
position: sticky;
top: 0;
z-index: 1;
border: none;
padding: 1rem 0.75rem;
} }
.matrix-table th,
.matrix-table td { .matrix-table td {
border: 1px solid var(--color-border); border: 1px solid var(--color-border);
padding: 0.75rem; padding: 0.75rem;
text-align: left; text-align: left;
background-color: var(--color-bg);
transition: var(--transition-fast); transition: var(--transition-fast);
overflow: hidden; overflow: hidden;
word-wrap: break-word; word-wrap: break-word;
} }
.matrix-table tr:hover td {
background-color: var(--color-bg-secondary);
}
.matrix-table th { .matrix-table th {
background-color: var(--color-bg-secondary); background-color: var(--color-bg-secondary);
font-weight: 600; font-weight: 600;