eeb0660d83
Unicode emoji/glyphs (Sitesmith's sparkle, lock, close X) render as tofu on systems without an emoji font. Swap for the FA4 glyphs the rest of the chrome already uses: - SitesmithButton/SitesmithModal: sparkle -> fa-magic, lock -> fa-lock - ContextMenu "Ask Sitesmith" entry: sparkle -> fa-magic (via new optional MenuItem.icon field) - TemplateModal/SitesmithModal close buttons, PagesPanel delete, AssetsPanel delete/cancel: ✕ -> fa-times / fa-trash Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import React from 'react';
|
|
import { useSitesmith } from '../../hooks/useSitesmith';
|
|
import { useEditorConfig } from '../../state/EditorConfigContext';
|
|
|
|
interface Props { onClick: () => void; }
|
|
|
|
export const SitesmithButton: React.FC<Props> = ({ onClick }) => {
|
|
const cfg = useEditorConfig();
|
|
const siteId = cfg.whpConfig?.siteId ?? 0;
|
|
const { summary } = useSitesmith(siteId);
|
|
const locked = summary?.status === 'DISABLED';
|
|
const capped = summary?.status === 'CAP_REACHED';
|
|
return (
|
|
<button
|
|
type="button"
|
|
onClick={onClick}
|
|
className="topbar-btn sitesmith-btn"
|
|
title={locked ? 'Sitesmith — paid addon (click to learn more)' : 'Sitesmith AI Builder'}
|
|
style={{
|
|
background: locked ? '#1f1f24' : 'linear-gradient(135deg, #6366f1, #8b5cf6)',
|
|
color: '#fff', border: 'none', padding: '6px 12px', borderRadius: 6, cursor: 'pointer', fontWeight: 500,
|
|
}}
|
|
>
|
|
<i className="fa fa-magic" aria-hidden style={{ marginRight: 6 }} /> Sitesmith
|
|
{locked && <i className="fa fa-lock" aria-hidden style={{ marginLeft: 6, fontSize: 12 }} />}
|
|
{capped && !locked && <span aria-hidden style={{ marginLeft: 6, fontSize: 11, opacity: 0.85 }}>(cap)</span>}
|
|
</button>
|
|
);
|
|
};
|