import React from "react"; import { View } from "react-native"; import Svg, { Path } from "react-native-svg"; import { useColorScheme } from "nativewind"; import { Text } from "./text"; import { DISABLE_BRANDING } from "../flags"; import { EntropyMarkAnimated } from "./entropy-mark-animated"; import { ENTROPY_MARK_VIEWBOX, ENTROPY_MARK_ASPECT, ENTROPY_MARK_PATH, ENTROPY_MARK_STEP, } from "./entropy-mark-geometry"; // Entropy Softworks company mark: Geist Mono `>_` broken apart (diagonal shear // on the `>` top arm, CRT scanline slip on the lower arm, clean break in the // `_`), trailed by three grey time-echoes drifting up-left and an optional // faint cyan/red chroma fringe. This is the COMPANY brand — distinct from each // product's own logo (registered via AppConfig.Logo / BrandHeader). Use it // sparingly on corporate surfaces (legal pages, boot splash). // // Single traced path, reused with per-echo offsets. Geometry lives in // ./entropy-mark-geometry (shared with EntropyMarkAnimated to avoid a require // cycle); re-exported here so existing import paths keep working. export { ENTROPY_MARK_VIEWBOX, ENTROPY_MARK_ASPECT, ENTROPY_MARK_PATH, ENTROPY_MARK_STEP, } from "./entropy-mark-geometry"; const PALETTE = { light: { src: "#000000", echo: ["#f5f5f5", "#e2e2e2", "#cbcbcb"], cyan: "#0096aa", red: "#c82837", }, dark: { src: "#ffffff", echo: ["#373737", "#5f5f5f", "#8c8c8c"], cyan: "#268ca0", red: "#a53440", }, }; export interface EntropyMarkProps { /** Rendered height in px. Width follows the ~1.63:1 aspect. */ size?: number; /** "mono" = grey echoes only; "chroma" = adds the faint cyan/red fringe. */ variant?: "mono" | "chroma"; /** Override the theme; defaults to the active color scheme. */ scheme?: "light" | "dark"; /** Multiply the echo drift distance (boot animation drives this 0→1). */ driftScale?: number; } /** Bare company `>_` mark (no wordmark). */ export function EntropyMark({ size = 28, variant = "mono", scheme, driftScale = 1, }: EntropyMarkProps) { const { colorScheme } = useColorScheme(); const p = PALETTE[scheme ?? (colorScheme === "dark" ? "dark" : "light")]; const width = Math.round(size * ENTROPY_MARK_ASPECT); const echoes = [3, 2, 1] as const; // far (dim) -> near return ( {echoes.map((i) => ( ))} {variant === "chroma" ? ( <> ) : null} ); } export interface EntropyBylineProps { /** Mark height in px (wordmark scales relative). */ size?: number; variant?: "mono" | "chroma"; scheme?: "light" | "dark"; /** Byline copy. Defaults to "Entropy Softworks, Inc.". */ label?: string; } /** * Subtle corporate byline: the company `>_` mark beside small muted text. * Drop at the bottom of legal / about pages so each product carries quiet * company recognition without competing with its own brand. */ export function EntropyByline({ size = 18, variant = "mono", scheme, label = "Entropy Softworks, Inc.", }: EntropyBylineProps) { // Self-host branding opt-out: strip the Entropy byline entirely. if (DISABLE_BRANDING) { return null; } return ( {/* Flat at rest; press reveals the echo-cascade (the website's hover animation, touch-ported — see entropy-mark-animated.tsx). */} {label} ); }