Skip to content

Commit 7822126

Browse files
committed
💄 Add icon to language select and grid the mobile docs nav
- Native select can't show an icon - Single-column mobile menu wasted space
1 parent 1d16a21 commit 7822126

1 file changed

Lines changed: 57 additions & 13 deletions

File tree

‎src/routes/[[lang=lang]]/docs/+layout.svelte‎

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -251,16 +251,16 @@
251251
{link.title}
252252
</a>
253253
{/each}
254-
<select
255-
class="language-select minecraft-button"
256-
aria-label="Language"
257-
value={lang}
258-
onchange={switchLanguage}
259-
>
260-
{#each SUPPORTED_LANGUAGES as option}
261-
<option value={option} lang={option}>{getLanguageName(option)}</option>
262-
{/each}
263-
</select>
254+
<!-- A select can't show an icon, so an invisible one covers this button -->
255+
<label class="language-select minecraft-button">
256+
<MinecraftIcon path="icons/current/lang_file.svg" />
257+
{getLanguageName(lang)}
258+
<select aria-label="Language" value={lang} onchange={switchLanguage}>
259+
{#each SUPPORTED_LANGUAGES as option}
260+
<option value={option} lang={option}>{getLanguageName(option)}</option>
261+
{/each}
262+
</select>
263+
</label>
264264
</nav>
265265
</header>
266266

@@ -410,12 +410,27 @@
410410
}
411411
412412
.language-select {
413+
position: relative;
413414
font-family: var(--minecraft-font);
414415
font-size: var(--font-size-small);
415416
color: var(--minecraft-button-text-color);
416417
cursor: pointer;
417418
}
418419
420+
.language-select select {
421+
position: absolute;
422+
inset: 0;
423+
width: 100%;
424+
height: 100%;
425+
opacity: 0;
426+
cursor: pointer;
427+
}
428+
429+
.language-select:focus-within {
430+
outline: 2px solid #00aced;
431+
outline-offset: 2px;
432+
}
433+
419434
.docs-nav-toggle {
420435
display: none;
421436
font-family: var(--minecraft-font);
@@ -646,12 +661,41 @@
646661
}
647662
648663
.docs-nav.open {
664+
display: grid;
665+
/* At most 5 columns, one per item, so wide menus have no empty cells */
666+
grid-template-columns: repeat(
667+
auto-fill,
668+
minmax(max(140px, calc((100% - 48px) / 5)), 1fr)
669+
);
670+
}
671+
672+
.docs-nav.open a,
673+
.docs-nav.open .language-select {
649674
display: flex;
675+
flex-direction: column;
676+
align-items: center;
677+
justify-content: center;
678+
gap: 6px;
679+
margin: 0;
680+
padding-inline: 8px;
681+
white-space: nowrap;
650682
}
651683
652-
.docs-nav.open {
653-
display: grid;
654-
grid-template-columns: 1fr;
684+
.docs-nav.open a :global(i),
685+
.docs-nav.open .language-select :global(i) {
686+
display: flex;
687+
align-items: center;
688+
height: 32px;
689+
margin: 0;
690+
}
691+
692+
/* The pressed button is shorter, so sink it to the row's bottom edge like the desktop header */
693+
.docs-nav.open a.active {
694+
align-self: end;
695+
}
696+
697+
.docs-nav.open a.active::after {
698+
display: none;
655699
}
656700
657701
.docs-header {

0 commit comments

Comments
 (0)