learn and share notes on atproto (wip) 馃 malfestio.stormlightlabs.org/
readability solid axum atproto srs
at main 25 lines 841 B view raw
1import { createContext, type ParentComponent, useContext } from "solid-js"; 2import type { DensityMode } from "./design-tokens"; 3import { prefStore } from "./store"; 4 5/** 6 * Density Context Provider 7 * 8 * Provides density mode to all child components. 9 * Reads from user preferences and applies the appropriate density class to the container. 10 * 11 * Components can override density locally via props. 12 */ 13const DensityContext = createContext<DensityMode>("comfortable"); 14 15export const DensityProvider: ParentComponent = (props) => { 16 const density = () => (prefStore.densityMode?.() as DensityMode) || "comfortable"; 17 18 return ( 19 <DensityContext.Provider value={density()}> 20 <div class={`density-${density()}`}>{props.children}</div> 21 </DensityContext.Provider> 22 ); 23}; 24 25export const useDensity = () => useContext(DensityContext);