chore(copy): em-dash sweep across user-facing JSX text + bump lint to error
Replaced 174 em-dashes (—) with " - " (space-hyphen-space) across 49 files in src/components + src/app. The em-dash reads as a tell-tale "AI-generated" marker per the user's design feedback; hyphens with spaces preserve the connector semantics without the AI tint. Touched only lines outside pure-comment context (// /* * */). Code comments, JSDoc, audit-log strings, structured logging strings, and templates outside the lint scope retain their em-dashes for now — they're not user-visible. Also captured two remaining cases that used the `—` HTML entity instead of the literal character (system-monitoring-dashboard, interest-stage-picker) — replaced with a plain hyphen. Bumped the existing `no-restricted-syntax` rule from `warn` → `error` in eslint.config.mjs scoped to src/components/**/*.tsx + src/app/**/*.tsx. New code reintroducing em-dashes in JSX text now fails the lint gate. Verified: tsc clean, vitest 1448/1448, eslint 0 em-dash warnings. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -72,7 +72,7 @@ export function EmbeddedSigningCard() {
|
||||
};
|
||||
setResult({ ...res.data, at: new Date() });
|
||||
if (res.data.ok) toast.success('Embedded signing host reachable.');
|
||||
else toast.error('Embedded signing host probe failed — see card.');
|
||||
else toast.error('Embedded signing host probe failed - see card.');
|
||||
} catch (err) {
|
||||
toastError(err);
|
||||
setResult({
|
||||
@@ -200,7 +200,7 @@ export function EmbeddedSigningCard() {
|
||||
<p className="text-muted-foreground">
|
||||
The marketing site needs to handle <code>/sign/[role]/[token]</code> by forwarding
|
||||
to the underlying Documenso signing URL (or embedding it in an iframe). Role is one
|
||||
of <code>client</code> / <code>developer</code> / <code>approver</code> — useful for
|
||||
of <code>client</code> / <code>developer</code> / <code>approver</code> - useful for
|
||||
tracking which slot the signer is in.
|
||||
</p>
|
||||
<p className="mt-1 text-muted-foreground">Minimum Next.js example:</p>
|
||||
@@ -228,7 +228,7 @@ export default function SignPage({ params }) {
|
||||
<p className="text-muted-foreground">
|
||||
Use the Test connection button to verify <code>/</code> and{' '}
|
||||
<code>/sign/success</code> return 2xx. If either fails, the marketing site
|
||||
isn't ready — fix the route before flipping live or signers will land on a 404
|
||||
isn't ready - fix the route before flipping live or signers will land on a 404
|
||||
page from outbound emails.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -106,7 +106,7 @@ export function TemplateSyncButton() {
|
||||
onSuccess: (result) => {
|
||||
setLastResult(result);
|
||||
toast.success(
|
||||
`Synced "${result.title}" — ${result.recipients.length} recipients, ${result.fieldCount} fields cached`,
|
||||
`Synced "${result.title}" - ${result.recipients.length} recipients, ${result.fieldCount} fields cached`,
|
||||
);
|
||||
void queryClient.invalidateQueries({ queryKey: ['settings', 'resolved'] });
|
||||
void queryClient.invalidateQueries({
|
||||
@@ -218,7 +218,7 @@ export function TemplateSyncButton() {
|
||||
<div className="font-medium text-muted-foreground">Template-level settings</div>
|
||||
<p className="text-[11px] text-muted-foreground">
|
||||
Read from the template itself on Documenso. These values are bound to the
|
||||
template, so every envelope generated from it inherits them —{' '}
|
||||
template, so every envelope generated from it inherits them -{' '}
|
||||
<code>/template/use</code> does <strong>not</strong> accept overrides for these.
|
||||
Change them in Documenso's template editor.
|
||||
</p>
|
||||
@@ -236,7 +236,7 @@ export function TemplateSyncButton() {
|
||||
</span>
|
||||
{lastResult.templateMeta.distributionMethod === 'EMAIL' && (
|
||||
<span className="ml-1 rounded bg-amber-100 px-1.5 py-0.5 text-[10px] font-medium text-amber-900 dark:bg-amber-950 dark:text-amber-200">
|
||||
⚠️ Documenso will email recipients directly — the CRM's branded email
|
||||
⚠️ Documenso will email recipients directly - the CRM's branded email
|
||||
is in addition. Set to NONE on the template to let the CRM be the sole
|
||||
sender.
|
||||
</span>
|
||||
@@ -256,7 +256,7 @@ export function TemplateSyncButton() {
|
||||
Fields: {lastResult.fieldCount} cached for <code>prefillFields</code>
|
||||
{lastResult.fieldCount === 0 && (
|
||||
<span className="ml-1 font-normal text-muted-foreground">
|
||||
— that's fine if your template is a fillable PDF (AcroForm). The CRM will
|
||||
- that's fine if your template is a fillable PDF (AcroForm). The CRM will
|
||||
fill it via <code>formValues</code>-by-name instead, same as on v1.{' '}
|
||||
<code>prefillFields</code> is only needed if you placed field overlays directly in
|
||||
the Documenso template editor.
|
||||
@@ -314,7 +314,7 @@ export function TemplateSyncButton() {
|
||||
</div>
|
||||
<p className="pt-0.5 text-[11px] text-muted-foreground">
|
||||
These are the fillable fields actually in the PDF binary on Documenso. The CRM
|
||||
fills them by name at send time — this is the same mechanism the prod v1 server
|
||||
fills them by name at send time - this is the same mechanism the prod v1 server
|
||||
uses.
|
||||
</p>
|
||||
{lastResult.acroForm.map((report) => (
|
||||
@@ -427,7 +427,7 @@ export function TemplateSyncButton() {
|
||||
{sync.isError && !lastResult && (
|
||||
<div className="rounded-md border border-destructive/40 bg-destructive/5 p-3 text-xs">
|
||||
<div className="flex items-center gap-2 font-medium text-destructive">
|
||||
<XCircle className="size-3" /> Sync failed — check the Documenso credentials above and
|
||||
<XCircle className="size-3" /> Sync failed - check the Documenso credentials above and
|
||||
confirm the template exists on the configured instance.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user