Files
mobile.derez.ai/app/src/components/DerezLogo.tsx
T
oliver c7b653ff6a Restructure: move Vite project into app/, deploy build output to repo root
The webserver serves the repo checkout directly as static files, so
index.html at the repo root must be the production build (pointing at
hashed /assets/*.js) rather than the dev template (/src/main.tsx),
which was being served with an unrecognized application/octet-stream
MIME type and blocked by the browser.

- Move src/, public/, scripts/, server/, package.json, vite.config.ts,
  tsconfig.json, .env(.example), and the dev index.html into app/.
- Add app/scripts/deploy.mjs: copies app/dist/* into the repo root
  after every `vite build`, cleaning up stale hashed filenames.
- Wire it into `npm run build` (app/package.json).
- Update run.sh to operate from app/, and .gitignore for the new layout.
- Commit the current build output (index.html, assets/, manifest,
  sw.js, workbox-*.js, favicon.svg, icons/, LICENSE) to the repo root.
- Update README with the new project layout and deployment model.
2026-11-04 14:05:46 -03:00

73 lines
2.0 KiB
TypeScript

import { useId } from "react";
/**
* The derez.ai logo (icon + wordmark), taken from https://derez.ai/assets/images/logo.svg
*/
export function DerezLogo({ height = 26, withText = true }: { height?: number; withText?: boolean }) {
const gid = useId().replace(/:/g, "");
const width = withText ? (height * 132) / 34 : height;
return (
<svg
xmlns="http://www.w3.org/2000/svg"
width={width}
height={height}
viewBox={withText ? "0 0 132 34" : "0 0 34 34"}
role="img"
aria-label="derez.ai"
>
<defs>
<linearGradient id={`box-bg-${gid}`} x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stopColor="#003545" />
<stop offset="100%" stopColor="#00202e" />
</linearGradient>
</defs>
<rect
x="0"
y="0"
width="34"
height="34"
rx="10"
fill={`url(#box-bg-${gid})`}
stroke="#005570"
strokeWidth="1.2"
/>
<rect x="6" y="11" width="22" height="15" rx="2.5" fill="none" stroke="#00f5ff" strokeWidth="1.8" />
<path d="M17 11V7" stroke="#00f5ff" strokeWidth="1.8" strokeLinecap="round" />
<circle cx="17" cy="5.5" r="1.5" fill="#00f5ff" />
<circle cx="10" cy="15.5" r="1" fill="#00f5ff" />
<circle cx="14" cy="15.5" r="1" fill="#00f5ff" />
<path d="M10 20h14" stroke="#00f5ff" strokeWidth="1.5" strokeLinecap="round" />
{withText && (
<text
x="46"
y="23"
fill="#00f5ff"
fontFamily="'Courier New', Courier, monospace"
fontSize="17"
fontWeight="700"
letterSpacing="-0.5"
>
derez.ai
</text>
)}
</svg>
);
}
/** The logo wrapped in a link to the derez.ai homepage. */
export function DerezLogoLink({ height = 26 }: { height?: number }) {
return (
<a
className="brand-link"
href="https://derez.ai/"
target="_blank"
rel="noopener noreferrer"
title="derez.ai — AI Agent Hosting"
>
<DerezLogo height={height} />
</a>
);
}