Fixed #557 and other accessibility issues

This commit is contained in:
Will Browning 2023-11-22 16:31:26 +00:00
parent ad84ddea3f
commit d2030a2dcf
33 changed files with 407 additions and 416 deletions

View File

@ -468,7 +468,7 @@ For full details please see the [self-hosting instructions file](SELF-HOSTING.md
## My sponsors
Thanks to [Vlad Timofeev](https://github.com/vlad-timofeev), [Patrick Dobler](https://github.com/patrickdobler), [Luca Steeb](https://github.com/steebchen), [Laiteux](https://github.com/Laiteux), [narolinus](https://github.com/narolinus),[Limon Monte](https://github.com/limonte) and [Lukas](https://github.com/lunibo) for supporting me by sponsoring the project on GitHub!
Thanks to [Vlad Timofeev](https://github.com/vlad-timofeev), [Patrick Dobler](https://github.com/patrickdobler), [Luca Steeb](https://github.com/steebchen), [Laiteux](https://github.com/Laiteux), [narolinus](https://github.com/narolinus) and [Lukas](https://github.com/lunibo) for supporting me by sponsoring the project on GitHub!
Also an extra special thanks to [CrazyMax](https://github.com/crazy-max) for sponsoring me and also creating and maintaining the awesome [addy.io Docker image](https://github.com/anonaddy/docker)!

10
composer.lock generated
View File

@ -1961,16 +1961,16 @@
},
{
"name": "laravel/framework",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "b30e44f20d244f7ba125283e14a8bbac167f4e5b"
"reference": "4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/b30e44f20d244f7ba125283e14a8bbac167f4e5b",
"reference": "b30e44f20d244f7ba125283e14a8bbac167f4e5b",
"url": "https://api.github.com/repos/laravel/framework/zipball/4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8",
"reference": "4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8",
"shasum": ""
},
"require": {
@ -2159,7 +2159,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2023-11-14T22:57:08+00:00"
"time": "2023-11-21T14:49:31+00:00"
},
{
"name": "laravel/prompts",

30
package-lock.json generated
View File

@ -52,9 +52,9 @@
}
},
"node_modules/@babel/parser": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz",
"integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==",
"version": "7.23.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz",
"integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==",
"bin": {
"parser": "bin/babel-parser.js"
},
@ -63,9 +63,9 @@
}
},
"node_modules/@babel/runtime": {
"version": "7.23.2",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
"integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
"version": "7.23.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz",
"integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@ -619,9 +619,9 @@
"peer": true
},
"node_modules/@types/node": {
"version": "20.9.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.2.tgz",
"integrity": "sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==",
"version": "20.9.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz",
"integrity": "sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==",
"peer": true,
"dependencies": {
"undici-types": "~5.26.4"
@ -1175,9 +1175,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001563",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz",
"integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==",
"version": "1.0.30001564",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz",
"integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==",
"funding": [
{
"type": "opencollective",
@ -1505,9 +1505,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.588",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz",
"integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w=="
"version": "1.4.590",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.590.tgz",
"integrity": "sha512-hohItzsQcG7/FBsviCYMtQwUSWvVF7NVqPOnJCErWsAshsP/CR2LAXdmq276RbESNdhxiAq5/vRo1g2pxGXVww=="
},
"node_modules/emoji-regex": {
"version": "9.2.2",

38
postfix/composer.lock generated
View File

@ -216,16 +216,16 @@
},
{
"name": "illuminate/collections",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/collections.git",
"reference": "9ce1745e9701d5f801de27ab6d2542dac42334cd"
"reference": "766a3b6c3e5c8011b037a147266dcf7f93b21223"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/collections/zipball/9ce1745e9701d5f801de27ab6d2542dac42334cd",
"reference": "9ce1745e9701d5f801de27ab6d2542dac42334cd",
"url": "https://api.github.com/repos/illuminate/collections/zipball/766a3b6c3e5c8011b037a147266dcf7f93b21223",
"reference": "766a3b6c3e5c8011b037a147266dcf7f93b21223",
"shasum": ""
},
"require": {
@ -267,11 +267,11 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2023-11-13T16:41:37+00:00"
"time": "2023-11-20T15:45:45+00:00"
},
{
"name": "illuminate/conditionable",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/conditionable.git",
@ -317,7 +317,7 @@
},
{
"name": "illuminate/container",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/container.git",
@ -368,7 +368,7 @@
},
{
"name": "illuminate/contracts",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/contracts.git",
@ -416,16 +416,16 @@
},
{
"name": "illuminate/database",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/database.git",
"reference": "0c7819430a1805cd1646ac523d50abe86b6d8687"
"reference": "8cebe8112d612a9ce8025a1bce22ca5cc5c1308f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/database/zipball/0c7819430a1805cd1646ac523d50abe86b6d8687",
"reference": "0c7819430a1805cd1646ac523d50abe86b6d8687",
"url": "https://api.github.com/repos/illuminate/database/zipball/8cebe8112d612a9ce8025a1bce22ca5cc5c1308f",
"reference": "8cebe8112d612a9ce8025a1bce22ca5cc5c1308f",
"shasum": ""
},
"require": {
@ -481,11 +481,11 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2023-11-13T16:39:12+00:00"
"time": "2023-11-15T19:02:12+00:00"
},
{
"name": "illuminate/macroable",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/macroable.git",
@ -531,16 +531,16 @@
},
{
"name": "illuminate/support",
"version": "v10.32.1",
"version": "v10.33.0",
"source": {
"type": "git",
"url": "https://github.com/illuminate/support.git",
"reference": "e1d8f5fabcee9623b5d6eb4de78f0120522fd1b5"
"reference": "f414b40d6149d6a4954f0abceacd1af2edf2d596"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/support/zipball/e1d8f5fabcee9623b5d6eb4de78f0120522fd1b5",
"reference": "e1d8f5fabcee9623b5d6eb4de78f0120522fd1b5",
"url": "https://api.github.com/repos/illuminate/support/zipball/f414b40d6149d6a4954f0abceacd1af2edf2d596",
"reference": "f414b40d6149d6a4954f0abceacd1af2edf2d596",
"shasum": ""
},
"require": {
@ -598,7 +598,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2023-11-08T18:14:03+00:00"
"time": "2023-11-20T20:29:51+00:00"
},
{
"name": "nesbot/carbon",

View File

@ -336,12 +336,9 @@ table.vgt-table tr.clickable:hover {
@apply p-3 align-middle relative;
}
.vgt-table th.sortable button {
@apply absolute appearance-none border-none top-0 left-0 w-full h-full;
@apply absolute appearance-none border-none top-0 left-0 w-full h-full focus-visible:outline-indigo-600;
background: 0 0;
}
.vgt-table th.sortable button:focus {
outline: 0;
}
.vgt-table th.sortable button:after {
@apply absolute h-0 w-0;
content: '';

View File

@ -303,10 +303,11 @@
</svg>
</template>
<script>
export default {
props: {
name: String,
<script setup>
defineProps({
name: {
type: String,
required: true,
},
}
})
</script>

View File

@ -48,17 +48,8 @@
</TransitionRoot>
</template>
<script>
<script setup>
import { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue'
export default {
props: ['open', 'maxWidth'],
components: {
Dialog,
DialogPanel,
DialogTitle,
TransitionChild,
TransitionRoot,
},
}
defineProps(['open', 'maxWidth'])
</script>

View File

@ -1,9 +1,10 @@
<template>
<Switch
@click="toggle"
@keyup.space="toggle"
:class="[
modelValue ? 'bg-cyan-500' : 'bg-grey-300',
'relative inline-flex flex-shrink-0 h-6 w-11 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none',
'relative inline-flex flex-shrink-0 h-6 w-11 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600',
]"
>
<span class="sr-only">Use setting</span>
@ -47,19 +48,16 @@
</Switch>
</template>
<script>
<script setup>
import { ref } from 'vue'
import { Switch } from '@headlessui/vue'
export default {
props: ['modelValue'],
components: {
Switch,
},
methods: {
toggle() {
this.$emit('update:modelValue', !this.modelValue)
this.modelValue ? this.$emit('off') : this.$emit('on')
},
},
const emit = defineEmits(['update:modelValue', 'on', 'off'])
const props = defineProps(['modelValue'])
const toggle = () => {
emit('update:modelValue', !props.modelValue)
props.modelValue ? emit('off') : emit('on')
}
</script>

View File

@ -190,7 +190,7 @@
placeholder="Search"
type="search"
/>
<div
<button
v-if="search"
@click="
;(searchForm.search = ''),
@ -201,10 +201,10 @@
},
)
"
class="cursor-pointer absolute inset-y-0 right-0 flex items-center pr-3"
class="absolute inset-y-0 right-0 flex items-center pr-3 rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
<XMarkIcon class="h-5 w-5 text-grey-400" aria-hidden="true" />
</div>
</button>
</div>
</form>
<Listbox as="div" v-model="searchTypeSelected">
@ -222,7 +222,7 @@
</p>
</div>
<ListboxButton
class="relative inline-flex items-center bg-indigo-500 p-2 rounded-l-none rounded-r-md text-sm font-medium text-white hover:bg-indigo-600 focus:outline-none focus:z-10"
class="relative inline-flex items-center bg-indigo-500 p-2 rounded-l-none rounded-r-md text-sm font-medium text-white hover:bg-indigo-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 focus:z-10"
style="height: 39px"
>
<span class="sr-only">Change published status</span>
@ -279,7 +279,9 @@
<!-- Profile dropdown -->
<Menu as="div" class="relative flex-shrink-0" role="menu">
<div>
<MenuButton class="bg-white rounded-full flex text-base focus:outline-none">
<MenuButton
class="bg-white rounded-sm flex text-base focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
<span class="sr-only">Open user menu</span>
<span id="dropdown-username" class="ml-2 md:ml-0 font-medium">{{
$page.props.user.username

View File

@ -96,7 +96,7 @@
<button
@click="editFromName"
:disabled="alias.fromNameLoading"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Alias From Name
<loader v-if="alias.fromNameLoading" />

View File

@ -13,18 +13,19 @@
? 'found for your search or filters'
: 'in your account'
}}
<InformationCircleIcon
@click="moreInfoOpen = !moreInfoOpen"
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
<button @click="moreInfoOpen = !moreInfoOpen">
<InformationCircleIcon
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
</button>
</p>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none flex items-center">
<button
type="button"
@click="createAliasModalOpen = true"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus:outline-none sm:w-auto"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 sm:w-auto"
>
Create Alias
</button>
@ -41,7 +42,7 @@
<div class="relative">
<div>
<ListboxButton
class="inline-flex items-center text-sm text-grey-700 hover:text-grey-900 focus:outline-none"
class="inline-flex items-center text-sm text-grey-700 hover:text-grey-900 rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
<span class="sr-only">Change display</span>
<ListboxLabel class="cursor-pointer">Display</ListboxLabel>
@ -115,7 +116,7 @@
<div class="relative">
<div>
<ListboxButton
class="inline-flex items-center text-sm text-grey-700 hover:text-grey-900 focus:outline-none"
class="inline-flex items-center text-sm text-grey-700 hover:text-grey-900 rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
<span class="sr-only">Change sort by</span>
<ListboxLabel class="cursor-pointer">Sort By</ListboxLabel>
@ -327,11 +328,12 @@
</span>
</span>
<span v-else-if="props.column.field == 'email'" class="block">
<span
class="text-grey-400 tooltip cursor-pointer outline-none"
<button
class="text-grey-400 tooltip outline-none"
data-tippy-content="Click to copy"
@click="clipboard(getAliasEmail(rows[props.row.originalIndex]))"
><span class="font-semibold text-indigo-800">{{
>
<span class="font-semibold text-indigo-800">{{
$filters.truncate(getAliasLocalPart(props.row), 60)
}}</span
><span
@ -344,14 +346,14 @@
)
}}</span
>
</span>
</button>
<div v-if="aliasIdToEdit === props.row.id" class="flex items-center">
<input
@keyup.enter="editAliasDescription(rows[props.row.originalIndex])"
@keyup.esc="aliasIdToEdit = aliasDescriptionToEdit = ''"
v-model="aliasDescriptionToEdit"
type="text"
class="grow text-sm appearance-none bg-grey-50 border text-grey-700 focus:outline-none rounded px-2 py-1"
class="grow text-sm appearance-none bg-grey-50 border text-grey-700 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 px-2 py-1"
:class="
aliasDescriptionToEdit.length > 200 ? 'border-red-500' : 'border-transparent'
"
@ -359,36 +361,35 @@
tabindex="0"
autofocus
/>
<icon
name="close"
class="inline-block w-6 h-6 text-red-300 fill-current cursor-pointer"
@click="aliasIdToEdit = aliasDescriptionToEdit = ''"
/>
<icon
name="save"
class="inline-block w-6 h-6 text-cyan-500 fill-current cursor-pointer"
@click="editAliasDescription(rows[props.row.originalIndex])"
/>
<button @click="aliasIdToEdit = aliasDescriptionToEdit = ''">
<icon name="close" class="inline-block w-6 h-6 text-red-300 fill-current" />
</button>
<button @click="editAliasDescription(rows[props.row.originalIndex])">
<icon name="save" class="inline-block w-6 h-6 text-cyan-500 fill-current" />
</button>
</div>
<div v-else-if="props.row.description" class="flex items-center">
<span class="inline-block text-grey-400 text-sm py-1 border border-transparent">
<span
class="inline-block text-grey-400 text-sm py-1 border border-transparent mr-2"
>
{{ $filters.truncate(props.row.description, 60) }}
</span>
<icon
name="edit"
class="inline-block w-6 h-6 ml-2 text-grey-300 fill-current cursor-pointer"
<button
@click="
;(aliasIdToEdit = props.row.id),
(aliasDescriptionToEdit = props.row.description)
"
/>
>
<icon name="edit" class="inline-block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
<div v-else>
<span
class="inline-block text-grey-300 text-sm cursor-pointer py-1 border border-transparent"
<button
class="inline-block text-grey-300 text-sm py-1 border border-transparent"
@click=";(aliasIdToEdit = props.row.id), (aliasDescriptionToEdit = '')"
>Add description</span
>
Add description
</button>
</div>
</span>
<span
@ -421,11 +422,9 @@
:data-tippy-content="$page.props.user.email"
>default</span
>
<icon
name="edit"
class="ml-2 inline-block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click="openAliasRecipientsModal(props.row)"
/>
<button @click="openAliasRecipientsModal(props.row)" class="ml-2">
<icon name="edit" class="inline-block w-6 h-6 text-grey-300 fill-current" />
</button>
</span>
<span
v-else-if="props.column.field == 'emails_forwarded'"
@ -462,14 +461,14 @@
class="text-indigo-500 hover:text-indigo-800 font-medium"
>Edit<span class="sr-only">, {{ props.row.email }}</span></Link
>
<span
<button
@click="openSendFromModal(props.row)"
class="group cursor-pointer flex items-center text-indigo-500 hover:text-indigo-800 font-medium ml-4 tooltip"
class="group flex items-center text-indigo-500 hover:text-indigo-800 font-medium ml-4 tooltip"
data-tippy-content="Send an email from this alias"
>
Send
<EnvelopeIcon class="ml-1 h-4 w-4" aria-hidden="true" />
</span>
</button>
</span>
</template>
</vue-good-table>
@ -816,7 +815,7 @@
<div class="mt-6 flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="createNewAlias"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="createAliasLoading"
>
Create Alias
@ -824,7 +823,7 @@
</button>
<button
@click="createAliasModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -859,7 +858,7 @@
<button
type="button"
@click="editAliasRecipients()"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="editAliasRecipientsLoading"
>
Update Recipients
@ -867,7 +866,7 @@
</button>
<button
@click="closeAliasRecipientsModal()"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -902,7 +901,7 @@
<button
type="button"
@click="bulkEditAliasRecipients()"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="bulkEditAliasRecipientsLoading"
>
Update Recipients
@ -910,7 +909,7 @@
</button>
<button
@click="closeBulkAliasRecipientsModal()"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -929,7 +928,7 @@
<button
type="button"
@click="restoreAlias(aliasIdToRestore)"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="restoreAliasLoading"
>
Restore alias
@ -937,7 +936,7 @@
</button>
<button
@click="closeRestoreModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -957,7 +956,7 @@
<button
type="button"
@click="bulkRestoreAlias()"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="bulkRestoreAliasLoading"
>
Restore aliases
@ -965,7 +964,7 @@
</button>
<button
@click="bulkRestoreAliasModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -986,7 +985,7 @@
<button
type="button"
@click="deleteAlias(aliasToDelete.id)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteAliasLoading"
>
Delete alias
@ -994,7 +993,7 @@
</button>
<button
@click="closeDeleteModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -1014,7 +1013,7 @@
<button
type="button"
@click="bulkDeleteAlias()"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="bulkDeleteAliasLoading"
>
Delete aliases
@ -1022,7 +1021,7 @@
</button>
<button
@click="bulkDeleteAliasModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -1046,7 +1045,7 @@
<button
type="button"
@click="forgetAlias(aliasToForget.id)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="forgetAliasLoading"
>
Forget alias
@ -1054,7 +1053,7 @@
</button>
<button
@click="closeForgetModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -1079,7 +1078,7 @@
<button
type="button"
@click="bulkForgetAlias()"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="bulkForgetAliasLoading"
>
Forget aliases
@ -1087,7 +1086,7 @@
</button>
<button
@click="bulkForgetAliasModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -1188,7 +1187,7 @@
<button
type="button"
@click="displaySendFromAddress(aliasToSendFrom)"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="sendFromAliasLoading"
>
Show address
@ -1196,7 +1195,7 @@
</button>
<button
@click="closeSendFromModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>
@ -1225,7 +1224,7 @@
<div class="mt-6 flex flex-col sm:flex-row">
<button
@click="moreInfoOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -158,7 +158,7 @@
<button
@click="editFromName"
:disabled="domain.fromNameLoading"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update From Name
<loader v-if="domain.fromNameLoading" />

View File

@ -8,18 +8,19 @@
<h1 class="text-2xl font-semibold text-grey-900">Domains</h1>
<p class="mt-2 text-sm text-grey-700">
A list of all the domains {{ search ? 'found for your search' : 'in your account' }}
<InformationCircleIcon
@click="moreInfoOpen = !moreInfoOpen"
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
<button @click="moreInfoOpen = !moreInfoOpen">
<InformationCircleIcon
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
</button>
</p>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<button
type="button"
@click="openAddDomainModal"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus:outline-none sm:w-auto"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 sm:w-auto"
>
Add Domain
</button>
@ -45,12 +46,13 @@
>{{ $filters.timeAgo(props.row.created_at) }}
</span>
<span v-else-if="props.column.field == 'domain'">
<span
<button
class="tooltip cursor-pointer outline-none font-medium text-grey-700"
data-tippy-content="Click to copy"
@click="clipboard(rows[props.row.originalIndex].domain)"
>{{ $filters.truncate(props.row.domain, 30) }}</span
>
{{ $filters.truncate(props.row.domain, 30) }}
</button>
</span>
<span v-else-if="props.column.field == 'description'">
<div v-if="domainIdToEdit === props.row.id" class="flex items-center">
@ -67,58 +69,48 @@
tabindex="0"
autofocus
/>
<icon
name="close"
class="inline-block w-6 h-6 text-red-300 fill-current cursor-pointer"
@click="domainIdToEdit = domainDescriptionToEdit = ''"
/>
<icon
name="save"
class="inline-block w-6 h-6 text-cyan-500 fill-current cursor-pointer"
@click="editDomain(rows[props.row.originalIndex])"
/>
<button @click="domainIdToEdit = domainDescriptionToEdit = ''">
<icon name="close" class="inline-block w-6 h-6 text-red-300 fill-current" />
</button>
<button @click="editDomain(rows[props.row.originalIndex])">
<icon name="save" class="inline-block w-6 h-6 text-cyan-500 fill-current" />
</button>
</div>
<div v-else-if="props.row.description" class="flex items-centers">
<span class="outline-none text-grey-500">{{
<span class="outline-none text-grey-500 mr-2">{{
$filters.truncate(props.row.description, 60)
}}</span>
<icon
name="edit"
class="inline-block w-6 h-6 text-grey-300 fill-current cursor-pointer ml-2"
<button
@click="
;(domainIdToEdit = props.row.id), (domainDescriptionToEdit = props.row.description)
"
/>
>
<icon name="edit" class="inline-block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
<div v-else class="flex justify-center">
<icon
name="plus"
class="block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click=";(domainIdToEdit = props.row.id), (domainDescriptionToEdit = '')"
/>
<button @click=";(domainIdToEdit = props.row.id), (domainDescriptionToEdit = '')">
<icon name="plus" class="block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
</span>
<span v-else-if="props.column.field === 'default_recipient'">
<div v-if="props.row.default_recipient">
<span
class="tooltip cursor-pointer font-medium text-grey-500"
class="tooltip cursor-pointer font-medium text-grey-500 mr-2"
data-tippy-content="Click to copy"
@click="clipboard(rows[props.row.originalIndex].default_recipient.email)"
>
{{ $filters.truncate(props.row.default_recipient.email, 30) }}
</span>
<icon
name="edit"
class="ml-2 inline-block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click="openDomainDefaultRecipientModal(props.row)"
/>
<button @click="openDomainDefaultRecipientModal(props.row)">
<icon name="edit" class="inline-block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
<div class="flex justify-center" v-else>
<icon
name="plus"
class="block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click="openDomainDefaultRecipientModal(props.row)"
/>
<button @click="openDomainDefaultRecipientModal(props.row)">
<icon name="plus" class="block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
</span>
<span v-else-if="props.column.field === 'aliases_count'">
@ -152,7 +144,7 @@
<div v-if="props.row.domain_sending_verified_at || props.row.domain_mx_validated_at">
<svg
v-if="props.row.domain_sending_verified_at && props.row.domain_mx_validated_at"
class="h-5 w-5 inline-block tooltip"
class="h-5 w-5 inline-block tooltip focus:outline-none"
data-tippy-content="Domain fully verified"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
@ -172,7 +164,7 @@
v-else-if="!props.row.domain_mx_validated_at"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
class="h-5 w-5 inline-block tooltip"
class="h-5 w-5 inline-block tooltip focus:outline-none"
data-tippy-content="MX records invalid"
>
<g fill="none" fill-rule="evenodd">
@ -197,7 +189,7 @@
v-else
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
class="h-5 w-5 inline-block tooltip"
class="h-5 w-5 inline-block tooltip focus:outline-none"
data-tippy-content="DNS records for sending invalid"
>
<g fill="none" fill-rule="evenodd">
@ -220,7 +212,7 @@
</svg>
<button
@click="openCheckRecordsModal(rows[props.row.originalIndex])"
class="focus:outline-none text-sm ml-2 text-grey-500"
class="focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 text-sm ml-2 text-grey-500 rounded-sm"
>
Recheck
</button>
@ -228,7 +220,7 @@
<button
v-else
@click="openCheckRecordsModal(rows[props.row.originalIndex])"
class="focus:outline-none text-sm text-grey-500"
class="focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 text-sm text-grey-500 rounded-sm"
>
Check Records
</button>
@ -290,7 +282,7 @@
<template v-if="!domainToCheck" v-slot:content>
<p class="mt-4 mb-2 text-grey-700">
To verify ownership of the domain, please add the following TXT record and then click Add
Domain below.
Domain below. Once you've added the domain you can safely remove this TXT record.
</p>
<div class="table w-full">
<div class="table-row">
@ -301,12 +293,14 @@
<div class="table-row">
<div class="table-cell py-2">TXT</div>
<div class="table-cell p-2">@</div>
<div
class="table-cell py-2 break-all cursor-pointer"
title="Copy"
@click="clipboard(`aa-verify=${aaVerify}`)"
>
aa-verify={{ aaVerify }}
<div class="table-cell py-2">
<button
@click="clipboard(`aa-verify=${aaVerify}`)"
class="break-all focus-visible:outline-indigo-600"
title="Copy"
>
aa-verify={{ aaVerify }}
</button>
</div>
</div>
</div>
@ -324,7 +318,7 @@
/>
<button
@click="validateNewDomain"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
:class="addDomainLoading ? 'cursor-not-allowed' : ''"
:disabled="addDomainLoading"
>
@ -333,7 +327,7 @@
</button>
<button
@click="addDomainModalOpen = false"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -370,69 +364,85 @@
</div>
<div class="table-row">
<div class="table-cell py-2">MX 10</div>
<div class="table-cell py-2 px-4 cursor-pointer" title="Copy" @click="clipboard('@')">
@
<div class="table-cell py-2 px-4">
<button title="Copy" @click="clipboard('@')" class="focus-visible:outline-indigo-600">
@
</button>
</div>
<div
class="table-cell py-2 break-words cursor-pointer"
title="Copy"
@click="clipboard(hostname)"
>
{{ hostname }}.
<div class="table-cell py-2 break-words">
<button
title="Copy"
@click="clipboard(hostname)"
class="focus-visible:outline-indigo-600"
>
{{ hostname }}.
</button>
</div>
</div>
<div class="table-row">
<div class="table-cell py-2">TXT</div>
<div class="table-cell py-2 px-4 cursor-pointer" title="Copy" @click="clipboard('@')">
@
<div class="table-cell py-2 px-4">
<button title="Copy" @click="clipboard('@')" class="focus-visible:outline-indigo-600">
@
</button>
</div>
<div
class="table-cell py-2 break-words cursor-pointer"
title="Copy"
@click="clipboard('v=spf1 mx -all')"
>
v=spf1 mx -all
<div class="table-cell py-2 break-words">
<button
title="Copy"
@click="clipboard('v=spf1 mx -all')"
class="focus-visible:outline-indigo-600"
>
v=spf1 mx -all
</button>
</div>
</div>
<div class="table-row">
<div class="table-cell py-2">CNAME</div>
<div
class="table-cell py-2 px-4 cursor-pointer"
title="Copy"
@click="clipboard(`${dkimSelector}._domainkey`)"
>
{{ dkimSelector }}._domainkey
<div class="table-cell py-2 px-4">
<button
title="Copy"
@click="clipboard(`${dkimSelector}._domainkey`)"
class="focus-visible:outline-indigo-600"
>
{{ dkimSelector }}._domainkey
</button>
</div>
<div
class="table-cell py-2 break-words cursor-pointer"
title="Copy"
@click="clipboard(`${dkimSelector}._domainkey.${domainName}.`)"
>
{{ dkimSelector }}._domainkey.{{ domainName }}.
<div class="table-cell py-2 break-words">
<button
title="Copy"
@click="clipboard(`${dkimSelector}._domainkey.${domainName}.`)"
class="focus-visible:outline-indigo-600"
>
{{ dkimSelector }}._domainkey.{{ domainName }}.
</button>
</div>
</div>
<div class="table-row">
<div class="table-cell py-2">TXT</div>
<div
class="table-cell py-2 px-4 cursor-pointer"
title="Copy"
@click="clipboard('_dmarc')"
>
_dmarc
<div class="table-cell py-2 px-4">
<button
title="Copy"
@click="clipboard('_dmarc')"
class="focus-visible:outline-indigo-600"
>
_dmarc
</button>
</div>
<div
class="table-cell py-2 break-words cursor-pointer"
title="Copy"
@click="clipboard('v=DMARC1; p=quarantine; adkim=s')"
>
v=DMARC1; p=quarantine; adkim=s
<div class="table-cell py-2 break-words">
<button
title="Copy"
@click="clipboard('v=DMARC1; p=quarantine; adkim=s')"
class="focus-visible:outline-indigo-600"
>
v=DMARC1; p=quarantine; adkim=s
</button>
</div>
</div>
</div>
<div class="mt-6">
<button
@click="checkRecords(domainToCheck)"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
:class="checkRecordsLoading ? 'cursor-not-allowed' : ''"
:disabled="checkRecordsLoading"
>
@ -441,7 +451,7 @@
</button>
<button
@click="closeCheckRecordsModal"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -485,7 +495,7 @@
<button
type="button"
@click="editDefaultRecipient()"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="editDefaultRecipientLoading"
>
Update Default Recipient
@ -493,7 +503,7 @@
</button>
<button
@click="closeDomainDefaultRecipientModal()"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -513,7 +523,7 @@
<button
type="button"
@click="deleteDomain(domainIdToDelete)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteDomainLoading"
>
Delete domain
@ -521,7 +531,7 @@
</button>
<button
@click="closeDeleteModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -561,7 +571,7 @@
<div class="mt-6 flex flex-col sm:flex-row">
<button
@click="moreInfoOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -9,11 +9,12 @@
<p class="mt-2 text-sm text-grey-700">
A list of all the failed deliveries
{{ search ? 'found for your search' : 'in your account' }}
<InformationCircleIcon
@click="moreInfoOpen = !moreInfoOpen"
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
<button @click="moreInfoOpen = !moreInfoOpen">
<InformationCircleIcon
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
</button>
</p>
</div>
</div>
@ -149,7 +150,7 @@
<button
type="button"
@click="deleteFailedDelivery(failedDeliveryIdToDelete)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteFailedDeliveryLoading"
>
Delete failed delivery
@ -157,7 +158,7 @@
</button>
<button
@click="closeDeleteModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -185,7 +186,7 @@
<div class="mt-6 flex flex-col sm:flex-row">
<button
@click="moreInfoOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -8,18 +8,19 @@
<h1 class="text-2xl font-semibold text-grey-900">Recipients</h1>
<p class="mt-2 text-sm text-grey-700">
A list of all the recipients {{ search ? 'found for your search' : 'in your account' }}
<InformationCircleIcon
@click="moreInfoOpen = !moreInfoOpen"
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
<button @click="moreInfoOpen = !moreInfoOpen">
<InformationCircleIcon
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
</button>
</p>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<button
type="button"
@click="openAddRecipientModal"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus:outline-none sm:w-auto"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 sm:w-auto"
>
Add Recipient
</button>
@ -71,12 +72,13 @@
{{ props.row.key }}
</span>
<span v-else-if="props.column.field == 'email'">
<span
class="tooltip cursor-pointer outline-none font-medium text-grey-700"
<button
class="tooltip outline-none font-medium text-grey-700"
data-tippy-content="Click to copy"
@click="clipboard(rows[props.row.originalIndex].email)"
>{{ $filters.truncate(props.row.email, 30) }}</span
>
{{ $filters.truncate(props.row.email, 30) }}
</button>
<span
v-if="isDefault(props.row.id)"
@ -86,9 +88,7 @@
>
<span v-else-if="props.row.email_verified_at" class="block text-grey-400 text-sm py-1">
<span @click="openMakeDefaultModal(props.row)" class="cursor-pointer">
Make Default
</span>
<button @click="openMakeDefaultModal(props.row)">Make Default</button>
</span>
</span>
<span v-else-if="props.column.field === 'aliases'">
@ -125,23 +125,25 @@
@on="turnOnEncryption(props.row.id)"
@off="turnOffEncryption(props.row.id)"
/>
<icon
name="fingerprint"
class="tooltip outline-none cursor-pointer block w-6 h-6 text-grey-300 fill-current mx-2"
:data-tippy-content="props.row.fingerprint"
<button
@click="clipboard(props.row.fingerprint)"
/>
<icon
name="delete"
class="tooltip outline-none cursor-pointer block w-6 h-6 text-grey-300 fill-current"
class="tooltip"
:data-tippy-content="props.row.fingerprint"
>
<icon name="fingerprint" class="block w-6 h-6 text-grey-300 fill-current mx-2" />
</button>
<button
@click="openDeleteRecipientKeyModal(props.row)"
class="tooltip"
data-tippy-content="Remove public key"
/>
>
<icon name="delete" class="block w-6 h-6 text-grey-300 fill-current" />
</button>
</span>
<button
v-else
@click="openRecipientKeyModal(props.row)"
class="focus:outline-none text-sm text-grey-500"
class="text-sm text-grey-500 rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Add PGP key
</button>
@ -160,7 +162,7 @@
<button
v-else
@click="resendVerification(props.row.id)"
class="focus:outline-none text-sm disabled:cursor-not-allowed"
class="text-sm disabled:cursor-not-allowed rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
:disabled="resendVerificationLoading"
>
Resend email
@ -228,7 +230,7 @@
<div class="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="validateNewRecipient"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="addRecipientLoading"
>
Add Recipient
@ -236,7 +238,7 @@
</button>
<button
@click="addRecipientModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -277,7 +279,7 @@
<button
type="button"
@click="validateRecipientKey"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="addRecipientKeyLoading"
>
Add Key
@ -285,7 +287,7 @@
</button>
<button
@click="closeRecipientKeyModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -305,7 +307,7 @@
<button
type="button"
@click="deleteRecipientKey(recipientKeyToDelete)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteRecipientKeyLoading"
>
Remove public key
@ -313,7 +315,7 @@
</button>
<button
@click="closeDeleteRecipientKeyModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -329,7 +331,7 @@
<button
type="button"
@click="deleteRecipient(recipientToDelete)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteRecipientLoading"
>
Delete recipient
@ -337,7 +339,7 @@
</button>
<button
@click="closeDeleteModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -358,7 +360,7 @@
<button
type="button"
@click="makeDefaultRecipient(recipientToMakeDefault)"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="makeDefaultLoading"
>
Make default recipient
@ -366,7 +368,7 @@
</button>
<button
@click="closeMakeDefaultModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -392,7 +394,7 @@
<div class="mt-6 flex flex-col sm:flex-row">
<button
@click="moreInfoOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -10,18 +10,19 @@
<h1 class="text-2xl font-semibold text-grey-900">Rules</h1>
<p class="mt-2 text-sm text-grey-700">
A list of all the rules {{ search ? 'found for your search' : 'in your account' }}
<InformationCircleIcon
@click="moreInfoOpen = !moreInfoOpen"
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
<button @click="moreInfoOpen = !moreInfoOpen">
<InformationCircleIcon
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
</button>
</p>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<button
type="button"
@click="openCreateModal"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus:outline-none sm:w-auto"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 sm:w-auto"
>
Create Rule
</button>
@ -260,7 +261,7 @@
<!-- add condition button -->
<button
@click="addCondition(createRuleObject)"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Add condition
</button>
@ -358,7 +359,7 @@
<!-- add action button -->
<button
@click="addAction(createRuleObject)"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Add action
</button>
@ -407,7 +408,7 @@
<div class="mt-6 flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="createNewRule"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="createRuleLoading"
>
Create Rule
@ -415,7 +416,7 @@
</button>
<button
@click="createRuleModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -565,7 +566,7 @@
<!-- add condition button -->
<button
@click="addCondition(editRuleObject)"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Add condition
</button>
@ -663,7 +664,7 @@
<!-- add action button -->
<button
@click="addAction(editRuleObject)"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="mt-4 p-2 text-grey-800 bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Add action
</button>
@ -712,7 +713,7 @@
<div class="mt-6 flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="editRule"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="editRuleLoading"
>
Save
@ -720,7 +721,7 @@
</button>
<button
@click="closeEditModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -736,7 +737,7 @@
<button
type="button"
@click="deleteRule(ruleIdToDelete)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteRuleLoading"
>
Delete rule
@ -744,7 +745,7 @@
</button>
<button
@click="closeDeleteModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -769,7 +770,7 @@
<div class="mt-6 flex flex-col">
<button
@click="moreInfoOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -67,7 +67,7 @@
<button
type="submit"
class="text-white font-bold bg-red-500 hover:bg-red-600 w-full py-3 px-4 rounded focus:outline-none"
class="text-white font-bold bg-red-500 hover:bg-red-600 w-full py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Delete Account
</button>
@ -87,7 +87,7 @@
<button
type="button"
@click="submitDeleteAccountForm"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteAccountForm.processing"
>
Delete Account
@ -95,7 +95,7 @@
</button>
<button
@click="deleteAccountModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>

View File

@ -38,7 +38,7 @@
<div class="mt-4">
<button
@click="openCreateTokenModal"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Create New API Key
</button>
@ -82,12 +82,12 @@
</div>
<div v-else class="table-cell p-1 md:p-4">Does not expire</div>
<div class="table-cell p-1 md:p-4 text-right">
<a
class="text-red-500 font-bold cursor-pointer focus:outline-none"
<button
class="text-red-500 font-bold cursor-pointer rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@click="showRevokeModal(token)"
>
Delete
</a>
</button>
</div>
</div>
</div>
@ -165,7 +165,7 @@
/>
<button
@click="store"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
:class="loading ? 'cursor-not-allowed' : ''"
:disabled="loading"
>
@ -174,7 +174,7 @@
</button>
<button
@click="closeCreateTokenModal"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>
@ -202,14 +202,14 @@
</div>
<div class="mt-6">
<button
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@click="clipboard(accessToken)"
>
Copy To Clipboard
</button>
<button
@click="closeCreateTokenModal"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>
@ -228,7 +228,7 @@
<div class="mt-6">
<button
@click="revoke"
class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded focus:outline-none"
class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
:class="revokeTokenLoading ? 'cursor-not-allowed' : ''"
:disabled="revokeTokenLoading"
>
@ -237,7 +237,7 @@
</button>
<button
@click="closeRevokeTokenModal"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -59,14 +59,14 @@
<div class="mt-4">
<div
v-if="!domainsCount"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none cursor-not-allowed"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 cursor-not-allowed"
>
You don't have any custom domains
</div>
<button
v-else
type="submit"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Import Alias Data
</button>
@ -98,13 +98,13 @@
:href="route('aliases.export')"
:class="!totalAliasesCount ? 'cursor-not-allowed' : ''"
:disabled="!totalAliasesCount"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Export Alias Data
</a>
<div
v-else
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none cursor-not-allowed"
class="bg-cyan-400 block w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 cursor-not-allowed"
>
Export Alias Data
</div>

View File

@ -121,7 +121,7 @@
<button
type="submit"
:disabled="emailForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Email
<loader v-if="emailForm.processing" />
@ -201,7 +201,7 @@
<button
type="submit"
:disabled="defaultAliasDomainForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Default Alias Domain
<loader v-if="defaultAliasDomainForm.processing" />
@ -298,7 +298,7 @@
<button
type="submit"
:disabled="defaultAliasFormatForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Default Alias Format
<loader v-if="defaultAliasFormatForm.processing" />
@ -378,7 +378,7 @@
<button
type="submit"
:disabled="loginRedirectForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Login Redirect
<loader v-if="loginRedirectForm.processing" />
@ -456,7 +456,7 @@
<button
type="submit"
:disabled="displayFromFormatForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Display From Format
<loader v-if="displayFromFormatForm.processing" />
@ -537,7 +537,7 @@
<button
type="submit"
:disabled="useReplyToForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Use Reply-To
<loader v-if="useReplyToForm.processing" />
@ -620,7 +620,7 @@
<button
type="submit"
:disabled="storeFailedDeliveriesForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Store Failed Deliveries
<loader v-if="storeFailedDeliveriesForm.processing" />
@ -702,7 +702,7 @@
<button
type="submit"
:disabled="fromNameForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Global From Name
<loader v-if="fromNameForm.processing" />
@ -785,7 +785,7 @@
<button
type="submit"
:disabled="bannerLocationForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Banner Location
<loader v-if="bannerLocationForm.processing" />
@ -857,7 +857,7 @@
<button
type="submit"
:disabled="emailSubjectForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Email Subject
<loader v-if="emailSubjectForm.processing" />

View File

@ -147,7 +147,7 @@
<button
type="submit"
:disabled="updatePasswordForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update Password
<loader v-if="updatePasswordForm.processing" />
@ -220,7 +220,7 @@
<button
type="submit"
:disabled="browserSessionsForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Logout Other Browser Sessions
<loader v-if="browserSessionsForm.processing" />
@ -235,8 +235,9 @@
<p class="text-base text-grey-700">
Two-factor authentication, also known as 2FA or multi-factor, adds an extra layer of
security to your account beyond your username and password. There are
<b>multiple options for 2FA</b> - 1. Authentication App (e.g. Google Authenticator or another,
Aegis, andOTP) 2. Hardware Security Key (e.g. YubiKey, SoloKey, Nitrokey) 3. Passkeys (which can be stored in a supported provider such as Bitwarden or 1Password).
<b>multiple options for 2FA</b> - 1. Authentication App (e.g. Google Authenticator or
another, Aegis, andOTP) 2. Hardware Security Key (e.g. YubiKey, SoloKey, Nitrokey) 3.
Passkeys (which can be stored in a supported provider such as Bitwarden or 1Password).
</p>
<p class="text-base text-grey-700">
When you login with 2FA enabled, you will be prompted to use a security key or enter a
@ -332,7 +333,7 @@
<button
type="submit"
:disabled="newBackupCodeForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Generate New Backup Code
<loader v-if="newBackupCodeForm.processing" />
@ -406,7 +407,7 @@
<button
type="submit"
:disabled="disableTwoFactorForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Disable Two-Factor Authentication
<loader v-if="disableTwoFactorForm.processing" />
@ -422,15 +423,13 @@
Device/Passkey Authentication (WebAuthn)
</h3>
<p class="text-base text-grey-700">
Hardware security keys and Passkeys that you have registered for 2nd factor authentication. To remove
a key simply click the delete button next to it. Disabled keys cannot be used to
login. Disabling all keys will turn off 2FA on your account.
Hardware security keys and Passkeys that you have registered for 2nd factor
authentication. To remove a key simply click the delete button next to it. Disabled
keys cannot be used to login. Disabling all keys will turn off 2FA on your account.
</p>
</div>
<div class="mt-4">
<p class="mb-0" v-if="keys.length === 0">
You have not registered any keys.
</p>
<p class="mb-0" v-if="keys.length === 0">You have not registered any keys.</p>
<div class="table w-full text-sm md:text-base" v-if="keys.length > 0">
<div class="table-row">
@ -492,27 +491,27 @@
</svg>
</div>
<div class="table-cell p-1 md:p-4 text-right">
<a
<button
v-if="key.enabled"
class="text-indigo-500 font-bold cursor-pointer focus:outline-none"
class="text-indigo-500 font-bold cursor-pointer rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@click="showDisableKeyModal(key)"
>
Disable
</a>
<a
</button>
<button
v-else
class="text-indigo-500 font-bold cursor-pointer focus:outline-none"
class="text-indigo-500 font-bold cursor-pointer rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@click="enableKey(key)"
>
Enable
<loader v-if="key.enableKeyLoading" />
</a>
<a
class="text-red-500 font-bold cursor-pointer sm:ml-4 focus:outline-none"
</button>
<button
class="text-red-500 font-bold cursor-pointer sm:ml-4 rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@click="showDeleteKeyModal(key)"
>
Delete
</a>
</button>
</div>
</div>
</div>
@ -657,7 +656,7 @@
<button
type="submit"
:disabled="enableTwoFactorForm.processing"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Verify and Enable
<loader v-if="enableTwoFactorForm.processing" />
@ -679,7 +678,7 @@
<a
type="button"
:href="route('webauthn.create')"
class="block bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none text-center"
class="block bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 text-center"
>
Register New Key
</a>
@ -722,7 +721,7 @@
<div class="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="disableKey"
class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded focus:outline-none disable:cursor-not-allowed"
class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disable:cursor-not-allowed"
:disabled="disableKeyLoading"
>
Disable
@ -730,7 +729,7 @@
</button>
<button
@click="closeDisableKeyModal"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>
@ -772,7 +771,7 @@
<div class="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="deleteKey"
class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded focus:outline-none disable:cursor-not-allowed"
class="bg-red-500 hover:bg-red-600 text-white font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disable:cursor-not-allowed"
:disabled="deleteKeyLoading"
>
Remove
@ -780,7 +779,7 @@
</button>
<button
@click="closeDeleteKeyModal"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="ml-4 px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -91,7 +91,7 @@
<button
@click="editFromName"
:disabled="username.fromNameLoading"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
>
Update From Name
<loader v-if="username.fromNameLoading" />

View File

@ -8,18 +8,19 @@
<h1 class="text-2xl font-semibold text-grey-900">Usernames</h1>
<p class="mt-2 text-sm text-grey-700">
A list of all the usernames {{ search ? 'found for your search' : 'in your account' }}
<InformationCircleIcon
@click="moreInfoOpen = !moreInfoOpen"
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
<button @click="moreInfoOpen = !moreInfoOpen">
<InformationCircleIcon
class="h-6 w-6 inline-block cursor-pointer text-grey-500"
title="Click for more information"
/>
</button>
</p>
</div>
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
<button
type="button"
@click="openAddUsernameModal"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus:outline-none sm:w-auto"
class="inline-flex items-center justify-center rounded-md border border-transparent bg-cyan-400 hover:bg-cyan-300 text-cyan-900 px-4 py-2 font-bold shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 sm:w-auto"
>
Add Username
</button>
@ -45,21 +46,20 @@
>{{ $filters.timeAgo(props.row.created_at) }}
</span>
<span v-else-if="props.column.field == 'username'">
<span
class="tooltip cursor-pointer outline-none font-medium text-grey-700"
<button
class="tooltip outline-none font-medium text-grey-700"
data-tippy-content="Click to copy"
@click="clipboard(rows[props.row.originalIndex].username)"
>{{ $filters.truncate(props.row.username, 30) }}</span
>
{{ $filters.truncate(props.row.username, 30) }}
</button>
<span
v-if="isDefault(props.row.id)"
class="ml-3 py-1 px-2 text-sm bg-yellow-200 text-yellow-900 rounded-full"
>default</span
>
<span v-else class="block text-grey-400 text-sm py-1">
<span @click="openMakeDefaultModal(props.row)" class="cursor-pointer">
Make Default
</span>
<button @click="openMakeDefaultModal(props.row)">Make Default</button>
</span>
</span>
<span v-else-if="props.column.field == 'description'">
@ -77,59 +77,49 @@
tabindex="0"
autofocus
/>
<Icon
name="close"
class="inline-block w-6 h-6 text-red-300 fill-current cursor-pointer"
@click="usernameIdToEdit = usernameDescriptionToEdit = ''"
/>
<Icon
name="save"
class="inline-block w-6 h-6 text-cyan-500 fill-current cursor-pointer"
@click="editUsername(rows[props.row.originalIndex])"
/>
<button @click="usernameIdToEdit = usernameDescriptionToEdit = ''">
<Icon name="close" class="inline-block w-6 h-6 text-red-300 fill-current" />
</button>
<button @click="editUsername(rows[props.row.originalIndex])">
<Icon name="save" class="inline-block w-6 h-6 text-cyan-500 fill-current" />
</button>
</div>
<div v-else-if="props.row.description" class="flex items-centers">
<span class="outline-none text-grey-500">{{
<span class="outline-none text-grey-500 mr-2">{{
$filters.truncate(props.row.description, 60)
}}</span>
<Icon
name="edit"
class="inline-block w-6 h-6 text-grey-300 fill-current cursor-pointer ml-2"
<button
@click="
;(usernameIdToEdit = props.row.id),
(usernameDescriptionToEdit = props.row.description)
"
/>
>
<Icon name="edit" class="inline-block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
<div v-else class="flex justify-center">
<Icon
name="plus"
class="block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click=";(usernameIdToEdit = props.row.id), (usernameDescriptionToEdit = '')"
/>
<button @click=";(usernameIdToEdit = props.row.id), (usernameDescriptionToEdit = '')">
<Icon name="plus" class="block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
</span>
<span v-else-if="props.column.field === 'default_recipient'">
<div v-if="props.row.default_recipient">
<span
class="tooltip cursor-pointer font-medium text-grey-500"
class="tooltip cursor-pointer font-medium text-grey-500 mr-2"
data-tippy-content="Click to copy"
@click="clipboard(rows[props.row.originalIndex].default_recipient.email)"
>
{{ $filters.truncate(props.row.default_recipient.email, 30) }}
</span>
<Icon
name="edit"
class="ml-2 inline-block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click="openUsernameDefaultRecipientModal(props.row)"
/>
<button @click="openUsernameDefaultRecipientModal(props.row)">
<Icon name="edit" class="inline-block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
<div class="flex justify-center" v-else>
<Icon
name="plus"
class="block w-6 h-6 text-grey-300 fill-current cursor-pointer"
@click="openUsernameDefaultRecipientModal(props.row)"
/>
<button @click="openUsernameDefaultRecipientModal(props.row)">
<Icon name="plus" class="block w-6 h-6 text-grey-300 fill-current" />
</button>
</div>
</span>
<span v-else-if="props.column.field === 'aliases_count'">
@ -225,7 +215,7 @@
<div class="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4">
<button
@click="validateNewUsername"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="addUsernameLoading"
>
Add Username
@ -233,7 +223,7 @@
</button>
<button
@click="addUsernameModalOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -268,7 +258,7 @@
<button
type="button"
@click="editDefaultRecipient()"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-cyan-900 font-semibold bg-cyan-400 hover:bg-cyan-300 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="editDefaultRecipientLoading"
>
Update Default Recipient
@ -276,7 +266,7 @@
</button>
<button
@click="closeUsernameDefaultRecipientModal()"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -297,7 +287,7 @@
<button
type="button"
@click="deleteUsername(usernameIdToDelete)"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus:outline-none disabled:cursor-not-allowed"
class="px-4 py-3 text-white font-semibold bg-red-500 hover:bg-red-600 border border-transparent rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="deleteUsernameLoading"
>
Delete username
@ -305,7 +295,7 @@
</button>
<button
@click="closeDeleteModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -326,7 +316,7 @@
<button
type="button"
@click="makeDefaultUsername(usernameToMakeDefault)"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none disabled:cursor-not-allowed"
class="bg-cyan-400 hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:cursor-not-allowed"
:disabled="makeDefaultLoading"
>
Make default username
@ -334,7 +324,7 @@
</button>
<button
@click="closeMakeDefaultModal"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Cancel
</button>
@ -364,7 +354,7 @@
<div class="mt-6 flex flex-col sm:flex-row">
<button
@click="moreInfoOpen = false"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus:outline-none"
class="px-4 py-3 text-grey-800 font-semibold bg-white hover:bg-grey-50 border border-grey-100 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
>
Close
</button>

View File

@ -39,7 +39,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center justify-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
{{ __('Authenticate') }}
</button>
</div>

View File

@ -86,7 +86,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none ml-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 ml-auto">
{{ __('Login') }}
</button>
</div>

View File

@ -68,7 +68,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center justify-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
{{ __('Send Password Reset Link') }}
</button>
</div>

View File

@ -59,7 +59,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
{{ __('Reset Password') }}
</button>
</div>

View File

@ -99,7 +99,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
{{ __('Register') }}
</button>
</div>

View File

@ -41,7 +41,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center justify-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
{{ __('Authenticate') }}
</button>
</div>

View File

@ -65,7 +65,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center justify-center">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none">
<button type="submit" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">
{{ __('Send Username Reminder') }}
</button>
</div>

View File

@ -29,7 +29,7 @@
<form method="POST" action="{{ route('verification.resend') }}" class="w-full">
@csrf
<button type="submit" class="bg-cyan-400 w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:ring no-underline mx-auto">
<button type="submit" class="bg-cyan-400 w-full text-center hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 no-underline mx-auto">
{{ __('Resend verification email') }}
</button>
</form>

View File

@ -48,7 +48,7 @@
</form>
<div class="mt-4">
<button onclick="authenticateDevice()" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none ml-auto">
<button onclick="authenticateDevice()" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 ml-auto">
Authenticate
</button>
</div>

View File

@ -69,7 +69,7 @@
</div>
<div class="px-6 md:px-10 py-4 bg-grey-50 border-t border-grey-100 flex flex-wrap items-center">
<button onclick="registerDevice()" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus:outline-none ml-auto">
<button onclick="registerDevice()" class="bg-cyan-400 w-full hover:bg-cyan-300 text-cyan-900 font-bold py-3 px-4 rounded focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 ml-auto">
Add Key
</button>
</div>