feat: add profile language preferences and refine toast, dropdown and history UI

This commit is contained in:
Mateusz Gruszczyński
2026-09-04 23:48:09 +02:00
parent f036240d5d
commit bf13587a71
42 changed files with 3971 additions and 357 deletions
+22 -1
View File
@@ -191,6 +191,27 @@
</label>
</div>
</fieldset>
<div class="profile-language-field">
<span id="profile-language-label" data-i18n="common.language">Language</span>
<div class="profile-language-control" data-language-picker>
<svg class="profile-language-control__icon" viewBox="0 0 24 24" aria-hidden="true">
<circle cx="12" cy="12" r="9"></circle>
<path d="M3 12h18M12 3a15 15 0 0 1 0 18M12 3a15 15 0 0 0 0 18"></path>
</svg>
<button id="profile-language-button" class="profile-language-trigger" type="button"
aria-labelledby="profile-language-label profile-language-current" aria-haspopup="listbox"
aria-expanded="false" aria-controls="profile-language-options">
<span id="profile-language-current" class="profile-language-current" data-i18n-ignore>English</span>
</button>
<svg class="profile-language-control__chevron" viewBox="0 0 20 20" aria-hidden="true">
<path d="m6 8 4 4 4-4"></path>
</svg>
<input id="profile-language" type="hidden" value="en">
<div id="profile-language-options" class="profile-language-menu" role="listbox" data-i18n-ignore
aria-labelledby="profile-language-label" hidden></div>
</div>
<small data-i18n="profile.language.help">Saved with your profile and applied after you save these settings.</small>
</div>
<label data-local-profile-field>Current e-mail<input id="profile-current-email" type="email" readonly></label>
<label data-local-profile-field>New e-mail<input id="profile-email" type="email" maxlength="320"
placeholder="Leave empty to keep current"></label>
@@ -206,7 +227,7 @@
<p id="profile-message" class="form-message" role="status"></p>
</form>
</dialog>
<div id="toast" class="toast" role="status" aria-live="polite"></div>
<div id="toast" class="toast-region" aria-live="polite" aria-label="Notifications" aria-relevant="additions removals"></div>
</body>