mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-28 04:01:10 -04:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			dark-base-
			...
			dark-dropd
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 973179a351 | |||
| 1749e34396 | |||
| 953abe6ec6 | |||
| 3ea10de182 | |||
| 1f5bb49333 | 
| @ -7,11 +7,12 @@ | ||||
|     <!-- edit customField  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_CUSTOM_FIELDS)" | ||||
|       v-slot="slotProps" | ||||
|       @click="editCustomField(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PencilIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.edit') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -19,11 +20,12 @@ | ||||
|     <!-- delete customField  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_CUSTOM_FIELDS)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeCustomField(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -12,10 +12,10 @@ | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_CUSTOMER)" | ||||
|       :to="`/admin/customers/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -29,10 +29,10 @@ | ||||
|       " | ||||
|       :to="`customers/${row.id}/view`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="EyeIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.view') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -41,11 +41,12 @@ | ||||
|     <!-- Delete Customer  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_CUSTOMER)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeCustomer(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -10,11 +10,12 @@ | ||||
|     <!-- Copy PDF url  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="route.name === 'estimates.view'" | ||||
|       v-slot="slotProps" | ||||
|       @click="copyPdfUrl" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -24,10 +25,10 @@ | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_ESTIMATE)" | ||||
|       :to="`/admin/estimates/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -36,11 +37,12 @@ | ||||
|     <!-- Delete Estimate  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_ESTIMATE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeEstimate(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -53,10 +55,10 @@ | ||||
|       " | ||||
|       :to="`estimates/${row.id}/view`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="EyeIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.view') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -65,11 +67,12 @@ | ||||
|     <!-- Convert into Invoice  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="convertInToinvoice(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -81,11 +84,12 @@ | ||||
|         route.name !== 'estimates.view' && | ||||
|         userStore.hasAbilities(abilities.SEND_ESTIMATE) | ||||
|       " | ||||
|       v-slot="slotProps" | ||||
|       @click="onMarkAsSent(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -97,20 +101,21 @@ | ||||
|         route.name !== 'estimates.view' && | ||||
|         userStore.hasAbilities(abilities.SEND_ESTIMATE) | ||||
|       " | ||||
|       v-slot="slotProps" | ||||
|       @click="sendEstimate(row)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PaperAirplaneIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('estimates.send_estimate') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
|     <!-- Resend Estimate --> | ||||
|     <BaseDropdownItem v-if="canResendEstimate(row)" @click="sendEstimate(row)"> | ||||
|     <BaseDropdownItem v-if="canResendEstimate(row)" v-slot="slotProps"  @click="sendEstimate(row)"> | ||||
|       <BaseIcon | ||||
|         name="PaperAirplaneIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('estimates.resend_estimate') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -121,11 +126,12 @@ | ||||
|         row.status !== 'ACCEPTED' && | ||||
|         userStore.hasAbilities(abilities.EDIT_ESTIMATE) | ||||
|       " | ||||
|       v-slot="slotProps" | ||||
|       @click="onMarkAsAccepted(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -136,11 +142,12 @@ | ||||
|         row.status !== 'REJECTED' && | ||||
|         userStore.hasAbilities(abilities.EDIT_ESTIMATE) | ||||
|       " | ||||
|       v-slot="slotProps" | ||||
|       @click="onMarkAsRejected(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -13,11 +13,12 @@ | ||||
|     <!-- edit expenseCategory  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_EXPENSE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="editExpenseCategory(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PencilIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.edit') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -25,11 +26,12 @@ | ||||
|     <!-- delete expenseCategory  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeExpenseCategory(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -12,10 +12,10 @@ | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_EXPENSE)" | ||||
|       :to="`/admin/expenses/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -24,11 +24,12 @@ | ||||
|     <!-- delete expense  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeExpense(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -12,20 +12,20 @@ | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_INVOICE)" | ||||
|       :to="`/admin/invoices/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem v-show="row.allow_edit"> | ||||
|       <BaseDropdownItem v-show="row.allow_edit" v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
|     </router-link> | ||||
|  | ||||
|     <!-- 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 | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -38,29 +38,29 @@ | ||||
|       " | ||||
|       :to="`/admin/invoices/${row.id}/view`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="EyeIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.view') }} | ||||
|       </BaseDropdownItem> | ||||
|     </router-link> | ||||
|  | ||||
|     <!-- Send Invoice Mail  --> | ||||
|     <BaseDropdownItem v-if="canSendInvoice(row)" @click="sendInvoice(row)"> | ||||
|     <BaseDropdownItem v-if="canSendInvoice(row)" v-slot="slotProps" @click="sendInvoice(row)"> | ||||
|       <BaseIcon | ||||
|         name="PaperAirplaneIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('invoices.send_invoice') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
|     <!-- Resend Invoice --> | ||||
|     <BaseDropdownItem v-if="canReSendInvoice(row)" @click="sendInvoice(row)"> | ||||
|     <BaseDropdownItem v-if="canReSendInvoice(row)" v-slot="slotProps" @click="sendInvoice(row)"> | ||||
|       <BaseIcon | ||||
|         name="PaperAirplaneIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('invoices.resend_invoice') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -69,20 +69,21 @@ | ||||
|     <router-link :to="`/admin/payments/${row.id}/create`"> | ||||
|       <BaseDropdownItem | ||||
|         v-if="row.status == 'SENT' && route.name !== 'invoices.view'" | ||||
|         v-slot="slotProps" | ||||
|       > | ||||
|         <BaseIcon | ||||
|           name="CreditCardIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('invoices.record_payment') }} | ||||
|       </BaseDropdownItem> | ||||
|     </router-link> | ||||
|  | ||||
|     <!-- 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 | ||||
|         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') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -90,11 +91,12 @@ | ||||
|     <!-- Clone Invoice into new invoice  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="cloneInvoiceData(row)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="DocumentTextIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('invoices.clone_invoice') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -102,11 +104,12 @@ | ||||
|     <!--  Delete Invoice  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_INVOICE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeInvoice(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -12,11 +12,8 @@ | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_ITEM)" | ||||
|       :to="`/admin/items/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         /> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon name="PencilIcon" :class="slotProps.class" /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
|     </router-link> | ||||
| @ -24,12 +21,10 @@ | ||||
|     <!-- delete item  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_ITEM)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeItem(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|       /> | ||||
|       <BaseIcon name="TrashIcon" :class="slotProps.class" /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|   </BaseDropdown> | ||||
|  | ||||
| @ -10,11 +10,12 @@ | ||||
|     <!-- edit note  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.MANAGE_NOTE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="editNote(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PencilIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.edit') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -22,11 +23,12 @@ | ||||
|     <!-- delete note  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.MANAGE_NOTE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeNote(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -8,30 +8,31 @@ | ||||
|     </template> | ||||
|  | ||||
|     <!-- Copy pdf url  --> | ||||
|     <BaseDropdown-item | ||||
|     <BaseDropdownItem | ||||
|       v-if=" | ||||
|         route.name === 'payments.view' && | ||||
|         userStore.hasAbilities(abilities.VIEW_PAYMENT) | ||||
|       " | ||||
|       v-slot="slotProps" | ||||
|       class="rounded-md" | ||||
|       @click="copyPdfUrl" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         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') }} | ||||
|     </BaseDropdown-item> | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
|     <!-- edit payment  --> | ||||
|     <router-link | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_PAYMENT)" | ||||
|       :to="`/admin/payments/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -45,10 +46,10 @@ | ||||
|       " | ||||
|       :to="`/admin/payments/${row.id}/view`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="EyeIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.view') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -61,11 +62,12 @@ | ||||
|         route.name !== 'payments.view' && | ||||
|         userStore.hasAbilities(abilities.SEND_PAYMENT) | ||||
|       " | ||||
|       v-slot="slotProps" | ||||
|       @click="sendPayment(row)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PaperAirplaneIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('payments.send_payment') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -73,11 +75,12 @@ | ||||
|     <!-- delete payment  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_PAYMENT)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removePayment(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -8,19 +8,19 @@ | ||||
|     </template> | ||||
|  | ||||
|     <!-- edit paymentMode  --> | ||||
|     <BaseDropdownItem @click="editPaymentMode(row.id)"> | ||||
|     <BaseDropdownItem v-slot="slotProps"  @click="editPaymentMode(row.id)"> | ||||
|       <BaseIcon | ||||
|         name="PencilIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.edit') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
|     <!-- delete paymentMode  --> | ||||
|     <BaseDropdownItem @click="removePaymentMode(row.id)"> | ||||
|     <BaseDropdownItem v-slot="slotProps"  @click="removePaymentMode(row.id)"> | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -15,10 +15,10 @@ | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_RECURRING_INVOICE)" | ||||
|       :to="`/admin/recurring-invoices/${row.id}/edit`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -32,10 +32,10 @@ | ||||
|       " | ||||
|       :to="`recurring-invoices/${row.id}/view`" | ||||
|     > | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="EyeIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.view') }} | ||||
|       </BaseDropdownItem> | ||||
| @ -44,11 +44,12 @@ | ||||
|     <!-- Delete Recurring Invoice  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_RECURRING_INVOICE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeMultipleRecurringInvoices(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -10,11 +10,12 @@ | ||||
|     <!-- edit role  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.currentUser.is_owner" | ||||
|       v-slot="slotProps" | ||||
|       @click="editRole(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PencilIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.edit') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -22,11 +23,12 @@ | ||||
|     <!-- delete role  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.currentUser.is_owner" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeRole(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -10,11 +10,12 @@ | ||||
|     <!-- edit tax-type  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.EDIT_TAX_TYPE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="editTaxType(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="PencilIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.edit') }} | ||||
|     </BaseDropdownItem> | ||||
| @ -22,11 +23,12 @@ | ||||
|     <!-- delete tax-type  --> | ||||
|     <BaseDropdownItem | ||||
|       v-if="userStore.hasAbilities(abilities.DELETE_TAX_TYPE)" | ||||
|       v-slot="slotProps" | ||||
|       @click="removeTaxType(row.id)" | ||||
|     > | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -9,20 +9,20 @@ | ||||
|  | ||||
|     <!-- edit user  --> | ||||
|     <router-link :to="`/admin/users/${row.id}/edit`"> | ||||
|       <BaseDropdownItem> | ||||
|       <BaseDropdownItem v-slot="slotProps"> | ||||
|         <BaseIcon | ||||
|           name="PencilIcon" | ||||
|           class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|           :class="slotProps.class" | ||||
|         /> | ||||
|         {{ $t('general.edit') }} | ||||
|       </BaseDropdownItem> | ||||
|     </router-link> | ||||
|  | ||||
|     <!-- delete user  --> | ||||
|     <BaseDropdownItem @click="removeUser(row.id)"> | ||||
|     <BaseDropdownItem v-slot="slotProps" @click="removeUser(row.id)"> | ||||
|       <BaseIcon | ||||
|         name="TrashIcon" | ||||
|         class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|         :class="slotProps.class" | ||||
|       /> | ||||
|       {{ $t('general.delete') }} | ||||
|     </BaseDropdownItem> | ||||
|  | ||||
| @ -24,6 +24,8 @@ | ||||
|       dark:border-white/10 | ||||
|     " | ||||
|   > | ||||
|     <BaseDarkHighlight /> | ||||
|  | ||||
|     <router-link | ||||
|       to="/admin/dashboard" | ||||
|       class=" | ||||
| @ -72,7 +74,7 @@ | ||||
|         v-if="hasCreateAbilities" | ||||
|         class="relative hidden float-left m-0 md:block" | ||||
|       > | ||||
|         <BaseDropdown width-class="w-48"> | ||||
|         <BaseDropdown width-class="w-48" > | ||||
|           <template #activator> | ||||
|             <div | ||||
|               class=" | ||||
| @ -86,19 +88,21 @@ | ||||
|                 bg-white | ||||
|                 rounded | ||||
|                 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> | ||||
|           </template> | ||||
|  | ||||
|           <router-link to="/admin/invoices/create"> | ||||
|             <BaseDropdownItem | ||||
|               v-if="userStore.hasAbilities(abilities.CREATE_INVOICE)" | ||||
|               v-slot="slotProps" | ||||
|             > | ||||
|               <BaseIcon | ||||
|                 name="DocumentTextIcon" | ||||
|                 class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|                 :class="slotProps.class" | ||||
|                 aria-hidden="true" | ||||
|               /> | ||||
|               {{ $t('invoices.new_invoice') }} | ||||
| @ -107,10 +111,11 @@ | ||||
|           <router-link to="/admin/estimates/create"> | ||||
|             <BaseDropdownItem | ||||
|               v-if="userStore.hasAbilities(abilities.CREATE_ESTIMATE)" | ||||
|               v-slot="slotProps" | ||||
|             > | ||||
|               <BaseIcon | ||||
|                 name="DocumentIcon" | ||||
|                 class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|                 :class="slotProps.class" | ||||
|                 aria-hidden="true" | ||||
|               /> | ||||
|               {{ $t('estimates.new_estimate') }} | ||||
| @ -120,10 +125,11 @@ | ||||
|           <router-link to="/admin/customers/create"> | ||||
|             <BaseDropdownItem | ||||
|               v-if="userStore.hasAbilities(abilities.CREATE_CUSTOMER)" | ||||
|               v-slot="slotProps" | ||||
|             > | ||||
|               <BaseIcon | ||||
|                 name="UserIcon" | ||||
|                 class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|                 :class="slotProps.class" | ||||
|                 aria-hidden="true" | ||||
|               /> | ||||
|               {{ $t('customers.new_customer') }} | ||||
| @ -156,20 +162,20 @@ | ||||
|           </template> | ||||
|  | ||||
|           <router-link to="/admin/settings/account-settings"> | ||||
|             <BaseDropdownItem> | ||||
|             <BaseDropdownItem v-slot="slotProps"> | ||||
|               <BaseIcon | ||||
|                 name="CogIcon" | ||||
|                 class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|                 :class="slotProps.class" | ||||
|                 aria-hidden="true" | ||||
|               /> | ||||
|               {{ $t('navigation.settings') }} | ||||
|             </BaseDropdownItem> | ||||
|           </router-link> | ||||
|  | ||||
|           <BaseDropdownItem @click="logout"> | ||||
|           <BaseDropdownItem v-slot="slotProps" @click="logout"> | ||||
|             <BaseIcon | ||||
|               name="LogoutIcon" | ||||
|               class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500" | ||||
|               :class="slotProps.class" | ||||
|               aria-hidden="true" | ||||
|             /> | ||||
|             {{ $t('navigation.logout') }} | ||||
|  | ||||
| @ -51,14 +51,14 @@ | ||||
|             </div> | ||||
|           </template> | ||||
|  | ||||
|           <BaseDropdownItem @click="onDownloadBckup(row.data)"> | ||||
|             <BaseIcon name="CloudDownloadIcon" class="mr-3 text-gray-600" /> | ||||
|           <BaseDropdownItem v-slot="slotProps" @click="onDownloadBckup(row.data)"> | ||||
|             <BaseIcon name="CloudDownloadIcon" :class="slotProps.class" /> | ||||
|  | ||||
|             {{ $t('general.download') }} | ||||
|           </BaseDropdownItem> | ||||
|  | ||||
|           <BaseDropdownItem @click="onRemoveBackup(row.data)"> | ||||
|             <BaseIcon name="TrashIcon" class="mr-3 text-gray-600" /> | ||||
|           <BaseDropdownItem v-slot="slotProps" @click="onRemoveBackup(row.data)"> | ||||
|             <BaseIcon name="TrashIcon" :class="slotProps.class" /> | ||||
|             {{ $t('general.delete') }} | ||||
|           </BaseDropdownItem> | ||||
|         </BaseDropdown> | ||||
|  | ||||
| @ -45,27 +45,30 @@ | ||||
|  | ||||
|           <BaseDropdownItem | ||||
|             v-if="!row.data.set_as_default" | ||||
|             v-slot="slotProps" | ||||
|             @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') }} | ||||
|           </BaseDropdownItem> | ||||
|  | ||||
|           <BaseDropdownItem | ||||
|             v-if="row.data.type !== 'SYSTEM'" | ||||
|             v-slot="slotProps" | ||||
|             @click="openEditDiskModal(row.data)" | ||||
|           > | ||||
|             <BaseIcon name="PencilIcon" class="mr-3 text-gray-600" /> | ||||
|             <BaseIcon name="PencilIcon" :class="slotProps.class" /> | ||||
|  | ||||
|             {{ $t('general.edit') }} | ||||
|           </BaseDropdownItem> | ||||
|  | ||||
|           <BaseDropdownItem | ||||
|             v-if="row.data.type !== 'SYSTEM' && !row.data.set_as_default" | ||||
|             v-slot="slotProps" | ||||
|             @click="removeDisk(row.data.id)" | ||||
|           > | ||||
|             <BaseIcon name="TrashIcon" class="mr-3 text-gray-600" /> | ||||
|             <BaseIcon name="TrashIcon" :class="slotProps.class" /> | ||||
|             {{ $t('general.delete') }} | ||||
|           </BaseDropdownItem> | ||||
|         </BaseDropdown> | ||||
|  | ||||
| @ -1,21 +1,23 @@ | ||||
| <template> | ||||
|   <div ref="companySwitchBar" class="relative rounded"> | ||||
|   <div ref="companySwitchBar" class="relative rounded dark:text-white"> | ||||
|     <CompanyModal /> | ||||
|  | ||||
|     <div | ||||
|       class=" | ||||
|         flex | ||||
|         items-center | ||||
|         justify-center | ||||
|         px-3 | ||||
|         h-8 | ||||
|         md:h-9 | ||||
|         ml-2 | ||||
|         text-sm text-white | ||||
|         bg-white | ||||
|         rounded | ||||
|         cursor-pointer | ||||
|         bg-opacity-20 | ||||
|       flex | ||||
|       items-center | ||||
|       justify-center | ||||
|       px-3 | ||||
|       h-8 | ||||
|       md:h-9 | ||||
|       ml-2 | ||||
|       text-sm | ||||
|       text-white | ||||
|       bg-white | ||||
|       rounded | ||||
|       cursor-pointer | ||||
|       bg-opacity-20 | ||||
|       dark:bg-gray-700 | ||||
|       " | ||||
|       @click="isShow = !isShow" | ||||
|     > | ||||
| @ -38,28 +40,42 @@ | ||||
|     > | ||||
|       <div | ||||
|         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 | ||||
|           class=" | ||||
|             overflow-y-auto | ||||
|             scrollbar-thin scrollbar-thumb-rounded-full | ||||
|             w-[250px] | ||||
|             max-h-[350px] | ||||
|             scrollbar-thumb-gray-300 scrollbar-track-gray-10 | ||||
|             pb-4 | ||||
|           overflow-y-auto | ||||
|           scrollbar-thin | ||||
|           scrollbar-thumb-rounded-full | ||||
|           w-[250px] max-h-[350px] | ||||
|           scrollbar-thumb-gray-300 | ||||
|           scrollbar-track-gray-10 | ||||
|           pb-4 | ||||
|           " | ||||
|         > | ||||
|           <label | ||||
|             class=" | ||||
|               px-3 | ||||
|               py-2 | ||||
|               text-xs | ||||
|               font-semibold | ||||
|               text-gray-400 | ||||
|               mb-0.5 | ||||
|               block | ||||
|               uppercase | ||||
|             px-3 | ||||
|             py-2 | ||||
|             text-xs | ||||
|             font-semibold | ||||
|             text-gray-400 | ||||
|             mb-0.5 | ||||
|             block uppercase | ||||
|             " | ||||
|           > | ||||
|             {{ $t('company_switcher.label') }} | ||||
| @ -68,13 +84,13 @@ | ||||
|           <div | ||||
|             v-if="companyStore.companies.length < 1" | ||||
|             class=" | ||||
|               flex flex-col | ||||
|               items-center | ||||
|               justify-center | ||||
|               p-2 | ||||
|               px-3 | ||||
|               mt-4 | ||||
|               text-base text-gray-400 | ||||
|             flex flex-col | ||||
|             items-center | ||||
|             justify-center | ||||
|             p-2 | ||||
|             px-3 | ||||
|             mt-4 | ||||
|             text-base text-gray-400 | ||||
|             " | ||||
|           > | ||||
|             <BaseIcon name="ExclamationCircleIcon" class="h-5 text-gray-400" /> | ||||
| @ -86,14 +102,17 @@ | ||||
|                 v-for="(company, index) in companyStore.companies" | ||||
|                 :key="index" | ||||
|                 class=" | ||||
|                   p-2 | ||||
|                   px-3 | ||||
|                   rounded-md | ||||
|                   cursor-pointer | ||||
|                   hover:bg-gray-100 hover:text-primary-500 | ||||
|                 p-2 | ||||
|                 px-3 | ||||
|                 rounded-md | ||||
|                 cursor-pointer | ||||
|                 hover:bg-gray-100 hover:text-primary-500 | ||||
|                 dark:hover:bg-gray-700 | ||||
|                 text-gray-900 | ||||
|                 dark:text-white | ||||
|                 " | ||||
|                 :class="{ | ||||
|                   'bg-gray-100 text-primary-500': | ||||
|                   'bg-gray-100 text-primary-500 dark:bg-gray-700': | ||||
|                     companyStore.selectedCompany.id === company.id, | ||||
|                 }" | ||||
|                 @click="changeCompany(company)" | ||||
| @ -101,18 +120,19 @@ | ||||
|                 <div class="flex items-center"> | ||||
|                   <span | ||||
|                     class=" | ||||
|                       flex | ||||
|                       items-center | ||||
|                       justify-center | ||||
|                       mr-3 | ||||
|                       overflow-hidden | ||||
|                       text-base | ||||
|                       font-semibold | ||||
|                       bg-gray-200 | ||||
|                       rounded-md | ||||
|                       w-9 | ||||
|                       h-9 | ||||
|                       text-primary-500 | ||||
|                     flex | ||||
|                     items-center | ||||
|                     justify-center | ||||
|                     mr-3 | ||||
|                     overflow-hidden | ||||
|                     text-sm | ||||
|                     font-semibold | ||||
|                     bg-gray-200 | ||||
|                     rounded-md | ||||
|                     w-9 | ||||
|                     h-9 | ||||
|                     text-primary-500 | ||||
|                     dark:bg-gray-900 | ||||
|                     " | ||||
|                   > | ||||
|                     <span v-if="!company.logo"> | ||||
| @ -136,15 +156,17 @@ | ||||
|         <div | ||||
|           v-if="userStore.currentUser.is_owner" | ||||
|           class=" | ||||
|             flex | ||||
|             items-center | ||||
|             justify-center | ||||
|             p-4 | ||||
|             pl-3 | ||||
|             border-t-2 border-gray-100 | ||||
|             cursor-pointer | ||||
|             text-primary-400 | ||||
|             hover:text-primary-500 | ||||
|           flex | ||||
|           items-center | ||||
|           justify-center | ||||
|           p-4 | ||||
|           pl-3 | ||||
|           border-t-2 | ||||
|           border-gray-100 | ||||
|           cursor-pointer | ||||
|           text-primary-400 | ||||
|           hover:text-primary-500 | ||||
|           dark:border-gray-600 | ||||
|           " | ||||
|           @click="addNewCompany" | ||||
|         > | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <template> | ||||
|   <div ref="searchBar" class="hidden rounded md:block relative"> | ||||
|   <div ref="searchBar" class="hidden rounded md:block relative dark:text-white"> | ||||
|     <div> | ||||
|       <BaseInput | ||||
|         v-model="name" | ||||
| @ -41,6 +41,11 @@ | ||||
|           w-[300px] | ||||
|           h-[200px] | ||||
|           right-0 | ||||
|           dark:border-white/10 | ||||
|           dark:text-white | ||||
|           dark:bg-gray-800/[.95] | ||||
|           dark:shadow-glass | ||||
|           dark:backdrop-blur-xl | ||||
|         " | ||||
|       > | ||||
|         <div | ||||
| @ -68,7 +73,7 @@ | ||||
|             <div | ||||
|               v-for="(customer, index) in usersStore.customerList" | ||||
|               :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 | ||||
|                 :to="{ path: `/admin/customers/${customer.id}/view` }" | ||||
| @ -87,6 +92,7 @@ | ||||
|                     bg-gray-200 | ||||
|                     rounded-full | ||||
|                     text-primary-500 | ||||
|                     dark:bg-gray-600 | ||||
|                   " | ||||
|                 > | ||||
|                   {{ initGenerator(customer.name) }} | ||||
| @ -116,7 +122,7 @@ | ||||
|             <div | ||||
|               v-for="(user, index) in usersStore.userList" | ||||
|               :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 | ||||
|                 :to="{ path: `/admin/users/${user.id}/edit` }" | ||||
|  | ||||
| @ -69,7 +69,8 @@ const props = defineProps({ | ||||
| }) | ||||
|  | ||||
| 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}` | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ -2,16 +2,20 @@ | ||||
|   <MenuItem v-slot="{ active }" v-bind="$attrs"> | ||||
|     <a | ||||
|       href="#" | ||||
|       class="group flex items-center px-4 py-2 text-sm font-normal" | ||||
|       :class="[ | ||||
|         active ? 'bg-gray-100 text-gray-900' : 'text-gray-700', | ||||
|         'group flex items-center px-4 py-2 text-sm font-normal', | ||||
|         active | ||||
|           ? '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> | ||||
|   </MenuItem> | ||||
| </template> | ||||
|  | ||||
| <script setup> | ||||
| 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> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	