// Salience — logo/icon system // Five directions. Each exposes: , , const A = { amber: "#f5a623", amberLight: "#ffc266", amberDeep: "#c77a0a", ink: "#0e0a1e", inkSoft: "#1a1330", bone: "#f4f2ff", dim: "#3a3358", dimmer: "#2a2346", }; /* ========================================================= DIRECTION 1 — "Lit Row" A row of quiet dots, one lit. Pure salience metaphor. ========================================================= */ function Mark1({ size = 64, variant = "onDark" }) { // 5 dots in a row; 3rd is lit const dim = variant === "onDark" ? "#3a3358" : "#c5c0dc"; const lit = A.amber; const glow = "url(#g1)"; return ( {/* halo behind lit dot */} {/* dots */} ); } /* ========================================================= DIRECTION 2 — "Notched S" Heavy S glyph with an amber notch / cut. ========================================================= */ function Mark2({ size = 64, variant = "onDark" }) { const ink = variant === "onDark" ? A.bone : A.ink; return ( {/* S glyph (geometric, monospace-inspired) */} {/* lit notch — the "salience" */} ); } /* ========================================================= DIRECTION 3 — "Reticle" FPS-inspired crosshair with a lit lock-on center. ========================================================= */ function Mark3({ size = 64, variant = "onDark" }) { const ink = variant === "onDark" ? A.bone : A.ink; return ( {/* outer ring — four arcs (broken) */} {/* tick marks */} {/* lit center */} ); } /* ========================================================= DIRECTION 4 — "Waveform" Flat telemetry with one spike. Signal in noise. ========================================================= */ function Mark4({ size = 64, variant = "onDark" }) { const dim = variant === "onDark" ? "#5a5276" : "#9f9ab8"; return ( {/* flat baseline segments on either side of the spike */} {/* the lit spike */} {/* spike cap dot */} ); } /* ========================================================= DIRECTION 5 — "Aperture" A bracket/aperture closing in on a lit point. ========================================================= */ function Mark5({ size = 64, variant = "onDark" }) { const ink = variant === "onDark" ? A.bone : A.ink; return ( {/* four corner brackets */} {/* lit center */} ); } /* ========================================================= Wordmark — logo lockup ========================================================= */ function Wordmark({ Mark, dark = true, label = "Salience" }) { return (
{label}
); } /* ========================================================= App icon — macOS-style rounded square ========================================================= */ function AppIcon({ Mark, size = 120, bg = "dark" }) { const r = size * 0.225; const backgrounds = { dark: `linear-gradient(145deg, #1f1838 0%, #0c0820 100%)`, darker: `linear-gradient(145deg, #15102a 0%, #050310 100%)`, amber: `linear-gradient(145deg, ${A.amberLight} 0%, ${A.amberDeep} 100%)`, bone: `linear-gradient(145deg, #ffffff 0%, #e6e2f0 100%)`, purple: `linear-gradient(145deg, #4a2a7a 0%, #1a0e3a 100%)`, }; return (
{/* subtle top gloss */}
); } /* ========================================================= Dock mockup — shows icon next to other apps ========================================================= */ function Dock({ Mark, bg = "dark", wp = "wp-purple" }) { const fakeIcons = [ { bg: "linear-gradient(145deg, #2c2c2e, #1c1c1e)", content: "F" }, { bg: "linear-gradient(145deg, #5a6dff, #2e3fcc)", content: "M" }, { bg: "linear-gradient(145deg, #ff9f0a, #ff6b00)", content: "N" }, { bg: "linear-gradient(145deg, #34c759, #248a3d)", content: "C" }, ]; return (
{fakeIcons.slice(0, 2).map((ic, i) => (
{ic.content}
))} {fakeIcons.slice(2).map((ic, i) => (
{ic.content}
))}
); } /* ========================================================= Small scale test (favicon / menu bar) ========================================================= */ function ScaleRow({ Mark, dark = true }) { const bg = dark ? "#0e0a1e" : "#f4f2ff"; return (
{[16, 22, 32, 48, 72].map(s => (
{s}
))}
); } Object.assign(window, { Mark1, Mark2, Mark3, Mark4, Mark5, Wordmark, AppIcon, Dock, ScaleRow, });