Compare commits

...

17 Commits

Author SHA1 Message Date
6740f66903 fix remaining label for dark mode 2023-03-30 13:43:41 +05:30
29430ccc5d fix dark issue in customer view page 2023-03-29 17:52:55 +05:30
065775633d add dark mode for label 2023-03-29 17:01:21 +05:30
9249105ad6 Add dark mode in all StatusBadge (#1198)
* Add dark mode in all StatusBadge

* add dark mode in InvoiceInformationCard

* fix padding issue
2023-03-29 11:43:54 +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
51 changed files with 313 additions and 200 deletions

View File

@ -7,6 +7,7 @@
py-2 py-2
rounded-lg rounded-lg
bg-opacity-40 bg-gray-300 bg-opacity-40 bg-gray-300
dark:bg-gray-700 dark:border-gray-600
whitespace-nowrap whitespace-nowrap
flex-col flex-col
mt-1 mt-1
@ -19,6 +20,7 @@
text-sm text-sm
font-medium font-medium
text-black text-black
dark:text-white
truncate truncate
select-all select-color select-all select-color
" "

View File

@ -91,6 +91,7 @@
leading-tight leading-tight
text-gray-700 text-gray-700
cursor-pointer cursor-pointer
dark:text-gray-400
" "
> >
{{ note.name }} {{ note.name }}

View File

@ -5,7 +5,7 @@
> >
<SelectNotePopup :type="type" @select="onSelectNote" /> <SelectNotePopup :type="type" @select="onSelectNote" />
</div> </div>
<label class="text-gray-800 font-medium mb-4 text-sm"> <label class="text-gray-800 font-medium mb-4 text-sm dark:text-gray-300">
{{ $t('invoices.notes') }} {{ $t('invoices.notes') }}
</label> </label>
<BaseCustomInput <BaseCustomInput

View File

@ -29,7 +29,16 @@
<label <label
v-else v-else
class="flex items-center justify-center m-0 text-lg text-black uppercase " class="
flex
items-center
justify-center
m-0
text-lg
text-black
dark:text-white
uppercase
"
> >
<BaseFormatMoney <BaseFormatMoney
:amount="store.getSubTotal" :amount="store.getSubTotal"
@ -59,7 +68,16 @@
<label <label
v-else-if="store[storeProp].tax_per_item === 'YES'" v-else-if="store[storeProp].tax_per_item === 'YES'"
class="flex items-center justify-center m-0 text-lg text-black uppercase " class="
flex
items-center
justify-center
m-0
text-lg
text-black
dark:text-white
uppercase
"
> >
<BaseFormatMoney :amount="tax.amount" :currency="defaultCurrency" /> <BaseFormatMoney :amount="tax.amount" :currency="defaultCurrency" />
</label> </label>
@ -166,7 +184,15 @@
</div> </div>
<div <div
class="flex items-center justify-between w-full pt-2 mt-5 border-t border-gray-200 border-solid " class="
flex
items-center
justify-between
w-full
pt-2
mt-5
border-t border-gray-200 border-solid
"
> >
<BaseContentPlaceholders v-if="isLoading"> <BaseContentPlaceholders v-if="isLoading">
<BaseContentPlaceholdersText :lines="1" class="w-16 h-5" /> <BaseContentPlaceholdersText :lines="1" class="w-16 h-5" />

View File

@ -1,9 +1,18 @@
<template> <template>
<div class="flex items-center justify-between w-full mt-2 text-sm"> <div class="flex items-center justify-between w-full mt-2 text-sm">
<label class="font-semibold leading-5 text-gray-500 uppercase"> <label class="font-semibold leading-5 text-gray-500 uppercase dark:text-gray-300">
{{ tax.name }} ({{ tax.percent }} %) {{ tax.name }} ({{ tax.percent }} %)
</label> </label>
<label class="flex items-center justify-center text-lg text-black"> <label
class="
flex
items-center
justify-center
text-lg
text-black
dark:text-white
"
>
<BaseFormatMoney :amount="tax.amount" :currency="currency" /> <BaseFormatMoney :amount="tax.amount" :currency="currency" />
<BaseIcon <BaseIcon

View File

@ -96,6 +96,7 @@
leading-tight leading-tight
text-gray-700 text-gray-700
cursor-pointer cursor-pointer
dark:text-gray-300
" "
> >
{{ taxType.name }} {{ taxType.name }}
@ -108,6 +109,7 @@
font-semibold font-semibold
text-gray-700 text-gray-700
cursor-pointer cursor-pointer
dark:text-gray-300
" "
> >
{{ taxType.percent }} % {{ taxType.percent }} %

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<label class="flex text-gray-800 font-medium text-sm mb-2"> <label class="flex text-gray-800 font-medium text-sm mb-2 dark:text-gray-300">
{{ $t('general.select_template') }} {{ $t('general.select_template') }}
<span class="text-sm text-red-500"> *</span> <span class="text-sm text-red-500"> *</span>
</label> </label>

View File

@ -122,7 +122,7 @@
<BaseTab :title="$t('customers.portal_access')"> <BaseTab :title="$t('customers.portal_access')">
<BaseInputGrid class="col-span-5 lg:col-span-4"> <BaseInputGrid class="col-span-5 lg:col-span-4">
<div class="md:col-span-2"> <div class="md:col-span-2">
<p class="text-sm text-gray-500"> <p class="text-sm text-gray-500 dark:text-gray-300">
{{ $t('customers.portal_access_text') }} {{ $t('customers.portal_access_text') }}
</p> </p>

View File

@ -171,7 +171,7 @@
<BaseInputGrid class="col-span-5 lg:col-span-4"> <BaseInputGrid class="col-span-5 lg:col-span-4">
<div class="md:col-span-2"> <div class="md:col-span-2">
<p class="text-sm text-gray-500"> <p class="text-sm text-gray-500 dark:text-gray-300">
{{ $t('customers.portal_access_text') }} {{ $t('customers.portal_access_text') }}
</p> </p>

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="pt-6 mt-5 border-t border-solid lg:pt-8 md:pt-4 border-gray-200"> <div class="pt-6 mt-5 border-t border-solid lg:pt-8 md:pt-4 border-gray-200 dark:border-gray-600">
<!-- Basic Info --> <!-- Basic Info -->
<BaseHeading> <BaseHeading>
{{ $t('customers.basic_info') }} {{ $t('customers.basic_info') }}

View File

@ -53,7 +53,7 @@
</div> </div>
</div> </div>
<div v-else class="mt-24"> <div v-else class="mt-24">
<label class="flex items-center justify-center text-gray-500"> <label class="flex items-center justify-center text-gray-500 dark:text-gray-300">
{{ $t('modules.no_modules_installed') }} {{ $t('modules.no_modules_installed') }}
</label> </label>
</div> </div>
@ -61,10 +61,10 @@
</div> </div>
<BaseCard v-else class="mt-6"> <BaseCard v-else class="mt-6">
<h6 class="text-gray-900 text-lg font-medium"> <h6 class="text-gray-900 text-lg font-medium dark:text-white">
{{ $t('modules.connect_installation') }} {{ $t('modules.connect_installation') }}
</h6> </h6>
<p class="mt-1 text-sm text-gray-500"> <p class="mt-1 text-sm text-gray-500 dark:text-gray-400">
{{ {{
$t('modules.api_token_description', { $t('modules.api_token_description', {
url: globalStore.config.base_url.replace(/^http:\/\//, ''), url: globalStore.config.base_url.replace(/^http:\/\//, ''),

View File

@ -215,7 +215,7 @@
<SelectNotePopup type="Payment" @select="onSelectNote" /> <SelectNotePopup type="Payment" @select="onSelectNote" />
</div> </div>
<label class="mb-4 text-sm font-medium text-gray-800"> <label class="mb-4 text-sm font-medium text-gray-800 dark:text-gray-300">
{{ $t('estimates.notes') }} {{ $t('estimates.notes') }}
</label> </label>

View File

@ -16,11 +16,11 @@
</div> </div>
<div class="ml-2"> <div class="ml-2">
<p class="p-0 mb-1 leading-snug text-left text-black"> <p class="p-0 mb-1 leading-snug text-left text-black dark:text-white">
{{ $t('recurring_invoices.send_automatically') }} {{ $t('recurring_invoices.send_automatically') }}
</p> </p>
<p <p
class="p-0 m-0 text-xs leading-tight text-left text-gray-500" class="p-0 m-0 text-xs leading-tight text-left text-gray-500 dark:text-gray-400"
style="max-width: 480px" style="max-width: 480px"
> >
{{ $t('recurring_invoices.send_automatically_desc') }} {{ $t('recurring_invoices.send_automatically_desc') }}

View File

@ -113,10 +113,10 @@
<div v-if="companyStore.companies.length !== 1" class="py-5"> <div v-if="companyStore.companies.length !== 1" class="py-5">
<BaseDivider class="my-4" /> <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') }} {{ $tc('settings.company_info.delete_company') }}
</h3> </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> <p>
{{ $tc('settings.company_info.delete_company_description') }} {{ $tc('settings.company_info.delete_company_description') }}
</p> </p>

View File

@ -27,7 +27,7 @@
> >
<template #cell-name="{ row }"> <template #cell-name="{ row }">
{{ row.data.name }} {{ row.data.name }}
<span class="text-xs text-gray-500"> ({{ row.data.slug }})</span> <span class="text-xs text-gray-500 dark:text-gray-400"> ({{ row.data.slug }})</span>
</template> </template>
<template #cell-is_required="{ row }"> <template #cell-is_required="{ row }">

View File

@ -7,7 +7,7 @@
{{ $t('settings.menu_title.exchange_rate') }} {{ $t('settings.menu_title.exchange_rate') }}
</h6> </h6>
<p <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" style="max-width: 680px"
> >
{{ $t('settings.exchange_rate.providers_description') }} {{ $t('settings.exchange_rate.providers_description') }}

View File

@ -4,23 +4,14 @@
:description="$t('settings.update_app.description')" :description="$t('settings.update_app.description')"
> >
<div class="pb-8 ml-0"> <div class="pb-8 ml-0">
<label class="text-sm not-italic font-medium input-label"> <label
class="text-sm not-italic font-medium input-label dark:text-gray-300"
>
{{ $t('settings.update_app.current_version') }} {{ $t('settings.update_app.current_version') }}
</label> </label>
<div <div
class=" class="box-border flex w-16 p-3 my-2 text-sm text-gray-600 bg-gray-200 border border-gray-200 border-solid dark:bg-gray-600 dark:text-gray-200 dark:border-gray-500 rounded-md version"
box-border
flex
w-16
p-3
my-2
text-sm text-gray-600
bg-gray-200
border border-gray-200 border-solid
rounded-md
version
"
> >
{{ currentVersion }} {{ currentVersion }}
</div> </div>
@ -42,20 +33,20 @@
{{ $t('settings.update_app.avail_update') }} {{ $t('settings.update_app.avail_update') }}
</BaseHeading> </BaseHeading>
<div class="rounded-md bg-primary-50 p-4 mb-3"> <div class="rounded-md bg-primary-50 p-4 mb-3 dark:bg-gray-600">
<div class="flex"> <div class="flex">
<div class="shrink-0"> <div class="shrink-0">
<BaseIcon <BaseIcon
name="InformationCircleIcon" name="InformationCircleIcon"
class="h-5 w-5 text-primary-400" class="h-5 w-5 text-primary-400 dark:text-primary-300"
aria-hidden="true" aria-hidden="true"
/> />
</div> </div>
<div class="ml-3"> <div class="ml-3">
<h3 class="text-sm font-medium text-primary-800"> <h3 class="text-sm font-medium text-primary-800 dark:text-primary-300">
{{ $t('general.note') }} {{ $t('general.note') }}
</h3> </h3>
<div class="mt-2 text-sm text-primary-700"> <div class="mt-2 text-sm text-primary-700 dark:text-primary-400">
<p> <p>
{{ $t('settings.update_app.update_warning') }} {{ $t('settings.update_app.update_warning') }}
</p> </p>
@ -75,26 +66,20 @@
w-16 w-16
p-3 p-3
my-2 my-2
text-sm text-gray-600 text-sm
bg-gray-200 text-gray-600 bg-gray-200
border border-gray-200 border-solid border border-gray-200 border-solid
rounded-md rounded-md
version version
dark:bg-gray-600 dark:text-gray-200
dark:border-gray-500
" "
> >
{{ updateData.version }} {{ updateData.version }}
</div> </div>
<div <div
class=" class="pl-5 mt-4 mb-8 text-sm leading-snug text-gray-500 update-description"
pl-5
mt-4
mb-8
text-sm
leading-snug
text-gray-500
update-description
"
style="white-space: pre-wrap; max-width: 480px" style="white-space: pre-wrap; max-width: 480px"
v-html="description" v-html="description"
></div> ></div>
@ -150,14 +135,7 @@
<li <li
v-for="step in updateSteps" v-for="step in updateSteps"
:key="step.stepUrl" :key="step.stepUrl"
class=" class="flex justify-between w-full py-3 border-b border-gray-200 border-solid last:border-b-0"
flex
justify-between
w-full
py-3
border-b border-gray-200 border-solid
last:border-b-0
"
> >
<p class="m-0 text-sm leading-8">{{ $t(step.translationKey) }}</p> <p class="m-0 text-sm leading-8">{{ $t(step.translationKey) }}</p>
<div class="flex flex-row items-center"> <div class="flex flex-row items-center">

View File

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

View File

@ -1,10 +1,12 @@
<template> <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') }} {{ $tc('settings.customization.estimates.convert_estimate_options') }}
</h6> </BaseHeading>
<p class="mt-1 text-sm text-gray-500">
{{ $t('settings.customization.estimates.convert_estimate_description') }}
</p>
<BaseInputGroup required> <BaseInputGroup required>
<BaseRadio <BaseRadio

View File

@ -1,11 +1,13 @@
<template> <template>
<form @submit.prevent="submitForm"> <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') }} {{ $t('settings.customization.estimates.default_formats') }}
</h6> </BaseHeading>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.estimates.default_formats_description') }}
</p>
<BaseInputGroup <BaseInputGroup
:label=" :label="

View File

@ -1,11 +1,13 @@
<template> <template>
<form @submit.prevent="submitForm"> <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') }} {{ $t('settings.customization.estimates.expiry_date') }}
</h6> </BaseHeading>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.estimates.expiry_date_description') }}
</p>
<BaseSwitchSection <BaseSwitchSection
v-model="expiryDateAutoField" v-model="expiryDateAutoField"

View File

@ -1,11 +1,13 @@
<template> <template>
<form @submit.prevent="submitForm"> <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') }} {{ $t('settings.customization.invoices.default_formats') }}
</h6> </BaseHeading>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.invoices.default_formats_description') }}
</p>
<BaseInputGroup <BaseInputGroup
:label="$t('settings.customization.invoices.default_invoice_email_body')" :label="$t('settings.customization.invoices.default_invoice_email_body')"

View File

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

View File

@ -1,10 +1,12 @@
<template> <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') }} {{ $tc('settings.customization.invoices.retrospective_edits') }}
</h6> </BaseHeading>
<p class="mt-1 text-sm text-gray-500">
{{ $t('settings.customization.invoices.retrospective_edits_description') }}
</p>
<BaseInputGroup required> <BaseInputGroup required>
<BaseRadio <BaseRadio

View File

@ -1,11 +1,13 @@
<template> <template>
<form @submit.prevent="submitForm"> <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') }} {{ $t('settings.customization.payments.default_formats') }}
</h6> </BaseHeading>
<p class="mt-1 text-sm text-gray-500 mb-2">
{{ $t('settings.customization.payments.default_formats_description') }}
</p>
<BaseInputGroup <BaseInputGroup
:label="$t('settings.customization.payments.default_payment_email_body')" :label="$t('settings.customization.payments.default_payment_email_body')"

View File

@ -1,33 +1,40 @@
<template> <template>
<div class="bg-white shadow overflow-hidden rounded-lg mt-6"> <div class="bg-white shadow overflow-hidden rounded-lg mt-6 dark:bg-gray-800">
<div class="px-4 py-5 sm:px-6"> <div class="px-4 py-5 sm:px-6">
<h3 class="text-lg leading-6 font-medium text-gray-900"> <h3 class="text-lg leading-6 font-medium text-gray-900 dark:text-gray-100">
{{ $t('invoices.invoice_information') }} {{ $t('invoices.invoice_information') }}
</h3> </h3>
</div> </div>
<div v-if="invoice" class="border-t border-gray-200 px-4 py-5 sm:p-0"> <div v-if="invoice"
<dl class="sm:divide-y sm:divide-gray-200"> class="
border-t
border-gray-200
px-4 py-5 sm:p-0
dark:border-gray-600
"
>
<dl class="sm:divide-y sm:divide-gray-200 sm:dark:divide-gray-500">
<div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"> <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
<dt class="text-sm font-medium text-gray-500"> <dt class="text-sm font-medium text-gray-500 dark:dark:text-gray-400">
{{ $t('general.from') }} {{ $t('general.from') }}
</dt> </dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2 dark:text-gray-100">
{{ invoice.company.name }} {{ invoice.company.name }}
</dd> </dd>
</div> </div>
<div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"> <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
<dt class="text-sm font-medium text-gray-500"> <dt class="text-sm font-medium text-gray-500 dark:dark:text-gray-400">
{{ $t('general.to') }} {{ $t('general.to') }}
</dt> </dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2 dark:text-gray-100">
{{ invoice.customer.name }} {{ invoice.customer.name }}
</dd> </dd>
</div> </div>
<div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"> <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
<dt class="text-sm font-medium text-gray-500 capitalize"> <dt class="text-sm font-medium text-gray-500 capitalize dark:dark:text-gray-400">
{{ $t('invoices.paid_status').toLowerCase() }} {{ $t('invoices.paid_status').toLowerCase() }}
</dt> </dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2 dark:text-gray-100">
<BaseInvoiceStatusBadge <BaseInvoiceStatusBadge
:status="invoice.paid_status" :status="invoice.paid_status"
class="px-3 py-1" class="px-3 py-1"
@ -37,10 +44,10 @@
</dd> </dd>
</div> </div>
<div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"> <div class="py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
<dt class="text-sm font-medium text-gray-500"> <dt class="text-sm font-medium text-gray-500 dark:dark:text-gray-400">
{{ $t('invoices.total') }} {{ $t('invoices.total') }}
</dt> </dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2 dark:text-gray-100">
<BaseFormatMoney <BaseFormatMoney
:currency="invoice.currency" :currency="invoice.currency"
:amount="invoice.total" :amount="invoice.total"

View File

@ -439,7 +439,7 @@ export default {
container: container:
'p-0 relative mx-auto w-full flex items-center justify-end box-border cursor-pointer border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-sm leading-snug outline-none max-h-10', 'p-0 relative mx-auto w-full flex items-center justify-end box-border cursor-pointer border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-sm leading-snug outline-none max-h-10',
containerDisabled: containerDisabled:
'bg-gray-200 bg-opacity-50 !text-gray-400 dark:!text-gray-800 !dark:text-gray-500 !cursor-default dark:opacity-25', 'bg-gray-200 !text-gray-800 dark:!text-gray-800 !dark:text-gray-500 !cursor-not-allowed dark:opacity-50',
containerOpen: '', containerOpen: '',
containerOpenTop: '', containerOpenTop: '',
containerActive: 'ring-1 ring-primary-400 border-primary-400', containerActive: 'ring-1 ring-primary-400 border-primary-400',

View File

@ -15,12 +15,12 @@
v-if="label" v-if="label"
:for="id" :for="id"
:class="`font-medium ${ :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 `" } cursor-pointer `"
> >
{{ label }} {{ label }}
</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>
</div> </div>
</template> </template>
@ -51,7 +51,7 @@ const props = defineProps({
}, },
checkboxClass: { checkboxClass: {
type: String, 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: { setInitialValue: {
type: Boolean, type: Boolean,

View File

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

View File

@ -1,7 +1,7 @@
<template> <template>
<div <div
v-if="address" 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> <p v-if="address?.address_street_1">{{ address?.address_street_1 }},</p>

View File

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

View File

@ -10,7 +10,7 @@
{{ label }} {{ label }}
</BaseLabel> </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 }} {{ value }}
<slot /> <slot />

View File

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

View File

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

View File

@ -1,11 +1,18 @@
<template> <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="flex">
<div class="shrink-0"> <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>
<div class="ml-3"> <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 }} {{ errorTitle }}
</h3> </h3>
<div class="mt-2 text-sm text-red-700"> <div class="mt-2 text-sm text-red-700">

View File

@ -18,17 +18,17 @@ const props = defineProps({
const badgeColorClasses = computed(() => { const badgeColorClasses = computed(() => {
switch (props.status) { switch (props.status) {
case 'DRAFT': case 'DRAFT':
return 'bg-yellow-300 bg-opacity-25 px-2 py-1 text-sm text-yellow-800 uppercase font-normal text-center ' return 'bg-yellow-300 bg-opacity-25 px-2 py-1 text-sm text-yellow-800 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-yellow-500 dark:text-yellow-500'
case 'SENT': case 'SENT':
return ' bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center ' return ' bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-yellow-200 dark:text-yellow-200'
case 'VIEWED': case 'VIEWED':
return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center' return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-blue-300 dark:text-blue-300'
case 'EXPIRED': case 'EXPIRED':
return 'bg-red-300 bg-opacity-25 px-2 py-1 text-sm text-red-800 uppercase font-normal text-center' return 'bg-red-300 bg-opacity-25 px-2 py-1 text-sm text-red-800 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-red-500 dark:text-red-500'
case 'ACCEPTED': case 'ACCEPTED':
return 'bg-green-400 bg-opacity-25 px-2 py-1 text-sm text-green-800 uppercase font-normal text-center' return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-green-400 dark:text-green-400'
case 'REJECTED': case 'REJECTED':
return 'bg-purple-300 bg-opacity-25 px-2 py-1 text-sm text-purple-800 uppercase font-normal text-center' return 'bg-purple-300 bg-opacity-25 px-2 py-1 text-sm text-purple-800 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-purple-400 dark:text-purple-400'
default: default:
return 'bg-gray-500 bg-opacity-25 px-2 py-1 text-sm text-gray-900 uppercase font-normal text-center' return 'bg-gray-500 bg-opacity-25 px-2 py-1 text-sm text-gray-900 uppercase font-normal text-center'
} }

View File

@ -2,6 +2,21 @@
<h6 :class="typeClass"> <h6 :class="typeClass">
<slot /> <slot />
</h6> </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> </template>
<script setup> <script setup>
@ -14,12 +29,16 @@ const props = defineProps({
return ['section-title', 'heading-title'].indexOf(value) !== -1 return ['section-title', 'heading-title'].indexOf(value) !== -1
}, },
}, },
subtitle: {
type: String,
default: '',
},
}) })
const typeClass = computed(() => { const typeClass = computed(() => {
return { return {
'text-gray-900 text-lg font-medium': props.type === 'heading-title', 'text-gray-900 text-lg font-medium dark:text-white': props.type === 'heading-title',
'text-gray-500 uppercase text-base': props.type === 'section-title', 'text-gray-500 uppercase text-base dark:text-gray-300': props.type === 'section-title',
} }
}) })
</script> </script>

View File

@ -15,6 +15,7 @@
text-gray-800 text-gray-800
whitespace-nowrap whitespace-nowrap
justify-between justify-between
dark:text-gray-300
" "
> >
<div> <div>
@ -31,7 +32,7 @@
</label> </label>
<div :class="inputContainerClasses"> <div :class="inputContainerClasses">
<slot></slot> <slot></slot>
<span v-if="helpText" class="text-gray-500 text-xs mt-1 font-light"> <span v-if="helpText" class="text-gray-500 text-xs mt-1 font-light dark:text-gray-400">
{{ helpText }} {{ helpText }}
</span> </span>
<span v-if="error" class="block mt-0.5 text-sm text-red-500"> <span v-if="error" class="block mt-0.5 text-sm text-red-500">

View File

@ -20,25 +20,25 @@ export default {
const badgeColorClasses = computed(() => { const badgeColorClasses = computed(() => {
switch (props.status) { switch (props.status) {
case 'DRAFT': case 'DRAFT':
return 'bg-yellow-300 bg-opacity-25 px-2 py-1 text-sm text-yellow-800 uppercase font-normal text-center' return 'bg-yellow-300 bg-opacity-25 px-2 py-1 text-sm text-yellow-800 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-yellow-500 dark:text-yellow-500'
case 'SENT': case 'SENT':
return ' bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center ' return ' bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-lime-200 dark:text-yellow-200'
case 'VIEWED': case 'VIEWED':
return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center' return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-blue-300 dark:text-blue-300'
case 'COMPLETED': case 'COMPLETED':
return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center' return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-green-400 dark:text-green-400'
case 'DUE': case 'DUE':
return 'bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center' return 'bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-yellow-500 dark:text-yellow-500'
case 'OVERDUE': case 'OVERDUE':
return 'bg-red-300 bg-opacity-50 px-2 py-1 text-sm text-red-900 uppercase font-normal text-center' return 'bg-red-300 bg-opacity-50 px-2 py-1 text-sm text-red-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-red-500 dark:text-red-500'
case 'UNPAID': case 'UNPAID':
return 'bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center' return 'bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-yellow-500 dark:text-yellow-500'
case 'PARTIALLY_PAID': case 'PARTIALLY_PAID':
return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center' return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-blue-300 dark:text-blue-300'
case 'PAID': case 'PAID':
return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center' return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-green-400 dark:text-green-400'
default: default:
return 'bg-gray-500 bg-opacity-25 px-2 py-1 text-sm text-gray-900 uppercase font-normal text-center' return 'bg-gray-500 bg-opacity-25 px-2 py-1 text-sm text-gray-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-gray-502 dark:text-gray-200'
} }
}) })
return { badgeColorClasses } return { badgeColorClasses }

View File

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

View File

@ -1,5 +1,5 @@
<template> <template>
<label class="text-sm not-italic font-medium leading-5 text-primary-800"> <label class="text-sm not-italic font-medium leading-5 text-gray-500 dark:text-gray-300">
<slot /> <slot />
</label> </label>
</template> </template>

View File

@ -39,7 +39,7 @@ const props = defineProps({
inputClass: { inputClass: {
type: String, type: String,
default: 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: { disabled: {
type: Boolean, type: Boolean,
@ -86,7 +86,7 @@ const currencyBindings = computed(() => {
const invalidClass = computed(() => { const invalidClass = computed(() => {
if (props.invalid) { 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' return 'focus:ring-primary-400 focus:border-primary-400'
}) })

View File

@ -24,15 +24,15 @@ export default {
const badgeColorClasses = computed(() => { const badgeColorClasses = computed(() => {
switch (props.status) { switch (props.status) {
case 'PAID': case 'PAID':
return 'bg-primary-300 bg-opacity-25 text-primary-800 uppercase font-normal text-center' return 'bg-primary-300 bg-opacity-25 text-primary-800 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-indigo-400 dark:text-indigo-400'
case 'UNPAID': case 'UNPAID':
return ' bg-yellow-500 bg-opacity-25 text-yellow-900 uppercase font-normal text-center ' return ' bg-yellow-500 bg-opacity-25 text-yellow-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-orange-300 dark:text-orange-300'
case 'PARTIALLY_PAID': case 'PARTIALLY_PAID':
return 'bg-blue-400 bg-opacity-25 text-blue-900 uppercase font-normal text-center' return 'bg-blue-400 bg-opacity-25 text-blue-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-blue-300 dark:text-blue-300'
case 'OVERDUE': case 'OVERDUE':
return 'bg-red-300 bg-opacity-50 px-2 py-1 text-sm text-red-900 uppercase font-normal text-center' return 'bg-red-300 bg-opacity-50 px-2 py-1 text-sm text-red-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-red-500 dark:text-red-500'
default: default:
return 'bg-gray-500 bg-opacity-25 text-gray-900 uppercase font-normal text-center' return 'bg-gray-500 bg-opacity-25 text-gray-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-gray-300 dark:text-gray-300'
} }
}) })
return { badgeColorClasses } return { badgeColorClasses }

View File

@ -19,7 +19,7 @@
]" ]"
aria-hidden="true" aria-hidden="true"
> >
<span class="rounded-full bg-white w-1.5 h-1.5" /> <span class="rounded-full w-1.5 h-1.5" :class="{ 'bg-white': checked }"/>
</span> </span>
<div class="flex flex-col ml-3"> <div class="flex flex-col ml-3">
<RadioGroupLabel <RadioGroupLabel
@ -66,11 +66,11 @@ const props = defineProps({
}, },
checkedStateClass: { checkedStateClass: {
type: String, type: String,
default: 'bg-primary-600', default: 'bg-primary-600 ',
}, },
unCheckedStateClass: { unCheckedStateClass: {
type: String, type: String,
default: 'bg-white ', default: 'bg-white dark:bg-transparent',
}, },
optionGroupActiveStateClass: { optionGroupActiveStateClass: {
type: String, type: String,
@ -78,16 +78,16 @@ const props = defineProps({
}, },
checkedStateLabelClass: { checkedStateLabelClass: {
type: String, type: String,
default: 'text-primary-900 ', default: 'text-primary-900 dark:text-primary-400',
}, },
unCheckedStateLabelClass: { unCheckedStateLabelClass: {
type: String, type: String,
default: 'text-gray-900', default: 'text-gray-900 dark:text-white',
}, },
optionGroupClass: { optionGroupClass: {
type: String, type: String,
default: 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: { optionGroupLabelClass: {
type: String, type: String,

View File

@ -20,11 +20,11 @@ export default {
const badgeColorClasses = computed(() => { const badgeColorClasses = computed(() => {
switch (props.status) { switch (props.status) {
case 'COMPLETED': case 'COMPLETED':
return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center' return 'bg-green-500 bg-opacity-25 px-2 py-1 text-sm text-green-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-green-400 dark:text-green-400'
case 'ON_HOLD': case 'ON_HOLD':
return 'bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center' return 'bg-yellow-500 bg-opacity-25 px-2 py-1 text-sm text-yellow-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-yellow-200 dark:text-yellow-200'
case 'ACTIVE': case 'ACTIVE':
return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center' return 'bg-blue-400 bg-opacity-25 px-2 py-1 text-sm text-blue-900 uppercase font-normal text-center dark:bg-transparent dark:border dark:border-blue-300 dark:text-blue-300'
default: default:
return 'bg-gray-500 bg-opacity-25 px-2 py-1 text-sm text-gray-900 uppercase font-normal text-center' return 'bg-gray-500 bg-opacity-25 px-2 py-1 text-sm text-gray-900 uppercase font-normal text-center'
} }

View File

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

View File

@ -12,7 +12,7 @@
> >
<ListboxLabel <ListboxLabel
v-if="label" 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 }} {{ label }}
</ListboxLabel> </ListboxLabel>
@ -28,6 +28,7 @@
pr-10 pr-10
text-left text-left
bg-white bg-white
dark:bg-gray-700
border border-gray-200 border border-gray-200
rounded-md rounded-md
shadow-sm shadow-sm
@ -89,6 +90,7 @@
ring-1 ring-black ring-opacity-5 ring-1 ring-black ring-opacity-5
focus:outline-none focus:outline-none
sm:text-sm sm:text-sm
dark:bg-gray-700
" "
> >
<ListboxOption <ListboxOption
@ -100,7 +102,7 @@
> >
<li <li
:class="[ :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', 'cursor-default select-none relative py-2 pl-3 pr-9',
]" ]"
> >

View File

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

View File

@ -45,7 +45,7 @@ const props = defineProps({
defaultInputClass: { defaultInputClass: {
type: String, type: String,
default: 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: { autosize: {
type: Boolean, type: Boolean,

View File

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

View File

@ -1,6 +1,8 @@
<template> <template>
<div <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=" class="
max-w-sm max-w-sm
mb-3 mb-3
@ -48,7 +50,7 @@
</svg> </svg>
<svg <svg
v-if="error" v-if="error"
class="w-6 h-6 text-red-400" class="w-6 h-6 text-red-400 dark:text-white"
fill="currentColor" fill="currentColor"
viewBox="0 0 24 24" viewBox="0 0 24 24"
> >
@ -62,7 +64,9 @@
<div class="flex-1 w-0 ml-3 text-left"> <div class="flex-1 w-0 ml-3 text-left">
<p <p
:class="`text-sm leading-5 font-medium ${ :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>
<p <p
:class="`mt-1 text-sm leading-5 ${ :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=" :class="
success || info success || info
? ' text-gray-400 focus:text-gray-500' ? ' 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=" class="
inline-flex inline-flex