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>
52 lines
2.2 KiB
TypeScript
52 lines
2.2 KiB
TypeScript
import Link from 'next/link';
|
||
import { Activity } from 'lucide-react';
|
||
|
||
import { RegistryDrivenForm } from '@/components/admin/shared/registry-driven-form';
|
||
import { PageHeader } from '@/components/shared/page-header';
|
||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||
|
||
export default function PulseAdminPage() {
|
||
return (
|
||
<div className="space-y-6">
|
||
<PageHeader
|
||
title="Deal Pulse"
|
||
description="Tune the chip that scores every interest's health. Toggle the chip off entirely, disable individual signals you don't want surfaced, or rename the tier labels per your sales vocabulary."
|
||
/>
|
||
|
||
<Card>
|
||
<CardHeader>
|
||
<CardTitle className="flex items-center gap-2 text-base">
|
||
<Activity className="h-4 w-4" aria-hidden="true" />
|
||
How the pulse chip works
|
||
</CardTitle>
|
||
</CardHeader>
|
||
<CardContent className="space-y-3 text-sm">
|
||
<p className="text-muted-foreground">
|
||
Every interest row carries a small coloured chip in the detail header. It scores the
|
||
deal from 0–100 using rule-based signals (no AI). Click the chip on any interest to see
|
||
the per-signal breakdown - every +N or -N traces back to a dated event on the deal.
|
||
</p>
|
||
<p className="text-muted-foreground">
|
||
Positive signals (recent EOI sent, deposit received, contract signed) push the score up.
|
||
Risk signals (declined documents, cancelled reservations, berth resold elsewhere) push
|
||
it down. Stale-contact and stage-stuck signals weigh both directions automatically.
|
||
</p>
|
||
<p className="text-muted-foreground">
|
||
See the full guide at{' '}
|
||
<Link href="/docs/deal-pulse" className="underline">
|
||
/docs/deal-pulse
|
||
</Link>
|
||
.
|
||
</p>
|
||
</CardContent>
|
||
</Card>
|
||
|
||
<RegistryDrivenForm
|
||
title="Pulse chip behaviour"
|
||
description="Master toggle, per-signal toggles, and per-port label overrides. Defaults: chip visible, all signals on, built-in tier names ('Hot' / 'Warm' / 'Cold')."
|
||
sections={['pulse']}
|
||
/>
|
||
</div>
|
||
);
|
||
}
|