Compare commits

..

43 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
f874b3507d add dark mode in baseEditor (#1180) 2023-03-28 15:58:36 +05:30
c36d25931f add dark mode in dashboard stats & chart (#1161)
* add dark mode in dashboard stats & chart

* fix indentation on dashboard chart

---------

Co-authored-by: yogesh-gohil <yogeshgohil1611@gmail.com>
2023-03-28 15:32:51 +05:30
1e6c3b287f add dark mode in base table (#1160)
* add dark mode in base table

* fix filter pagination issue

* fix indentation

---------

Co-authored-by: yogesh-gohil <yogeshgohil1611@gmail.com>
2023-03-28 14:53:03 +05:30
0462ff60a0 add dark mode in baseListItem (#1177) 2023-03-28 13:12:09 +05:30
29a135adaf add dark mode in base modal (#1171)
* add dark mode in base modal

* add BaseModalFooter

* fix dark mode in roles modal and send modal
2023-03-28 13:10:42 +05:30
1aceb2c672 add dark-mode in BaseInput (#1169) 2023-03-28 12:58:11 +05:30
fb9fab641d add dark mode in baseFileUploader (#1176) 2023-03-28 12:45:45 +05:30
8f2edc220b add dark mode in base tabGroup and tab (#1175)
* add dark mode in base tabGroup and tab

* fix tab-list border in dark-mode

---------

Co-authored-by: yogesh-gohil <yogeshgohil1611@gmail.com>
2023-03-28 12:29:14 +05:30
d14ab013ad add dark mode in GlobalSearchBar (#1197) 2023-03-28 11:35:20 +05:30
f6639f5863 add dark dropdown & company switch (#1167)
* add dark mode in basedropdown

* dark mod add in global search, header

* add dark mode in company switch

* indentation issue fix company switch

* fix dropdown issues

---------

Co-authored-by: yogesh-gohil <yogeshgohil1611@gmail.com>
2023-03-28 11:30:00 +05:30
c5acf1343e add dark mode in BaseFilterWrapper (#1189) 2023-03-25 18:44:29 +05:30
0321ca5515 add dark mode in base dialog component (#1174) 2023-03-25 17:44:00 +05:30
bd345949e5 add dark mode in BaseContentPlaceholders (#1184) 2023-03-25 17:22:28 +05:30
b4b00ebdd6 add dark base switch & base switcher (#1173)
* add dark mode base switch & switcher

* fix indentation
2023-03-25 17:02:36 +05:30
43316dae28 add dark mode in BreadCrumb and PageHeader. (#1172) 2023-03-25 16:50:44 +05:30
80e2548b38 add base multiselect (#1163)
* add base multiselect

* fix invalid state class in dark mode

---------

Co-authored-by: yogesh-gohil <yogeshgohil1611@gmail.com>
2023-03-25 16:47:40 +05:30
e8d92cd641 Merge pull request #1158 from crater-invoice/dark-button
add dark mode in button
2023-03-25 12:47:52 +05:30
2c8bb38531 add disabled button class and loading right prop 2023-03-25 12:38:37 +05:30
04c7ae39a2 Merge pull request #1157 from crater-invoice/dark-card
add dark card and dark highlight component
2023-03-25 12:08:38 +05:30
af2482a69c fix white variant dark mode in base button 2023-03-23 15:04:53 +05:30
cac35826c2 add dark mode in button 2023-03-20 18:22:30 +05:30
18b5705372 Merge branch 'dark-mode' of https://github.com/crater-invoice/crater into dark-card 2023-03-20 17:20:03 +05:30
c61fbad5ce add dark base card and darkHighlight component 2023-03-20 16:31:56 +05:30
2e93082282 add dark theme in blade file 2023-03-20 11:45:14 +05:30
ca55221c4f add dark mode in sidebar and header 2023-03-17 18:25:17 +05:30
109 changed files with 856 additions and 602 deletions

View File

@ -50,21 +50,11 @@
</BaseInputGroup> </BaseInputGroup>
</template> </template>
</ValidateEach> </ValidateEach>
<div <BaseModalFooter>
slot="footer"
class="
z-0
flex
justify-end
mt-4
pt-4
border-t border-gray-200 border-solid border-modal-bg
"
>
<BaseButton :loading="isSaving" variant="primary" type="submit"> <BaseButton :loading="isSaving" variant="primary" type="submit">
{{ $t('general.save') }} {{ $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseCard> </BaseCard>
</template> </template>

View File

@ -7,11 +7,12 @@
<!-- edit customField --> <!-- edit customField -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.EDIT_CUSTOM_FIELDS)" v-if="userStore.hasAbilities(abilities.EDIT_CUSTOM_FIELDS)"
v-slot="slotProps"
@click="editCustomField(row.id)" @click="editCustomField(row.id)"
> >
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -19,11 +20,12 @@
<!-- delete customField --> <!-- delete customField -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_CUSTOM_FIELDS)" v-if="userStore.hasAbilities(abilities.DELETE_CUSTOM_FIELDS)"
v-slot="slotProps"
@click="removeCustomField(row.id)" @click="removeCustomField(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -12,10 +12,10 @@
v-if="userStore.hasAbilities(abilities.EDIT_CUSTOMER)" v-if="userStore.hasAbilities(abilities.EDIT_CUSTOMER)"
:to="`/admin/customers/${row.id}/edit`" :to="`/admin/customers/${row.id}/edit`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -29,10 +29,10 @@
" "
:to="`customers/${row.id}/view`" :to="`customers/${row.id}/view`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="EyeIcon" name="EyeIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.view') }} {{ $t('general.view') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -41,11 +41,12 @@
<!-- Delete Customer --> <!-- Delete Customer -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_CUSTOMER)" v-if="userStore.hasAbilities(abilities.DELETE_CUSTOMER)"
v-slot="slotProps"
@click="removeCustomer(row.id)" @click="removeCustomer(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -10,11 +10,12 @@
<!-- Copy PDF url --> <!-- Copy PDF url -->
<BaseDropdownItem <BaseDropdownItem
v-if="route.name === 'estimates.view'" v-if="route.name === 'estimates.view'"
v-slot="slotProps"
@click="copyPdfUrl" @click="copyPdfUrl"
> >
<BaseIcon <BaseIcon
name="LinkIcon" name="LinkIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.copy_pdf_url') }} {{ $t('general.copy_pdf_url') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -24,10 +25,10 @@
v-if="userStore.hasAbilities(abilities.EDIT_ESTIMATE)" v-if="userStore.hasAbilities(abilities.EDIT_ESTIMATE)"
:to="`/admin/estimates/${row.id}/edit`" :to="`/admin/estimates/${row.id}/edit`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -36,11 +37,12 @@
<!-- Delete Estimate --> <!-- Delete Estimate -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_ESTIMATE)" v-if="userStore.hasAbilities(abilities.DELETE_ESTIMATE)"
v-slot="slotProps"
@click="removeEstimate(row.id)" @click="removeEstimate(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -53,10 +55,10 @@
" "
:to="`estimates/${row.id}/view`" :to="`estimates/${row.id}/view`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="EyeIcon" name="EyeIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.view') }} {{ $t('general.view') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -65,11 +67,12 @@
<!-- Convert into Invoice --> <!-- Convert into Invoice -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)" v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)"
v-slot="slotProps"
@click="convertInToinvoice(row.id)" @click="convertInToinvoice(row.id)"
> >
<BaseIcon <BaseIcon
name="DocumentTextIcon" name="DocumentTextIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('estimates.convert_to_invoice') }} {{ $t('estimates.convert_to_invoice') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -81,11 +84,12 @@
route.name !== 'estimates.view' && route.name !== 'estimates.view' &&
userStore.hasAbilities(abilities.SEND_ESTIMATE) userStore.hasAbilities(abilities.SEND_ESTIMATE)
" "
v-slot="slotProps"
@click="onMarkAsSent(row.id)" @click="onMarkAsSent(row.id)"
> >
<BaseIcon <BaseIcon
name="CheckCircleIcon" name="CheckCircleIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('estimates.mark_as_sent') }} {{ $t('estimates.mark_as_sent') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -97,20 +101,21 @@
route.name !== 'estimates.view' && route.name !== 'estimates.view' &&
userStore.hasAbilities(abilities.SEND_ESTIMATE) userStore.hasAbilities(abilities.SEND_ESTIMATE)
" "
v-slot="slotProps"
@click="sendEstimate(row)" @click="sendEstimate(row)"
> >
<BaseIcon <BaseIcon
name="PaperAirplaneIcon" name="PaperAirplaneIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('estimates.send_estimate') }} {{ $t('estimates.send_estimate') }}
</BaseDropdownItem> </BaseDropdownItem>
<!-- Resend Estimate --> <!-- Resend Estimate -->
<BaseDropdownItem v-if="canResendEstimate(row)" @click="sendEstimate(row)"> <BaseDropdownItem v-if="canResendEstimate(row)" v-slot="slotProps" @click="sendEstimate(row)">
<BaseIcon <BaseIcon
name="PaperAirplaneIcon" name="PaperAirplaneIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('estimates.resend_estimate') }} {{ $t('estimates.resend_estimate') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -121,11 +126,12 @@
row.status !== 'ACCEPTED' && row.status !== 'ACCEPTED' &&
userStore.hasAbilities(abilities.EDIT_ESTIMATE) userStore.hasAbilities(abilities.EDIT_ESTIMATE)
" "
v-slot="slotProps"
@click="onMarkAsAccepted(row.id)" @click="onMarkAsAccepted(row.id)"
> >
<BaseIcon <BaseIcon
name="CheckCircleIcon" name="CheckCircleIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('estimates.mark_as_accepted') }} {{ $t('estimates.mark_as_accepted') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -136,11 +142,12 @@
row.status !== 'REJECTED' && row.status !== 'REJECTED' &&
userStore.hasAbilities(abilities.EDIT_ESTIMATE) userStore.hasAbilities(abilities.EDIT_ESTIMATE)
" "
v-slot="slotProps"
@click="onMarkAsRejected(row.id)" @click="onMarkAsRejected(row.id)"
> >
<BaseIcon <BaseIcon
name="XCircleIcon" name="XCircleIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('estimates.mark_as_rejected') }} {{ $t('estimates.mark_as_rejected') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -13,11 +13,12 @@
<!-- edit expenseCategory --> <!-- edit expenseCategory -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.EDIT_EXPENSE)" v-if="userStore.hasAbilities(abilities.EDIT_EXPENSE)"
v-slot="slotProps"
@click="editExpenseCategory(row.id)" @click="editExpenseCategory(row.id)"
> >
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -25,11 +26,12 @@
<!-- delete expenseCategory --> <!-- delete expenseCategory -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)" v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)"
v-slot="slotProps"
@click="removeExpenseCategory(row.id)" @click="removeExpenseCategory(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -12,10 +12,10 @@
v-if="userStore.hasAbilities(abilities.EDIT_EXPENSE)" v-if="userStore.hasAbilities(abilities.EDIT_EXPENSE)"
:to="`/admin/expenses/${row.id}/edit`" :to="`/admin/expenses/${row.id}/edit`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -24,11 +24,12 @@
<!-- delete expense --> <!-- delete expense -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)" v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)"
v-slot="slotProps"
@click="removeExpense(row.id)" @click="removeExpense(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -12,20 +12,20 @@
v-if="userStore.hasAbilities(abilities.EDIT_INVOICE)" v-if="userStore.hasAbilities(abilities.EDIT_INVOICE)"
:to="`/admin/invoices/${row.id}/edit`" :to="`/admin/invoices/${row.id}/edit`"
> >
<BaseDropdownItem v-show="row.allow_edit"> <BaseDropdownItem v-show="row.allow_edit" v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
</router-link> </router-link>
<!-- Copy PDF url --> <!-- Copy PDF url -->
<BaseDropdownItem v-if="route.name === 'invoices.view'" @click="copyPdfUrl"> <BaseDropdownItem v-if="route.name === 'invoices.view'" v-slot="slotProps" @click="copyPdfUrl">
<BaseIcon <BaseIcon
name="LinkIcon" name="LinkIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.copy_pdf_url') }} {{ $t('general.copy_pdf_url') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -38,29 +38,29 @@
" "
:to="`/admin/invoices/${row.id}/view`" :to="`/admin/invoices/${row.id}/view`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="EyeIcon" name="EyeIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.view') }} {{ $t('general.view') }}
</BaseDropdownItem> </BaseDropdownItem>
</router-link> </router-link>
<!-- Send Invoice Mail --> <!-- Send Invoice Mail -->
<BaseDropdownItem v-if="canSendInvoice(row)" @click="sendInvoice(row)"> <BaseDropdownItem v-if="canSendInvoice(row)" v-slot="slotProps" @click="sendInvoice(row)">
<BaseIcon <BaseIcon
name="PaperAirplaneIcon" name="PaperAirplaneIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('invoices.send_invoice') }} {{ $t('invoices.send_invoice') }}
</BaseDropdownItem> </BaseDropdownItem>
<!-- Resend Invoice --> <!-- Resend Invoice -->
<BaseDropdownItem v-if="canReSendInvoice(row)" @click="sendInvoice(row)"> <BaseDropdownItem v-if="canReSendInvoice(row)" v-slot="slotProps" @click="sendInvoice(row)">
<BaseIcon <BaseIcon
name="PaperAirplaneIcon" name="PaperAirplaneIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('invoices.resend_invoice') }} {{ $t('invoices.resend_invoice') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -69,20 +69,21 @@
<router-link :to="`/admin/payments/${row.id}/create`"> <router-link :to="`/admin/payments/${row.id}/create`">
<BaseDropdownItem <BaseDropdownItem
v-if="row.status == 'SENT' && route.name !== 'invoices.view'" v-if="row.status == 'SENT' && route.name !== 'invoices.view'"
v-slot="slotProps"
> >
<BaseIcon <BaseIcon
name="CreditCardIcon" name="CreditCardIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('invoices.record_payment') }} {{ $t('invoices.record_payment') }}
</BaseDropdownItem> </BaseDropdownItem>
</router-link> </router-link>
<!-- Mark as sent Invoice --> <!-- Mark as sent Invoice -->
<BaseDropdownItem v-if="canSendInvoice(row)" @click="onMarkAsSent(row.id)"> <BaseDropdownItem v-if="canSendInvoice(row)" v-slot="slotProps" @click="onMarkAsSent(row.id)">
<BaseIcon <BaseIcon
name="CheckCircleIcon" name="CheckCircleIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('invoices.mark_as_sent') }} {{ $t('invoices.mark_as_sent') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -90,11 +91,12 @@
<!-- Clone Invoice into new invoice --> <!-- Clone Invoice into new invoice -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)" v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)"
v-slot="slotProps"
@click="cloneInvoiceData(row)" @click="cloneInvoiceData(row)"
> >
<BaseIcon <BaseIcon
name="DocumentTextIcon" name="DocumentTextIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('invoices.clone_invoice') }} {{ $t('invoices.clone_invoice') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -102,11 +104,12 @@
<!-- Delete Invoice --> <!-- Delete Invoice -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_INVOICE)" v-if="userStore.hasAbilities(abilities.DELETE_INVOICE)"
v-slot="slotProps"
@click="removeInvoice(row.id)" @click="removeInvoice(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -12,11 +12,8 @@
v-if="userStore.hasAbilities(abilities.EDIT_ITEM)" v-if="userStore.hasAbilities(abilities.EDIT_ITEM)"
:to="`/admin/items/${row.id}/edit`" :to="`/admin/items/${row.id}/edit`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon name="PencilIcon" :class="slotProps.class" />
name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
/>
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
</router-link> </router-link>
@ -24,12 +21,10 @@
<!-- delete item --> <!-- delete item -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_ITEM)" v-if="userStore.hasAbilities(abilities.DELETE_ITEM)"
v-slot="slotProps"
@click="removeItem(row.id)" @click="removeItem(row.id)"
> >
<BaseIcon <BaseIcon name="TrashIcon" :class="slotProps.class" />
name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
/>
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>
</BaseDropdown> </BaseDropdown>

View File

@ -10,11 +10,12 @@
<!-- edit note --> <!-- edit note -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.MANAGE_NOTE)" v-if="userStore.hasAbilities(abilities.MANAGE_NOTE)"
v-slot="slotProps"
@click="editNote(row.id)" @click="editNote(row.id)"
> >
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -22,11 +23,12 @@
<!-- delete note --> <!-- delete note -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.MANAGE_NOTE)" v-if="userStore.hasAbilities(abilities.MANAGE_NOTE)"
v-slot="slotProps"
@click="removeNote(row.id)" @click="removeNote(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -8,30 +8,31 @@
</template> </template>
<!-- Copy pdf url --> <!-- Copy pdf url -->
<BaseDropdown-item <BaseDropdownItem
v-if=" v-if="
route.name === 'payments.view' && route.name === 'payments.view' &&
userStore.hasAbilities(abilities.VIEW_PAYMENT) userStore.hasAbilities(abilities.VIEW_PAYMENT)
" "
v-slot="slotProps"
class="rounded-md" class="rounded-md"
@click="copyPdfUrl" @click="copyPdfUrl"
> >
<BaseIcon <BaseIcon
name="LinkIcon" name="LinkIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.copy_pdf_url') }} {{ $t('general.copy_pdf_url') }}
</BaseDropdown-item> </BaseDropdownItem>
<!-- edit payment --> <!-- edit payment -->
<router-link <router-link
v-if="userStore.hasAbilities(abilities.EDIT_PAYMENT)" v-if="userStore.hasAbilities(abilities.EDIT_PAYMENT)"
:to="`/admin/payments/${row.id}/edit`" :to="`/admin/payments/${row.id}/edit`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -45,10 +46,10 @@
" "
:to="`/admin/payments/${row.id}/view`" :to="`/admin/payments/${row.id}/view`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="EyeIcon" name="EyeIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.view') }} {{ $t('general.view') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -61,11 +62,12 @@
route.name !== 'payments.view' && route.name !== 'payments.view' &&
userStore.hasAbilities(abilities.SEND_PAYMENT) userStore.hasAbilities(abilities.SEND_PAYMENT)
" "
v-slot="slotProps"
@click="sendPayment(row)" @click="sendPayment(row)"
> >
<BaseIcon <BaseIcon
name="PaperAirplaneIcon" name="PaperAirplaneIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('payments.send_payment') }} {{ $t('payments.send_payment') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -73,11 +75,12 @@
<!-- delete payment --> <!-- delete payment -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_PAYMENT)" v-if="userStore.hasAbilities(abilities.DELETE_PAYMENT)"
v-slot="slotProps"
@click="removePayment(row.id)" @click="removePayment(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -8,19 +8,19 @@
</template> </template>
<!-- edit paymentMode --> <!-- edit paymentMode -->
<BaseDropdownItem @click="editPaymentMode(row.id)"> <BaseDropdownItem v-slot="slotProps" @click="editPaymentMode(row.id)">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
<!-- delete paymentMode --> <!-- delete paymentMode -->
<BaseDropdownItem @click="removePaymentMode(row.id)"> <BaseDropdownItem v-slot="slotProps" @click="removePaymentMode(row.id)">
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -15,10 +15,10 @@
v-if="userStore.hasAbilities(abilities.EDIT_RECURRING_INVOICE)" v-if="userStore.hasAbilities(abilities.EDIT_RECURRING_INVOICE)"
:to="`/admin/recurring-invoices/${row.id}/edit`" :to="`/admin/recurring-invoices/${row.id}/edit`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -32,10 +32,10 @@
" "
:to="`recurring-invoices/${row.id}/view`" :to="`recurring-invoices/${row.id}/view`"
> >
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="EyeIcon" name="EyeIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.view') }} {{ $t('general.view') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -44,11 +44,12 @@
<!-- Delete Recurring Invoice --> <!-- Delete Recurring Invoice -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_RECURRING_INVOICE)" v-if="userStore.hasAbilities(abilities.DELETE_RECURRING_INVOICE)"
v-slot="slotProps"
@click="removeMultipleRecurringInvoices(row.id)" @click="removeMultipleRecurringInvoices(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -10,11 +10,12 @@
<!-- edit role --> <!-- edit role -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.currentUser.is_owner" v-if="userStore.currentUser.is_owner"
v-slot="slotProps"
@click="editRole(row.id)" @click="editRole(row.id)"
> >
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -22,11 +23,12 @@
<!-- delete role --> <!-- delete role -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.currentUser.is_owner" v-if="userStore.currentUser.is_owner"
v-slot="slotProps"
@click="removeRole(row.id)" @click="removeRole(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -10,11 +10,12 @@
<!-- edit tax-type --> <!-- edit tax-type -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.EDIT_TAX_TYPE)" v-if="userStore.hasAbilities(abilities.EDIT_TAX_TYPE)"
v-slot="slotProps"
@click="editTaxType(row.id)" @click="editTaxType(row.id)"
> >
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
@ -22,11 +23,12 @@
<!-- delete tax-type --> <!-- delete tax-type -->
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_TAX_TYPE)" v-if="userStore.hasAbilities(abilities.DELETE_TAX_TYPE)"
v-slot="slotProps"
@click="removeTaxType(row.id)" @click="removeTaxType(row.id)"
> >
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -9,20 +9,20 @@
<!-- edit user --> <!-- edit user -->
<router-link :to="`/admin/users/${row.id}/edit`"> <router-link :to="`/admin/users/${row.id}/edit`">
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="PencilIcon" name="PencilIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
</router-link> </router-link>
<!-- delete user --> <!-- delete user -->
<BaseDropdownItem @click="removeUser(row.id)"> <BaseDropdownItem v-slot="slotProps" @click="removeUser(row.id)">
<BaseIcon <BaseIcon
name="TrashIcon" name="TrashIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
/> />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>

View File

@ -57,9 +57,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -84,7 +82,7 @@
</template> </template>
{{ $t('general.create') }} {{ $t('general.create') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -47,15 +47,7 @@
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="
z-0
flex
justify-end
p-4
border-t border-gray-200 border-solid border-modal-bg
"
>
<BaseButton <BaseButton
type="button" type="button"
variant="primary-outline" variant="primary-outline"
@ -80,7 +72,7 @@
</template> </template>
{{ categoryStore.isEdit ? $t('general.update') : $t('general.save') }} {{ categoryStore.isEdit ? $t('general.update') : $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -116,7 +116,7 @@
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div class="z-0 flex justify-end p-4 bg-gray-50 border-modal-bg"> <BaseModalFooter>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
variant="primary-outline" variant="primary-outline"
@ -141,7 +141,7 @@
</template> </template>
{{ $t('general.save') }} {{ $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -425,9 +425,7 @@
</BaseTabGroup> </BaseTabGroup>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
type="button" type="button"
@ -447,7 +445,7 @@
</template> </template>
{{ $t('general.save') }} {{ $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -38,7 +38,7 @@
</BaseInputGroup> </BaseInputGroup>
</div> </div>
<div class="z-0 flex justify-end p-4 bg-gray-50 border-modal-bg"> <BaseModalFooter>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
variant="primary-outline" variant="primary-outline"
@ -63,7 +63,7 @@
</template> </template>
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -150,9 +150,7 @@
@Remove="removeUsedSelectedCurrencies" @Remove="removeUsedSelectedCurrencies"
/> />
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -179,7 +177,7 @@
exchangeRateStore.isEdit ? $t('general.update') : $t('general.save') exchangeRateStore.isEdit ? $t('general.update') : $t('general.save')
}} }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -20,15 +20,7 @@
@submit="createNewDisk" @submit="createNewDisk"
> >
<template #default="slotProps"> <template #default="slotProps">
<div <BaseModalFooter>
class="
z-0
flex
justify-end
p-4
border-t border-solid border-gray-light
"
>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
variant="primary-outline" variant="primary-outline"
@ -52,7 +44,7 @@
{{ $t('general.save') }} {{ $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</template> </template>
</component> </component>
</div> </div>

View File

@ -89,9 +89,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -111,7 +109,7 @@
</template> </template>
{{ itemStore.isEdit ? $t('general.update') : $t('general.save') }} {{ itemStore.isEdit ? $t('general.update') : $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</div> </div>
</BaseModal> </BaseModal>

View File

@ -31,15 +31,7 @@
</BaseInputGroup> </BaseInputGroup>
</div> </div>
<div <BaseModalFooter>
class="
z-0
flex
justify-end
p-4
border-t border-gray-200 border-solid border-modal-bg
"
>
<BaseButton <BaseButton
type="button" type="button"
variant="primary-outline" variant="primary-outline"
@ -66,7 +58,7 @@
itemStore.isItemUnitEdit ? $t('general.update') : $t('general.save') itemStore.isItemUnitEdit ? $t('general.update') : $t('general.save')
}} }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -62,9 +62,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
variant="primary-outline" variant="primary-outline"
type="button" type="button"
@ -84,7 +82,7 @@
</template> </template>
{{ $t('general.send') }} {{ $t('general.send') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -63,16 +63,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="
z-0
flex
justify-end
px-4
py-4
border-t border-solid border-gray-light
"
>
<BaseButton <BaseButton
class="mr-2" class="mr-2"
variant="primary-outline" variant="primary-outline"
@ -93,7 +84,7 @@
</template> </template>
{{ noteStore.isEdit ? $t('general.update') : $t('general.save') }} {{ noteStore.isEdit ? $t('general.update') : $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -29,9 +29,7 @@
</BaseInputGroup> </BaseInputGroup>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
variant="primary-outline" variant="primary-outline"
class="mr-3" class="mr-3"
@ -56,7 +54,7 @@
: $t('general.save') : $t('general.save')
}} }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -72,7 +72,7 @@
</div> </div>
</div> </div>
<div class="border-t border-gray-200 py-3"> <div class="border-t border-gray-200 dark:border-gray-600 py-3">
<div <div
class=" class="
grid grid-cols-1 grid grid-cols-1
@ -89,7 +89,7 @@
:key="gIndex" :key="gIndex"
class="flex flex-col space-y-1" class="flex flex-col space-y-1"
> >
<p class="text-sm text-gray-500 border-b border-gray-200 pb-1 mb-2"> <p class="text-sm text-gray-500 dark:text-gray-200 border-b dark:border-gray-600 pb-1 mb-2">
{{ gIndex }} {{ gIndex }}
</p> </p>
<div <div
@ -116,15 +116,7 @@
</span> </span>
</div> </div>
</div> </div>
<div <BaseModalFooter>
class="
z-0
flex
justify-end
p-4
border-t border-solid border--200 border-modal-bg
"
>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
variant="primary-outline" variant="primary-outline"
@ -144,7 +136,7 @@
</template> </template>
{{ !roleStore.isEdit ? $t('general.save') : $t('general.update') }} {{ !roleStore.isEdit ? $t('general.save') : $t('general.update') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -70,7 +70,7 @@
</div> </div>
</div> </div>
<div class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"> <BaseModalFooter>
<BaseButton class="mr-3" variant="primary-outline" @click="closeModal"> <BaseButton class="mr-3" variant="primary-outline" @click="closeModal">
{{ $t('general.cancel') }} {{ $t('general.cancel') }}
</BaseButton> </BaseButton>
@ -80,7 +80,7 @@
</template> </template>
{{ $t('general.choose') }} {{ $t('general.choose') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -62,9 +62,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -85,7 +83,7 @@
<BaseIcon v-if="!isLoading" name="PhotographIcon" class="h-5 mr-2" /> <BaseIcon v-if="!isLoading" name="PhotographIcon" class="h-5 mr-2" />
{{ $t('general.preview') }} {{ $t('general.preview') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
<div v-else> <div v-else>
<div class="my-6 mx-4 border border-gray-200 relative"> <div class="my-6 mx-4 border border-gray-200 relative">
@ -106,9 +104,7 @@
></iframe> ></iframe>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -127,7 +123,7 @@
<BaseIcon v-if="!isLoading" name="PaperAirplaneIcon" class="mr-2" /> <BaseIcon v-if="!isLoading" name="PaperAirplaneIcon" class="mr-2" />
{{ $t('general.send') }} {{ $t('general.send') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</div> </div>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -65,9 +65,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -93,7 +91,7 @@
</template> </template>
{{ $t('general.preview') }} {{ $t('general.preview') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
<div v-else> <div v-else>
<div class="my-6 mx-4 border border-gray-200 relative"> <div class="my-6 mx-4 border border-gray-200 relative">
@ -114,9 +112,7 @@
style="min-height: 500px" style="min-height: 500px"
></iframe> ></iframe>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -140,7 +136,7 @@
/> />
{{ $t('general.send') }} {{ $t('general.send') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</div> </div>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -65,9 +65,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -93,7 +91,7 @@
</template> </template>
{{ $t('general.preview') }} {{ $t('general.preview') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
<div v-else> <div v-else>
<div class="my-6 mx-4 border border-gray-200 relative"> <div class="my-6 mx-4 border border-gray-200 relative">
@ -114,9 +112,7 @@
style="min-height: 500px" style="min-height: 500px"
></iframe> ></iframe>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
variant="primary-outline" variant="primary-outline"
@ -140,7 +136,7 @@
/> />
{{ $t('general.send') }} {{ $t('general.send') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</div> </div>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -90,15 +90,7 @@
</BaseInputGroup> </BaseInputGroup>
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="
z-0
flex
justify-end
p-4
border-t border-solid border--200 border-modal-bg
"
>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
variant="primary-outline" variant="primary-outline"
@ -122,7 +114,7 @@
</template> </template>
{{ taxTypeStore.isEdit ? $t('general.update') : $t('general.save') }} {{ taxTypeStore.isEdit ? $t('general.update') : $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -87,9 +87,7 @@
</BaseInputGrid> </BaseInputGrid>
</div> </div>
<div <BaseModalFooter>
class="z-0 flex justify-end p-4 border-t border-gray-200 border-solid"
>
<BaseButton <BaseButton
class="mr-3 text-sm" class="mr-3 text-sm"
type="button" type="button"
@ -109,7 +107,7 @@
</template> </template>
{{ $t('general.save') }} {{ $t('general.save') }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -172,15 +172,7 @@
</div> </div>
</div> </div>
<div <BaseModalFooter>
class="
z-0
flex
justify-end
p-4
border-t border-solid border-gray-light border-modal-bg
"
>
<BaseButton <BaseButton
class="mr-3" class="mr-3"
type="button" type="button"
@ -207,7 +199,7 @@
!customFieldStore.isEdit ? $t('general.save') : $t('general.update') !customFieldStore.isEdit ? $t('general.save') : $t('general.update')
}} }}
</BaseButton> </BaseButton>
</div> </BaseModalFooter>
</form> </form>
</BaseModal> </BaseModal>
</template> </template>

View File

@ -153,7 +153,7 @@
<BaseSwitch v-model="set_as_default" class="flex" /> <BaseSwitch v-model="set_as_default" class="flex" />
</div> </div>
<div class="ml-4 right"> <div class="ml-4 right">
<p class="p-0 mb-1 text-base leading-snug text-black box-title"> <p class="p-0 mb-1 text-base leading-snug text-black dark:text-white box-title">
{{ $t('settings.disk.is_default') }} {{ $t('settings.disk.is_default') }}
</p> </p>
</div> </div>

View File

@ -132,7 +132,7 @@
<BaseSwitch v-model="set_as_default" class="flex" /> <BaseSwitch v-model="set_as_default" class="flex" />
</div> </div>
<div class="ml-4 right"> <div class="ml-4 right">
<p class="p-0 mb-1 text-base leading-snug text-black box-title"> <p class="p-0 mb-1 text-base leading-snug text-black dark:text-white box-title">
{{ $t('settings.disk.is_default') }} {{ $t('settings.disk.is_default') }}
</p> </p>
</div> </div>

View File

@ -63,7 +63,7 @@
</div> </div>
<div class="ml-4 right"> <div class="ml-4 right">
<p class="p-0 mb-1 text-base leading-snug text-black box-title"> <p class="p-0 mb-1 text-base leading-snug text-black dark:text-white box-title">
{{ $t('settings.disk.is_default') }} {{ $t('settings.disk.is_default') }}
</p> </p>
</div> </div>

View File

@ -134,7 +134,7 @@
<BaseSwitch v-model="set_as_default" class="flex" /> <BaseSwitch v-model="set_as_default" class="flex" />
</div> </div>
<div class="ml-4 right"> <div class="ml-4 right">
<p class="p-0 mb-1 text-base leading-snug text-black box-title"> <p class="p-0 mb-1 text-base leading-snug text-black dark:text-white box-title">
{{ $t('settings.disk.is_default') }} {{ $t('settings.disk.is_default') }}
</p> </p>
</div> </div>

View File

@ -24,6 +24,8 @@
dark:border-white/10 dark:border-white/10
" "
> >
<BaseDarkHighlight />
<router-link <router-link
to="/admin/dashboard" to="/admin/dashboard"
class=" class="
@ -72,7 +74,7 @@
v-if="hasCreateAbilities" v-if="hasCreateAbilities"
class="relative hidden float-left m-0 md:block" class="relative hidden float-left m-0 md:block"
> >
<BaseDropdown width-class="w-48"> <BaseDropdown width-class="w-48" >
<template #activator> <template #activator>
<div <div
class=" class="
@ -86,19 +88,21 @@
bg-white bg-white
rounded rounded
md:h-9 md:w-9 md:h-9 md:w-9
dark:bg-gray-700 dark:border-gray-500 dark:border
" "
> >
<BaseIcon name="PlusIcon" class="w-5 h-5 text-gray-600" /> <BaseIcon name="PlusIcon" class="w-5 h-5 text-gray-600 dark:text-white" />
</div> </div>
</template> </template>
<router-link to="/admin/invoices/create"> <router-link to="/admin/invoices/create">
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)" v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)"
v-slot="slotProps"
> >
<BaseIcon <BaseIcon
name="DocumentTextIcon" name="DocumentTextIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
aria-hidden="true" aria-hidden="true"
/> />
{{ $t('invoices.new_invoice') }} {{ $t('invoices.new_invoice') }}
@ -107,10 +111,11 @@
<router-link to="/admin/estimates/create"> <router-link to="/admin/estimates/create">
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.CREATE_ESTIMATE)" v-if="userStore.hasAbilities(abilities.CREATE_ESTIMATE)"
v-slot="slotProps"
> >
<BaseIcon <BaseIcon
name="DocumentIcon" name="DocumentIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
aria-hidden="true" aria-hidden="true"
/> />
{{ $t('estimates.new_estimate') }} {{ $t('estimates.new_estimate') }}
@ -120,10 +125,11 @@
<router-link to="/admin/customers/create"> <router-link to="/admin/customers/create">
<BaseDropdownItem <BaseDropdownItem
v-if="userStore.hasAbilities(abilities.CREATE_CUSTOMER)" v-if="userStore.hasAbilities(abilities.CREATE_CUSTOMER)"
v-slot="slotProps"
> >
<BaseIcon <BaseIcon
name="UserIcon" name="UserIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
aria-hidden="true" aria-hidden="true"
/> />
{{ $t('customers.new_customer') }} {{ $t('customers.new_customer') }}
@ -156,20 +162,20 @@
</template> </template>
<router-link to="/admin/settings/account-settings"> <router-link to="/admin/settings/account-settings">
<BaseDropdownItem> <BaseDropdownItem v-slot="slotProps">
<BaseIcon <BaseIcon
name="CogIcon" name="CogIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
aria-hidden="true" aria-hidden="true"
/> />
{{ $t('navigation.settings') }} {{ $t('navigation.settings') }}
</BaseDropdownItem> </BaseDropdownItem>
</router-link> </router-link>
<BaseDropdownItem @click="logout"> <BaseDropdownItem v-slot="slotProps" @click="logout">
<BaseIcon <BaseIcon
name="LogoutIcon" name="LogoutIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" :class="slotProps.class"
aria-hidden="true" aria-hidden="true"
/> />
{{ $t('navigation.logout') }} {{ $t('navigation.logout') }}

View File

@ -130,6 +130,7 @@
mt-5 mt-5
list-none list-none
border-b-2 border-gray-200 border-solid border-b-2 border-gray-200 border-solid
dark:border-gray-600
" "
> >
<!-- Tabs --> <!-- Tabs -->

View File

@ -127,6 +127,7 @@
mt-5 mt-5
list-none list-none
border-b-2 border-gray-200 border-solid border-b-2 border-gray-200 border-solid
dark:border-gray-600
" "
> >
<!-- Tabs --> <!-- Tabs -->

View File

@ -121,6 +121,7 @@
mt-5 mt-5
list-none list-none
border-b-2 border-gray-200 border-solid border-b-2 border-gray-200 border-solid
dark:border-gray-600
" "
> >
<!-- Tabs --> <!-- Tabs -->

View File

@ -51,14 +51,14 @@
</div> </div>
</template> </template>
<BaseDropdownItem @click="onDownloadBckup(row.data)"> <BaseDropdownItem v-slot="slotProps" @click="onDownloadBckup(row.data)">
<BaseIcon name="CloudDownloadIcon" class="mr-3 text-gray-600" /> <BaseIcon name="CloudDownloadIcon" :class="slotProps.class" />
{{ $t('general.download') }} {{ $t('general.download') }}
</BaseDropdownItem> </BaseDropdownItem>
<BaseDropdownItem @click="onRemoveBackup(row.data)"> <BaseDropdownItem v-slot="slotProps" @click="onRemoveBackup(row.data)">
<BaseIcon name="TrashIcon" class="mr-3 text-gray-600" /> <BaseIcon name="TrashIcon" :class="slotProps.class" />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>
</BaseDropdown> </BaseDropdown>

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

@ -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

@ -45,27 +45,30 @@
<BaseDropdownItem <BaseDropdownItem
v-if="!row.data.set_as_default" v-if="!row.data.set_as_default"
v-slot="slotProps"
@click="setDefaultDiskData(row.data.id)" @click="setDefaultDiskData(row.data.id)"
> >
<BaseIcon class="mr-3 tetx-gray-600" name="CheckCircleIcon" /> <BaseIcon :class="slotProps.class" name="CheckCircleIcon" />
{{ $t('settings.disk.set_default_disk') }} {{ $t('settings.disk.set_default_disk') }}
</BaseDropdownItem> </BaseDropdownItem>
<BaseDropdownItem <BaseDropdownItem
v-if="row.data.type !== 'SYSTEM'" v-if="row.data.type !== 'SYSTEM'"
v-slot="slotProps"
@click="openEditDiskModal(row.data)" @click="openEditDiskModal(row.data)"
> >
<BaseIcon name="PencilIcon" class="mr-3 text-gray-600" /> <BaseIcon name="PencilIcon" :class="slotProps.class" />
{{ $t('general.edit') }} {{ $t('general.edit') }}
</BaseDropdownItem> </BaseDropdownItem>
<BaseDropdownItem <BaseDropdownItem
v-if="row.data.type !== 'SYSTEM' && !row.data.set_as_default" v-if="row.data.type !== 'SYSTEM' && !row.data.set_as_default"
v-slot="slotProps"
@click="removeDisk(row.data.id)" @click="removeDisk(row.data.id)"
> >
<BaseIcon name="TrashIcon" class="mr-3 text-gray-600" /> <BaseIcon name="TrashIcon" :class="slotProps.class" />
{{ $t('general.delete') }} {{ $t('general.delete') }}
</BaseDropdownItem> </BaseDropdownItem>
</BaseDropdown> </BaseDropdown>

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,21 +1,23 @@
<template> <template>
<div ref="companySwitchBar" class="relative rounded"> <div ref="companySwitchBar" class="relative rounded dark:text-white">
<CompanyModal /> <CompanyModal />
<div <div
class=" class="
flex flex
items-center items-center
justify-center justify-center
px-3 px-3
h-8 h-8
md:h-9 md:h-9
ml-2 ml-2
text-sm text-white text-sm
bg-white text-white
rounded bg-white
cursor-pointer rounded
bg-opacity-20 cursor-pointer
bg-opacity-20
dark:bg-gray-700
" "
@click="isShow = !isShow" @click="isShow = !isShow"
> >
@ -38,28 +40,42 @@
> >
<div <div
v-if="isShow" v-if="isShow"
class="absolute right-0 mt-2 bg-white rounded-md shadow-lg" class="
absolute
right-0
mt-2
bg-white
rounded-md
shadow-lg
dark:border
dark:border-white/10
dark:text-white
dark:bg-gray-800/[.95]
dark:shadow-glass
dark:backdrop-blur-xl
"
> >
<BaseDarkHighlight class="z-[-1] top-0 left-0" />
<div <div
class=" class="
overflow-y-auto overflow-y-auto
scrollbar-thin scrollbar-thumb-rounded-full scrollbar-thin
w-[250px] scrollbar-thumb-rounded-full
max-h-[350px] w-[250px] max-h-[350px]
scrollbar-thumb-gray-300 scrollbar-track-gray-10 scrollbar-thumb-gray-300
pb-4 scrollbar-track-gray-10
pb-4
" "
> >
<label <label
class=" class="
px-3 px-3
py-2 py-2
text-xs text-xs
font-semibold font-semibold
text-gray-400 text-gray-400
mb-0.5 mb-0.5
block block uppercase
uppercase
" "
> >
{{ $t('company_switcher.label') }} {{ $t('company_switcher.label') }}
@ -68,13 +84,13 @@
<div <div
v-if="companyStore.companies.length < 1" v-if="companyStore.companies.length < 1"
class=" class="
flex flex-col flex flex-col
items-center items-center
justify-center justify-center
p-2 p-2
px-3 px-3
mt-4 mt-4
text-base text-gray-400 text-base text-gray-400
" "
> >
<BaseIcon name="ExclamationCircleIcon" class="h-5 text-gray-400" /> <BaseIcon name="ExclamationCircleIcon" class="h-5 text-gray-400" />
@ -86,14 +102,17 @@
v-for="(company, index) in companyStore.companies" v-for="(company, index) in companyStore.companies"
:key="index" :key="index"
class=" class="
p-2 p-2
px-3 px-3
rounded-md rounded-md
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:text-primary-500 hover:bg-gray-100 hover:text-primary-500
dark:hover:bg-gray-700
text-gray-900
dark:text-white
" "
:class="{ :class="{
'bg-gray-100 text-primary-500': 'bg-gray-100 text-primary-500 dark:bg-gray-700':
companyStore.selectedCompany.id === company.id, companyStore.selectedCompany.id === company.id,
}" }"
@click="changeCompany(company)" @click="changeCompany(company)"
@ -101,18 +120,19 @@
<div class="flex items-center"> <div class="flex items-center">
<span <span
class=" class="
flex flex
items-center items-center
justify-center justify-center
mr-3 mr-3
overflow-hidden overflow-hidden
text-base text-sm
font-semibold font-semibold
bg-gray-200 bg-gray-200
rounded-md rounded-md
w-9 w-9
h-9 h-9
text-primary-500 text-primary-500
dark:bg-gray-900
" "
> >
<span v-if="!company.logo"> <span v-if="!company.logo">
@ -136,15 +156,17 @@
<div <div
v-if="userStore.currentUser.is_owner" v-if="userStore.currentUser.is_owner"
class=" class="
flex flex
items-center items-center
justify-center justify-center
p-4 p-4
pl-3 pl-3
border-t-2 border-gray-100 border-t-2
cursor-pointer border-gray-100
text-primary-400 cursor-pointer
hover:text-primary-500 text-primary-400
hover:text-primary-500
dark:border-gray-600
" "
@click="addNewCompany" @click="addNewCompany"
> >

View File

@ -1,5 +1,5 @@
<template> <template>
<div ref="searchBar" class="hidden rounded md:block relative"> <div ref="searchBar" class="hidden rounded md:block relative dark:text-white">
<div> <div>
<BaseInput <BaseInput
v-model="name" v-model="name"
@ -41,6 +41,11 @@
w-[300px] w-[300px]
h-[200px] h-[200px]
right-0 right-0
dark:border-white/10
dark:text-white
dark:bg-gray-800/[.95]
dark:shadow-glass
dark:backdrop-blur-xl
" "
> >
<div <div
@ -68,7 +73,7 @@
<div <div
v-for="(customer, index) in usersStore.customerList" v-for="(customer, index) in usersStore.customerList"
:key="index" :key="index"
class="p-2 hover:bg-gray-100 cursor-pointer rounded-md" class="p-2 hover:bg-gray-100 cursor-pointer rounded-md dark:hover:bg-gray-700/40"
> >
<router-link <router-link
:to="{ path: `/admin/customers/${customer.id}/view` }" :to="{ path: `/admin/customers/${customer.id}/view` }"
@ -87,6 +92,7 @@
bg-gray-200 bg-gray-200
rounded-full rounded-full
text-primary-500 text-primary-500
dark:bg-gray-600
" "
> >
{{ initGenerator(customer.name) }} {{ initGenerator(customer.name) }}
@ -116,7 +122,7 @@
<div <div
v-for="(user, index) in usersStore.userList" v-for="(user, index) in usersStore.userList"
:key="index" :key="index"
class="p-2 hover:bg-gray-100 cursor-pointer rounded-md" class="p-2 hover:bg-gray-100 cursor-pointer rounded-md dark:hover:bg-gray-700/40"
> >
<router-link <router-link
:to="{ path: `/admin/users/${user.id}/edit` }" :to="{ path: `/admin/users/${user.id}/edit` }"
@ -135,6 +141,7 @@
bg-gray-200 bg-gray-200
rounded-full rounded-full
text-primary-500 text-primary-500
dark:bg-gray-600
" "
> >
{{ initGenerator(user.name) }} {{ initGenerator(user.name) }}

View File

@ -437,21 +437,22 @@ export default {
required: false, required: false,
default: () => ({ default: () => ({
container: container:
'p-0 relative mx-auto w-full flex items-center justify-end box-border cursor-pointer border border-gray-200 rounded-md bg-white 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:
'cursor-default bg-gray-200 bg-opacity-50 !text-gray-400', 'bg-gray-200 bg-opacity-50 !text-gray-400 dark:!text-gray-800 !dark:text-gray-500 !cursor-default dark:opacity-25',
containerOpen: '', containerOpen: '',
containerOpenTop: '', containerOpenTop: '',
containerActive: 'ring-1 ring-primary-400 border-primary-400', containerActive: 'ring-1 ring-primary-400 border-primary-400',
containerInvalid: containerInvalid:
'border-red-400 ring-red-400 focus:ring-red-400 focus:border-red-400', 'border-red-500 ring-red-500 focus:ring-red-500 focus:border-red-500 dark:border-red-500 dark:ring-red-500 dark:focus:ring-red-500 dark:focus:border-red-500',
containerInvalidActive: 'ring-1 border-red-400 ring-red-400', containerInvalidActive:
'ring-1 border-red-500 ring-red-500 dark:ring-1 dark:border-red-500 dark:ring-red-500',
singleLabel: singleLabel:
'flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5', 'flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5 dark:text-white',
multipleLabel: multipleLabel:
'flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5', 'flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5 dark:text-white',
search: search:
'w-full absolute inset-0 outline-none appearance-none box-border border-0 text-sm font-sans bg-white rounded-md pl-3.5', 'w-full absolute inset-0 outline-none appearance-none box-border border-0 text-sm font-sans bg-white rounded-md pl-3.5 border-transparent focus:border-transparent focus:ring-0 dark:bg-gray-700 dark:text-white',
tags: 'grow shrink flex flex-wrap mt-1 pl-2', tags: 'grow shrink flex flex-wrap mt-1 pl-2',
tag: 'bg-primary-500 text-white text-sm font-semibold py-0.5 pl-2 rounded mr-1 mb-1 flex items-center whitespace-nowrap', tag: 'bg-primary-500 text-white text-sm font-semibold py-0.5 pl-2 rounded mr-1 mb-1 flex items-center whitespace-nowrap',
tagDisabled: 'pr-2 !bg-gray-400 text-white', tagDisabled: 'pr-2 !bg-gray-400 text-white',
@ -461,12 +462,12 @@ export default {
'bg-multiselect-remove text-white bg-center bg-no-repeat opacity-30 inline-block w-3 h-3 group-hover:opacity-60', 'bg-multiselect-remove text-white bg-center bg-no-repeat opacity-30 inline-block w-3 h-3 group-hover:opacity-60',
tagsSearchWrapper: 'inline-block relative mx-1 mb-1 grow shrink h-full', tagsSearchWrapper: 'inline-block relative mx-1 mb-1 grow shrink h-full',
tagsSearch: tagsSearch:
'absolute inset-0 border-0 focus:outline-none !shadow-none !focus:shadow-none appearance-none p-0 text-sm font-sans box-border w-full', 'absolute inset-0 border-0 focus:outline-none !shadow-none !focus:shadow-none appearance-none p-0 sm:text-sm font-sans box-border w-full dark:bg-gray-700',
tagsSearchCopy: 'invisible whitespace-pre-wrap inline-block h-px', tagsSearchCopy: 'invisible whitespace-pre-wrap inline-block h-px',
placeholder: placeholder:
'flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5 text-gray-400 text-sm', 'flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5 text-gray-400 sm:text-sm dark:text-gray-500',
caret: caret:
'bg-multiselect-caret bg-center bg-no-repeat w-5 h-5 py-px box-content z-5 relative mr-1 opacity-40 shrink-0 grow-0 transition-transform', 'bg-multiselect-caret-black dark:bg-multiselect-caret-white bg-center bg-no-repeat w-5 h-5 py-px box-content z-5 relative mr-1 opacity-40 shrink-0 grow-0 transition-transform dark:text-white',
caretOpen: 'rotate-180 pointer-events-auto', caretOpen: 'rotate-180 pointer-events-auto',
clear: clear:
'pr-3.5 relative z-10 opacity-40 transition duration-300 shrink-0 grow-0 flex hover:opacity-80', 'pr-3.5 relative z-10 opacity-40 transition duration-300 shrink-0 grow-0 flex hover:opacity-80',
@ -475,7 +476,7 @@ export default {
spinner: spinner:
'bg-multiselect-spinner bg-center bg-no-repeat w-4 h-4 z-10 mr-3.5 animate-spin shrink-0 grow-0', 'bg-multiselect-spinner bg-center bg-no-repeat w-4 h-4 z-10 mr-3.5 animate-spin shrink-0 grow-0',
dropdown: dropdown:
'max-h-60 shadow-lg absolute -left-px -right-px -bottom-1 translate-y-full border border-gray-300 mt-1 overflow-y-auto z-50 bg-white flex flex-col rounded-md', 'max-h-60 shadow-lg absolute -left-px -right-px -bottom-1 translate-y-full border border-gray-300 mt-1 overflow-y-auto z-50 bg-white dark:border-gray-600 flex flex-col rounded-md dark:bg-gray-800 dark:shadow-glass',
dropdownTop: dropdownTop:
'-translate-y-full -top-2 bottom-auto flex-col-reverse rounded-md', '-translate-y-full -top-2 bottom-auto flex-col-reverse rounded-md',
dropdownHidden: 'hidden', dropdownHidden: 'hidden',
@ -483,7 +484,7 @@ export default {
optionsTop: 'flex-col-reverse', optionsTop: 'flex-col-reverse',
group: 'p-0 m-0', group: 'p-0 m-0',
groupLabel: groupLabel:
'flex text-sm box-border items-center justify-start text-left py-1 px-3 font-semibold bg-gray-200 cursor-default leading-normal', 'flex text-sm box-border items-center justify-start text-left py-1 px-3 font-semibold bg-gray-200 dark:bg-gray-700 dark:text-gray-400 cursor-default leading-normal',
groupLabelPointable: 'cursor-pointer', groupLabelPointable: 'cursor-pointer',
groupLabelPointed: 'bg-gray-300 text-gray-700', groupLabelPointed: 'bg-gray-300 text-gray-700',
groupLabelSelected: 'bg-primary-600 text-white', groupLabelSelected: 'bg-primary-600 text-white',
@ -493,15 +494,18 @@ export default {
'text-primary-100 bg-primary-600 bg-opacity-50 cursor-not-allowed', 'text-primary-100 bg-primary-600 bg-opacity-50 cursor-not-allowed',
groupOptions: 'p-0 m-0', groupOptions: 'p-0 m-0',
option: option:
'flex items-center justify-start box-border text-left cursor-pointer text-sm leading-snug py-2 px-3', 'flex items-center justify-start box-border text-left cursor-pointer text-sm leading-snug py-2 px-3 dark:text-gray-200',
optionPointed: 'text-gray-800 bg-gray-100', optionPointed:
'text-gray-800 bg-gray-100 dark:text-white dark:bg-gray-700/30',
optionSelected: 'text-white bg-primary-500', optionSelected: 'text-white bg-primary-500',
optionDisabled: 'text-gray-300 cursor-not-allowed', optionDisabled: 'text-gray-300 cursor-not-allowed dark:text-gray-400',
optionSelectedPointed: 'text-white bg-primary-500 opacity-90', optionSelectedPointed: 'text-white bg-primary-500 opacity-90',
optionSelectedDisabled: optionSelectedDisabled:
'text-primary-100 bg-primary-500 bg-opacity-50 cursor-not-allowed', 'text-primary-100 bg-primary-500 bg-opacity-50 cursor-not-allowed',
noOptions: 'py-2 px-3 text-gray-600 bg-white', noOptions:
noResults: 'py-2 px-3 text-gray-600 bg-white', 'py-2 px-3 text-gray-600 bg-white dark:bg-gray-700 dark:text-gray-200',
noResults:
'py-2 px-3 text-gray-600 bg-white dark:bg-gray-700 dark:text-gray-200',
fakeInput: fakeInput:
'bg-transparent absolute left-0 right-0 -bottom-px w-full h-px border-0 p-0 appearance-none outline-none text-transparent', 'bg-transparent absolute left-0 right-0 -bottom-px w-full h-px border-0 p-0 appearance-none outline-none text-transparent',
spacer: 'h-9 py-px box-content', spacer: 'h-9 py-px box-content',

View File

@ -1,6 +1,6 @@
<template> <template>
<nav> <nav>
<ol class="flex flex-wrap py-4 text-gray-900 rounded list-reset"> <ol class="flex flex-wrap py-4 text-gray-900 rounded list-reset dark:text-gray-400">
<slot /> <slot />
</ol> </ol>
</nav> </nav>

View File

@ -8,7 +8,9 @@
font-medium font-medium
leading-5 leading-5
text-gray-900 text-gray-900
dark:text-gray-400
outline-none outline-none
dark:focus:ring-offset-gray-900
focus:ring-2 focus:ring-offset-2 focus:ring-primary-400 focus:ring-2 focus:ring-offset-2 focus:ring-primary-400
" "
:to="to" :to="to"

View File

@ -1,6 +1,7 @@
<script setup> <script setup>
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import SpinnerIcon from '@/scripts/components/icons/SpinnerIcon.vue' import SpinnerIcon from '@/scripts/components/icons/SpinnerIcon.vue'
const props = defineProps({ const props = defineProps({
contentLoading: { contentLoading: {
type: Boolean, type: Boolean,
@ -9,7 +10,7 @@ const props = defineProps({
defaultClass: { defaultClass: {
type: String, type: String,
default: default:
'inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2', 'inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 dark:focus:ring-offset-gray-800',
}, },
tag: { tag: {
type: String, type: String,
@ -27,6 +28,10 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: false, default: false,
}, },
loadingRight: {
type: Boolean,
default: false,
},
size: { size: {
type: String, type: String,
default: 'md', default: 'md',
@ -81,17 +86,17 @@ const placeHolderSize = computed(() => {
const variantClass = computed(() => { const variantClass = computed(() => {
return { return {
'border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500': 'border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500 dark:bg-primary-500 dark:hover:bg-primary-600':
props.variant === 'primary', props.variant === 'primary',
'border-transparent text-primary-700 bg-primary-100 hover:bg-primary-200 focus:ring-primary-500': 'border-transparent text-primary-700 bg-primary-100 hover:bg-primary-200 focus:ring-primary-500':
props.variant === 'secondary', props.variant === 'secondary',
'border-transparent border-solid border-primary-500 font-normal transition ease-in-out duration-150 text-primary-500 hover:bg-primary-200 shadow-inner focus:ring-primary-500': 'border-transparent border-solid border-primary-500 font-normal transition ease-in-out duration-150 text-primary-500 hover:bg-primary-100 shadow-inner focus:ring-primary-500 dark:text-primary-400 dark:border-primary-400 dark:hover:bg-transparent dark:hover:text-primary-500 dark:hover:border-primary-500':
props.variant == 'primary-outline', props.variant == 'primary-outline',
'border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0': 'border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-900':
props.variant == 'white', props.variant == 'white',
'border-transparent shadow-sm text-white bg-red-600 hover:bg-red-700 focus:ring-red-500': 'border-transparent shadow-sm text-white bg-red-600 hover:bg-red-700 focus:ring-red-500':
props.variant === 'danger', props.variant === 'danger',
'border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0': 'border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0 dark:bg-gray-600 dark:text-white dark:hover:bg-opacity-60':
props.variant === 'gray', props.variant === 'gray',
} }
}) })
@ -124,6 +129,13 @@ const iconRightClass = computed(() => {
'ml-3 -mr-1 h-5 w-5': props.size === 'lg' || props.size === 'xl', 'ml-3 -mr-1 h-5 w-5': props.size === 'lg' || props.size === 'xl',
} }
}) })
const buttonDisabledClass = computed(() => {
if (props.disabled || props.loading)
return 'cursor-not-allowed bg-opacity-70 dark:!bg-opacity-40 hover:!bg-opacity-70 pointer-event-none'
return ''
})
</script> </script>
<template> <template>
@ -141,15 +153,17 @@ const iconRightClass = computed(() => {
<BaseCustomTag <BaseCustomTag
v-else v-else
:tag="tag" :tag="tag"
:disabled="disabled" :disabled="disabled || loading"
:class="[defaultClass, sizeClass, variantClass, roundedClass]" :class="[defaultClass, sizeClass, variantClass, roundedClass, buttonDisabledClass]"
> >
<SpinnerIcon v-if="loading" :class="[iconLeftClass, iconVariantClass]" /> <SpinnerIcon v-if="loading && !loadingRight" :class="[iconLeftClass, iconVariantClass]" />
<slot v-else name="left" :class="iconLeftClass"></slot> <slot v-else name="left" :class="iconLeftClass" />
<slot /> <slot />
<slot name="right" :class="[iconRightClass, iconVariantClass]"></slot> <SpinnerIcon v-if="loading && loadingRight" :class="[iconRightClass, iconVariantClass]" />
<slot v-else name="right" :class="[iconRightClass, iconVariantClass]" />
</BaseCustomTag> </BaseCustomTag>
</template> </template>

View File

@ -1,5 +1,9 @@
<template> <template>
<div class="bg-white rounded-lg shadow"> <div
class="bg-white rounded-lg shadow dark:bg-gray-800 dark:text-white dark:shadow-glass dark:border dark:border-white/10 dark:bg-gray-800/70 relative"
>
<BaseDarkHighlight class="z-[-1] mt-10" />
<div <div
v-if="hasHeaderSlot" v-if="hasHeaderSlot"
class="px-5 py-4 text-black border-b border-gray-100 border-solid" class="px-5 py-4 text-black border-b border-gray-100 border-solid"

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

@ -39,6 +39,8 @@ $base-content-placeholders-border-radius: 6px !default;
$base-content-placeholders-line-height: 15px !default; $base-content-placeholders-line-height: 15px !default;
$base-content-placeholders-spacing: 10px !default; $base-content-placeholders-spacing: 10px !default;
$base-content-placeholders-primary-color-dark: rgb(71, 85, 105) !default;
$base-content-placeholders-secondary-color-dark: rgb(71, 85, 105) !default;
// Animations // Animations
@keyframes vueContentPlaceholdersAnimation { @keyframes vueContentPlaceholdersAnimation {
0% { 0% {
@ -57,6 +59,10 @@ $base-content-placeholders-spacing: 10px !default;
min-height: $base-content-placeholders-line-height; min-height: $base-content-placeholders-line-height;
background: $base-content-placeholders-secondary-color; background: $base-content-placeholders-secondary-color;
.dark & {
background: $base-content-placeholders-secondary-color-dark;
}
.base-content-placeholders-is-rounded & { .base-content-placeholders-is-rounded & {
border-radius: $base-content-placeholders-border-radius; border-radius: $base-content-placeholders-border-radius;
} }
@ -86,6 +92,15 @@ $base-content-placeholders-spacing: 10px !default;
animation-name: vueContentPlaceholdersAnimation; animation-name: vueContentPlaceholdersAnimation;
animation-timing-function: linear; animation-timing-function: linear;
} }
.dark .base-content-placeholders-is-animated &::before {
background: linear-gradient(
to right,
transparent 0%,
darken($base-content-placeholders-secondary-color-dark, 5%) 15%,
transparent 30%
);
}
} }
@mixin base-content-placeholders-spacing { @mixin base-content-placeholders-spacing {
@ -156,6 +171,10 @@ $base-content-placeholders-spacing: 10px !default;
min-height: $base-content-placeholders-line-height; min-height: $base-content-placeholders-line-height;
background: $base-content-placeholders-secondary-color; background: $base-content-placeholders-secondary-color;
.dark & {
background: $base-content-placeholders-secondary-color-dark;
}
.base-content-placeholders-is-animated &::before { .base-content-placeholders-is-animated &::before {
content: ''; content: '';
position: absolute; position: absolute;
@ -177,6 +196,14 @@ $base-content-placeholders-spacing: 10px !default;
animation-timing-function: linear; animation-timing-function: linear;
} }
.dark .base-content-placeholders-is-animated &::before {
background: linear-gradient(
to right,
transparent 0%,
darken($base-content-placeholders-secondary-color-dark, 5%) 15%,
transparent 30%
);
}
// @include base-content-placeholders-spacing; // @include base-content-placeholders-spacing;
} }

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

@ -0,0 +1,21 @@
<template>
<div
class="
hidden
top-0
w-full
absolute
ml-auto
mr-auto
left-0
right-0
text-center
h-full
rounded-full
bg-highlight/[.10]
blur-2xl
dark:block
z-[-1]
"
/>
</template>

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

@ -30,8 +30,13 @@
leave-to="opacity-0" leave-to="opacity-0"
> >
<DialogOverlay <DialogOverlay
class="fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75" class="fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75 dark:backdrop-blur-xl dark:bg-gray-900/80"
>
<BaseDarkHighlight
class="!bg-highlight/[.17] !top-1/2 h-60 -translate-y-1/2 mt-5"
:class="dialogSizeClasses"
/> />
</DialogOverlay>
</TransitionChild> </TransitionChild>
<!-- This element is to trick the browser into centering the modal contents. --> <!-- This element is to trick the browser into centering the modal contents. -->
@ -64,6 +69,11 @@
shadow-xl shadow-xl
sm:my-8 sm:align-middle sm:w-full sm:p-6 sm:my-8 sm:align-middle sm:w-full sm:p-6
relative relative
dark:backdrop-blur-xl
dark:shadow-glass
dark:border
dark:border-white/10
dark:bg-gray-800
" "
:class="dialogSizeClasses" :class="dialogSizeClasses"
> >
@ -80,31 +90,31 @@
rounded-full rounded-full
" "
:class="{ :class="{
'bg-green-100': dialogStore.variant === 'primary', 'bg-green-100 dark:bg-primary-500': dialogStore.variant === 'primary',
'bg-red-100': dialogStore.variant === 'danger', 'bg-red-100 dark:bg-red-500': dialogStore.variant === 'danger',
}" }"
> >
<BaseIcon <BaseIcon
v-if="dialogStore.variant === 'primary'" v-if="dialogStore.variant === 'primary'"
name="CheckIcon" name="CheckIcon"
class="w-6 h-6 text-green-600" class="w-6 h-6 text-green-600 dark:text-white"
/> />
<BaseIcon <BaseIcon
v-else v-else
name="ExclamationIcon" name="ExclamationIcon"
class="w-6 h-6 text-red-600" class="w-6 h-6 text-red-600 dark:text-white"
aria-hidden="true" aria-hidden="true"
/> />
</div> </div>
<div class="mt-3 text-center sm:mt-5"> <div class="mt-3 text-center sm:mt-5">
<DialogTitle <DialogTitle
as="h3" as="h3"
class="text-lg font-medium leading-6 text-gray-900" class="text-lg font-medium leading-6 text-gray-900 dark:text-white"
> >
{{ dialogStore.title }} {{ dialogStore.title }}
</DialogTitle> </DialogTitle>
<div class="mt-2"> <div class="mt-2">
<p class="text-sm text-gray-500"> <p class="text-sm text-gray-500 dark:text-gray-400">
{{ dialogStore.message }} {{ dialogStore.message }}
</p> </p>
</div> </div>

View File

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

View File

@ -69,7 +69,8 @@ const props = defineProps({
}) })
const containerClasses = computed(() => { const containerClasses = computed(() => {
const baseClass = `origin-top-right rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 divide-y divide-gray-100 focus:outline-none` const baseClass = `dark:border dark:border-white/10 dark:text-white dark:bg-gray-800 dark:shadow-glass
origin-top-right rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 divide-y divide-gray-100 focus:outline-none`
return `${baseClass} ${props.containerClass}` return `${baseClass} ${props.containerClass}`
}) })

View File

@ -2,16 +2,20 @@
<MenuItem v-slot="{ active }" v-bind="$attrs"> <MenuItem v-slot="{ active }" v-bind="$attrs">
<a <a
href="#" href="#"
class="group flex items-center px-4 py-2 text-sm font-normal"
:class="[ :class="[
active ? 'bg-gray-100 text-gray-900' : 'text-gray-700', active
'group flex items-center px-4 py-2 text-sm font-normal', ? 'bg-gray-100 text-gray-900 dark:text-white dark:bg-gray-700'
: 'text-gray-700 dark:text-gray-200',
]" ]"
> >
<slot :active="active" /> <slot :active="active" :class="defaultIconClass" />
</a> </a>
</MenuItem> </MenuItem>
</template> </template>
<script setup> <script setup>
import { MenuItem } from '@headlessui/vue' import { MenuItem } from '@headlessui/vue'
const defaultIconClass =
'w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500 dark:text-gray-400 dark:group-hover:text-white'
</script> </script>

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

@ -21,6 +21,7 @@
group group
min-h-[100px] min-h-[100px]
bg-gray-50 bg-gray-50
dark:bg-gray-700 dark:border-gray-600
" "
:class="avatar ? 'w-32 h-32' : 'w-full'" :class="avatar ? 'w-32 h-32' : 'w-full'"
> >
@ -49,7 +50,7 @@
<a <a
href="#" href="#"
class="absolute z-30 bg-white rounded-full -bottom-3 -right-3 group" class="absolute z-30 bg-white rounded-full -bottom-3 -right-3 group dark:bg-gray-900"
@click.prevent.stop="onBrowse" @click.prevent.stop="onBrowse"
> >
<BaseIcon <BaseIcon
@ -95,7 +96,7 @@
<div <div
v-else-if="localFiles.length && avatar && !multiple" v-else-if="localFiles.length && avatar && !multiple"
class="flex w-full h-full border border-gray-200 rounded" class="flex w-full h-full border border-gray-200 rounded dark:border-gray-600"
> >
<img <img
v-if="localFiles[0].image" v-if="localFiles[0].image"
@ -169,10 +170,11 @@
-right-3 -right-3
group group
hover:border-gray-300 hover:border-gray-300
dark:border-gray-600 dark:bg-gray-900 dark:hover:border-gray-700
" "
@click.prevent.stop="onAvatarRemove(localFiles[0])" @click.prevent.stop="onAvatarRemove(localFiles[0])"
> >
<BaseIcon name="XIcon" class="h-4 text-xl leading-6 text-black" /> <BaseIcon name="XIcon" class="h-4 text-xl leading-6 text-black dark:text-white" />
</a> </a>
</div> </div>
@ -195,6 +197,7 @@
hover:border-gray-500 hover:border-gray-500
relative relative
max-w-md max-w-md
dark:border-gray-600 dark:bg-transparent dark:hover:border-gray-700
" "
@click.prevent @click.prevent
> >
@ -270,6 +273,7 @@
-right-3 -right-3
group group
hover:border-gray-300 hover:border-gray-300
dark:border-gray-600 dark:bg-gray-900 dark:hover:border-gray-700
" "
@click.prevent.stop="onFileRemove(index)" @click.prevent.stop="onFileRemove(index)"
> >
@ -293,6 +297,7 @@
hover:border-gray-500 hover:border-gray-500
relative relative
max-w-md max-w-md
dark:border-gray-600 dark:bg-gray-800 dark:hover:border-gray-700
" "
@click.prevent @click.prevent
> >
@ -368,10 +373,11 @@
-right-3 -right-3
group group
hover:border-gray-300 hover:border-gray-300
dark:border-gray-600 dark:bg-gray-900 dark:hover:border-gray-700
" "
@click.prevent.stop="onFileRemove(index)" @click.prevent.stop="onFileRemove(index)"
> >
<BaseIcon name="XIcon" class="h-4 text-xl leading-6 text-black" /> <BaseIcon name="XIcon" class="h-4 text-xl leading-6 text-black dark:text-white" />
</a> </a>
</a> </a>
</div> </div>

View File

@ -7,7 +7,7 @@
leave-from-class="opacity-100" leave-from-class="opacity-100"
leave-to-class="opacity-0" leave-to-class="opacity-0"
> >
<div v-show="show" class="relative z-10 p-4 md:p-8 bg-gray-200 rounded"> <div v-show="show" class="relative z-10 p-4 md:p-8 bg-gray-200 rounded dark:bg-gray-800">
<slot name="filter-header" /> <slot name="filter-header" />
<label <label
@ -20,6 +20,7 @@
hover:text-gray-700 hover:text-gray-700
top-2.5 top-2.5
right-3.5 right-3.5
dark:text-gray-300
" "
@click="$emit('clear')" @click="$emit('clear')"
> >

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

@ -65,6 +65,7 @@
rounded-l-md rounded-l-md
bg-gray-50 bg-gray-50
sm:text-sm sm:text-sm
dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300
" "
> >
{{ addon }} {{ addon }}
@ -82,7 +83,7 @@
pointer-events-none pointer-events-none
" "
> >
<span class="text-gray-500 sm:text-sm"> <span class="text-gray-500 dark:text-white sm:text-sm ">
{{ inlineAddon }} {{ inlineAddon }}
</span> </span>
</div> </div>
@ -199,7 +200,7 @@ const props = defineProps({
defaultInputClass: { defaultInputClass: {
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',
}, },
iconLeftClass: { iconLeftClass: {
type: String, type: String,
@ -250,7 +251,8 @@ const inputAddonClass = computed(() => {
const inputInvalidClass = computed(() => { const inputInvalidClass = 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'
@ -258,7 +260,7 @@ const inputInvalidClass = computed(() => {
const inputDisabledClass = computed(() => { const inputDisabledClass = computed(() => {
if (props.disabled) { if (props.disabled) {
return `border-gray-100 bg-gray-100 !text-gray-400 ring-gray-200 focus:ring-gray-200 focus:border-gray-100` return `border-gray-100 bg-gray-100 !text-gray-400 dark:!text-gray-200 ring-gray-200 focus:ring-gray-200 focus:border-gray-100 dark:opacity-25 `
} }
return '' return ''

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

@ -29,8 +29,21 @@
leave-to="opacity-0" leave-to="opacity-0"
> >
<DialogOverlay <DialogOverlay
class="fixed inset-0 transition-opacity bg-gray-700 bg-opacity-25" class="
/> fixed
inset-0
transition-opacity
bg-gray-700
bg-opacity-25
dark:backdrop-blur-sm
dark:bg-gray-900/80
"
>
<BaseDarkHighlight
class="!bg-highlight/[.17] !top-1/2 -translate-y-1/2 mt-5 h-96"
:class="modalSize"
/>
</DialogOverlay>
</TransitionChild> </TransitionChild>
<!-- This element is to trick the browser into centering the modal contents. --> <!-- This element is to trick the browser into centering the modal contents. -->
@ -61,7 +74,11 @@
my-4 my-4
${modalSize} ${modalSize}
sm:w-full sm:w-full
border-t-8 border-solid rounded shadow-xl border-primary-500`" dark:shadow-glass
dark:border
dark:border-white/10
dark:bg-gray-800/90
border-t-8 border-solid rounded shadow-xl border-primary-500`"
> >
<div <div
v-if="hasHeaderSlot" v-if="hasHeaderSlot"
@ -74,6 +91,8 @@
text-lg text-lg
font-medium font-medium
text-black text-black
dark:text-white
dark:border-gray-600
border-b border-gray-200 border-solid border-b border-gray-200 border-solid
" "
> >

View File

@ -0,0 +1,14 @@
<template>
<div
class="
z-0
flex
justify-end
p-4
border-t border-gray-200 border-solid
dark:border-gray-600
"
>
<slot />
</div>
</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

@ -1,7 +1,7 @@
<template> <template>
<div class="flex flex-wrap justify-between"> <div class="flex flex-wrap justify-between">
<div> <div>
<h3 class="text-2xl font-bold text-left text-black"> <h3 class="text-2xl font-bold text-left text-black dark:text-white">
{{ title }} {{ title }}
</h3> </h3>
<slot /> <slot />

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 bg-white 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

@ -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,14 +28,13 @@
pr-10 pr-10
text-left text-left
bg-white bg-white
border border-gray-200 dark:bg-gray-700
rounded-md rounded-md
shadow-sm shadow-sm
cursor-default cursor-default
focus:outline-none focus:outline-none
focus:ring-1 focus:ring-1
focus:ring-primary-500 focus:ring-primary-400 focus:border-primary-400
focus:border-primary-500
sm:text-sm sm:text-sm
" "
> >
@ -89,6 +88,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 +100,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

@ -7,7 +7,7 @@
<Switch <Switch
v-model="enabled" v-model="enabled"
:class="enabled ? 'bg-primary-500' : 'bg-gray-300'" :class="enabled ? 'bg-primary-500' : 'bg-gray-300 dark:bg-gray-900'"
class=" class="
relative relative
inline-flex inline-flex
@ -21,7 +21,11 @@
v-bind="$attrs" v-bind="$attrs"
> >
<span <span
:class="enabled ? 'translate-x-6' : 'translate-x-1'" :class="
enabled
? 'translate-x-6 dark:bg-white'
: 'translate-x-1 dark:bg-gray-500'
"
class=" class="
inline-block inline-block
w-4 w-4

View File

@ -5,12 +5,12 @@
<div class="flex flex-col"> <div class="flex flex-col">
<SwitchLabel <SwitchLabel
as="p" as="p"
class="p-0 mb-1 text-sm leading-snug text-black font-medium" class="p-0 mb-1 text-sm leading-snug text-black font-medium dark:text-white"
passive passive
> >
{{ title }} {{ title }}
</SwitchLabel> </SwitchLabel>
<SwitchDescription class="text-sm text-gray-500"> <SwitchDescription class="text-sm text-gray-500 dark:text-gray-400">
{{ description }} {{ description }}
</SwitchDescription> </SwitchDescription>
</div> </div>
@ -18,7 +18,7 @@
:disabled="disabled" :disabled="disabled"
:model-value="modelValue" :model-value="modelValue"
:class="[ :class="[
modelValue ? 'bg-primary-500' : 'bg-gray-200', modelValue ? 'bg-primary-500' : 'bg-gray-200 dark:bg-gray-900',
'ml-4 relative inline-flex shrink-0 h-6 w-11 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500', 'ml-4 relative inline-flex shrink-0 h-6 w-11 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500',
]" ]"
@update:modelValue="onUpdate" @update:modelValue="onUpdate"
@ -26,7 +26,7 @@
<span <span
aria-hidden="true" aria-hidden="true"
:class="[ :class="[
modelValue ? 'translate-x-5' : 'translate-x-0', modelValue ? 'translate-x-5 dark:bg-white' : 'translate-x-0 dark:bg-gray-500',
'inline-block h-5 w-5 rounded-full bg-white shadow ring-0 transition ease-in-out duration-200', 'inline-block h-5 w-5 rounded-full bg-white shadow ring-0 transition ease-in-out duration-200',
]" ]"
/> />

View File

@ -7,7 +7,7 @@
> >
<TabList <TabList
:class="[ :class="[
'flex border-b border-grey-light', 'flex border-b border-grey-light dark:border-gray-600',
'relative overflow-x-auto overflow-y-hidden', 'relative overflow-x-auto overflow-y-hidden',
'lg:pb-0 lg:ml-0', 'lg:pb-0 lg:ml-0',
]" ]"
@ -22,8 +22,8 @@
:class="[ :class="[
'px-8 py-2 text-sm leading-5 font-medium flex items-center relative border-b-2 mt-4 focus:outline-none whitespace-nowrap', 'px-8 py-2 text-sm leading-5 font-medium flex items-center relative border-b-2 mt-4 focus:outline-none whitespace-nowrap',
selected selected
? ' border-primary-400 text-black font-medium' ? 'border-primary-400 text-black font-medium dark:text-white'
: 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300', : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-400 dark:hover:border-gray-500',
]" ]"
> >
{{ tab.title }} {{ tab.title }}

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

@ -16,13 +16,15 @@
text-left text-left
bg-white bg-white
border border-gray-200 border border-gray-200
dark:border-gray-600
rounded-md rounded-md
min-h-[200px] min-h-[200px]
overflow-hidden overflow-hidden
dark:bg-gray-700 dark:text-white
" "
> >
<div v-if="editor" class="editor-content"> <div v-if="editor" class="editor-content">
<div class="flex justify-end p-2 border-b border-gray-200 md:hidden"> <div class="flex justify-end p-2 border-b border-gray-200 dark:border-gray-600 md:hidden">
<BaseDropdown width-class="w-48"> <BaseDropdown width-class="w-48">
<template #activator> <template #activator>
<div <div
@ -42,7 +44,7 @@
<dots-vertical-icon class="w-6 h-6 text-gray-600" /> <dots-vertical-icon class="w-6 h-6 text-gray-600" />
</div> </div>
</template> </template>
<div class="flex flex-wrap space-x-1"> <div class="flex flex-wrap space-x-1 dark:text-white">
<span <span
class=" class="
flex flex
@ -53,8 +55,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('bold') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bold') }"
@click="editor.chain().focus().toggleBold().run()" @click="editor.chain().focus().toggleBold().run()"
> >
<bold-icon class="h-3 cursor-pointer fill-current" /> <bold-icon class="h-3 cursor-pointer fill-current" />
@ -69,8 +72,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('italic') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('italic') }"
@click="editor.chain().focus().toggleItalic().run()" @click="editor.chain().focus().toggleItalic().run()"
> >
<italic-icon class="h-3 cursor-pointer fill-current" /> <italic-icon class="h-3 cursor-pointer fill-current" />
@ -85,8 +89,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('strike') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('strike') }"
@click="editor.chain().focus().toggleStrike().run()" @click="editor.chain().focus().toggleStrike().run()"
> >
<strikethrough-icon class="h-3 cursor-pointer fill-current" /> <strikethrough-icon class="h-3 cursor-pointer fill-current" />
@ -101,8 +106,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('code') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('code') }"
@click="editor.chain().focus().toggleCode().run()" @click="editor.chain().focus().toggleCode().run()"
> >
<coding-icon class="h-3 cursor-pointer fill-current" /> <coding-icon class="h-3 cursor-pointer fill-current" />
@ -117,8 +123,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('paragraph') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('paragraph') }"
@click="editor.chain().focus().setParagraph().run()" @click="editor.chain().focus().setParagraph().run()"
> >
<paragraph-icon class="h-3 cursor-pointer fill-current" /> <paragraph-icon class="h-3 cursor-pointer fill-current" />
@ -133,9 +140,10 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ :class="{
'bg-gray-200': editor.isActive('heading', { level: 1 }), 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 1 }),
}" }"
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()" @click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
> >
@ -151,9 +159,10 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ :class="{
'bg-gray-200': editor.isActive('heading', { level: 2 }), 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 2 }),
}" }"
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()" @click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
> >
@ -169,9 +178,10 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ :class="{
'bg-gray-200': editor.isActive('heading', { level: 3 }), 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 3 }),
}" }"
@click="editor.chain().focus().toggleHeading({ level: 3 }).run()" @click="editor.chain().focus().toggleHeading({ level: 3 }).run()"
> >
@ -188,8 +198,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('bulletList') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bulletList') }"
@click="editor.chain().focus().toggleBulletList().run()" @click="editor.chain().focus().toggleBulletList().run()"
> >
<list-ul-icon class="h-3 cursor-pointer fill-current" /> <list-ul-icon class="h-3 cursor-pointer fill-current" />
@ -204,8 +215,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('orderedList') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('orderedList') }"
@click="editor.chain().focus().toggleOrderedList().run()" @click="editor.chain().focus().toggleOrderedList().run()"
> >
<list-icon class="h-3 cursor-pointer fill-current" /> <list-icon class="h-3 cursor-pointer fill-current" />
@ -220,8 +232,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('blockquote') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('blockquote') }"
@click="editor.chain().focus().toggleBlockquote().run()" @click="editor.chain().focus().toggleBlockquote().run()"
> >
<quote-icon class="h-3 cursor-pointer fill-current" /> <quote-icon class="h-3 cursor-pointer fill-current" />
@ -236,8 +249,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('codeBlock') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('codeBlock') }"
@click="editor.chain().focus().toggleCodeBlock().run()" @click="editor.chain().focus().toggleCodeBlock().run()"
> >
<code-block-icon class="h-3 cursor-pointer fill-current" /> <code-block-icon class="h-3 cursor-pointer fill-current" />
@ -252,8 +266,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('undo') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('undo') }"
@click="editor.chain().focus().undo().run()" @click="editor.chain().focus().undo().run()"
> >
<undo-icon class="h-3 cursor-pointer fill-current" /> <undo-icon class="h-3 cursor-pointer fill-current" />
@ -268,8 +283,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('redo') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('redo') }"
@click="editor.chain().focus().redo().run()" @click="editor.chain().focus().redo().run()"
> >
<redo-icon class="h-3 cursor-pointer fill-current" /> <redo-icon class="h-3 cursor-pointer fill-current" />
@ -277,7 +293,7 @@
</div> </div>
</BaseDropdown> </BaseDropdown>
</div> </div>
<div class="hidden p-2 border-b border-gray-200 md:flex"> <div class="hidden p-2 border-b border-gray-200 dark:border-gray-600 md:flex">
<div class="flex flex-wrap space-x-1"> <div class="flex flex-wrap space-x-1">
<span <span
class=" class="
@ -289,8 +305,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('bold') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bold') }"
@click="editor.chain().focus().toggleBold().run()" @click="editor.chain().focus().toggleBold().run()"
> >
<bold-icon class="h-3 cursor-pointer fill-current" /> <bold-icon class="h-3 cursor-pointer fill-current" />
@ -305,8 +322,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('italic') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('italic') }"
@click="editor.chain().focus().toggleItalic().run()" @click="editor.chain().focus().toggleItalic().run()"
> >
<italic-icon class="h-3 cursor-pointer fill-current" /> <italic-icon class="h-3 cursor-pointer fill-current" />
@ -321,8 +339,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('strike') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('strike') }"
@click="editor.chain().focus().toggleStrike().run()" @click="editor.chain().focus().toggleStrike().run()"
> >
<strikethrough-icon class="h-3 cursor-pointer fill-current" /> <strikethrough-icon class="h-3 cursor-pointer fill-current" />
@ -337,8 +356,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('code') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('code') }"
@click="editor.chain().focus().toggleCode().run()" @click="editor.chain().focus().toggleCode().run()"
> >
<coding-icon class="h-3 cursor-pointer fill-current" /> <coding-icon class="h-3 cursor-pointer fill-current" />
@ -353,8 +373,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('paragraph') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('paragraph') }"
@click="editor.chain().focus().setParagraph().run()" @click="editor.chain().focus().setParagraph().run()"
> >
<paragraph-icon class="h-3 cursor-pointer fill-current" /> <paragraph-icon class="h-3 cursor-pointer fill-current" />
@ -369,8 +390,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('heading', { level: 1 }) }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 1 }) }"
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()" @click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
> >
H1 H1
@ -385,8 +407,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('heading', { level: 2 }) }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 2 }) }"
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()" @click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
> >
H2 H2
@ -401,8 +424,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('heading', { level: 3 }) }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 3 }) }"
@click="editor.chain().focus().toggleHeading({ level: 3 }).run()" @click="editor.chain().focus().toggleHeading({ level: 3 }).run()"
> >
H3 H3
@ -418,8 +442,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('bulletList') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bulletList') }"
@click="editor.chain().focus().toggleBulletList().run()" @click="editor.chain().focus().toggleBulletList().run()"
> >
<list-ul-icon class="h-3 cursor-pointer fill-current" /> <list-ul-icon class="h-3 cursor-pointer fill-current" />
@ -434,8 +459,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('orderedList') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('orderedList') }"
@click="editor.chain().focus().toggleOrderedList().run()" @click="editor.chain().focus().toggleOrderedList().run()"
> >
<list-icon class="h-3 cursor-pointer fill-current" /> <list-icon class="h-3 cursor-pointer fill-current" />
@ -450,8 +476,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('blockquote') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('blockquote') }"
@click="editor.chain().focus().toggleBlockquote().run()" @click="editor.chain().focus().toggleBlockquote().run()"
> >
<quote-icon class="h-3 cursor-pointer fill-current" /> <quote-icon class="h-3 cursor-pointer fill-current" />
@ -466,8 +493,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('codeBlock') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('codeBlock') }"
@click="editor.chain().focus().toggleCodeBlock().run()" @click="editor.chain().focus().toggleCodeBlock().run()"
> >
<code-block-icon class="h-3 cursor-pointer fill-current" /> <code-block-icon class="h-3 cursor-pointer fill-current" />
@ -482,8 +510,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('undo') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('undo') }"
@click="editor.chain().focus().undo().run()" @click="editor.chain().focus().undo().run()"
> >
<undo-icon class="h-3 cursor-pointer fill-current" /> <undo-icon class="h-3 cursor-pointer fill-current" />
@ -498,8 +527,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive('redo') }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('redo') }"
@click="editor.chain().focus().redo().run()" @click="editor.chain().focus().redo().run()"
> >
<redo-icon class="h-3 cursor-pointer fill-current" /> <redo-icon class="h-3 cursor-pointer fill-current" />
@ -514,8 +544,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive({ textAlign: 'left' }) }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'left' }) }"
@click="editor.chain().focus().setTextAlign('left').run()" @click="editor.chain().focus().setTextAlign('left').run()"
> >
<menu-alt2-icon class="h-5 cursor-pointer fill-current" /> <menu-alt2-icon class="h-5 cursor-pointer fill-current" />
@ -530,8 +561,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive({ textAlign: 'right' }) }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'right' }) }"
@click="editor.chain().focus().setTextAlign('right').run()" @click="editor.chain().focus().setTextAlign('right').run()"
> >
<menu-alt3-icon class="h-5 cursor-pointer fill-current" /> <menu-alt3-icon class="h-5 cursor-pointer fill-current" />
@ -546,9 +578,10 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ :class="{
'bg-gray-200': editor.isActive({ textAlign: 'justify' }), 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'justify' }),
}" }"
@click="editor.chain().focus().setTextAlign('justify').run()" @click="editor.chain().focus().setTextAlign('justify').run()"
> >
@ -564,8 +597,9 @@
rounded-sm rounded-sm
cursor-pointer cursor-pointer
hover:bg-gray-100 hover:bg-gray-100
dark:hover:bg-gray-800
" "
:class="{ 'bg-gray-200': editor.isActive({ textAlign: 'center' }) }" :class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'center' }) }"
@click="editor.chain().focus().setTextAlign('center').run()" @click="editor.chain().focus().setTextAlign('center').run()"
> >
<menu-center-icon class="h-5 cursor-pointer fill-current" /> <menu-center-icon class="h-5 cursor-pointer fill-current" />

View File

@ -7,11 +7,18 @@
relative relative
overflow-hidden overflow-hidden
bg-white bg-white
border-b border-gray-200 border-b
border-gray-200
shadow shadow
sm:rounded-lg sm:rounded-lg
" dark:shadow-glass
dark:border
dark:border-white/10
dark:bg-gray-800/70
"
> >
<BaseDarkHighlight v-if="darkHighlight" class="z-[-1]" />
<slot name="header" /> <slot name="header" />
<table :class="tableClass"> <table :class="tableClass">
<thead :class="theadClass"> <thead :class="theadClass">
@ -51,7 +58,11 @@
<tr <tr
v-for="placeRow in placeholderCount" v-for="placeRow in placeholderCount"
:key="placeRow" :key="placeRow"
:class="placeRow % 2 === 0 ? 'bg-white' : 'bg-gray-50'" :class="
placeRow % 2 === 0
? 'bg-white dark:bg-gray-800'
: 'bg-gray-50 dark:bg-gray-800'
"
> >
<td <td
v-for="column in columns" v-for="column in columns"
@ -75,7 +86,11 @@
<tr <tr
v-for="(row, index) in sortedRows" v-for="(row, index) in sortedRows"
:key="index" :key="index"
:class="index % 2 === 0 ? 'bg-white' : 'bg-gray-50'" :class="
index % 2 === 0
? 'bg-white dark:bg-transparent'
: 'bg-gray-50 dark:bg-gray-700/20 dark:border-y dark:border-gray-600'
"
> >
<td <td
v-for="column in columns" v-for="column in columns"
@ -103,7 +118,10 @@
justify-center justify-center
w-full w-full
h-full h-full
bg-white bg-opacity-60 bg-white
bg-opacity-60
dark:bg-gray-700
dark:bg-opacity-60
" "
> >
<SpinnerIcon class="w-10 h-10 text-primary-500" /> <SpinnerIcon class="w-10 h-10 text-primary-500" />
@ -163,9 +181,12 @@ const props = defineProps({
sortOrder: { type: String, default: '' }, sortOrder: { type: String, default: '' },
tableClass: { tableClass: {
type: String, type: String,
default: 'min-w-full divide-y divide-gray-200', default: 'min-w-full divide-y divide-gray-200 dark:divide-gray-600',
},
theadClass: {
type: String,
default: 'bg-gray-50 dark:bg-gray-800 dark:text-white',
}, },
theadClass: { type: String, default: 'bg-gray-50' },
tbodyClass: { type: String, default: '' }, tbodyClass: { type: String, default: '' },
noResultsMessage: { noResultsMessage: {
type: String, type: String,
@ -186,6 +207,10 @@ const props = defineProps({
type: Number, type: Number,
default: 3, default: 3,
}, },
darkHighlight: {
type: Boolean,
default: false,
},
}) })
let rows = reactive([]) let rows = reactive([])
@ -236,7 +261,7 @@ function getColumn(columnName) {
function getThClass(column) { function getThClass(column) {
let classes = let classes =
'whitespace-nowrap px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider' 'whitespace-nowrap px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:text-white'
if (column.defaultThClass) { if (column.defaultThClass) {
classes = column.defaultThClass classes = column.defaultThClass
@ -256,7 +281,8 @@ function getThClass(column) {
} }
function getTdClass(column) { function getTdClass(column) {
let classes = 'px-6 py-4 text-sm text-gray-500 whitespace-nowrap' let classes =
'px-6 py-4 text-sm text-gray-500 whitespace-nowrap dark:text-gray-300'
if (column.defaultTdClass) { if (column.defaultTdClass) {
classes = column.defaultTdClass classes = column.defaultTdClass
@ -309,6 +335,7 @@ function changeSorting(column) {
} }
if (!usesLocalData.value) { if (!usesLocalData.value) {
if (pagination.value) pagination.value.currentPage = 1
mapDataToRows() mapDataToRows()
} }
} }
@ -326,7 +353,9 @@ async function pageChange(page) {
await mapDataToRows() await mapDataToRows()
} }
async function refresh() { async function refresh(isPreservePage = false) {
if (pagination.value && !isPreservePage) pagination.value.currentPage = 1
await mapDataToRows() await mapDataToRows()
} }

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

@ -5,27 +5,30 @@
viewBox="0 0 50 50" viewBox="0 0 50 50"
fill="none" fill="none"
xmlns="http://www.w3.org/2000/svg" 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 <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" 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 <path
fill-rule="evenodd" fill-rule="evenodd"
clip-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" 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> </svg>
</template> </template>
<script setup> <script setup>
const props = defineProps({ const props = defineProps({
colorClass: { color: {
type: String,
default: 'fill-primary-500 dark:fill-white',
},
bgColor: {
type: String, type: String,
default: 'text-primary-500', default: 'fill-gray-100 dark:fill-primary-400',
}, },
}) })
</script> </script>

View File

@ -28,13 +28,13 @@ export default {
}, },
}, },
setup(props, { slots }) { setup(props, { slots }) {
const defaultClass = `cursor-pointer pb-2 pr-0 text-sm font-medium leading-5 flex items-center` const defaultClass = `cursor-pointer pb-2 pr-0 text-sm font-medium leading-5 flex items-center`
let hasIconSlot = computed(() => { let hasIconSlot = computed(() => {
return !!slots.icon return !!slots.icon
}) })
let containerClass = computed(() => { let containerClass = computed(() => {
if (props.active) return `${defaultClass} text-primary-500` if (props.active) return `${defaultClass} text-primary-500 dark:text-primary-400`
else return `${defaultClass} text-gray-500` else return `${defaultClass} text-gray-500 dark:text-gray-300`
}) })
return { return {
hasIconSlot, hasIconSlot,

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

View File

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

View File

@ -12,18 +12,24 @@
hover:bg-gray-50 hover:bg-gray-50
xl:p-4 xl:p-4
lg:col-span-2 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 }" :class="{ 'lg:!col-span-3': large }"
:to="route" :to="route"
> >
<div> <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 /> <slot />
</span> </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 }} {{ label }}
</span> </span>
</div> </div>
<BaseDarkHighlight class="!bg-highlight/[.17] !top-5" />
<div class="flex items-center"> <div class="flex items-center">
<component :is="iconComponent" class="w-10 h-10 xl:w-12 xl:h-12" /> <component :is="iconComponent" class="w-10 h-10 xl:w-12 xl:h-12" />
</div> </div>

Some files were not shown because too many files have changed in this diff Show More