Compare commits

...

18 Commits

Author SHA1 Message Date
0a1d124633 fix base select input 2023-03-30 11:50:54 +05:30
e9abb197b7 fix placeholder 2023-03-29 16:47:01 +05:30
6402771cb8 add dark mode in customer view file 2023-03-29 16:46:20 +05:30
3bb53d2a24 add dark mode in customer side header 2023-03-29 12:51:01 +05:30
feda20431c add dark mode in DashboardStatsItem 2023-03-29 10:04:10 +05:30
238cdb3c25 Add dark mode in BaseEmptyPlaceholder (#1193) 2023-03-28 18:25:45 +05:30
55bf70c868 Add dark mode in NotificationItem (#1196) 2023-03-28 17:49:52 +05:30
0c5adff9b4 Dark customer address popup custominput (#1195)
* add dark mode in BaseCustomInput

* add dark mode in BaseCustomerSelectPopup

* Add dark mode in BaseCustomerAddressDisplay
2023-03-28 17:49:00 +05:30
3d5732ee26 Add dark mode in BaseDivider & BaseDescriptionList (#1194)
* add dark mode in BaseDivider

* add dark mode in BaseDescriptionListItem
2023-03-28 17:34:54 +05:30
5aa7decdbe add dark-mode in BaseRadio component (#1182) 2023-03-28 17:34:18 +05:30
5c67780870 add dark-mode in checkbox (#1162) 2023-03-28 17:26:20 +05:30
ba7f619c67 add dark mode in BaseMoney and BaseTextArea (#1170) 2023-03-28 17:20:29 +05:30
82efad71c0 Add dark mode in BaseErrorAlert (#1192) 2023-03-28 17:16:22 +05:30
826ef72faa add dark mode in BaseItemSelect component. (#1191) 2023-03-28 16:58:30 +05:30
2adaa7a84a add dark mode in base select action (#1188) 2023-03-28 16:35:45 +05:30
13557ea075 add dark mode in BaseSelectInput (#1186) 2023-03-28 16:29:58 +05:30
ce88c772d1 add dark mode in table pagination (#1185) 2023-03-28 16:17:46 +05:30
a32d36363d Dark mode add in BaseSettingsCard & BaseHeading (#1183)
* add dark mode in BaseSettingCard

* add dark mode in base heading
2023-03-28 16:14:30 +05:30
39 changed files with 266 additions and 183 deletions

View File

@ -113,10 +113,10 @@
<div v-if="companyStore.companies.length !== 1" class="py-5">
<BaseDivider class="my-4" />
<h3 class="text-lg leading-6 font-medium text-gray-900">
<h3 class="text-lg leading-6 font-medium text-gray-900 dark:text-white">
{{ $tc('settings.company_info.delete_company') }}
</h3>
<div class="mt-2 max-w-xl text-sm text-gray-500">
<div class="mt-2 max-w-xl text-sm text-gray-500 dark:text-gray-400">
<p>
{{ $tc('settings.company_info.delete_company_description') }}
</p>

View File

@ -7,7 +7,7 @@
{{ $t('settings.menu_title.exchange_rate') }}
</h6>
<p
class="mt-2 text-sm leading-snug text-left text-gray-500"
class="mt-2 text-sm leading-snug text-left text-gray-500 dark:text-gray-400"
style="max-width: 680px"
>
{{ $t('settings.exchange_rate.providers_description') }}

View File

@ -1,12 +1,12 @@
<template>
<h6 class="text-gray-900 text-lg font-medium">
{{ $t(`settings.customization.${type}s.${type}_number_format`) }}
</h6>
<p class="mt-1 text-sm text-gray-500">
{{
<BaseHeading
type="heading-title"
:subtitle="
$t(`settings.customization.${type}s.${type}_number_format_description`)
}}
</p>
"
>
{{ $t(`settings.customization.${type}s.${type}_number_format`) }}
</BaseHeading>
<div class="overflow-x-auto">
<table class="w-full mt-6 table-fixed">
@ -29,6 +29,7 @@
leading-5
text-left text-gray-700
border-t border-b border-gray-200 border-solid
dark:border-gray-600
"
></th>
<th
@ -41,6 +42,7 @@
leading-5
text-left text-gray-700
border-t border-b border-gray-200 border-solid
dark:text-gray-300 dark:border-gray-600
"
>
Component
@ -55,6 +57,7 @@
leading-5
text-left text-gray-700
border-t border-b border-gray-200 border-solid
dark:text-gray-300 dark:border-gray-600
"
>
Parameter
@ -69,13 +72,14 @@
leading-5
text-left text-gray-700
border-t border-b border-gray-200 border-solid
dark:border-gray-600
"
></th>
</tr>
</thead>
<draggable
v-model="selectedFields"
class="divide-y divide-gray-200"
class="divide-y divide-gray-200 dark:divide-gray-600"
item-key="id"
tag="tbody"
handle=".handle"
@ -97,12 +101,13 @@
whitespace-nowrap
mr-2
min-w-[200px]
dark:text-primary-400
"
>
{{ element.label }}
</label>
<p class="text-xs text-gray-500 mt-1">
<p class="text-xs text-gray-500 dark:text-gray-400 mt-1">
{{ element.description }}
</p>
</td>

View File

@ -1,10 +1,12 @@
<template>
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.estimates.convert_estimate_description')
"
>
{{ $tc('settings.customization.estimates.convert_estimate_options') }}
</h6>
<p class="mt-1 text-sm text-gray-500">
{{ $t('settings.customization.estimates.convert_estimate_description') }}
</p>
</BaseHeading>
<BaseInputGroup required>
<BaseRadio

View File

@ -1,11 +1,13 @@
<template>
<form @submit.prevent="submitForm">
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.estimates.default_formats_description')
"
>
{{ $t('settings.customization.estimates.default_formats') }}
</h6>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.estimates.default_formats_description') }}
</p>
</BaseHeading>
<BaseInputGroup
:label="

View File

@ -1,11 +1,13 @@
<template>
<form @submit.prevent="submitForm">
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.estimates.expiry_date_description')
"
>
{{ $t('settings.customization.estimates.expiry_date') }}
</h6>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.estimates.expiry_date_description') }}
</p>
</BaseHeading>
<BaseSwitchSection
v-model="expiryDateAutoField"

View File

@ -1,11 +1,13 @@
<template>
<form @submit.prevent="submitForm">
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.invoices.default_formats_description')
"
>
{{ $t('settings.customization.invoices.default_formats') }}
</h6>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.invoices.default_formats_description') }}
</p>
</BaseHeading>
<BaseInputGroup
:label="$t('settings.customization.invoices.default_invoice_email_body')"

View File

@ -1,11 +1,13 @@
<template>
<form @submit.prevent="submitForm">
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.invoices.due_date_description')
"
>
{{ $t('settings.customization.invoices.due_date') }}
</h6>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.invoices.due_date_description') }}
</p>
</BaseHeading>
<BaseSwitchSection
v-model="dueDateAutoField"

View File

@ -1,10 +1,12 @@
<template>
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.invoices.retrospective_edits_description')
"
>
{{ $tc('settings.customization.invoices.retrospective_edits') }}
</h6>
<p class="mt-1 text-sm text-gray-500">
{{ $t('settings.customization.invoices.retrospective_edits_description') }}
</p>
</BaseHeading>
<BaseInputGroup required>
<BaseRadio

View File

@ -1,11 +1,13 @@
<template>
<form @submit.prevent="submitForm">
<h6 class="text-gray-900 text-lg font-medium">
<BaseHeading
type="heading-title"
:subtitle="
$t('settings.customization.payments.default_formats_description')
"
>
{{ $t('settings.customization.payments.default_formats') }}
</h6>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.payments.default_formats_description') }}
</p>
</BaseHeading>
<BaseInputGroup
:label="$t('settings.customization.payments.default_payment_email_body')"

View File

@ -15,12 +15,12 @@
v-if="label"
:for="id"
:class="`font-medium ${
disabled ? 'text-gray-400 cursor-not-allowed' : 'text-gray-600'
disabled ? 'text-gray-400 cursor-not-allowed' : 'text-gray-600 dark:text-white'
} cursor-pointer `"
>
{{ label }}
</label>
<p v-if="description" class="text-gray-500">{{ description }}</p>
<p v-if="description" class="text-gray-500 dark:text-gray-400">{{ description }}</p>
</div>
</div>
</template>
@ -51,7 +51,7 @@ const props = defineProps({
},
checkboxClass: {
type: String,
default: 'w-4 h-4 border-gray-300 rounded cursor-pointer',
default: 'w-4 h-4 border-gray-300 rounded cursor-pointer dark:bg-gray-600 dark:border-gray-500',
},
setInitialValue: {
type: Boolean,

View File

@ -40,6 +40,7 @@
font-normal
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-700/60
rounded
ml-1
py-0.5

View File

@ -1,7 +1,7 @@
<template>
<div
v-if="address"
class="text-sm font-bold leading-5 text-black non-italic space-y-1"
class="text-sm font-bold leading-5 text-black non-italic space-y-1 dark:text-white"
>
<p v-if="address?.address_street_1">{{ address?.address_street_1 }},</p>

View File

@ -20,6 +20,7 @@
border border-gray-200 border-solid
min-h-[170px]
rounded-md
dark:border-white/10 dark:bg-gray-800/50
"
@click.stop
>
@ -27,7 +28,7 @@
<BaseText
:text="selectedCustomer.name"
:length="30"
class="flex-1 text-base font-medium text-left text-gray-900"
class="flex-1 text-base font-medium text-left text-gray-900 dark:text-white"
/>
<div class="flex">
<a
@ -192,6 +193,7 @@
border border-gray-200 border-solid
rounded-md
min-h-[170px]
dark:border-white/10 dark:bg-gray-700/60 dark:text-white
"
>
<BaseIcon
@ -207,11 +209,12 @@
bg-gray-200
rounded-full
font-base
dark:bg-gray-700
"
/>
<div class="mt-1">
<label class="text-lg font-medium text-gray-900">
<label class="text-lg font-medium text-gray-900 dark:text-white">
{{ $t('customers.new_customer') }}
<span class="text-red-500"> * </span>
</label>
@ -246,6 +249,11 @@
shadow-lg
ring-1 ring-black ring-opacity-5
bg-white
dark:border
dark:border-white/10
dark:bg-gray-800
dark:text-white
dark:shadow-glass
"
>
<div class="relative">
@ -265,6 +273,7 @@
overflow-auto
list
border-t border-gray-200
dark:border-white/10
"
>
<li
@ -280,6 +289,7 @@
hover:cursor-pointer hover:bg-gray-100
focus:outline-none focus:bg-gray-100
last:border-b-0
dark:border-white/10 dark:hover:bg-gray-700/30
"
@click="selectNewCustomer(customer.id, close)"
>
@ -299,6 +309,7 @@
bg-gray-300
rounded-full
avatar
dark:bg-gray-600
"
>
{{ initGenerator(customer.name) }}
@ -333,9 +344,9 @@
</li>
<div
v-if="customerStore.customers.length === 0"
class="flex justify-center p-5 text-gray-400"
class="flex justify-center p-5 text-gray-400 dark:text-gray-300"
>
<label class="text-base text-gray-500 cursor-pointer">
<label class="text-base text-gray-500 cursor-pointer dark:text-gray-300">
{{ $t('customers.no_customers_found') }}
</label>
</div>
@ -357,6 +368,10 @@
border-none
outline-none
focus:bg-gray-300
dark:bg-gray-600/70
dark:shadow-glass
dark:backdrop-blur-xl
dark:hover:bg-gray-600/80
"
@click="openCustomerModal"
>

View File

@ -10,7 +10,7 @@
{{ label }}
</BaseLabel>
<p class="text-sm font-bold leading-5 text-black non-italic">
<p class="text-sm font-bold leading-5 text-black non-italic dark:text-white">
{{ value }}
<slot />

View File

@ -1,3 +1,3 @@
<template>
<hr class="w-full text-gray-300" />
<hr class="w-full text-gray-300 dark:bg-gray-600" />
</template>

View File

@ -1,13 +1,17 @@
<template>
<div class="flex flex-col items-center justify-center mt-16">
<div class="relative">
<BaseDarkHighlight class="bg-highlight/[.07] top-2" />
<div class="relative z-5 flex flex-col items-center">
<div class="flex flex-col items-center justify-center">
<slot></slot>
<slot />
</div>
<div class="mt-2">
<label class="font-medium">{{ title }}</label>
</div>
<div class="mt-2">
<label class="text-gray-500">
<div class="mt-2 text-center md:text-left">
<label class="text-gray-500 dark:text-gray-400">
{{ description }}
</label>
</div>
@ -15,6 +19,8 @@
<slot name="actions" />
</div>
</div>
</div>
</div>
</template>
<script setup>

View File

@ -1,11 +1,18 @@
<template>
<div class="rounded-md bg-red-50 p-4">
<div
class="
rounded-md
bg-red-50
p-4
dark:border dark:border-red-400 dark:bg-transparent
"
>
<div class="flex">
<div class="shrink-0">
<XCircleIcon class="h-5 w-5 text-red-400" aria-hidden="true" />
<XCircleIcon class="h-5 w-5 text-red-400 dark:text-red-500" aria-hidden="true" />
</div>
<div class="ml-3">
<h3 class="text-sm font-medium text-red-800">
<h3 class="text-sm font-medium text-red-800 dark:text-red-500">
{{ errorTitle }}
</h3>
<div class="mt-2 text-sm text-red-700">

View File

@ -2,6 +2,21 @@
<h6 :class="typeClass">
<slot />
</h6>
<p
v-if="subtitle"
class="
mt-2
text-sm
leading-snug
text-gray-500
dark:text-gray-400
max-w-[680px]
"
>
{{ subtitle }}
</p>
</template>
<script setup>
@ -14,12 +29,16 @@ const props = defineProps({
return ['section-title', 'heading-title'].indexOf(value) !== -1
},
},
subtitle: {
type: String,
default: '',
},
})
const typeClass = computed(() => {
return {
'text-gray-900 text-lg font-medium': props.type === 'heading-title',
'text-gray-500 uppercase text-base': props.type === 'section-title',
'text-gray-900 text-lg font-medium dark:text-white': props.type === 'heading-title',
'text-gray-500 uppercase text-base dark:text-gray-300': props.type === 'section-title',
}
})
</script>

View File

@ -12,6 +12,7 @@
bg-gray-200
border border-gray-200 border-solid
rounded
dark:bg-gray-900/70 dark:border-gray-700
"
>
{{ item.name }}

View File

@ -39,7 +39,7 @@ const props = defineProps({
inputClass: {
type: String,
default:
'font-base block w-full sm:text-sm border-gray-200 rounded-md text-black',
'font-base block w-full sm:text-sm border-gray-200 rounded-md text-black dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:placeholder-gray-500',
},
disabled: {
type: Boolean,
@ -86,7 +86,7 @@ const currencyBindings = computed(() => {
const invalidClass = computed(() => {
if (props.invalid) {
return 'border-red-500 ring-red-500 focus:ring-red-500 focus:border-red-500'
return 'border-red-500 dark:border-red-500 ring-red-500 dark:ring-red-500 focus:ring-red-500 dark:focus:ring-red-500 focus:border-red-500 dark:focus:border-red-500'
}
return 'focus:ring-primary-400 focus:border-primary-400'
})

View File

@ -19,7 +19,7 @@
]"
aria-hidden="true"
>
<span class="rounded-full bg-white w-1.5 h-1.5" />
<span class="rounded-full bg-white w-1.5 h-1.5" :class="{ 'bg-white': checked }"/>
</span>
<div class="flex flex-col ml-3">
<RadioGroupLabel
@ -70,7 +70,7 @@ const props = defineProps({
},
unCheckedStateClass: {
type: String,
default: 'bg-white ',
default: 'bg-white dark:bg-transparent',
},
optionGroupActiveStateClass: {
type: String,
@ -78,16 +78,16 @@ const props = defineProps({
},
checkedStateLabelClass: {
type: String,
default: 'text-primary-900 ',
default: 'text-primary-900 dark:text-primary-400',
},
unCheckedStateLabelClass: {
type: String,
default: 'text-gray-900',
default: 'text-gray-900 dark:text-white',
},
optionGroupClass: {
type: String,
default:
'h-4 w-4 mt-0.5 cursor-pointer rounded-full border flex items-center justify-center',
'h-4 w-4 mt-0.5 cursor-pointer rounded-full border flex items-center justify-center dark:border-gray-600',
},
optionGroupLabelClass: {
type: String,

View File

@ -11,6 +11,10 @@
bg-gray-200
cursor-pointer
text-primary-400
dark:bg-gray-600/70
dark:backdrop-blur-xl
dark:shadow-glass
dark:hover:bg-gray-600/80
"
>
<slot />

View File

@ -12,7 +12,7 @@
>
<ListboxLabel
v-if="label"
class="block text-sm not-italic font-medium text-gray-800 mb-0.5"
class="block text-sm not-italic font-medium text-gray-800 mb-0.5 dark:text-white"
>
{{ label }}
</ListboxLabel>
@ -28,14 +28,13 @@
pr-10
text-left
bg-white
border border-gray-200
dark:bg-gray-700
rounded-md
shadow-sm
cursor-default
focus:outline-none
focus:ring-1
focus:ring-primary-500
focus:border-primary-500
focus:ring-primary-400 focus:border-primary-400
sm:text-sm
"
>
@ -89,6 +88,7 @@
ring-1 ring-black ring-opacity-5
focus:outline-none
sm:text-sm
dark:bg-gray-700
"
>
<ListboxOption
@ -100,7 +100,7 @@
>
<li
:class="[
active ? 'text-white bg-primary-600' : 'text-gray-900',
active ? 'text-white bg-primary-600' : 'text-gray-900 dark:text-white',
'cursor-default select-none relative py-2 pl-3 pr-9',
]"
>

View File

@ -11,7 +11,7 @@
mt-2
text-sm
leading-snug
text-left text-gray-500
text-left text-gray-500 dark:text-gray-400
max-w-[680px]
"
>

View File

@ -45,7 +45,7 @@ const props = defineProps({
defaultInputClass: {
type: String,
default:
'box-border w-full px-3 py-2 text-sm not-italic font-normal leading-snug text-left text-black placeholder-gray-400 bg-white border border-gray-200 border-solid rounded outline-none',
'box-border w-full px-3 py-2 text-sm not-italic font-normal leading-snug text-left text-black placeholder-gray-400 bg-white border border-gray-200 dark:border-gray-600 border-solid rounded outline-none dark:bg-gray-700 dark:text-white',
},
autosize: {
type: Boolean,

View File

@ -10,13 +10,14 @@
bg-white
border-t border-gray-200
sm:px-6
dark:bg-transparent dark:border-white/10
"
>
<div class="flex justify-between flex-1 sm:hidden">
<a
href="#"
:class="{
'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400':
'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500':
pagination.currentPage === 1,
}"
class="
@ -32,6 +33,7 @@
border border-gray-300
rounded-md
hover:bg-gray-50
dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300
"
@click="pageClicked(pagination.currentPage - 1)"
>
@ -40,7 +42,7 @@
<a
href="#"
:class="{
'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400':
'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500':
pagination.currentPage === pagination.totalPages,
}"
class="
@ -57,6 +59,7 @@
border border-gray-300
rounded-md
hover:bg-gray-50
dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300
"
@click="pageClicked(pagination.currentPage + 1)"
>
@ -65,12 +68,12 @@
</div>
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700">
<p class="text-sm text-gray-700 dark:text-gray-400">
Showing
{{ ' ' }}
<span
v-if="pagination.limit && pagination.currentPage"
class="font-medium"
class="font-medium dark:text-gray-200"
>
{{
pagination.currentPage * pagination.limit - (pagination.limit - 1)
@ -81,7 +84,7 @@
{{ ' ' }}
<span
v-if="pagination.limit && pagination.currentPage"
class="font-medium"
class="font-medium dark:text-gray-200"
>
<span
v-if="
@ -98,7 +101,7 @@
{{ ' ' }}
of
{{ ' ' }}
<span v-if="pagination.totalCount" class="font-medium">
<span v-if="pagination.totalCount" class="font-medium dark:text-gray-200">
{{ pagination.totalCount }}
</span>
{{ ' ' }}
@ -113,7 +116,7 @@
<a
href="#"
:class="{
'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400':
'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500':
pagination.currentPage === 1,
}"
class="
@ -129,6 +132,7 @@
border border-gray-300
rounded-l-md
hover:bg-gray-50
dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300
"
@click="pageClicked(pagination.currentPage - 1)"
>
@ -140,9 +144,9 @@
href="#"
aria-current="page"
:class="{
'z-10 bg-primary-50 border-primary-500 text-primary-600':
'z-10 bg-primary-50 border-primary-500 text-primary-600 dark:bg-primary-500 dark:text-white':
isActive(1),
'bg-white border-gray-300 text-gray-500 hover:bg-gray-50':
'bg-white border-gray-300 text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300':
!isActive(1),
}"
class="
@ -173,6 +177,7 @@
text-gray-700
bg-white
border border-gray-300
dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300
"
>
...
@ -182,9 +187,9 @@
:key="page"
href="#"
:class="{
'z-10 bg-primary-50 border-primary-500 text-primary-600':
'z-10 bg-primary-50 border-primary-500 text-primary-600 dark:bg-primary-500 dark:text-white':
isActive(page),
'bg-white border-gray-300 text-gray-500 hover:bg-gray-50':
'bg-white border-gray-300 text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300':
!isActive(page),
disabled: page === '...',
}"
@ -220,6 +225,7 @@
text-gray-700
bg-white
border border-gray-300
dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300
"
>
...
@ -229,9 +235,9 @@
href="#"
aria-current="page"
:class="{
'z-10 bg-primary-50 border-primary-500 text-primary-600':
'z-10 bg-primary-50 border-primary-500 text-primary-600 dark:bg-primary-500 dark:text-white':
isActive(pagination.totalPages),
'bg-white border-gray-300 text-gray-500 hover:bg-gray-50':
'bg-white border-gray-300 text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300':
!isActive(pagination.totalPages),
}"
class="
@ -263,9 +269,10 @@
border border-gray-300
rounded-r-md
hover:bg-gray-50
dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300
"
:class="{
'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400':
'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500':
pagination.currentPage === pagination.totalPages,
}"
@click="pageClicked(pagination.currentPage + 1)"

View File

@ -5,27 +5,30 @@
viewBox="0 0 50 50"
fill="none"
xmlns="http://www.w3.org/2000/svg"
:class="colorClass"
>
<circle cx="25" cy="25" r="25" fill="#EAF1FB" />
<circle cx="25" cy="25" r="25" :class="bgColor" />
<path
d="M17.8 17.8C17.1635 17.8 16.5531 18.0529 16.103 18.503C15.6529 18.9531 15.4 19.5635 15.4 20.2V21.4H34.6V20.2C34.6 19.5635 34.3472 18.9531 33.8971 18.503C33.447 18.0529 32.8365 17.8 32.2 17.8H17.8Z"
fill="currentColor"
:class="color"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M34.6 23.8H15.4V29.8C15.4 30.4366 15.6529 31.047 16.103 31.4971C16.5531 31.9472 17.1635 32.2 17.8 32.2H32.2C32.8365 32.2 33.447 31.9472 33.8971 31.4971C34.3472 31.047 34.6 30.4366 34.6 29.8V23.8ZM17.8 28.6C17.8 28.2818 17.9265 27.9766 18.1515 27.7515C18.3765 27.5265 18.6818 27.4 19 27.4H20.2C20.5183 27.4 20.8235 27.5265 21.0486 27.7515C21.2736 27.9766 21.4 28.2818 21.4 28.6C21.4 28.9183 21.2736 29.2235 21.0486 29.4486C20.8235 29.6736 20.5183 29.8 20.2 29.8H19C18.6818 29.8 18.3765 29.6736 18.1515 29.4486C17.9265 29.2235 17.8 28.9183 17.8 28.6ZM23.8 27.4C23.4818 27.4 23.1765 27.5265 22.9515 27.7515C22.7265 27.9766 22.6 28.2818 22.6 28.6C22.6 28.9183 22.7265 29.2235 22.9515 29.4486C23.1765 29.6736 23.4818 29.8 23.8 29.8H25C25.3183 29.8 25.6235 29.6736 25.8486 29.4486C26.0736 29.2235 26.2 28.9183 26.2 28.6C26.2 28.2818 26.0736 27.9766 25.8486 27.7515C25.6235 27.5265 25.3183 27.4 25 27.4H23.8Z"
fill="currentColor"
:class="color"
/>
</svg>
</template>
<script setup>
const props = defineProps({
colorClass: {
color: {
type: String,
default: 'text-primary-500',
default: 'fill-primary-500 dark:fill-white',
},
bgColor: {
type: String,
default: 'fill-gray-100 dark:fill-primary-400',
},
})
</script>

View File

@ -1,6 +1,8 @@
<template>
<div
:class="success || info ? 'bg-white' : 'bg-red-50'"
:class="success || info
? 'bg-white dark:border dark:border-white/10 dark:text-white dark:bg-gray-800/[.80] dark:shadow-glass dark:backdrop-blur-sm'
: 'bg-red-50 dark:bg-red-400/[.70] dark:shadow-glass dark:backdrop-blur-sm'"
class="
max-w-sm
mb-3
@ -48,7 +50,7 @@
</svg>
<svg
v-if="error"
class="w-6 h-6 text-red-400"
class="w-6 h-6 text-red-400 dark:text-white"
fill="currentColor"
viewBox="0 0 24 24"
>
@ -62,7 +64,9 @@
<div class="flex-1 w-0 ml-3 text-left">
<p
:class="`text-sm leading-5 font-medium ${
success || info ? 'text-gray-900' : 'text-red-800'
success || info
? 'text-gray-900 dark:text-white'
: 'text-red-800 dark:text-white'
}`"
>
{{
@ -75,7 +79,9 @@
</p>
<p
:class="`mt-1 text-sm leading-5 ${
success || info ? 'text-gray-500' : 'text-red-700'
success || info
? 'text-gray-500 dark:text-gray-400'
: 'text-red-700 dark:text-red-200'
}`"
>
{{
@ -92,7 +98,7 @@
:class="
success || info
? ' text-gray-400 focus:text-gray-500'
: 'text-red-400 focus:text-red-500'
: 'text-red-400 focus:text-red-500 dark:text-red-100'
"
class="
inline-flex

View File

@ -2,8 +2,9 @@
<Disclosure
v-slot="{ open }"
as="nav"
class="bg-white shadow-sm fixed top-0 left-0 z-20 w-full"
class="bg-white shadow-sm fixed top-0 left-0 z-20 w-full dark:bg-gray-800"
>
<BaseDarkHighlight />
<div class="mx-auto px-8">
<div class="flex justify-between h-16 w-full">
<div class="flex">
@ -33,8 +34,8 @@
:to="`/${globalStore.companySlug}${item.link}`"
:class="[
hasActiveUrl(item.link)
? 'border-primary-500 text-primary-600'
: 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300',
? 'border-primary-500 text-primary-600 dark:text-primary-400'
: 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-200',
'inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium',
]"
>
@ -43,20 +44,6 @@
</div>
</div>
<div class="hidden sm:ml-6 sm:flex sm:items-center">
<button
type="button"
class="
bg-white
p-1
rounded-full
text-gray-400
hover:text-gray-500
focus:outline-none
focus:ring-2
focus:ring-offset-2
focus:ring-primary-500
"
></button>
<!-- Profile dropdown -->
@ -85,7 +72,7 @@
<router-link :to="{ name: 'customer.profile' }">
<BaseDropdownItem>
<CogIcon
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500 dark:group-hover:text-gray-200"
aria-hidden="true"
/>
{{ $t('navigation.settings') }}
@ -94,7 +81,7 @@
<BaseDropdownItem @click="logout">
<LogoutIcon
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500 dark:group-hover:text-gray-200"
aria-hidden="true"
/>
{{ $t('navigation.logout') }}
@ -118,6 +105,8 @@
focus:ring-2
focus:ring-offset-2
focus:ring-primary-500
dark:bg-gray-700
dark:focus:ring-offset-gray-900
"
>
<span class="sr-only">Open main menu</span>
@ -136,15 +125,15 @@
:to="`/${globalStore.companySlug}${item.link}`"
:class="[
hasActiveUrl(item.link)
? 'bg-primary-50 border-primary-500 text-primary-700'
: 'border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800',
? 'bg-primary-50 border-primary-500 text-primary-700 dark:bg-gray-700 dark:text-primary-400'
: 'border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800 dark:text-gray-200 dark:hover:bg-gray-700',
'block pl-3 pr-4 py-2 border-l-4 text-base font-medium',
]"
:aria-current="item.current ? 'page' : undefined"
>{{ item.title }}
</router-link>
</div>
<div class="pt-4 pb-3 border-t border-gray-200">
<div class="pt-4 pb-3 border-t border-gray-200 dark:border-gray-500">
<div class="flex items-center px-4">
<div class="shrink-0">
<img class="h-10 w-10 rounded-full" :src="previewAvatar" alt="" />
@ -153,26 +142,10 @@
<div class="text-base font-medium text-gray-800">
{{ globalStore.currentUser.title }}
</div>
<div class="text-sm font-medium text-gray-500">
<div class="text-sm font-medium text-gray-500 dark:text-gray-200">
{{ globalStore.currentUser.email }}
</div>
</div>
<button
type="button"
class="
ml-auto
bg-white
shrink-0
p-1
rounded-full
text-gray-400
hover:text-gray-500
focus:outline-none
focus:ring-2
focus:ring-offset-2
focus:ring-primary-500
"
></button>
</div>
<div class="mt-3 space-y-1">
<router-link
@ -182,7 +155,7 @@
:class="[
hasActiveUrl(item.link)
? 'bg-primary-50 border-primary-500 text-primary-700'
: 'border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800',
: 'border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800 dark:text-gray-200 dark:hover:bg-gray-700',
'block pl-3 pr-4 py-2 border-l-4 text-base font-medium',
]"
>{{ item.title }}</router-link

View File

@ -12,18 +12,24 @@
hover:bg-gray-50
xl:p-4
lg:col-span-2
dark:backdrop-blur-xl
dark:shadow-glass
dark:border
dark:border-white/10
dark:bg-gray-800/70
"
:class="{ 'lg:!col-span-3': large }"
:to="route"
>
<div>
<span class="text-xl font-semibold leading-tight text-black xl:text-3xl">
<span class="text-xl font-semibold leading-tight text-black xl:text-3xl dark:text-white">
<slot />
</span>
<span class="block mt-1 text-sm leading-tight text-gray-500 xl:text-lg">
<span class="block mt-1 text-sm leading-tight text-gray-500 xl:text-lg dark:text-gray-300">
{{ label }}
</span>
</div>
<BaseDarkHighlight class="!bg-highlight/[.17] !top-5" />
<div class="flex items-center">
<component :is="iconComponent" class="w-10 h-10 xl:w-12 xl:h-12" />
</div>

View File

@ -1,7 +1,7 @@
<template>
<BaseContentPlaceholders
:rounded="true"
class="relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-3 xl:p-4"
class="relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-3 xl:p-4 dark:bg-gray-800"
>
<div>
<BaseContentPlaceholdersText

View File

@ -12,6 +12,7 @@
shadow
lg:col-span-2
xl:p-4
dark:bg-gray-800
"
>
<div>

View File

@ -119,11 +119,11 @@
<template #cell-actions="{ row }">
<BaseDropdown>
<template #activator>
<BaseIcon name="DotsHorizontalIcon" class="h-5 text-gray-500" />
<BaseIcon name="DotsHorizontalIcon" class="h-5 text-gray-500 dark:text-gray-200" />
</template>
<router-link :to="`estimates/${row.data.id}/view`">
<BaseDropdownItem>
<BaseIcon name="EyeIcon" class="h-5 mr-3 text-gray-600" />
<BaseIcon name="EyeIcon" class="h-5 mr-3 text-gray-600 dark:text-gray-200" />
{{ $t('general.view') }}
</BaseDropdownItem>
</router-link>

View File

@ -25,7 +25,7 @@
<!-- Sidebar -->
<div
class="fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"
class="fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block dark:bg-gray-800"
>
<div
class="
@ -36,6 +36,7 @@
pt-8
pb-6
border border-gray-200 border-solid
dark:border-gray-600
"
>
<BaseInput
@ -70,6 +71,7 @@
mb-2
text-sm
border-b border-gray-200 border-solid
dark:border-gray-600
"
>
{{ $t('general.sort_by') }}
@ -124,7 +126,7 @@
</div>
</BaseDropdown>
<BaseButton class="ml-1" variant="white" @click="sortData">
<BaseButton class="ml-1" variant="gray" @click="sortData">
<BaseIcon v-if="getOrderBy" name="SortAscendingIcon" class="h-5" />
<BaseIcon v-else name="SortDescendingIcon" class="h-5" />
</BaseButton>
@ -138,6 +140,7 @@
overflow-y-scroll
border-l border-gray-200 border-solid
sw-scroll
dark:border-gray-600
"
>
<router-link
@ -146,9 +149,9 @@
:key="index"
:to="`/${globalStore.companySlug}/customer/estimates/${estimate.id}/view`"
:class="[
'flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent',
'flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent dark:hover:bg-gray-700',
{
'bg-gray-100 border-l-4 border-primary-500 border-solid':
'bg-gray-100 border-l-4 border-primary-500 border-solid dark:bg-gray-700':
hasActiveUrl(estimate.id),
},
]"
@ -164,6 +167,7 @@
leading-5
text-gray-500
capitalize
dark:text-gray-400
"
>
{{ estimate.estimate_number }}
@ -184,11 +188,12 @@
leading-8
text-right text-gray-900
block
dark:text-white
"
:amount="estimate.total"
:currency="estimate.currency"
/>
<div class="text-sm text-right text-gray-500 non-italic">
<div class="text-sm text-right text-gray-500 dark:text-gray-400 non-italic">
{{ estimate.formatted_estimate_date }}
</div>
</div>
@ -196,7 +201,7 @@
<p
v-if="!estimateStore.estimates.length"
class="flex justify-center px-4 mt-5 text-sm text-gray-600"
class="flex justify-center px-4 mt-5 text-sm text-gray-600 dark:text-gray-300"
>
{{ $t('estimates.no_matching_estimates') }}
</p>

View File

@ -126,11 +126,11 @@
<template #cell-actions="{ row }">
<BaseDropdown>
<template #activator>
<BaseIcon name="DotsHorizontalIcon" class="h-5 text-gray-500" />
<BaseIcon name="DotsHorizontalIcon" class="h-5 text-gray-500 dark:text-gray-200" />
</template>
<router-link :to="`invoices/${row.data.id}/view`">
<BaseDropdownItem>
<BaseIcon name="EyeIcon" class="h-5 mr-3 text-gray-600" />
<BaseIcon name="EyeIcon" class="h-5 mr-3 text-gray-600 dark:text-gray-200" />
{{ $t('general.view') }}
</BaseDropdownItem>
</router-link>

View File

@ -31,7 +31,7 @@
<!-- Sidebar -->
<div
class="fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"
class="fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block dark:bg-gray-800"
>
<div
class="
@ -42,6 +42,7 @@
pt-8
pb-6
border border-gray-200 border-solid
dark:border-gray-600
"
>
<BaseInput
@ -76,6 +77,7 @@
mb-2
text-sm
border-b border-gray-200 border-solid
dark:border-gray-600
"
>
{{ $t('general.sort_by') }}
@ -130,7 +132,7 @@
</div>
</BaseDropdown>
<BaseButton class="ml-1" variant="white" @click="sortData">
<BaseButton class="ml-1" variant="gray" @click="sortData">
<BaseIcon v-if="getOrderBy" name="SortAscendingIcon" class="h-5" />
<BaseIcon v-else name="SortDescendingIcon" class="h-5" />
</BaseButton>
@ -144,6 +146,7 @@
overflow-y-scroll
border-l border-gray-200 border-solid
sw-scroll
dark:border-gray-600
"
>
<router-link
@ -152,9 +155,9 @@
:key="index"
:to="`/${globalStore.companySlug}/customer/invoices/${invoice.id}/view`"
:class="[
'flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent',
'flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent dark:hover:bg-gray-700',
{
'bg-gray-100 border-l-4 border-primary-500 border-solid':
'bg-gray-100 border-l-4 border-primary-500 border-solid dark:bg-gray-700':
hasActiveUrl(invoice.id),
},
]"
@ -170,6 +173,7 @@
text-gray-500
capitalize
text-md
dark:text-gray-400
"
>
{{ invoice.invoice_number }}
@ -189,12 +193,13 @@
leading-8
text-right text-gray-900
block
dark:text-white
"
:amount="invoice.total"
:currency="invoice.currency"
/>
<div class="text-sm text-right text-gray-500 non-italic">
<div class="text-sm text-right text-gray-500 dark:text-gray-400 non-italic">
{{ invoice.formatted_invoice_date }}
</div>
</div>
@ -202,7 +207,7 @@
<p
v-if="!invoiceStore.invoices.length"
class="flex justify-center px-4 mt-5 text-sm text-gray-600"
class="flex justify-center px-4 mt-5 text-sm text-gray-600 dark:text-gray-300"
>
{{ $t('invoices.no_matching_invoices') }}
</p>

View File

@ -111,11 +111,11 @@
<template #cell-actions="{ row }">
<BaseDropdown>
<template #activator>
<BaseIcon name="DotsHorizontalIcon" class="w-5 text-gray-500" />
<BaseIcon name="DotsHorizontalIcon" class="w-5 text-gray-500 dark:text-gray-200" />
</template>
<router-link :to="`payments/${row.data.id}/view`">
<BaseDropdownItem>
<BaseIcon name="EyeIcon" class="h-5 mr-3 text-gray-600" />
<BaseIcon name="EyeIcon" class="h-5 mr-3 text-gray-600 dark:text-gray-200" />
{{ $t('general.view') }}
</BaseDropdownItem>
</router-link>

View File

@ -19,7 +19,7 @@
<!-- Sidebar -->
<div
class="fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"
class="fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block dark:bg-gray-800"
>
<div
class="
@ -30,6 +30,7 @@
pt-8
pb-6
border border-gray-200 border-solid
dark:border-gray-600
"
>
<BaseInput
@ -64,6 +65,7 @@
mb-2
text-sm
border-b border-gray-200 border-solid
dark:border-gray-600
"
>
{{ $t('general.sort_by') }}
@ -118,7 +120,7 @@
</div>
</BaseDropdown>
<BaseButton class="ml-1" variant="white" @click="sortData">
<BaseButton class="ml-1" variant="gray" @click="sortData">
<BaseIcon v-if="getOrderBy" name="SortAscendingIcon" class="h-5" />
<BaseIcon v-else name="SortDescendingIcon" class="h-5" />
</BaseButton>
@ -132,6 +134,7 @@
overflow-y-scroll
border-l border-gray-200 border-solid
sw-scroll
dark:border-gray-600
"
>
<router-link
@ -140,9 +143,9 @@
:key="index"
:to="`/${globalStore.companySlug}/customer/payments/${payment.id}/view`"
:class="[
'flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent',
'flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent dark:hover:bg-gray-700',
{
'bg-gray-100 border-l-4 border-primary-500 border-solid':
'bg-gray-100 border-l-4 border-primary-500 border-solid dark:bg-gray-700':
hasActiveUrl(payment.id),
},
]"
@ -158,6 +161,7 @@
leading-5
text-gray-500
capitalize
dark:text-gray-400
"
>
{{ payment.payment_number }}
@ -174,12 +178,13 @@
leading-8
text-right text-gray-900
block
dark:text-white
"
:amount="payment.amount"
:currency="payment.currency"
/>
<div class="text-sm text-right text-gray-500 non-italic">
<div class="text-sm text-right text-gray-500 dark:text-gray-400 non-italic">
{{ payment.formatted_payment_date }}
</div>
</div>
@ -187,7 +192,7 @@
<p
v-if="!paymentStore.payments.length"
class="flex justify-center px-4 mt-5 text-sm text-gray-600"
class="flex justify-center px-4 mt-5 text-sm text-gray-600 dark:text-gray-300"
>
{{ $t('payments.no_matching_payments') }}
</p>