Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 56 additions & 25 deletions src/components/shared/Navbar.astro
Original file line number Diff line number Diff line change
@@ -1,12 +1,27 @@
---
// src/components/shared/Navbar.astro
const toolLinks = [
{ href: '/cron-to-systemd-converter', label: 'Crontab to Systemd' },
{ href: '/env-to-json', label: 'Env to JSON Object' },
{ href: '/json-to-env', label: 'JSON to Env Object' },
{ href: '/pii-masker-log-scrubber', label: 'PII Masker & Scrubber' },
{ href: '/cidr-subnet-calculator', label: 'CIDR Subnet Calculator' },
{ href: '/csv-to-json-schema', label: 'CSV to JSON Schema' }
const toolCategories = [
{
label: 'Infrastructure & Config',
tools: [
{ href: '/cron-to-systemd-converter', label: 'Crontab to Systemd' },
{ href: '/env-to-json', label: 'Env to JSON' },
{ href: '/json-to-env', label: 'JSON to Env' },
]
},
{
label: 'Security & DevSecOps',
tools: [
{ href: '/pii-masker-log-scrubber', label: 'PII Masker & Scrubber' },
]
},
{
label: 'Networking & Data',
tools: [
{ href: '/cidr-subnet-calculator', label: 'CIDR Subnet Calculator' },
{ href: '/csv-to-json-schema', label: 'CSV to JSON Schema' },
]
}
];
---

Expand Down Expand Up @@ -51,16 +66,23 @@ const toolLinks = [
<div
role="menu"
aria-label="Available Utilities Suite"
class="absolute left-1/2 -translate-x-1/2 top-full w-56 rounded-xl border border-neutral-200 bg-white p-2 shadow-lg opacity-0 pointer-events-none group-hover:opacity-100 group-hover:pointer-events-auto group-focus-within:opacity-100 group-focus-within:pointer-events-auto transition-all duration-150 transform translate-y-1 group-hover:translate-y-0"
class="absolute left-1/2 -translate-x-1/2 top-full w-64 rounded-xl border border-neutral-200 bg-white p-3 shadow-lg opacity-0 pointer-events-none group-hover:opacity-100 group-hover:pointer-events-auto group-focus-within:opacity-100 group-focus-within:pointer-events-auto transition-all duration-150 transform translate-y-1 group-hover:translate-y-0"
>
{toolLinks.map(tool => (
<a
href={tool.href}
role="menuitem"
class="block w-full rounded-lg px-3 py-2 text-left text-xs font-semibold text-neutral-600 hover:text-neutral-900 hover:bg-neutral-50 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#D4AF37]"
>
{tool.label}
</a>
{toolCategories.map((category, idx) => (
<div class={idx > 0 ? 'mt-3 pt-3 border-t border-neutral-100' : ''}>
<span class="block px-3 mb-1 text-[10px] font-semibold text-neutral-400 uppercase tracking-widest">
{category.label}
</span>
{category.tools.map(tool => (
<a
href={tool.href}
role="menuitem"
class="block w-full rounded-lg px-3 py-2 text-left text-xs font-semibold text-neutral-600 hover:text-neutral-900 hover:bg-neutral-50 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#D4AF37]"
>
{tool.label}
</a>
))}
</div>
))}
</div>
</div>
Expand Down Expand Up @@ -99,15 +121,24 @@ const toolLinks = [
<a href="/" class="text-neutral-600 hover:text-neutral-900 py-1 transition-colors">Home</a>

<div class="border-t border-neutral-100 pt-3 pb-1">
<span class="text-xs font-semibold text-neutral-400 uppercase tracking-wider block mb-2 px-1">Tools</span>
<div class="grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-2 pl-2">
{toolLinks.map(tool => (
<a
href={tool.href}
class="block py-1 text-xs text-neutral-600 hover:text-neutral-900 transition-colors"
>
{tool.label}
</a>
<span class="text-xs font-semibold text-neutral-400 uppercase tracking-wider block mb-3 px-1">Tools</span>
<div class="space-y-4 pl-2">
{toolCategories.map((category) => (
<div>
<span class="block mb-1.5 text-[10px] font-semibold text-neutral-400 uppercase tracking-widest">
{category.label}
</span>
<div class="grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-1">
{category.tools.map(tool => (
<a
href={tool.href}
class="block py-1 text-xs text-neutral-600 hover:text-neutral-900 transition-colors"
>
{tool.label}
</a>
))}
</div>
</div>
))}
</div>
</div>
Expand Down
12 changes: 6 additions & 6 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ const stats = [

const categories = [
{ id: 'all', label: 'All Utilities' },
{ id: 'config', label: 'Config Tools' },
{ id: 'privacy', label: 'Privacy & Masking' },
{ id: 'network', label: 'Network Engines' }
{ id: 'config', label: 'Infrastructure & Config' },
{ id: 'privacy', label: 'Security & DevSecOps' },
{ id: 'network', label: 'Networking & Data' }
];

// Rich Structural JSON-LD Data for Search Graph Aggregations
Expand Down Expand Up @@ -219,7 +219,7 @@ const jsonLd = {

<section id="section-config" data-category-section="config" aria-labelledby="heading-config-tools" class="transition-opacity duration-150">
<h2 id="heading-config-tools" class="text-base font-semibold text-neutral-500 uppercase tracking-wider mb-5 pb-3 border-b border-neutral-100">
Configuration &amp; Server Tools
Infrastructure &amp; Config
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{toolsConfig.map((tool) => (
Expand All @@ -245,7 +245,7 @@ const jsonLd = {

<section id="section-privacy" data-category-section="privacy" aria-labelledby="heading-privacy-tools" class="transition-opacity duration-150">
<h2 id="heading-privacy-tools" class="text-base font-semibold text-neutral-500 uppercase tracking-wider mb-5 pb-3 border-b border-neutral-100">
Privacy &amp; Identity Protections
Security &amp; DevSecOps
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{toolsPrivacy.map((tool) => (
Expand All @@ -271,7 +271,7 @@ const jsonLd = {

<section id="section-network" data-category-section="network" aria-labelledby="heading-network-tools" class="transition-opacity duration-150">
<h2 id="heading-network-tools" class="text-base font-semibold text-neutral-500 uppercase tracking-wider mb-5 pb-3 border-b border-neutral-100">
Network &amp; Data Architecture
Networking &amp; Data
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{toolsNetwork.map((tool) => (
Expand Down
Loading