fix(responsive): improve mobile UX and fix SVG detection on architecture page
SUMMARY:
Fixed responsive design issues and SVG detection warnings on the
interactive architecture diagram. Improved mobile layout, padding,
and element sizing.
CHANGES:
1. Interactive Diagram JavaScript (interactive-diagram.js):
- Fixed SVG tagName check to be case-insensitive (line 152)
Was: svg.tagName !== 'svg'
Now: svg.tagName && svg.tagName.toLowerCase() !== 'svg'
- Updated service detail panel responsive styling (line 258)
Added: w-full (full width on mobile)
Added: lg:flex-1 (flex grow on desktop)
Changed: p-6 to p-4 sm:p-6 (responsive padding)
2. Architecture Page HTML (architecture.html):
- Improved container responsive padding (line 333)
Changed: p-6 lg:p-8 to p-4 sm:p-6 lg:p-8
- Reduced desktop gap for better layout (line 335)
Changed: lg:gap-8 to lg:gap-6
- Made SVG container full width on mobile (line 337)
Added: w-full lg:w-auto
- Improved SVG responsive sizing (line 342)
Changed: max-w-md lg:max-w-lg
To: max-w-sm sm:max-w-md lg:max-w-lg h-auto max-h-[500px]
- Updated cache-busting version (line 515)
Changed: v=20251019162000 to v=20251019163000
RESPONSIVE BREAKPOINTS:
- Mobile (default): Smaller padding (p-4), smaller max-width (max-w-sm)
- Tablet (sm: ≥640px): Medium padding (p-6), medium max-width (max-w-md)
- Desktop (lg: ≥1024px): Large padding (p-8), large max-width (max-w-lg)
FIXES:
✓ SVG detection warning resolved (case-insensitive tagName check)
✓ Mobile layout improved (better padding and sizing)
✓ Service detail panel responsive (full width on mobile)
✓ Diagram height constrained (max-h-[500px])
IMPACT:
Better mobile UX with appropriately sized elements and padding.
SVG detection should no longer log warnings in console.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
9ec76b0d2c
commit
2b7b378d08
2 changed files with 8 additions and 8 deletions
|
|
@ -330,19 +330,19 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="diagram-container" class="relative bg-white rounded-xl shadow-lg p-6 lg:p-8 border border-gray-200">
|
<div id="diagram-container" class="relative bg-white rounded-xl shadow-lg p-4 sm:p-6 lg:p-8 border border-gray-200">
|
||||||
<!-- Flex container for side-by-side layout on desktop -->
|
<!-- Flex container for side-by-side layout on desktop -->
|
||||||
<div class="flex flex-col lg:flex-row lg:items-start lg:gap-8">
|
<div class="flex flex-col lg:flex-row lg:items-start lg:gap-6">
|
||||||
<!-- Interactive SVG -->
|
<!-- Interactive SVG -->
|
||||||
<div class="flex-shrink-0 flex justify-center lg:justify-start mb-6 lg:mb-0">
|
<div class="flex-shrink-0 flex justify-center lg:justify-start w-full lg:w-auto mb-6 lg:mb-0">
|
||||||
<object
|
<object
|
||||||
data="/images/architecture-diagram-interactive.svg"
|
data="/images/architecture-diagram-interactive.svg"
|
||||||
type="image/svg+xml"
|
type="image/svg+xml"
|
||||||
id="interactive-svg-object"
|
id="interactive-svg-object"
|
||||||
class="w-full max-w-md lg:max-w-lg"
|
class="w-full max-w-sm sm:max-w-md lg:max-w-lg h-auto max-h-[500px]"
|
||||||
aria-label="Interactive Tractatus Architecture Diagram">
|
aria-label="Interactive Tractatus Architecture Diagram">
|
||||||
<!-- Fallback for browsers that don't support object tag -->
|
<!-- Fallback for browsers that don't support object tag -->
|
||||||
<img src="/images/architecture-diagram-interactive.svg" alt="Tractatus Architecture Diagram" class="w-full max-w-md lg:max-w-lg" />
|
<img src="/images/architecture-diagram-interactive.svg" alt="Tractatus Architecture Diagram" class="w-full max-w-sm sm:max-w-md lg:max-w-lg" />
|
||||||
</object>
|
</object>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -512,7 +512,7 @@
|
||||||
<script src="/js/scroll-animations.js"></script>
|
<script src="/js/scroll-animations.js"></script>
|
||||||
|
|
||||||
<!-- Interactive Architecture Diagram (Phase 3) -->
|
<!-- Interactive Architecture Diagram (Phase 3) -->
|
||||||
<script src="/js/components/interactive-diagram.js?v=20251019162000"></script>
|
<script src="/js/components/interactive-diagram.js?v=20251019163000"></script>
|
||||||
|
|
||||||
<!-- Footer Component -->
|
<!-- Footer Component -->
|
||||||
<script src="/js/components/footer.js"></script>
|
<script src="/js/components/footer.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ class InteractiveDiagram {
|
||||||
console.log('[InteractiveDiagram] Using documentElement as SVG');
|
console.log('[InteractiveDiagram] Using documentElement as SVG');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!svg || svg.tagName !== 'svg') {
|
if (!svg || (svg.tagName && svg.tagName.toLowerCase() !== 'svg')) {
|
||||||
console.warn('[InteractiveDiagram] SVG diagram not found in contentDocument');
|
console.warn('[InteractiveDiagram] SVG diagram not found in contentDocument');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -255,7 +255,7 @@ class InteractiveDiagram {
|
||||||
if (!panel) {
|
if (!panel) {
|
||||||
panel = document.createElement('div');
|
panel = document.createElement('div');
|
||||||
panel.id = 'service-detail-panel';
|
panel.id = 'service-detail-panel';
|
||||||
panel.className = 'flex-1 bg-white rounded-xl shadow-2xl p-6 border-2 lg:min-w-[400px]';
|
panel.className = 'w-full lg:flex-1 bg-white rounded-xl shadow-2xl p-4 sm:p-6 border-2 lg:min-w-[400px]';
|
||||||
panel.style.borderColor = service.color;
|
panel.style.borderColor = service.color;
|
||||||
|
|
||||||
// Insert into the flex container for side-by-side layout
|
// Insert into the flex container for side-by-side layout
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue