Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7e7110a
Fix typography audit issues
BigSimmo Jul 25, 2026
c78271b
Format typography cherry-pick and record PR #1185 review.
BigSimmo Jul 25, 2026
3cc6fa0
docs: record published SHA for typography supersede branch
BigSimmo Jul 25, 2026
a4a8298
Merge branch 'main' into cursor/typography-audit-fixes-1c1e
github-actions[bot] Jul 25, 2026
6bc0569
Merge branch 'main' into cursor/typography-audit-fixes-1c1e
github-actions[bot] Jul 25, 2026
0988e01
docs: record PR #1200 typography merge-readiness review
BigSimmo Jul 25, 2026
e7d93cd
fix(pr-1200): restore nested mockup heading hierarchy and PR body.
BigSimmo Jul 25, 2026
58ea460
docs: record PR #1200 perfection-pass tip SHA
BigSimmo Jul 25, 2026
80421c3
Merge origin/main into cursor/typography-audit-fixes-1c1e
BigSimmo Jul 25, 2026
259b12a
docs: ledger note for PR #1200 main sync after conflict
BigSimmo Jul 25, 2026
7a94877
fix(ui): let Sheet autofocus win over close-button fallback.
BigSimmo Jul 25, 2026
429ac22
docs: record PR #1200 Sheet autofocus tip SHA
BigSimmo Jul 25, 2026
5e22eb4
Merge origin/main into cursor/typography-audit-fixes-1c1e
BigSimmo Jul 25, 2026
b09694d
docs: approve PR #1200 merge-readiness after green tip CI
BigSimmo Jul 25, 2026
b6313cb
Merge origin/main into cursor/typography-audit-fixes-1c1e
BigSimmo Jul 25, 2026
c2beb81
Merge branch 'main' into cursor/typography-audit-fixes-1c1e
github-actions[bot] Jul 25, 2026
9ae9ac8
Merge branch 'main' into cursor/typography-audit-fixes-1c1e
github-actions[bot] Jul 25, 2026
bd13614
chore(pr-1200): retrigger required CI after bot branch sync
BigSimmo Jul 25, 2026
4b17817
Merge branch 'main' into cursor/typography-audit-fixes-1c1e
github-actions[bot] Jul 25, 2026
7fee192
chore(pr-1200): retrigger CI on synced tip
BigSimmo Jul 25, 2026
e87e850
docs: drop exact-duplicate branch-review ledger row.
BigSimmo Jul 25, 2026
78ea864
Merge origin/main into cursor/typography-audit-fixes-1c1e
BigSimmo Jul 25, 2026
e5e834c
fix(ui): keep Sheet open-focus retries until autofocus settles.
BigSimmo Jul 25, 2026
ab58d0b
fix(ui): focus Sources Find on DocumentDrawer mount.
BigSimmo Jul 25, 2026
8f2c85c
Merge origin/main into typography PR; keep Sources focus fixes.
BigSimmo Jul 25, 2026
8268a96
Merge origin/main into cursor/typography-audit-fixes-1c1e
BigSimmo Jul 26, 2026
6cf1fbc
docs(ledger): drop exact-duplicate rows after merge with main
BigSimmo Jul 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions docs/branch-review-ledger.md

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,9 @@
/* Font families: bind Tailwind's font-sans / font-mono to the loaded Geist
faces (variables set on <html> by next/font). font-mono is used for
clinical codes and IDs (guideline refs, chunk/page numbers, versions). */
--font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
--font-sans:
var(--font-geist-sans), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
Arial, sans-serif;
--font-mono: var(--font-geist-mono), ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, monospace;

--ease-out-soft: cubic-bezier(0.22, 1, 0.36, 1);
Expand Down
2 changes: 1 addition & 1 deletion src/app/mockups/recent-searches-bottom/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function RecentSearchRail() {
className="inline-flex min-h-9 max-w-[15rem] shrink-0 items-center gap-1.5 rounded-full border border-[color:var(--border)] bg-[color:var(--surface-raised)]/78 px-3 text-xs font-semibold text-[color:var(--text-muted)] shadow-[var(--shadow-inset)] backdrop-blur transition hover:border-[color:var(--border-strong)] hover:bg-[color:var(--surface)] hover:text-[color:var(--text)]"
>
<Search className="h-3.5 w-3.5 shrink-0 text-[color:var(--clinical-accent)]" />
<span className="truncate">{search}</span>
<span className="truncate min-w-0">{search}</span>
</button>
))}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,7 @@ export function CalculatorsBedsideSheetMockup() {
<ClipboardList className="size-icon-md" aria-hidden="true" />
</span>
<div className="min-w-0">
<h1 className="truncate text-lg font-extrabold leading-tight text-[color:var(--text-heading)]">
Assessment sheet
</h1>
<h1 className="truncate text-lg font-extrabold text-[color:var(--text-heading)]">Assessment sheet</h1>
<p className="truncate text-2xs font-semibold text-[color:var(--text-soft)]">
Run several scales in one review — a summary builds as you go.
</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ export function CalculatorsClinicalConsoleMockup() {
<main className="grid min-w-0 content-start gap-4">
<section className="grid gap-3 rounded-lg border border-[color:var(--border)] bg-[color:var(--surface)] p-4 shadow-[var(--shadow-inset)]">
<div className="flex flex-wrap items-baseline gap-x-2 gap-y-1">
<h2 className="text-lg font-extrabold text-[color:var(--text-heading)]">{calc.abbrev}</h2>
<h2 className="text-lg font-extrabold tabular-nums text-[color:var(--text-heading)]">{calc.abbrev}</h2>
<span className="text-sm-minus font-semibold text-[color:var(--text-soft)]">{calc.name}</span>
</div>
<p className="grid grid-cols-[auto_minmax(0,1fr)] items-start gap-2 rounded-md border border-[color:var(--info-border)] bg-[color:var(--info-soft)] p-2.5 text-sm-minus font-semibold leading-5 text-[color:var(--info)]">
Expand Down
9 changes: 8 additions & 1 deletion src/components/clinical-dashboard/document-admin.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";

import Link from "next/link";
import { useMemo, useState } from "react";
import { useLayoutEffect, useMemo, useRef, useState } from "react";
import {
ChevronDown,
ClipboardCheck,
Expand Down Expand Up @@ -588,6 +588,12 @@ export function DocumentDrawer({
sourceType: "",
category: "",
});
const findInputRef = useRef<HTMLInputElement>(null);
// Sheet open-focus can land on Close before this drawer mounts; claim Find as
// soon as the field is in the DOM (Sources ribbon + empty-home Browse paths).
useLayoutEffect(() => {
findInputRef.current?.focus({ preventScroll: true });
}, [mode]);

const allTypes = useMemo(() => {
const types = new Set<string>();
Expand Down Expand Up @@ -744,6 +750,7 @@ export function DocumentDrawer({
<label className="relative block">
<Search aria-hidden="true" className={fieldIcon} />
<input
ref={findInputRef}
autoFocus
data-sheet-autofocus="true"
value={filter}
Expand Down
31 changes: 30 additions & 1 deletion tests/sheet.dom.test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { render } from "@testing-library/react";
import { render, waitFor } from "@testing-library/react";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";

import { Sheet } from "@/components/ui/sheet";
Expand Down Expand Up @@ -118,4 +118,33 @@ describe("Sheet stacked-overlay coordination", () => {
expect(vi.getTimerCount()).toBe(0);
vi.useRealTimers();
});

it("upgrades from the close-button fallback to a late-mounted data-sheet-autofocus target", async () => {
const onClose = vi.fn();
const { rerender } = render(
<Sheet open onClose={onClose} title="Sources" portal>
<p>Loading filters…</p>
</Sheet>,
);

// First open frame: no autofocus child yet, so the close control is focused.
await waitFor(() => {
const closeButton = document.querySelector<HTMLButtonElement>('button[aria-label="Close"]');
expect(closeButton).not.toBeNull();
expect(document.activeElement).toBe(closeButton);
});

rerender(
<Sheet open onClose={onClose} title="Sources" portal>
<input data-sheet-autofocus="true" placeholder="Find a document" />
</Sheet>,
);

// Open-focus retries must move off the close fallback onto the Find field.
await waitFor(() => {
const findField = document.querySelector<HTMLInputElement>('input[placeholder="Find a document"]');
expect(findField).not.toBeNull();
expect(document.activeElement).toBe(findField);
});
});
});
Loading