component:
- filepath:
/quartz/components/DialDock.tsx - type:
QuartzComponent - rendering: build-time ONLY Preact function that renders static HTML strings and does NOT mount on the client layout_integration:
- file:
/quartz.layout.ts - export:
sharedPageComponents - placement:
footer - rationale: minimize dom thrashing during micromorph spa body replacements dom_and_styling:
- encapsulation: static
cssproperty returning component styles - positioning: fixed bottom corner
- z_index: strictly above page content and below quartz search popovers
- layout: flex or radial calculations accessibility:
- parent_toggle:
- aria_haspopup:
menu - aria_expanded: dynamically bound to state
- aria_haspopup:
- child_items:
- tabindex: disabled when dock is collapsed
- keyboard_events: - escape_key: collapse menu listener button_implementations:
- iconography: built-in lucide icon set
- global_search:
- icon:
Search - action: programmatically click existing
.searchnode to leverage built-in modal
- icon:
- dark_mode:
- icon:
MoonorSun - action: toggle
document.documentElement.dataset.themeand dispatchthemechange
- icon:
- read_mode:
- icon:
Book - action: dispatch custom
readermodechangeevent
- icon:
- chat:
- icon:
MessageCircle
- icon:
- fullscreen: - icon:
Maximizespa_lifecycle: - entrypoint: static
afterDOMLoadedstring property providing client-side interactivity by concatenating plain JS strings - event_binding:
- document_event: wrapped entirely in
document.addEventListener("nav", (e) => { ... })for micromorph routing - dom_listeners: attaching event listeners to DOM nodes inside the nav event
- memory_management: use
window.addCleanup(() => ...)to remove all attached DOM listeners and prevent memory leaks during micromorph SPA routing
- document_event: wrapped entirely in
- state_persistence:
- storage:
sessionStorage.setItem("dialDockState", state) - restoration: parsed during nav events to maintain visual continuity across navigation
- storage: