+ {/* Site Header - Compact Mode */}
+
{/* Profile Preview */}
{profileData && (
diff --git a/src/app/globals.css b/src/app/globals.css
index a389502..ef76eff 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -192,6 +192,56 @@ a:hover {
transform: scale(1.1) rotate(-5deg);
}
+/* Compact Navigation Links - for dropdown menu */
+.compact-nav-link {
+ display: flex;
+ align-items: center;
+ gap: 0.625rem;
+ padding: 0.75rem 1rem;
+ color: var(--text-secondary);
+ font-size: 0.9rem;
+ font-weight: 400;
+ background: var(--bg-tertiary);
+ border: 1px solid var(--border-subtle);
+ transition: all 0.3s ease;
+ position: relative;
+ overflow: hidden;
+ text-decoration: none;
+}
+
+.compact-nav-link::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 3px;
+ background: var(--text-accent);
+ transform: scaleY(0);
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
+}
+
+.compact-nav-link:hover {
+ color: var(--text-primary);
+ background: var(--bg-elevated);
+ border-color: var(--border-medium);
+ transform: translateX(4px);
+}
+
+.compact-nav-link:hover::before {
+ transform: scaleY(1);
+}
+
+.compact-nav-link svg {
+ color: var(--text-accent);
+ transition: all 0.3s ease;
+}
+
+.compact-nav-link:hover svg {
+ color: var(--text-primary);
+ transform: scale(1.15) rotate(-5deg);
+}
+
/* Buttons */
button {
font-family: var(--font-serif);
@@ -607,6 +657,16 @@ html {
will-change: transform;
}
+/* Preview cards - subtle organic rotation on hover */
+.card:not(.feature-card-primary):not(.feature-card-secondary):not(.cta-card) {
+ will-change: transform;
+}
+
+.card:not(.feature-card-primary):not(.feature-card-secondary):not(.cta-card):hover {
+ transform: rotate(0deg) scale(1.005) !important;
+ box-shadow: 0 4px 40px var(--glow-subtle);
+}
+
/* Responsive */
@media (max-width: 768px) {
html {
@@ -640,7 +700,8 @@ html {
.feature-card-primary,
.feature-card-secondary,
.example-link,
- .cta-card {
+ .cta-card,
+ .card {
transform: none !important;
}
diff --git a/src/components/Header.tsx b/src/components/Header.tsx
index edb3057..815248c 100644
--- a/src/components/Header.tsx
+++ b/src/components/Header.tsx
@@ -1,11 +1,133 @@
+'use client';
+
+import { useState } from 'react';
import Link from 'next/link';
-import { Home, Link2, Code } from 'lucide-react';
+import { Home, Link2, Code, Leaf } from 'lucide-react';
interface HeaderProps {
simple?: boolean; // If true, shows a smaller version without the tagline
+ compact?: boolean; // If true, shows ultra-compact inline header with expandable menu
}
-export default function Header({ simple = false }: HeaderProps) {
+export default function Header({ simple = false, compact = false }: HeaderProps) {
+ const [isExpanded, setIsExpanded] = useState(false);
+
+ // Ultra-compact mode for link preview pages
+ if (compact) {
+ return (
+
+
+ {/* Logo/Wordmark */}
+
+
+ aturi.to
+
+
+
+ {/* Expandable menu button */}
+
+
+
+ {/* Expanding organic nav panel */}
+
+
+
+
+ );
+ }
+
if (simple) {
return (
{/* Author Info */}
diff --git a/src/components/PostPreviewSkeleton.tsx b/src/components/PostPreviewSkeleton.tsx
index a555d52..b05bb10 100644
--- a/src/components/PostPreviewSkeleton.tsx
+++ b/src/components/PostPreviewSkeleton.tsx
@@ -22,6 +22,7 @@ export default function PostPreviewSkeleton({
padding: '1.5rem',
background: 'var(--bg-secondary)',
border: '1px solid var(--border-medium)',
+ transform: 'rotate(0.4deg)',
}}
>
{/* Author Info skeleton */}
diff --git a/src/components/ProfilePreview.tsx b/src/components/ProfilePreview.tsx
index 1c01e0e..34ef551 100644
--- a/src/components/ProfilePreview.tsx
+++ b/src/components/ProfilePreview.tsx
@@ -63,7 +63,10 @@ export default function ProfilePreview({ profile }: ProfilePreviewProps) {
overflow: 'hidden',
background: 'var(--bg-secondary)',
border: '1px solid var(--border-medium)',
+ transform: 'rotate(-0.3deg)',
+ transition: 'all 0.4s ease',
}}
+ className="card"
>
{/* Banner */}
{banner ? (
diff --git a/src/components/ProfilePreviewSkeleton.tsx b/src/components/ProfilePreviewSkeleton.tsx
index ad85275..5bafe1a 100644
--- a/src/components/ProfilePreviewSkeleton.tsx
+++ b/src/components/ProfilePreviewSkeleton.tsx
@@ -15,6 +15,7 @@ export default function ProfilePreviewSkeleton() {
overflow: 'hidden',
background: 'var(--bg-secondary)',
border: '1px solid var(--border-medium)',
+ transform: 'rotate(-0.3deg)',
}}
>
{/* Banner skeleton */}
diff --git a/src/components/RecordPreview.tsx b/src/components/RecordPreview.tsx
index f457042..2a572d1 100644
--- a/src/components/RecordPreview.tsx
+++ b/src/components/RecordPreview.tsx
@@ -64,7 +64,10 @@ export default function RecordPreview({ record, collection, handle, rkey }: Reco
background: 'var(--bg-secondary)',
border: '1px solid var(--border-medium)',
overflow: 'hidden',
+ transform: 'rotate(0.2deg)',
+ transition: 'all 0.4s ease',
}}
+ className="card"
>
{/* Header: URI Structure */}
setShowJsonModal(false)}
>
e.stopPropagation()}
>
+ {/* Ambient glow effect */}
+
+
{/* Modal Header */}
-
-
+
+
Full Record Data
-
@@ -289,24 +329,41 @@ export default function RecordPreview({ record, collection, handle, rkey }: Reco
style={{
flex: 1,
overflow: 'auto',
- padding: '1.5rem',
+ padding: '2rem',
+ position: 'relative',
+ zIndex: 1,
}}
>
{JSON.stringify(value, null, 2)}
+
+ {/* Subtle bottom fade */}
+
)}
diff --git a/src/components/RecordPreviewSkeleton.tsx b/src/components/RecordPreviewSkeleton.tsx
index 69b0b79..3efeb9d 100644
--- a/src/components/RecordPreviewSkeleton.tsx
+++ b/src/components/RecordPreviewSkeleton.tsx
@@ -14,6 +14,7 @@ export default function RecordPreviewSkeleton() {
padding: '1.5rem',
background: 'var(--bg-secondary)',
border: '1px solid var(--border-medium)',
+ transform: 'rotate(0.2deg)',
}}
>
{/* Record Type Header */}