|
212 | 212 | }} |
213 | 213 | /> |
214 | 214 |
|
215 | | -<Popup show={showPopup}> |
216 | | - <button class="mr-2 my-1 float-right text-xl text-neutral-300" on:click={() => showPopup = false}>✕</button> |
| 215 | +<Popup show={showPopup} label="Manage plugins"> |
| 216 | + <button class="mr-2 my-1 float-right text-xl text-neutral-300" on:click={() => showPopup = false} aria-label="Close">✕</button> |
217 | 217 | <h2 class="m-2 font-semibold text-xl text-neutral-300">Manage plugins</h2> |
218 | 218 |
|
219 | 219 | <h2 class="mx-2 mt-6 mb-2 text-lg text-neutral-400">Installed plugins</h2> |
|
235 | 235 | if ($settings?.developer) invoke("reload_plugin", { id: plugin.id }); |
236 | 236 | else removePlugin(plugin); |
237 | 237 | }} |
238 | | - secondaryAction={() => { |
239 | | - if (!plugin.registered) invoke("open_log_directory"); |
240 | | - else if (plugin.has_settings_interface) invoke("show_settings_interface", { plugin: plugin.id }); |
241 | | - }} |
| 238 | + actionLabel={$settings?.developer ? "Reload" : "Remove"} |
| 239 | + secondaryAction={!plugin.registered ? () => invoke("open_log_directory") : plugin.has_settings_interface ? () => invoke("show_settings_interface", { plugin: plugin.id }) : undefined} |
| 240 | + secondaryActionLabel={!plugin.registered ? "View logs" : "Settings"} |
242 | 241 | > |
243 | 242 | <svelte:fragment slot="subtitle"> |
244 | 243 | {plugin.version} |
|
295 | 294 | bind:value={query} |
296 | 295 | class="w-full p-2 text-neutral-300" |
297 | 296 | placeholder="Search plugins" |
| 297 | + aria-label="Search plugins" |
298 | 298 | type="search" |
299 | 299 | spellcheck="false" |
300 | 300 | /> |
|
315 | 315 | subtitle={plugin.author} |
316 | 316 | hidden={!plugin.name.toLowerCase().includes(query.toLowerCase())} |
317 | 317 | action={() => openDetailsView = id} |
| 318 | + actionLabel="View details" |
318 | 319 | > |
319 | 320 | <ArrowSquareOut size="24" class="text-neutral-400" /> |
320 | 321 | </ListedPlugin> |
|
347 | 348 | subtitle={plugin.author} |
348 | 349 | hidden={!plugin.name.toLowerCase().includes(query.toLowerCase())} |
349 | 350 | action={() => installPluginElgato(plugin)} |
| 351 | + actionLabel="Install" |
350 | 352 | > |
351 | 353 | <CloudArrowDown size="24" class="text-neutral-400" /> |
352 | 354 | </ListedPlugin> |
|
372 | 374 | download_url: undefined, |
373 | 375 | }); |
374 | 376 | }} |
| 377 | + actionLabel="Install" |
375 | 378 | secondaryAction={() => window.open("https://tacto.live")} |
| 379 | + secondaryActionLabel="Visit website" |
376 | 380 | > |
377 | 381 | <svelte:fragment slot="secondary"> |
378 | 382 | <ArrowSquareOut size="24" class="text-neutral-400" /> |
|
400 | 404 | <div class="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 mt-2 p-2 w-96 text-xs text-neutral-300 bg-neutral-700 border border-neutral-600 rounded-lg z-40"> |
401 | 405 | <h3 class="mb-2 font-semibold text-lg text-center">Choose a release asset</h3> |
402 | 406 | <div class="select-wrapper"> |
403 | | - <select class="w-full bg-neutral-800!" bind:value={choice}> |
| 407 | + <select class="w-full bg-neutral-800!" bind:value={choice} aria-label="Release asset"> |
404 | 408 | {#each choices as choice, i} |
405 | 409 | <option value={i}>{choice.name}</option> |
406 | 410 | {/each} |
|
0 commit comments