@@ -20,7 +20,7 @@ pub fn search(model: Model) {
2020 html . div (
2121 [
2222 class (
23- "fixed top-[22px ] right-4 z-50 flex-col items-end gap-4 hidden 2xl:flex dark:text-white" ,
23+ "fixed top-[28px ] right-4 z-50 flex-col items-end gap-4 hidden 2xl:flex dark:text-white" ,
2424 ) ,
2525 ] ,
2626 [ hexdocs_logo ( ) ] ,
@@ -50,18 +50,6 @@ pub fn search(model: Model) {
5050 ] ,
5151 ) ,
5252 hexdocs_logo ( ) ,
53- html . button ( [ class ( "p-2" ) , event . on_click ( msg . UserToggledDarkMode ) ] , [
54- html . i (
55- [
56- class ( "theme-icon text-xl text-slate-700 dark:text-slate-300" ) ,
57- class ( case model . dark_mode . mode {
58- msg . Dark -> "ri-sun-line"
59- msg . Light -> "ri-moon-line"
60- } ) ,
61- ] ,
62- [ ] ,
63- ) ,
64- ] ) ,
6553 ] ,
6654 ) ,
6755 html . div (
@@ -78,7 +66,7 @@ pub fn search(model: Model) {
7866 ] ,
7967 [
8068 html . div ( [ class ( "p-5" ) ] , [
81- html . div ( [ class ( "flex justify-between items-center mt-2" ) ] , [
69+ html . div ( [ class ( "flex justify-between items-center md: mt-2" ) ] , [
8270 html . h2 (
8371 [
8472 class (
@@ -107,86 +95,89 @@ pub fn search(model: Model) {
10795 html . form (
10896 [ event . on_submit ( fn ( _ ) { msg . UserSubmittedPackagesFilter } ) ] ,
10997 [
110- html . div ( [ class ( "mt-4 flex gap-2" ) ] , [
111- html . div (
112- [
113- class (
114- "flex-grow bg-slate-100 dark:bg-slate-700 rounded-lg border border-slate-300 dark:border-slate-600 relative" ,
115- ) ,
116- ] ,
117- [
118- html . input ( [
119- attribute . id ( "search-package-input" ) ,
98+ html . div (
99+ [ class ( "mt-4 flex gap-2 text-slate-700 dark:text-slate-300" ) ] ,
100+ [
101+ html . div (
102+ [
120103 class (
121- "search-input w-full h-10 bg-transparent px-10 text-slate-800 dark:text-slate-200 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500" ,
122- ) ,
123- attribute . placeholder ( "Package Name" ) ,
124- attribute . type_ ( "text" ) ,
125- attribute . value (
126- model . search_packages_filter_input_displayed ,
104+ "flex-grow bg-slate-100 dark:bg-slate-700 rounded-lg border border-slate-300 dark:border-slate-600 relative" ,
127105 ) ,
128- event . on_input ( msg . UserEditedPackagesFilterInput ) ,
129- event . on_focus ( msg . UserFocusedPackagesFilterInput ) ,
130- event . on_click ( msg . None ) |> event . stop_propagation ,
131- event . advanced (
132- "keydown" ,
133- on_arrow_up_down ( model . Package ) ,
134- ) ,
135- ] ) ,
136- html . i (
137- [
106+ ] ,
107+ [
108+ html . input ( [
109+ attribute . id ( "search-package-input" ) ,
138110 class (
139- "ri- search-2-line absolute left-3 top-1/2 transform -translate-y-1/2 text-slate-500 dark:text-slate-400 text-lg " ,
111+ "search-input w-full h-10 bg-transparent px-10 text-slate-800 dark:text-slate-200 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500 " ,
140112 ) ,
141- ] ,
142- [ ] ,
143- ) ,
144- autocomplete (
145- model ,
146- model . Package ,
147- model . AutocompleteOnPackage ,
148- ) ,
149- ] ,
150- ) ,
151- html . div (
152- [
153- class (
154- "w-20 bg-slate-100 dark:bg-slate-700 rounded-lg border border-slate-300 dark:border-slate-600 relative" ,
155- ) ,
156- ] ,
157- [
158- html . input ( [
159- attribute . id ( "search-version-input" ) ,
160- class (
161- "search-input w-full h-10 bg-transparent px-2 text-slate-800 dark:text-slate-200 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500 disabled:opacity-[0.2]" ,
162- ) ,
163- attribute . placeholder ( "ver" ) ,
164- attribute . type_ ( "text" ) ,
165- attribute . value (
166- model . search_packages_filter_version_input_displayed ,
167- ) ,
168- attribute . disabled (
169- ! list . contains (
170- model . packages ,
113+ attribute . placeholder ( "Package Name" ) ,
114+ attribute . type_ ( "text" ) ,
115+ attribute . value (
171116 model . search_packages_filter_input_displayed ,
172117 ) ,
118+ event . on_input ( msg . UserEditedPackagesFilterInput ) ,
119+ event . on_focus ( msg . UserFocusedPackagesFilterInput ) ,
120+ event . on_click ( msg . None ) |> event . stop_propagation ,
121+ event . advanced (
122+ "keydown" ,
123+ on_arrow_up_down ( model . Package ) ,
124+ ) ,
125+ ] ) ,
126+ html . i (
127+ [
128+ class (
129+ "ri-search-2-line absolute left-3 top-1/2 transform -translate-y-1/2 text-slate-500 dark:text-slate-400 text-lg" ,
130+ ) ,
131+ ] ,
132+ [ ] ,
173133 ) ,
174- event . on_input ( msg . UserEditedPackagesFilterVersion ) ,
175- event . on_focus ( msg . UserFocusedPackagesFilterVersion ) ,
176- event . on_click ( msg . None ) |> event . stop_propagation ,
177- event . advanced (
178- "keydown" ,
179- on_arrow_up_down ( model . Version ) ,
134+ autocomplete (
135+ model ,
136+ model . Package ,
137+ model . AutocompleteOnPackage ,
180138 ) ,
181- ] ) ,
182- autocomplete (
183- model ,
184- model . Version ,
185- model . AutocompleteOnVersion ,
186- ) ,
187- ] ,
188- ) ,
189- ] ) ,
139+ ] ,
140+ ) ,
141+ html . div (
142+ [
143+ class (
144+ "w-20 bg-slate-100 dark:bg-slate-700 rounded-lg border border-slate-300 dark:border-slate-600 relative" ,
145+ ) ,
146+ ] ,
147+ [
148+ html . input ( [
149+ attribute . id ( "search-version-input" ) ,
150+ class (
151+ "search-input w-full h-10 bg-transparent px-2 text-slate-800 dark:text-slate-200 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500 disabled:opacity-[0.2]" ,
152+ ) ,
153+ attribute . placeholder ( "ver" ) ,
154+ attribute . type_ ( "text" ) ,
155+ attribute . value (
156+ model . search_packages_filter_version_input_displayed ,
157+ ) ,
158+ attribute . disabled (
159+ ! list . contains (
160+ model . packages ,
161+ model . search_packages_filter_input_displayed ,
162+ ) ,
163+ ) ,
164+ event . on_input ( msg . UserEditedPackagesFilterVersion ) ,
165+ event . on_focus ( msg . UserFocusedPackagesFilterVersion ) ,
166+ event . on_click ( msg . None ) |> event . stop_propagation ,
167+ event . advanced (
168+ "keydown" ,
169+ on_arrow_up_down ( model . Version ) ,
170+ ) ,
171+ ] ) ,
172+ autocomplete (
173+ model ,
174+ model . Version ,
175+ model . AutocompleteOnVersion ,
176+ ) ,
177+ ] ,
178+ ) ,
179+ ] ,
180+ ) ,
190181 html . div ( [ class ( "mt-4 flex gap-2" ) ] , [
191182 html . button (
192183 [
@@ -201,37 +192,28 @@ pub fn search(model: Model) {
201192 ] ) ,
202193 ] ,
203194 ) ,
204- html . button (
205- [
206- event . on_click ( msg . UserClickedShare ) ,
207- class (
208- "w-10 h-10 bg-slate-100 dark:bg-slate-700 rounded-lg border border-slate-300 dark:border-slate-600 flex items-center justify-center cursor-pointer" ,
209- ) ,
210- ] ,
211- [
212- html . i (
213- [
214- class (
215- "ri-share-forward-line text-slate-500 dark:text-slate-400 text-lg" ,
216- ) ,
217- ] ,
218- [ ] ,
219- ) ,
220- ] ,
221- ) ,
222195 ] ) ,
223196 ] ,
224197 ) ,
225198 html . hr ( [ class ( "mt-6 border-slate-200 dark:border-slate-700" ) ] ) ,
226199 case list . is_empty ( model . search_packages_filters ) {
227200 True -> {
228- html . div ( [ class ( "text-slate-950 dark:text-slate-50 pt-4" ) ] , [
229- html . text ( "No package selected, searching all packages" ) ,
201+ html . div ( [ class ( "text-slate-700 dark:text-slate-300 pt-4" ) ] , [
202+ html . text (
203+ "No package selected, searching all packages and all versions." ,
204+ ) ,
230205 ] )
231206 }
232207 False -> {
233208 element . fragment ( {
234- use filter <- list . map ( model . search_packages_filters )
209+ let sorted_filters =
210+ list . sort ( model . search_packages_filters , fn ( a , b ) {
211+ let # ( package_a , _version_a ) = a
212+ let # ( package_b , _version_b ) = b
213+ string . compare ( package_a , package_b )
214+ } )
215+
216+ use filter <- list . map ( sorted_filters )
235217 let # ( package , version ) = filter
236218 html . div ( [ class ( "flex justify-between items-center mt-4" ) ] , [
237219 html . div (
@@ -240,7 +222,7 @@ pub fn search(model: Model) {
240222 html . div (
241223 [
242224 class (
243- "self-stretch justify-start text-gray-950 dark:text-slate-50 text-lg font-semibold leading-none" ,
225+ "self-stretch justify-start text-gray-950 dark:text-slate-50 text-md font-semibold leading-none" ,
244226 ) ,
245227 ] ,
246228 [ html . text ( package ) ] ,
@@ -369,7 +351,7 @@ fn autocomplete(
369351 html . div (
370352 [
371353 class (
372- "absolute top-14 w-full bg-white dark:bg-gray-800 shadow-md rounded-lg overflow-hidden" ,
354+ "absolute z-10 top-14 w-full min-w-[120px] bg-white dark:bg-gray-800 shadow-md rounded-lg overflow-hidden" ,
373355 ) ,
374356 ] ,
375357 [
@@ -405,7 +387,9 @@ fn autocomplete(
405387}
406388
407389fn empty_autocomplete ( ) {
408- html . text ( "No packages found" )
390+ html . div ( [ attribute . class ( "py-2 px-4 text-md text-red-700" ) ] , [
391+ html . text ( "No packages found" ) ,
392+ ] )
409393}
410394
411395fn on_select_package ( package : String ) {
@@ -417,7 +401,7 @@ fn on_select_package(package: String) {
417401fn hexdocs_logo ( ) {
418402 html . a ( [ class ( "flex items-center gap-2" ) , attribute . href ( "/" ) ] , [
419403 html . img ( [
420- class ( "w-auto h-10 " ) ,
404+ class ( "w-auto h-6 " ) ,
421405 attribute . alt ( "HexDocs Logo" ) ,
422406 attribute . src ( "/images/hexdocs-logo.svg" ) ,
423407 ] ) ,
@@ -440,12 +424,9 @@ fn hexdocs_logo() {
440424
441425fn trash_button ( filter : # ( String , String ) ) {
442426 let on_delete = event . on_click ( msg . UserDeletedPackagesFilter ( filter ) )
443- html . div (
444- [ class ( "w-5 h-5 relative overflow-hidden cursor-pointer" ) , on_delete ] ,
445- [
446- sidebar_icon ( "ri-delete-bin-5-fill" ) ,
447- ] ,
448- )
427+ html . div ( [ class ( "h-5 relative overflow-hidden cursor-pointer" ) , on_delete ] , [
428+ sidebar_icon ( "ri-delete-bin-5-fill" ) ,
429+ ] )
449430}
450431
451432fn result_card ( model : Model , result : hexdocs . TypeSense ) {
0 commit comments