chore(style): codebase em-dash sweep + minor layout polish
Replaces every em-dash and en-dash with regular ASCII hyphens across comments, JSX strings, and dev-facing logs. Mostly cosmetic but stops the inconsistent mix that crept in over the last few months (some files used em-dashes in comments, others didn't, some used both). Bundles two small dashboard-layout tweaks that touch a couple of already-modified files: - (dashboard)/layout.tsx main padding goes from p-6 to pt-3 px-6 pb-6 so page content sits closer to the topbar. - Sidebar now receives the ports list it needs for the footer port switcher. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -80,14 +80,19 @@ export function CommandSearch() {
|
||||
} as const;
|
||||
|
||||
return (
|
||||
<div ref={wrapperRef} className="relative">
|
||||
{/* ── Single persistent search bar ── */}
|
||||
// Width is now driven by the parent slot (topbar centers a 360–640px
|
||||
// column). Removed fixed widths so the bar fills its container instead
|
||||
// of shrinking to the old fixed pixel sizes.
|
||||
<div ref={wrapperRef} className="relative w-full">
|
||||
{/* Single persistent search bar.
|
||||
Focus state is intentionally subtle: a 1px brand-coloured border,
|
||||
no fat outer glow. The earlier `ring-4 ring-brand/15` produced a
|
||||
chunky pale-blue rectangle that read as a stray UI element rather
|
||||
than a focus indicator. */}
|
||||
<div
|
||||
className={cn(
|
||||
'flex items-center gap-2 rounded-md border bg-background px-2.5 shadow-xs transition-all duration-base ease-smooth',
|
||||
focused
|
||||
? 'border-brand/60 ring-4 ring-brand/15 w-64 lg:w-80'
|
||||
: 'border-input w-44 lg:w-60',
|
||||
'flex items-center gap-2 rounded-lg border bg-background px-3 shadow-xs transition-colors w-full',
|
||||
focused ? 'border-brand/70' : 'border-input',
|
||||
)}
|
||||
>
|
||||
<Search className="h-4 w-4 shrink-0 text-muted-foreground" />
|
||||
@@ -98,16 +103,18 @@ export function CommandSearch() {
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
onFocus={() => setFocused(true)}
|
||||
onKeyDown={onInputKeyDown}
|
||||
placeholder="Search..."
|
||||
className="h-8 flex-1 min-w-0 bg-transparent text-sm outline-none ring-0 focus:outline-none focus:ring-0 placeholder:text-muted-foreground"
|
||||
placeholder="Search clients, yachts, berths... (⌘K)"
|
||||
className="h-9 flex-1 min-w-0 bg-transparent text-sm outline-none ring-0 focus:outline-none focus:ring-0 placeholder:text-muted-foreground"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* ── Results dropdown ── */}
|
||||
{showDropdown && (
|
||||
<div className="absolute top-[calc(100%+4px)] left-0 w-[min(420px,calc(100vw-2rem))] z-50 rounded-md border bg-popover shadow-lg overflow-hidden">
|
||||
// Dropdown width matches the search input (full width of the slot),
|
||||
// capped on viewport so it doesn't bleed past the screen edge.
|
||||
<div className="absolute top-[calc(100%+4px)] left-0 w-full max-w-[min(640px,calc(100vw-2rem))] z-50 rounded-md border bg-popover shadow-lg overflow-hidden">
|
||||
<div className="max-h-[340px] overflow-y-auto py-1">
|
||||
{/* No query yet — show recent or hint */}
|
||||
{/* No query yet - show recent or hint */}
|
||||
{!hasQuery && recentSearches.length > 0 && (
|
||||
<div>
|
||||
<div className="px-3 py-1.5 text-xs font-medium text-muted-foreground">Recent</div>
|
||||
@@ -260,7 +267,7 @@ function ResultGroup({
|
||||
);
|
||||
}
|
||||
|
||||
// Keep export for backwards compat — it's a no-op
|
||||
// Keep export for backwards compat - it's a no-op
|
||||
export function SearchTrigger() {
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user