codeburn/windows/src/components/LoadingOverlay.tsx
iamtoruk b199af182e windows: import the Tauri tray app as the Windows menubar
Brings the Tauri 2.x tray popover from #1022 onto main as windows/, mirroring
mac/. Product name, bundle identifier, and version line up with the macOS
menubar (org.agentseal.codeburn-menubar, 0.9.20); the crate is renamed off
"desktop" so it no longer collides with the Electron app in app/.

Linux (ksni) stays compiled and dev-usable but is documented as experimental:
gnome/ is the shipping Linux surface.

The five src/ CLI commits on that branch are dropped - they re-implement a
daily-bucketing fix main already carries.
2026-08-18 04:00:59 -07:00

44 lines
1.7 KiB
TypeScript

import { FLAME_PATH } from './Icons'
/// The macOS BurnLoadingOverlay: a blurred sheet over the scroll area with a flame that
/// fills bottom-to-top on a 1.4s loop while a soft glow pulses behind it.
type Props = { periodLabel: string }
export function LoadingOverlay({ periodLabel }: Props) {
return (
<div className="loading-overlay" role="status" aria-live="polite">
<div className="loading-content">
<BurnFlame />
<div className="loading-text">Loading {periodLabel}</div>
</div>
</div>
)
}
export function BurnFlame({ size = 64 }: { size?: number }) {
return (
<div className="burn-flame" style={{ width: size, height: size }}>
<svg className="burn-flame-glow" viewBox="0 0 16 16" width={size} height={size} aria-hidden="true">
<path d={FLAME_PATH} />
</svg>
<svg className="burn-flame-outline" viewBox="0 0 16 16" width={size} height={size} aria-hidden="true">
<path d={FLAME_PATH} />
</svg>
<svg className="burn-flame-fill" viewBox="0 0 16 16" width={size} height={size} aria-hidden="true">
<defs>
<linearGradient id="burn-gradient" x1="0" y1="1" x2="0" y2="0">
<stop offset="0%" stopColor="#F0A070" />
<stop offset="33.33%" stopColor="#E8774A" />
<stop offset="66.66%" stopColor="#C9521D" />
<stop offset="100%" stopColor="#8B3E13" />
</linearGradient>
<clipPath id="burn-clip">
<rect className="burn-clip-rect" x="0" y="0" width="16" height="16" />
</clipPath>
</defs>
<path d={FLAME_PATH} fill="url(#burn-gradient)" clipPath="url(#burn-clip)" />
</svg>
</div>
)
}