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:
@@ -49,7 +49,7 @@ export function CustomizeWidgetsMenu() {
|
||||
<DialogHeader>
|
||||
<DialogTitle>Customize dashboard</DialogTitle>
|
||||
<DialogDescription>
|
||||
Pick which analytics cards appear on your dashboard. Hidden cards leave no empty space —
|
||||
Pick which analytics cards appear on your dashboard. Hidden cards leave no empty space -
|
||||
the layout reflows to fill the available width.
|
||||
</DialogDescription>
|
||||
</DialogHeader>
|
||||
|
||||
@@ -98,10 +98,10 @@ export function PipelineValueTile() {
|
||||
<PopoverContent align="start" className="w-80 text-xs leading-relaxed">
|
||||
<p className="font-semibold text-foreground">How the weighted forecast works</p>
|
||||
<p className="mt-2 text-muted-foreground">
|
||||
Each pipeline stage has a close-probability — how likely a deal at that stage is to
|
||||
Each pipeline stage has a close-probability - how likely a deal at that stage is to
|
||||
actually close. Multiplying the berth price by the stage weight gives an{' '}
|
||||
<strong>expected</strong> value for that deal. Summing across every active deal
|
||||
yields the weighted forecast — a defensible “what will likely land”
|
||||
yields the weighted forecast - a defensible “what will likely land”
|
||||
number, vs the gross which assumes every deal closes at full value.
|
||||
</p>
|
||||
<div className="mt-3 grid grid-cols-[1fr_auto] gap-x-3 gap-y-1 rounded-md bg-muted/50 p-2.5 text-[11px]">
|
||||
@@ -205,7 +205,7 @@ export function PipelineValueTile() {
|
||||
{s.dealsMissingPrice > 0 ? (
|
||||
<p
|
||||
className="mt-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-warning"
|
||||
title={`${s.dealsMissingPrice} of ${s.count} ${s.count === 1 ? 'deal has' : 'deals have'} a berth with no price set — gross is undercounted here.`}
|
||||
title={`${s.dealsMissingPrice} of ${s.count} ${s.count === 1 ? 'deal has' : 'deals have'} a berth with no price set - gross is undercounted here.`}
|
||||
>
|
||||
<AlertTriangle className="size-3" aria-hidden />
|
||||
{s.dealsMissingPrice === s.count
|
||||
|
||||
Reference in New Issue
Block a user