diff --git a/app/assets/stylesheets/administrate/components/_buttons.scss b/app/assets/stylesheets/administrate/components/_buttons.scss
index a0c3699ba..1fceddc1f 100644
--- a/app/assets/stylesheets/administrate/components/_buttons.scss
+++ b/app/assets/stylesheets/administrate/components/_buttons.scss
@@ -9,7 +9,7 @@ input[type='submit']:not(.reset-base),
border-radius: $base-border-radius;
color: $white;
cursor: pointer;
- display: inline-block;
+ display: inline-flex;
font-size: $font-size-small;
-webkit-font-smoothing: antialiased;
font-weight: $font-weight-medium;
diff --git a/app/javascript/dashboard/assets/scss/_date-picker.scss b/app/javascript/dashboard/assets/scss/_date-picker.scss
index 2fa577673..b22381ea0 100644
--- a/app/javascript/dashboard/assets/scss/_date-picker.scss
+++ b/app/javascript/dashboard/assets/scss/_date-picker.scss
@@ -10,7 +10,7 @@
&.no-margin {
.mx-input {
- @apply mb-0;
+ margin-bottom: 0 !important;
}
}
diff --git a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss
index 2f9c35c51..ffcfca545 100644
--- a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss
+++ b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss
@@ -1,13 +1,13 @@
@mixin label-multiselect-hover {
&::after {
- @apply text-woot-600 dark:text-woot-600;
+ @apply text-n-brand;
}
&:hover {
- @apply bg-slate-50 dark:bg-slate-700;
+ @apply bg-n-slate-3;
&::after {
- @apply text-woot-500 dark:text-woot-500;
+ @apply text-n-blue-text;
}
}
}
@@ -18,20 +18,16 @@
}
&.multiselect--disabled {
- @apply opacity-50 border border-slate-200 dark:border-slate-600 rounded-md cursor-not-allowed;
+ @apply opacity-50 rounded-lg cursor-not-allowed pointer-events-auto;
.multiselect__select {
- @apply cursor-not-allowed bg-white dark:bg-slate-900 rounded-md;
- }
-
- .multiselect__tags {
- @apply border-0;
+ @apply cursor-not-allowed bg-transparent rounded-lg;
}
}
.multiselect--active {
> .multiselect__tags {
- @apply border-woot-500 dark:border-woot-500;
+ @apply outline-n-blue-border;
}
}
@@ -44,7 +40,7 @@
}
.multiselect__content-wrapper {
- @apply bg-white dark:bg-slate-900 border border-solid border-slate-200 dark:border-slate-600 text-slate-800 dark:text-slate-100;
+ @apply bg-n-alpha-black2 text-n-slate-12 backdrop-blur-[100px] border-0 border-none outline outline-1 outline-n-weak rounded-b-lg;
}
.multiselect__content {
@@ -61,15 +57,19 @@
@apply mb-0;
}
+ &::after {
+ @apply bottom-0 flex items-center justify-center text-center;
+ }
+
&.multiselect__option--highlight {
- @apply bg-white dark:bg-slate-800 text-slate-800 dark:text-slate-100;
+ @apply bg-n-alpha-black2 text-n-slate-12;
}
&.multiselect__option--highlight:hover {
- @apply bg-woot-50 dark:bg-woot-600 text-slate-800 dark:text-slate-100;
+ @apply bg-n-brand/10 text-n-slate-12;
&::after {
- @apply bg-woot-50 dark:bg-woot-600 text-slate-600 dark:text-slate-200;
+ @apply bg-transparent text-center text-n-slate-12;
}
}
@@ -78,17 +78,17 @@
}
&.multiselect__option--selected {
- @apply bg-woot-50 dark:bg-woot-600 text-slate-800 dark:text-slate-100;
+ @apply bg-n-brand/20 text-n-slate-12;
+
+ &::after {
+ @apply bg-transparent;
+ }
&.multiselect__option--highlight:hover {
- @apply bg-woot-75 dark:bg-woot-600;
-
- &::after {
- @apply bg-transparent;
- }
+ @apply bg-transparent;
&::after:hover {
- @apply text-slate-800 dark:text-slate-100;
+ @apply text-n-slate-12 bg-transparent;
}
}
}
@@ -96,23 +96,27 @@
}
.multiselect__tags {
- @apply bg-white dark:bg-slate-900 border border-solid border-slate-200 dark:border-slate-600 m-0 min-h-[2.875rem] pt-0;
+ @apply bg-n-alpha-black2 border-0 grid items-center w-full border-none outline-1 outline outline-n-weak hover:outline-n-slate-6 m-0 min-h-[2.875rem] rounded-lg pt-0;
input {
- @apply border-0 border-none;
+ @apply border-0 border-none bg-transparent dark:bg-transparent text-n-slate-12 placeholder:text-n-slate-10;
}
}
+ .multiselect__spinner {
+ background-color: transparent;
+ }
+
.multiselect__tags-wrap {
@apply inline-block leading-none mt-1;
}
.multiselect__placeholder {
- @apply text-slate-400 dark:text-slate-400 font-normal pt-3;
+ @apply text-n-slate-10 font-normal pt-3;
}
.multiselect__tag {
- @apply bg-slate-50 dark:bg-slate-800 mt-1 text-slate-800 dark:text-slate-100 pr-6 pl-2.5 py-1.5;
+ @apply bg-n-alpha-white mt-1 text-n-slate-12 pr-6 pl-2.5 py-1.5;
}
.multiselect__tag-icon {
@@ -125,7 +129,7 @@
}
.multiselect__single {
- @apply bg-white dark:bg-slate-900 text-slate-800 dark:text-slate-100 inline-block mb-0 py-3 px-2.5 overflow-hidden whitespace-nowrap text-ellipsis;
+ @apply bg-transparent text-n-slate-12 inline-block mb-0 py-3 px-2.5 overflow-hidden whitespace-nowrap text-ellipsis;
}
}
@@ -143,11 +147,11 @@
}
> .multiselect__tags {
- @apply border-transparent;
+ @apply outline-transparent;
}
&.multiselect--active > .multiselect__tags {
- @apply border-woot-500 dark:border-woot-500;
+ @apply outline-n-blue-border;
}
}
}
@@ -179,7 +183,7 @@
.multiselect__tags,
.multiselect__input,
.multiselect {
- @apply bg-white dark:bg-slate-900 text-slate-800 dark:text-slate-100 rounded-[5px] text-sm min-h-[2.5rem];
+ @apply text-n-slate-12 rounded-lg text-sm min-h-[2.5rem];
}
.multiselect__input {
@@ -187,7 +191,7 @@
}
.multiselect__single {
- @apply items-center flex m-0 text-sm max-h-[2.375rem] text-slate-800 dark:text-slate-100 bg-white dark:bg-slate-900 py-3 px-0.5;
+ @apply items-center flex m-0 text-sm max-h-[2.375rem] bg-transparent text-n-slate-12 py-3 px-0.5;
}
.multiselect__placeholder {
@@ -208,6 +212,24 @@
}
}
+.multiselect--disabled {
+ background-color: rgba(var(--black-alpha-2)) !important;
+
+ .multiselect__tags {
+ @apply hover:outline-n-weak;
+ }
+}
+
+.multiselect--active {
+ .multiselect__select::before {
+ @apply top-[62%];
+ }
+}
+
+.multiselect__select::before {
+ top: 60% !important;
+}
+
.multiselect-wrap--medium {
.multiselect__tags,
.multiselect__input {
@@ -217,16 +239,16 @@
.multiselect__tags,
.multiselect__input,
.multiselect {
- @apply bg-white dark:bg-slate-900 text-slate-800 dark:text-slate-100 text-sm h-12 min-h-[3rem];
+ @apply bg-n-alpha-black2 text-n-slate-12 text-sm h-12 min-h-[3rem];
}
.multiselect__input {
@apply h-[2.875rem] min-h-[2.875rem];
- margin-bottom: 0px !important;
+ margin-bottom: 0 !important;
}
.multiselect__single {
- @apply items-center flex m-0 text-sm py-1 px-0.5 text-slate-800 dark:text-slate-100 bg-white dark:bg-slate-900;
+ @apply items-center flex m-0 text-sm py-1 px-0.5 bg-transparent text-n-slate-12;
}
.multiselect__placeholder {
diff --git a/app/javascript/dashboard/assets/scss/widgets/_base.scss b/app/javascript/dashboard/assets/scss/widgets/_base.scss
index a8da23f3b..da3cf2e6d 100644
--- a/app/javascript/dashboard/assets/scss/widgets/_base.scss
+++ b/app/javascript/dashboard/assets/scss/widgets/_base.scss
@@ -1,22 +1,22 @@
// scss-lint:disable QualifyingElement
// Base typography
+// -------------------------
h1,
h2,
h3,
h4,
h5,
h6 {
- @apply font-medium text-slate-800 dark:text-slate-50;
+ @apply font-medium text-n-slate-12;
}
p {
text-rendering: optimizeLegibility;
-
@apply mb-2 leading-[1.65] text-sm;
a {
- @apply text-woot-500 dark:text-woot-500 cursor-pointer;
+ @apply text-n-brand dark:text-n-brand cursor-pointer;
}
}
@@ -41,64 +41,82 @@ dl:not(.reset-base) {
}
// Form elements
+// -------------------------
label {
- @apply text-slate-800 dark:text-slate-200 block m-0 leading-7 text-sm font-medium;
-
- &.error {
- input {
- @apply mb-1;
- }
- }
+ @apply text-n-slate-12 block m-0 leading-7 text-sm font-medium;
}
.input-wrap,
.help-text {
- @apply text-slate-800 dark:text-slate-100 text-sm font-medium;
-
- .help-text {
- @apply font-normal text-slate-600 dark:text-slate-400;
- }
+ @apply text-n-slate-11 text-sm font-medium;
}
// Focus outline removal
.button,
-textarea,
-input:focus {
+textarea {
outline: none;
}
-// Inputs
-input[type='text']:not(.reset-base),
-input[type='number']:not(.reset-base),
-input[type='password']:not(.reset-base),
-input[type='date']:not(.reset-base),
-input[type='email']:not(.reset-base),
-input[type='url']:not(.reset-base) {
- @apply block box-border w-full transition-colors focus:border-woot-500 dark:focus:border-woot-600 duration-[0.25s] ease-[ease-in-out] h-10 appearance-none mx-0 mt-0 mb-4 p-2 rounded-md text-base font-normal bg-white dark:bg-slate-900 focus:bg-white focus:dark:bg-slate-900 text-slate-900 dark:text-slate-100 border border-solid border-slate-200 dark:border-slate-600;
+// Field base styles (Input, TextArea, Select)
+@layer components {
+ .field-base {
+ @apply block box-border w-full transition-colors duration-[0.25s] ease-[ease-in-out] focus:outline-n-brand dark:focus:outline-n-brand appearance-none mx-0 mt-0 mb-4 py-2 px-3 rounded-lg text-base font-normal bg-n-alpha-black2 placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10 text-n-slate-12 border-none outline outline-1 outline-n-weak dark:outline-n-weak hover:outline-n-slate-6 dark:hover:outline-n-slate-6;
+ }
- &[disabled] {
- @apply bg-slate-200 dark:bg-slate-700 text-slate-400 dark:text-slate-400 border-slate-200 dark:border-slate-600 cursor-not-allowed;
+ .field-disabled {
+ @apply opacity-50 outline-n-weak dark:outline-n-weak cursor-not-allowed;
+ }
+
+ .field-error {
+ @apply outline outline-1 outline-n-ruby-8 dark:outline-n-ruby-8 hover:outline-n-ruby-9 dark:hover:outline-n-ruby-9 disabled:outline-n-ruby-8 dark:disabled:outline-n-ruby-8;
}
}
-input[type='file'] {
- @apply bg-n-background leading-[1.15] mb-4;
+$form-input-selector: "input[type]:not([type='file']):not([type='checkbox']):not([type='radio']):not([type='button']):not([type='submit']):not([type='reset']):not(.reset-base):not(.multiselect__input):not(.no-margin)";
+
+#{$form-input-selector} {
+ @apply field-base h-10;
+
+ &[disabled] {
+ @apply field-disabled;
+ }
+
+ &.error {
+ @apply field-error mb-1;
+ }
+}
+
+input[type='file']:not(.multiselect__input) {
+ @apply leading-[1.15] mb-4 border-0 bg-transparent text-sm;
}
// Select
select {
background-image: url("data:image/svg+xml;utf8,");
- background-position: right -1rem center;
background-size: 9px 6px;
- @apply h-10 mx-0 mt-0 mb-4 bg-origin-content focus-visible:outline-none bg-no-repeat py-2 pr-6 pl-2 rounded-md w-full text-base font-normal appearance-none transition-colors focus:border-woot-500 dark:focus:border-woot-600 duration-[0.25s] ease-[ease-in-out] bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 border border-solid border-slate-200 dark:border-slate-600;
+
+ @apply field-base h-10 bg-origin-content focus-visible:outline-none bg-no-repeat py-2 ltr:bg-[right_-1rem_center] rtl:bg-[left_-1rem_center] ltr:pr-6 rtl:pl-6 rtl:pr-3 ltr:pl-3;
+
+ &[disabled] {
+ @apply field-disabled;
+ }
}
// Textarea
textarea {
- @apply block box-border w-full transition-colors focus:border-woot-500 dark:focus:border-woot-600 duration-[0.25s] ease-[ease-in-out] h-16 appearance-none mx-0 mt-0 mb-4 p-2 rounded-md text-base font-normal bg-white dark:bg-slate-900 focus:bg-white focus:dark:bg-slate-900 text-slate-900 dark:text-slate-100 border border-solid border-slate-200 dark:border-slate-600;
+ @apply field-base h-16;
&[disabled] {
- @apply bg-slate-200 dark:bg-slate-700 text-slate-400 dark:text-slate-400 border-slate-200 dark:border-slate-600 cursor-not-allowed;
+ @apply field-disabled;
+ }
+}
+
+// Add mb-1 when .help-text exists within the same label container
+label:has(.help-text) {
+ input,
+ textarea,
+ select {
+ margin-bottom: 0.25rem !important;
}
}
@@ -109,18 +127,41 @@ textarea {
}
}
+// FormKit support
+.formkit-outer[data-invalid='true'] {
+ #{$form-input-selector},
+ textarea,
+ select {
+ @apply field-error;
+ }
+
+ .formkit-message {
+ @apply text-n-ruby-9 dark:text-n-ruby-9 block text-sm mb-2.5 w-full;
+ }
+}
+
.error {
- input,
+ #{$form-input-selector},
input:not([type]),
textarea,
select,
.multiselect > .multiselect__tags,
.multiselect:not(.no-margin) {
- @apply border border-solid border-red-400 dark:border-red-400 mb-1;
+ @apply field-error;
+ }
+
+ // Only add mb-1 when .message exists within the same .error container
+ // And exclude no-margin from the margin-bottom
+ &:has(.message) {
+ input:not(.no-margin),
+ textarea,
+ select {
+ margin-bottom: 0.25rem !important;
+ }
}
.message {
- @apply text-red-400 dark:text-red-400 block text-sm mb-2.5 w-full;
+ @apply text-n-ruby-9 dark:text-n-ruby-9 block text-sm mb-2.5 w-full;
}
}
@@ -130,7 +171,7 @@ textarea {
}
.error {
- @apply border-red-400 dark:border-red-400;
+ @apply text-n-ruby-9 dark:text-n-ruby-9;
}
}
@@ -141,11 +182,11 @@ code {
@apply text-xs border-0;
&.hljs {
- @apply bg-n-slate-3 dark:bg-n-solid-3 text-slate-800 dark:text-slate-50 rounded-lg p-5;
+ @apply bg-n-slate-3 dark:bg-n-solid-3 text-n-slate-12 rounded-lg p-5;
.hljs-number,
.hljs-string {
- @apply text-red-800 dark:text-red-400;
+ @apply text-n-ruby-9 dark:text-n-ruby-9;
}
.hljs-name,
diff --git a/app/javascript/dashboard/assets/scss/widgets/_buttons.scss b/app/javascript/dashboard/assets/scss/widgets/_buttons.scss
index 1213e7c26..133e07bd1 100644
--- a/app/javascript/dashboard/assets/scss/widgets/_buttons.scss
+++ b/app/javascript/dashboard/assets/scss/widgets/_buttons.scss
@@ -42,7 +42,7 @@ button {
}
}
- &:hover:not(.secondary):not(.success):not(.alert):not(.warning):not(
+ &:hover:not(:disabled):not(.success):not(.alert):not(.warning):not(
.clear
):not(.smooth):not(.hollow) {
@apply bg-n-brand/80 dark:bg-n-brand/80;
@@ -117,63 +117,63 @@ button {
}
&.hollow {
- @apply border border-n-brand/40 bg-transparent text-n-blue-text hover:bg-n-brand/20;
+ @apply border border-n-brand/40 bg-transparent text-n-blue-text hover:enabled:bg-n-brand/20;
&.secondary {
- @apply text-n-slate-12 border-n-slate-5 hover:bg-n-slate-5;
+ @apply text-n-slate-12 border-n-slate-5 hover:enabled:bg-n-slate-5;
}
&.success {
- @apply text-n-teal-9 border-n-teal-8 hover:bg-n-teal-5;
+ @apply text-n-teal-9 border-n-teal-8 hover:enabled:bg-n-teal-5;
}
&.alert {
- @apply text-n-ruby-9 border-n-ruby-8 hover:bg-n-ruby-5;
+ @apply text-n-ruby-9 border-n-ruby-8 hover:enabled:bg-n-ruby-5;
}
&.warning {
- @apply text-n-amber-9 border-n-amber-8 hover:bg-n-amber-5;
+ @apply text-n-amber-9 border-n-amber-8 hover:enabled:bg-n-amber-5;
}
}
// Smooth style
&.smooth {
- @apply bg-n-brand/10 dark:bg-n-brand/30 text-n-blue-text hover:bg-n-brand/20 dark:hover:bg-n-brand/40;
+ @apply bg-n-brand/10 dark:bg-n-brand/30 text-n-blue-text hover:enabled:bg-n-brand/20 dark:hover:enabled:bg-n-brand/40;
&.secondary {
- @apply bg-n-slate-4 text-n-slate-11 hover:text-n-slate-11 hover:bg-n-slate-5;
+ @apply bg-n-slate-4 text-n-slate-11 hover:enabled:text-n-slate-11 hover:enabled:bg-n-slate-5;
}
&.success {
- @apply bg-n-teal-4 text-n-teal-11 hover:text-n-teal-11 hover:bg-n-teal-5;
+ @apply bg-n-teal-4 text-n-teal-11 hover:enabled:text-n-teal-11 hover:enabled:bg-n-teal-5;
}
&.alert {
- @apply bg-n-ruby-4 text-n-ruby-11 hover:text-n-ruby-11 hover:bg-n-ruby-5;
+ @apply bg-n-ruby-4 text-n-ruby-11 hover:enabled:text-n-ruby-11 hover:enabled:bg-n-ruby-5;
}
&.warning {
- @apply bg-n-amber-4 text-n-amber-11 hover:text-n-amber-11 hover:bg-n-amber-5;
+ @apply bg-n-amber-4 text-n-amber-11 hover:enabled:text-n-amber-11 hover:enabled:bg-n-amber-5;
}
}
&.clear {
- @apply text-n-blue-text hover:bg-n-brand/10 dark:hover:bg-n-brand/30;
+ @apply text-n-blue-text hover:enabled:bg-n-brand/10 dark:hover:enabled:bg-n-brand/30;
&.secondary {
- @apply text-n-slate-12 hover:bg-n-slate-4;
+ @apply text-n-slate-12 hover:enabled:bg-n-slate-4;
}
&.success {
- @apply text-n-teal-10 hover:bg-n-teal-4;
+ @apply text-n-teal-10 hover:enabled:bg-n-teal-4;
}
&.alert {
- @apply text-n-ruby-11 hover:bg-n-ruby-4;
+ @apply text-n-ruby-11 hover:enabled:bg-n-ruby-4;
}
&.warning {
- @apply text-n-amber-11 hover:bg-n-amber-4;
+ @apply text-n-amber-11 hover:enabled:bg-n-amber-4;
}
&:active {
diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue
index 4afca6269..cd8c767b8 100644
--- a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue
+++ b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue
@@ -247,10 +247,9 @@ defineExpose({
:placeholder="item.placeholder"
class="[&>div>button]:h-8"
:class="{
- '[&>div>button]:bg-n-alpha-black2 [&>div>button]:!outline-transparent':
+ '[&>div>button]:bg-n-alpha-black2 [&>div>button:not(.focused)]:!outline-transparent':
!isDetailsView,
- '[&>div>button]:!outline-n-weak [&>div>button]:hover:!outline-n-strong [&>div>button]:!bg-n-alpha-black2':
- isDetailsView,
+ '[&>div>button]:!bg-n-alpha-black2': isDetailsView,
}"
@update:model-value="handleCountrySelection"
/>
@@ -266,7 +265,9 @@ defineExpose({
:placeholder="item.placeholder"
:message-type="getMessageType(item.key)"
:custom-input-class="`h-8 !pt-1 !pb-1 ${
- !isDetailsView ? '[&:not(.error,.focus)]:!border-transparent' : ''
+ !isDetailsView
+ ? '[&:not(.error,.focus)]:!outline-transparent'
+ : ''
}`"
class="w-full"
@input="
@@ -303,7 +304,7 @@ defineExpose({
v-model="
state.additionalAttributes.socialProfiles[item.key.toLowerCase()]
"
- class="w-auto min-w-[100px] text-sm bg-transparent reset-base text-n-slate-12 dark:text-n-slate-12 placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10"
+ class="w-auto min-w-[100px] text-sm bg-transparent outline-none reset-base text-n-slate-12 dark:text-n-slate-12 placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10"
:placeholder="item.placeholder"
:size="item.placeholder.length"
@input="emit('update', state)"
diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributes.vue b/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributes.vue
index 4964668df..039d2c709 100644
--- a/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributes.vue
+++ b/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/ContactCustomAttributes.vue
@@ -135,7 +135,7 @@ const hasNoUsedAttributes = computed(() => usedAttributes.value.length === 0);
:placeholder="
t('CONTACTS_LAYOUT.SIDEBAR.ATTRIBUTES.SEARCH_PLACEHOLDER')
"
- class="w-full h-8 py-2 pl-10 pr-2 text-sm border-none rounded-lg bg-n-alpha-black2 dark:bg-n-solid-1 text-n-slate-12"
+ class="w-full h-8 py-2 pl-10 pr-2 text-sm reset-base outline-none border-none rounded-lg bg-n-alpha-black2 dark:bg-n-solid-1 text-n-slate-12"
/>
{
diff --git a/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalBaseSettings.vue b/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalBaseSettings.vue
index 7a066c265..5a60fefdc 100644
--- a/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalBaseSettings.vue
+++ b/app/javascript/dashboard/components-next/HelpCenter/Pages/PortalSettingsPage/PortalBaseSettings.vue
@@ -303,7 +303,7 @@ const handleAvatarDelete = () => {
:message="
t('HELP_CENTER.PORTAL_SETTINGS.FORM.LIVE_CHAT_WIDGET.HELP_TEXT')
"
- class="[&>div>button]:!outline-n-weak"
+ class="[&>div>button:not(.focused)]:!outline-n-weak"
/>
diff --git a/app/javascript/dashboard/components-next/NewConversation/components/WhatsAppOptions.vue b/app/javascript/dashboard/components-next/NewConversation/components/WhatsAppOptions.vue
index b8fd1429a..3980c6b30 100644
--- a/app/javascript/dashboard/components-next/NewConversation/components/WhatsAppOptions.vue
+++ b/app/javascript/dashboard/components-next/NewConversation/components/WhatsAppOptions.vue
@@ -96,7 +96,7 @@ const handleSendMessage = template => {
'COMPOSE_NEW_CONVERSATION.FORM.WHATSAPP_OPTIONS.SEARCH_PLACEHOLDER'
)
"
- class="w-full h-8 py-2 pl-10 pr-2 text-sm border-none rounded-lg bg-n-alpha-black2 dark:bg-n-solid-1 text-n-slate-12"
+ class="w-full h-8 py-2 pl-10 pr-2 text-sm reset-base outline-none border-none rounded-lg bg-n-alpha-black2 dark:bg-n-solid-1 text-n-slate-12"
/>
{
const buttonClass = computed(() => {
const classMap = {
- slate: 'bg-n-slate-4 text-n-slate-11',
- amber: 'bg-n-amber-4 text-n-amber-11',
- teal: 'bg-n-teal-4 text-n-teal-11',
- ruby: 'bg-n-ruby-4 text-n-ruby-11',
- blue: 'bg-n-blue-4 text-n-blue-11',
+ slate: 'bg-n-slate-4 hover:bg-n-slate-5 text-n-slate-11',
+ amber: 'bg-n-amber-4 hover:bg-n-amber-5 text-n-amber-11',
+ teal: 'bg-n-teal-4 hover:bg-n-teal-5 text-n-teal-11',
+ ruby: 'bg-n-ruby-4 hover:bg-n-ruby-5 text-n-ruby-11',
+ blue: 'bg-n-blue-4 hover:bg-n-blue-5 text-n-blue-11',
};
return classMap[props.color];
diff --git a/app/javascript/dashboard/components-next/button/Button.vue b/app/javascript/dashboard/components-next/button/Button.vue
index 81a74eec4..93622ad64 100644
--- a/app/javascript/dashboard/components-next/button/Button.vue
+++ b/app/javascript/dashboard/components-next/button/Button.vue
@@ -100,49 +100,57 @@ const STYLE_CONFIG = {
colors: {
blue: {
solid:
- 'bg-n-brand text-white hover:enabled:brightness-110 outline-transparent',
+ 'bg-n-brand text-white hover:enabled:brightness-110 focus-visible:brightness-110 outline-transparent',
faded:
- 'bg-n-brand/10 text-n-blue-text hover:enabled:bg-n-brand/20 outline-transparent',
- outline: 'text-n-blue-text outline-n-blue-border',
- ghost: 'text-n-blue-text hover:enabled:bg-n-alpha-2 outline-transparent',
- link: 'text-n-blue-text hover:enabled:underline outline-transparent',
+ 'bg-n-brand/10 text-n-blue-text hover:enabled:bg-n-brand/20 focus-visible:bg-n-brand/20 outline-transparent',
+ outline: 'text-n-blue-text outline-n-brand',
+ ghost:
+ 'text-n-blue-text hover:enabled:bg-n-alpha-2 focus-visible:bg-n-alpha-2 outline-transparent',
+ link: 'text-n-blue-text hover:enabled:underline focus-visible:underline outline-transparent',
},
ruby: {
solid:
- 'bg-n-ruby-9 text-white hover:enabled:bg-n-ruby-10 outline-transparent',
+ 'bg-n-ruby-9 text-white hover:enabled:bg-n-ruby-10 focus-visible:bg-n-ruby-10 outline-transparent',
faded:
- 'bg-n-ruby-9/10 text-n-ruby-11 hover:enabled:bg-n-ruby-9/20 outline-transparent',
- outline: 'text-n-ruby-11 hover:enabled:bg-n-ruby-9/10 outline-n-ruby-8',
- ghost: 'text-n-ruby-11 hover:enabled:bg-n-alpha-2 outline-transparent',
- link: 'text-n-ruby-9 hover:enabled:underline outline-transparent',
+ 'bg-n-ruby-9/10 text-n-ruby-11 hover:enabled:bg-n-ruby-9/20 focus-visible:bg-n-ruby-9/20 outline-transparent',
+ outline:
+ 'text-n-ruby-11 hover:enabled:bg-n-ruby-9/10 focus-visible:bg-n-ruby-9/10 outline-n-ruby-8',
+ ghost:
+ 'text-n-ruby-11 hover:enabled:bg-n-alpha-2 focus-visible:bg-n-alpha-2 outline-transparent',
+ link: 'text-n-ruby-9 hover:enabled:underline focus-visible:underline outline-transparent',
},
amber: {
solid:
- 'bg-n-amber-9 text-white hover:enabled:bg-n-amber-10 outline-transparent',
+ 'bg-n-amber-9 text-white hover:enabled:bg-n-amber-10 focus-visible:bg-n-amber-10 outline-transparent',
faded:
- 'bg-n-amber-9/10 text-n-slate-12 hover:enabled:bg-n-amber-9/20 outline-transparent',
+ 'bg-n-amber-9/10 text-n-slate-12 hover:enabled:bg-n-amber-9/20 focus-visible:bg-n-amber-9/20 outline-transparent',
outline:
- 'text-n-amber-11 hover:enabled:bg-n-amber-9/10 outline-n-amber-9',
- link: 'text-n-amber-9 hover:enabled:underline outline-transparent',
- ghost: 'text-n-amber-9 hover:enabled:bg-n-alpha-2 outline-transparent',
+ 'text-n-amber-11 hover:enabled:bg-n-amber-9/10 focus-visible:bg-n-amber-9/10 outline-n-amber-9',
+ link: 'text-n-amber-9 hover:enabled:underline focus-visible:underline outline-transparent',
+ ghost:
+ 'text-n-amber-9 hover:enabled:bg-n-alpha-2 focus-visible:bg-n-alpha-2 outline-transparent',
},
slate: {
solid:
- 'bg-n-solid-3 dark:hover:enabled:bg-n-solid-2 hover:enabled:bg-n-alpha-2 text-n-slate-12 outline-n-container',
+ 'bg-n-solid-3 dark:hover:enabled:bg-n-solid-2 dark:focus-visible:bg-n-solid-2 hover:enabled:bg-n-alpha-2 focus-visible:bg-n-alpha-2 text-n-slate-12 outline-n-container',
faded:
- 'bg-n-slate-9/10 text-n-slate-12 hover:enabled:bg-n-slate-9/20 outline-transparent',
- outline: 'text-n-slate-11 outline-n-strong hover:enabled:bg-n-slate-9/10',
- link: 'text-n-slate-11 hover:enabled:text-n-slate-12 hover:enabled:underline outline-transparent',
- ghost: 'text-n-slate-12 hover:enabled:bg-n-alpha-2 outline-transparent',
+ 'bg-n-slate-9/10 text-n-slate-12 hover:enabled:bg-n-slate-9/20 focus-visible:bg-n-slate-9/20 outline-transparent',
+ outline:
+ 'text-n-slate-11 outline-n-strong hover:enabled:bg-n-slate-9/10 focus-visible:bg-n-slate-9/10',
+ link: 'text-n-slate-11 hover:enabled:text-n-slate-12 focus-visible:text-n-slate-12 hover:enabled:underline focus-visible:underline outline-transparent',
+ ghost:
+ 'text-n-slate-12 hover:enabled:bg-n-alpha-2 focus-visible:bg-n-alpha-2 outline-transparent',
},
teal: {
solid:
- 'bg-n-teal-9 text-white hover:enabled:bg-n-teal-10 outline-transparent',
+ 'bg-n-teal-9 text-white hover:enabled:bg-n-teal-10 focus-visible:bg-n-teal-10 outline-transparent',
faded:
- 'bg-n-teal-9/10 text-n-slate-12 hover:enabled:bg-n-teal-9/20 outline-transparent',
- outline: 'text-n-teal-11 hover:enabled:bg-n-teal-9/10 outline-n-teal-9',
- link: 'text-n-teal-9 hover:enabled:underline outline-transparent',
- ghost: 'text-n-teal-9 hover:enabled:bg-n-alpha-2 outline-transparent',
+ 'bg-n-teal-9/10 text-n-slate-12 hover:enabled:bg-n-teal-9/20 focus-visible:bg-n-teal-9/20 outline-transparent',
+ outline:
+ 'text-n-teal-11 hover:enabled:bg-n-teal-9/10 focus-visible:bg-n-teal-9/10 outline-n-teal-9',
+ link: 'text-n-teal-9 hover:enabled:underline focus-visible:underline outline-transparent',
+ ghost:
+ 'text-n-teal-9 hover:enabled:bg-n-alpha-2 focus-visible:bg-n-alpha-2 outline-transparent',
},
},
sizes: {
diff --git a/app/javascript/dashboard/components-next/combobox/ComboBox.vue b/app/javascript/dashboard/components-next/combobox/ComboBox.vue
index 8dbd00388..026a63a70 100644
--- a/app/javascript/dashboard/components-next/combobox/ComboBox.vue
+++ b/app/javascript/dashboard/components-next/combobox/ComboBox.vue
@@ -96,7 +96,7 @@ watch(
:label="selectedLabel"
trailing-icon
:disabled="disabled"
- class="justify-between w-full !px-3 !py-2.5 text-n-slate-12 font-normal group-hover/combobox:border-n-slate-6"
+ class="justify-between w-full !px-3 !py-2.5 text-n-slate-12 font-normal group-hover/combobox:border-n-slate-6 [&:not(.focused)]:hover:enabled:outline-n-slate-6 [&:not(.focused)]:dark:hover:enabled:outline-n-slate-6 [&:not(.focused)]:dark:outline-n-weak focus:outline-n-brand"
:class="{ focused: open }"
:icon="open ? 'i-lucide-chevron-up' : 'i-lucide-chevron-down'"
@click="toggleDropdown"
diff --git a/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue b/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue
index e1cd8a086..e24a366e2 100644
--- a/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue
+++ b/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue
@@ -69,7 +69,7 @@ defineExpose({
:value="searchValue"
type="search"
:placeholder="searchPlaceholder || t('COMBOBOX.SEARCH_PLACEHOLDER')"
- class="w-full py-2 pl-10 pr-2 text-sm border-none rounded-t-md bg-n-solid-1 text-slate-900 dark:text-slate-50"
+ class="reset-base w-full py-2 pl-10 pr-2 text-sm focus:outline-none border-none rounded-t-md bg-n-solid-1 text-slate-900 dark:text-slate-50"
@input="onInputSearch"
/>
diff --git a/app/javascript/dashboard/components-next/dropdown-menu/DropdownMenu.vue b/app/javascript/dashboard/components-next/dropdown-menu/DropdownMenu.vue
index 4e3b96259..c8e69b049 100644
--- a/app/javascript/dashboard/components-next/dropdown-menu/DropdownMenu.vue
+++ b/app/javascript/dashboard/components-next/dropdown-menu/DropdownMenu.vue
@@ -75,7 +75,7 @@ onMounted(() => {
:placeholder="
searchPlaceholder || t('DROPDOWN_MENU.SEARCH_PLACEHOLDER')
"
- class="w-full h-8 py-2 pl-10 pr-2 text-sm border-none rounded-lg bg-n-alpha-black2 dark:bg-n-solid-1 text-n-slate-12"
+ class="reset-base w-full h-8 py-2 pl-10 pr-2 text-sm focus:outline-none border-none rounded-lg bg-n-alpha-black2 dark:bg-n-solid-1 text-n-slate-12"
/>