@@ -6,13 +6,14 @@ import {
66 For ,
77 Suspense ,
88 startTransition ,
9- onCleanup ,
109 createMemo ,
1110} from "solid-js" ;
1211import { Dialog } from "@kobalte/core/dialog" ;
1312import { A , createAsync , useNavigate , usePreloadRoute } from "@solidjs/router" ;
1413import { createList } from "solid-list" ;
1514import { createMarker , makeSearchRegex } from "@solid-primitives/marker" ;
15+ import { createEventListener } from "@solid-primitives/event-listener" ;
16+ import { isAppleDevice } from "@solid-primitives/platform" ;
1617
1718function getOramaClient ( {
1819 endpoint,
@@ -104,18 +105,11 @@ export function Search() {
104105 preload ( new URL ( path , "https://docs.solidjs.com" ) , { preloadData : true } ) ;
105106 } ) ;
106107
107- createEffect ( ( ) => {
108- const handleKeyDown = ( e : KeyboardEvent ) => {
109- if ( e . metaKey && e . key === "k" ) {
110- e . preventDefault ( ) ;
111- setOpen ( ( open ) => ! open ) ;
112- }
113- } ;
114-
115- window . addEventListener ( "keydown" , handleKeyDown ) ;
116- onCleanup ( ( ) => {
117- window . removeEventListener ( "keydown" , handleKeyDown ) ;
118- } ) ;
108+ createEventListener ( window , "keydown" , ( e : KeyboardEvent ) => {
109+ if ( ( e . ctrlKey || e . metaKey ) && e . key === "k" ) {
110+ e . preventDefault ( ) ;
111+ setOpen ( ( open ) => ! open ) ;
112+ }
119113 } ) ;
120114
121115 const regex = createMemo ( ( ) => makeSearchRegex ( searchTerm ( ) ) ) ;
@@ -139,19 +133,23 @@ export function Search() {
139133 setOpen ( open ) ;
140134 } }
141135 >
142- < Dialog . Trigger class = "items-center rounded-lg md:border border-black/10 dark:border-white/60 dark:bg-slate-800 md:px-2 md:py-1.5 flex" >
136+ < Dialog . Trigger
137+ aria-keyshortcuts = { isAppleDevice ? "Meta+K" : "Control+K" }
138+ class = "items-center rounded-lg md:border border-black/10 dark:border-white/60 dark:bg-slate-800 md:px-2 md:py-1.5 flex"
139+ >
143140 < svg
144141 xmlns = "http://www.w3.org/2000/svg"
145142 fill = "currentColor"
146143 viewBox = "0 0 256 256"
144+ aria-hidden = "true"
147145 class = "size-6 md:size-4"
148146 >
149147 < path d = "M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z" />
150148 </ svg >
151149 < span class = "hidden md:block ml-1 text-sm" > Search</ span >
152150 < kbd class = "hidden md:block ml-2 min-w-6 rounded border border-black/5 px-1 pb-px pt-1 text-center font-mono text-xs dark:bg-slate-700" >
153- < span > ⌘ </ span >
154- < span class = "ml-0.5" > K</ span >
151+ < kbd > { isAppleDevice ? "⌘" : "Ctrl" } </ kbd >
152+ < kbd class = "ml-0.5" > K</ kbd >
155153 </ kbd >
156154 </ Dialog . Trigger >
157155 < Dialog . Portal >
0 commit comments