Skip to content

Commit 2b83aa2

Browse files
fix(search-dialog): retone Pagefind modal to warp.dev neutral grey (#18)
* fix(search-dialog): retone Pagefind modal to warp.dev neutral grey The Pagefind search modal still shipped Starlight's default chrome, which paints: - the dialog frame in --sl-color-gray-6 / gray-5 (Oz cool blue grays #252b37 / #414651), - the input focus ring in --sl-color-accent (Warp blue), - result hover/focus in --sl-color-accent-high outlines and --sl-color-accent-low fills, - cancel + clear buttons in --sl-color-text-accent (blue). On the neutral #121212 canvas + the warp.dev grayscale chrome system this all reads visibly cool/blue and out of family with the trigger button it just opened from. Add a new §18 in warp-components.css with unlayered overrides scoped to `site-search dialog` (so the Kapa Ask dialog stays untouched): - dialog surface → --sl-color-bg + hairline border (one-canvas pattern, depth from backdrop blur), - backdrop overlay → flat neutral scrim per theme, - --pagefind-ui-* custom props pointed at --warp-control-* so all of Pagefind's internal surfaces inherit the new palette, - input :focus border → --warp-control-border-hover (no blue ring), - cancel + clear buttons → calm gray-2 / gray-3, - result cards + tags → --warp-control-bg with a hairline, - hover/focus-within → --warp-control-bg-hover wash + matching border, no blue accent outline. Stacked on top of #17 (chrome trigger retoning). Co-Authored-By: Oz <oz-agent@warp.dev> * fix(chrome): unify control corner radius to 4px across chrome family Chrome corner radii were inconsistent across adjacent surfaces: - Search trigger / Ask / Copy trigger: 4px (sm) ✓ - Search modal input + clear + tag chips: 8px (Pagefind default) - Search modal result cards: 5px (Starlight --sl-search-corners) - Copy dropdown items: 6px (md) - Kapa form input + submit: 6px (md) Establish one rule for the chrome family: - Every clickable control surface (button, single-line input, list/menu row, kbd chip, toast) → --sl-radius-sm (4px) - Every floating overlay (dialog, dropdown panel, popover, chat bubble) → --sl-radius-lg (8px) - Content cards (code blocks, asides, file tree) keep their --sl-radius-md (6px) — content surface, not chrome. Changes: - warp-components.css §18: override Pagefind's --pagefind-ui-border-radius and Starlight's --sl-search-corners to --sl-radius-sm so the search input, clear button, tag chips, and result cards all land at 4px. - CopyPageButton.astro: dropdown items 6px → 4px (panel keeps 8px). - KapaChatLauncher.css: .sl-kapa-form input + .sl-kapa-submit 6px → 4px (matching the chrome trigger they pair with). Co-Authored-By: Oz <oz-agent@warp.dev> --------- Co-authored-by: Oz <oz-agent@warp.dev>
1 parent 9440feb commit 2b83aa2

3 files changed

Lines changed: 132 additions & 3 deletions

File tree

src/components/CopyPageButton.astro

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,11 @@ const claudeUrl = `https://claude.ai/new?q=${prompt}`;
300300
width: 100%;
301301
padding: 0.5rem 0.625rem;
302302
border: none;
303-
border-radius: var(--sl-radius-md);
303+
/* Matches the `--sl-radius-sm` (4px) chrome-control rule used by every
304+
other clickable surface (Search/Ask/Copy triggers, sidebar nav rows,
305+
Copy toast). The enclosing `.copy-dropdown-panel` keeps the 8px
306+
overlay radius. */
307+
border-radius: var(--sl-radius-sm);
304308
background: transparent;
305309
color: var(--sl-color-white);
306310
font-family: var(--sl-font);

src/components/KapaChatLauncher.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,9 @@
278278
min-width: 0;
279279
height: 2.75rem;
280280
border: 1px solid var(--sl-color-gray-5);
281-
border-radius: var(--sl-radius-md);
281+
/* Matches the `--sl-radius-sm` (4px) chrome-control rule shared with
282+
every Search/Ask/Copy trigger and the Pagefind input. */
283+
border-radius: var(--sl-radius-sm);
282284
background: var(--sl-color-black);
283285
color: var(--sl-color-white);
284286
padding: 0 0.875rem;
@@ -303,7 +305,9 @@
303305
height: 2.75rem;
304306
padding: 0;
305307
border: 1px solid var(--sl-color-text-accent);
306-
border-radius: var(--sl-radius-md);
308+
/* Matches the `--sl-radius-sm` (4px) chrome-control rule, paired with
309+
the form input on the same row. */
310+
border-radius: var(--sl-radius-sm);
307311
background: var(--sl-color-text-accent);
308312
color: var(--sl-color-black);
309313
font: inherit;

src/styles/warp-components.css

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,3 +880,124 @@ body {
880880
box-shadow: 8px 0 24px rgba(0, 0, 0, 0.12);
881881
}
882882
}
883+
884+
/* --------------------------------------------------------------------------
885+
18. Search dialog (Pagefind modal) — brand-aligned grayscale chrome
886+
--------------------------------------------------------------------------
887+
888+
Starlight's `Search.astro` ships scoped styles inside `@layer
889+
starlight.core` plus an inline `@import` of Pagefind's default UI sheet,
890+
also at `layer(starlight.core)`. The defaults paint:
891+
892+
- The dialog frame with `--sl-color-gray-6` / `gray-5` (Oz cool blue
893+
grays `#252b37` / `#414651`).
894+
- The input focus ring with `--sl-color-accent` (Warp blue).
895+
- Result hover/focus with `--sl-color-accent-high` outlines and
896+
`--sl-color-accent-low` fills (more blue tint).
897+
- Cancel + clear buttons in `--sl-color-text-accent` (blue).
898+
899+
On the neutral `#121212` canvas + the warp.dev grayscale chrome system
900+
(§16 above), all of that read as visibly cool/blue and out of family.
901+
Unlayered overrides below win the cascade against `starlight.core` and
902+
pull the modal onto the same `--warp-control-*` ladder as the trigger
903+
button it just opened from.
904+
905+
Selectors are scoped to `site-search dialog` (the `<dialog>` that lives
906+
inside `<site-search>`) so they don't bleed into the Kapa Ask dialog,
907+
which also uses a `<dialog aria-label="…">` element.
908+
-------------------------------------------------------------------------- */
909+
910+
/* Dialog surface: drop the cool gray-6 fill and gray-5 border in favor of
911+
the page canvas + a hairline. Depth comes from the backdrop blur and the
912+
existing `box-shadow`. Same "one canvas, hairlines for separation"
913+
pattern the rest of the site already uses (see custom.css §background). */
914+
site-search dialog {
915+
background-color: var(--sl-color-bg);
916+
border: 1px solid var(--sl-color-hairline-light);
917+
}
918+
919+
/* Stronger neutral backdrop. Starlight's `--sl-color-backdrop-overlay`
920+
inherits the accent family in some themes; pin it to a flat dark scrim
921+
so the modal still pops without a blue cast. Light mode gets a soft
922+
warm-white wash instead. */
923+
site-search dialog::backdrop {
924+
background-color: rgba(18, 18, 18, 0.55);
925+
}
926+
927+
:root[data-theme='light'] site-search dialog::backdrop {
928+
background-color: rgba(255, 255, 255, 0.55);
929+
}
930+
931+
/* Pagefind UI custom-property overrides. These cascade into Pagefind's own
932+
stylesheet (which authors all its surfaces against
933+
`--pagefind-ui-background` / `--pagefind-ui-border` / `--pagefind-ui-tag`
934+
/ `--pagefind-ui-border-radius`) so we don't need to chase every
935+
internal class. The shared chrome `--warp-control-*` ladder defined in
936+
§16 is the source of truth for color; corner radii follow the chrome
937+
rule — every clickable control surface lands at `--sl-radius-sm` (4px),
938+
matching the trigger button this modal opened from. The dialog frame
939+
itself stays at the Starlight default 8px (overlay tier).
940+
941+
`--sl-search-corners` is Starlight's own knob for the result-card
942+
corners (defaults to `0.3125rem` = 5px, between our `sm` and `md`
943+
tokens, which never matches anything else). Pin it to `sm` so the
944+
list rows match the input above them. */
945+
site-search #starlight__search {
946+
--pagefind-ui-background: var(--warp-control-bg);
947+
--pagefind-ui-border: var(--warp-control-border);
948+
--pagefind-ui-tag: var(--warp-control-border);
949+
--pagefind-ui-text: var(--sl-color-gray-2);
950+
--pagefind-ui-primary: var(--sl-color-white);
951+
--pagefind-ui-border-radius: var(--sl-radius-sm);
952+
--sl-search-corners: var(--sl-radius-sm);
953+
}
954+
955+
/* Input focus border: Starlight's default flips `--pagefind-ui-border` to
956+
the saturated Warp blue accent on focus, which is the bright cyan ring
957+
in the screenshot. Replace with the chrome ladder's hover border so the
958+
input matches the trigger button's `:hover` affordance. */
959+
site-search #starlight__search input:focus {
960+
--pagefind-ui-border: var(--warp-control-border-hover);
961+
}
962+
963+
/* Cancel + clear buttons: drop the blue accent color in favor of a calm
964+
gray that recedes the way every other secondary chrome action does. */
965+
site-search button[data-close-modal] {
966+
color: var(--sl-color-gray-2);
967+
}
968+
969+
site-search button[data-close-modal]:hover {
970+
color: var(--sl-color-white);
971+
}
972+
973+
site-search #starlight__search .pagefind-ui__search-clear::before {
974+
background-color: var(--sl-color-gray-3);
975+
}
976+
977+
site-search #starlight__search .pagefind-ui__search-clear:focus {
978+
outline: 1px solid var(--warp-control-border-hover);
979+
}
980+
981+
/* Result cards. Starlight paints the title row + each nested sub-result
982+
with `--sl-color-black` (`#121212`), which on the cool gray-6 dialog
983+
read as stamped-down patches. With the dialog now sharing the page
984+
canvas, raise each result onto the chrome `--warp-control-bg` so the
985+
list reads as a stack of tactile chips. A 1px hairline keeps the cards
986+
distinct without a heavy outline. */
987+
site-search #starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)),
988+
site-search #starlight__search .pagefind-ui__result-nested,
989+
site-search #starlight__search .pagefind-ui__result-tags {
990+
background-color: var(--warp-control-bg);
991+
}
992+
993+
/* Hover / keyboard-focus state. Replace the blue accent outline + tinted
994+
fill with the same neutral wash the chrome buttons use on hover. The
995+
1px border swap stays inside the existing layout box, so list rows
996+
don't shift on hover. */
997+
site-search #starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):hover,
998+
site-search #starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):focus-within,
999+
site-search #starlight__search .pagefind-ui__result-nested:hover,
1000+
site-search #starlight__search .pagefind-ui__result-nested:focus-within {
1001+
outline: 1px solid var(--warp-control-border-hover);
1002+
background-color: var(--warp-control-bg-hover);
1003+
}

0 commit comments

Comments
 (0)