mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-23 00:54:43 +00:00
fix: tfcode web fails after npm install — copy app dist in postinstall
The web command crashed because postinstall scripts never copied the app/dist directory from the platform package. Added copyAppDir() to both postinstall scripts, multi-path resolution in findAppDir() and server static serving, and updated branding to use local favicon. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
BIN
packages/ui/src/assets/favicon.png
Executable file
BIN
packages/ui/src/assets/favicon.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
@@ -1,4 +1,13 @@
|
||||
[data-component="logo-mark"] {
|
||||
width: 16px;
|
||||
aspect-ratio: 4/5;
|
||||
aspect-ratio: 137/120;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
[data-component="logo-splash"] {
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
[data-component="logo-full"] {
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
@@ -1,60 +1,39 @@
|
||||
import { ComponentProps } from "solid-js"
|
||||
import tfIcon from "../assets/favicon.png"
|
||||
|
||||
export const Mark = (props: { class?: string }) => {
|
||||
return (
|
||||
<svg
|
||||
<img
|
||||
data-component="logo-mark"
|
||||
classList={{ [props.class ?? ""]: !!props.class }}
|
||||
viewBox="0 0 16 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path data-slot="logo-logo-mark-shadow" d="M12 16H4V8H12V16Z" fill="var(--icon-weak-base)" />
|
||||
<path data-slot="logo-logo-mark-o" d="M12 4H4V16H12V4ZM16 20H0V0H16V20Z" fill="var(--icon-strong-base)" />
|
||||
</svg>
|
||||
src={tfIcon}
|
||||
alt="ToothFairyAI"
|
||||
draggable={false}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export const Splash = (props: Pick<ComponentProps<"svg">, "ref" | "class">) => {
|
||||
export const Splash = (props: Pick<ComponentProps<"img">, "ref" | "class">) => {
|
||||
return (
|
||||
<svg
|
||||
<img
|
||||
ref={props.ref}
|
||||
data-component="logo-splash"
|
||||
classList={{ [props.class ?? ""]: !!props.class }}
|
||||
viewBox="0 0 80 100"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M60 80H20V40H60V80Z" fill="var(--icon-base)" />
|
||||
<path d="M60 20H20V80H60V20ZM80 100H0V0H80V100Z" fill="var(--icon-strong-base)" />
|
||||
</svg>
|
||||
src={tfIcon}
|
||||
alt="ToothFairyAI"
|
||||
draggable={false}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export const Logo = (props: { class?: string }) => {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 180 42"
|
||||
fill="none"
|
||||
<img
|
||||
data-component="logo-full"
|
||||
classList={{ [props.class ?? ""]: !!props.class }}
|
||||
>
|
||||
<g>
|
||||
<path d="M18 30H6V18H18V30Z" fill="var(--icon-weak-base)" />
|
||||
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="var(--icon-base)" />
|
||||
<path d="M48 30H36V18H48V30Z" fill="var(--icon-weak-base)" />
|
||||
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="var(--icon-base)" />
|
||||
<text
|
||||
x="66"
|
||||
y="32"
|
||||
font-size="28"
|
||||
font-weight="600"
|
||||
fill="var(--icon-strong-base)"
|
||||
font-family="var(--font-family-sans)"
|
||||
>
|
||||
Code
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
||||
src={tfIcon}
|
||||
alt="ToothFairyAI"
|
||||
draggable={false}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user