add aria-controls and ids to connect tabs to content

This commit is contained in:
Sine Jespersen 2025-06-11 13:45:47 +02:00
parent aee60add1d
commit 5dd99a0ea7
10 changed files with 18 additions and 4 deletions

View File

@ -42,7 +42,7 @@
}); });
</script> </script>
<div class="flex flex-col h-full justify-between space-y-3 text-sm mb-6"> <div id="tab-about" class="flex flex-col h-full justify-between space-y-3 text-sm mb-6">
<div class=" space-y-3 overflow-y-scroll max-h-[28rem] lg:max-h-full"> <div class=" space-y-3 overflow-y-scroll max-h-[28rem] lg:max-h-full">
<div> <div>
<div class=" mb-2.5 text-sm font-medium flex space-x-2 items-center"> <div class=" mb-2.5 text-sm font-medium flex space-x-2 items-center">

View File

@ -86,7 +86,7 @@
}); });
</script> </script>
<div class="flex flex-col h-full justify-between text-sm"> <div id="tab-account" class="flex flex-col h-full justify-between text-sm">
<div class=" overflow-y-scroll max-h-[28rem] lg:max-h-full"> <div class=" overflow-y-scroll max-h-[28rem] lg:max-h-full">
<input <input
id="profile-image-input" id="profile-image-input"

View File

@ -154,6 +154,7 @@
</script> </script>
<form <form
id="tab-audio"
class="flex flex-col h-full justify-between space-y-3 text-sm" class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={async () => { on:submit|preventDefault={async () => {
saveSettings({ saveSettings({

View File

@ -107,7 +107,7 @@
<ArchivedChatsModal bind:show={showArchivedChatsModal} onUpdate={handleArchivedChatsChange} /> <ArchivedChatsModal bind:show={showArchivedChatsModal} onUpdate={handleArchivedChatsChange} />
<div class="flex flex-col h-full justify-between space-y-3 text-sm"> <div id="tab-chats" class="flex flex-col h-full justify-between space-y-3 text-sm">
<div class=" space-y-2 overflow-y-scroll max-h-[28rem] lg:max-h-full"> <div class=" space-y-2 overflow-y-scroll max-h-[28rem] lg:max-h-full">
<div class="flex flex-col"> <div class="flex flex-col">
<input <input

View File

@ -70,6 +70,7 @@
<AddConnectionModal direct bind:show={showConnectionModal} onSubmit={addConnectionHandler} /> <AddConnectionModal direct bind:show={showConnectionModal} onSubmit={addConnectionHandler} />
<form <form
id="tab-connections"
class="flex flex-col h-full justify-between text-sm" class="flex flex-col h-full justify-between text-sm"
on:submit|preventDefault={() => { on:submit|preventDefault={() => {
updateHandler(); updateHandler();

View File

@ -187,7 +187,7 @@
}; };
</script> </script>
<div class="flex flex-col h-full justify-between text-sm"> <div class="flex flex-col h-full justify-between text-sm" id="tab-general">
<div class=" overflow-y-scroll max-h-[28rem] lg:max-h-full"> <div class=" overflow-y-scroll max-h-[28rem] lg:max-h-full">
<div class=""> <div class="">
<div class=" mb-1 text-sm font-medium">{$i18n.t('WebUI Settings')}</div> <div class=" mb-1 text-sm font-medium">{$i18n.t('WebUI Settings')}</div>

View File

@ -348,6 +348,7 @@
</script> </script>
<form <form
id="tab-interface"
class="flex flex-col h-full justify-between space-y-3 text-sm" class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => { on:submit|preventDefault={() => {
updateInterfaceHandler(); updateInterfaceHandler();

View File

@ -24,6 +24,7 @@
<ManageModal bind:show={showManageModal} /> <ManageModal bind:show={showManageModal} />
<form <form
id="tab-personalization"
class="flex flex-col h-full justify-between space-y-3 text-sm" class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => { on:submit|preventDefault={() => {
dispatch('save'); dispatch('save');

View File

@ -42,6 +42,7 @@
<AddServerModal bind:show={showConnectionModal} onSubmit={addConnectionHandler} direct /> <AddServerModal bind:show={showConnectionModal} onSubmit={addConnectionHandler} direct />
<form <form
id="tab-tools"
class="flex flex-col h-full justify-between text-sm" class="flex flex-col h-full justify-between text-sm"
on:submit|preventDefault={() => { on:submit|preventDefault={() => {
updateHandler(); updateHandler();

View File

@ -580,6 +580,7 @@
{#if tabId === 'general'} {#if tabId === 'general'}
<button <button
role="tab" role="tab"
aria-controls="tab-general"
aria-selected={selectedTab === 'general'} aria-selected={selectedTab === 'general'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -614,6 +615,7 @@
{:else if tabId === 'interface'} {:else if tabId === 'interface'}
<button <button
role="tab" role="tab"
aria-controls="tab-interface"
aria-selected={selectedTab === 'interface'} aria-selected={selectedTab === 'interface'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -649,6 +651,7 @@
{#if $user?.role === 'admin' || ($user?.role === 'user' && $config?.features?.enable_direct_connections)} {#if $user?.role === 'admin' || ($user?.role === 'user' && $config?.features?.enable_direct_connections)}
<button <button
role="tab" role="tab"
aria-controls="tab-connections"
aria-selected={selectedTab === 'connections'} aria-selected={selectedTab === 'connections'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -683,6 +686,7 @@
{#if $user?.role === 'admin' || ($user?.role === 'user' && $user?.permissions?.features?.direct_tool_servers)} {#if $user?.role === 'admin' || ($user?.role === 'user' && $user?.permissions?.features?.direct_tool_servers)}
<button <button
role="tab" role="tab"
aria-controls="tab-tools"
aria-selected={selectedTab === 'tools'} aria-selected={selectedTab === 'tools'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -718,6 +722,7 @@
{:else if tabId === 'personalization'} {:else if tabId === 'personalization'}
<button <button
role="tab" role="tab"
aria-controls="tab-personalization"
aria-selected={selectedTab === 'personalization'} aria-selected={selectedTab === 'personalization'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -741,6 +746,7 @@
{:else if tabId === 'audio'} {:else if tabId === 'audio'}
<button <button
role="tab" role="tab"
aria-controls="tab-audio"
aria-selected={selectedTab === 'audio'} aria-selected={selectedTab === 'audio'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -776,6 +782,7 @@
{:else if tabId === 'chats'} {:else if tabId === 'chats'}
<button <button
role="tab" role="tab"
aria-controls="tab-chats"
aria-selected={selectedTab === 'chats'} aria-selected={selectedTab === 'chats'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -810,6 +817,7 @@
{:else if tabId === 'account'} {:else if tabId === 'account'}
<button <button
role="tab" role="tab"
aria-controls="tab-account"
aria-selected={selectedTab === 'account'} aria-selected={selectedTab === 'account'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${
@ -844,6 +852,7 @@
{:else if tabId === 'about'} {:else if tabId === 'about'}
<button <button
role="tab" role="tab"
aria-controls="tab-about"
aria-selected={selectedTab === 'about'} aria-selected={selectedTab === 'about'}
class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition class={`px-0.5 py-1 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition
${ ${