mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-29 12:41:10 -04:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			dark-butto
			...
			dark-base-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9275010c0e | |||
| 1307c2dfe1 | 
| @ -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> | ||||||
|  | |||||||
| @ -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') }} | ||||||
|  | |||||||
| @ -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> | ||||||
|  | |||||||
| @ -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 | ||||||
|  | |||||||
| @ -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=" | ||||||
|  | |||||||
| @ -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" | ||||||
|  | |||||||
| @ -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')" | ||||||
|  | |||||||
| @ -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.due_date_description') | ||||||
|  |     " | ||||||
|  |   > | ||||||
|     {{ $t('settings.customization.invoices.due_date') }} |     {{ $t('settings.customization.invoices.due_date') }} | ||||||
|     </h6> |   </BaseHeading> | ||||||
|     <p class="mt-1 text-sm text-gray-500 mb-2"> |  | ||||||
|       {{ $t('settings.customization.invoices.due_date_description') }} |  | ||||||
|     </p> |  | ||||||
|  |  | ||||||
|     <BaseSwitchSection |     <BaseSwitchSection | ||||||
|       v-model="dueDateAutoField" |       v-model="dueDateAutoField" | ||||||
|  | |||||||
| @ -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 | ||||||
|  | |||||||
| @ -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')" | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
| <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, | ||||||
| @ -10,7 +9,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 dark:focus:ring-offset-gray-800', |       'inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2', | ||||||
|   }, |   }, | ||||||
|   tag: { |   tag: { | ||||||
|     type: String, |     type: String, | ||||||
| @ -28,10 +27,6 @@ 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', | ||||||
| @ -86,17 +81,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 dark:bg-primary-500 dark:hover:bg-primary-600': |     'border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500': | ||||||
|       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-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': |     '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': | ||||||
|       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 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-900': |     'border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0': | ||||||
|       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 dark:bg-gray-600 dark:text-white dark:hover:bg-opacity-60': |     'border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0': | ||||||
|       props.variant === 'gray', |       props.variant === 'gray', | ||||||
|   } |   } | ||||||
| }) | }) | ||||||
| @ -129,13 +124,6 @@ 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> | ||||||
| @ -153,17 +141,15 @@ const buttonDisabledClass = computed(() => { | |||||||
|   <BaseCustomTag |   <BaseCustomTag | ||||||
|     v-else |     v-else | ||||||
|     :tag="tag" |     :tag="tag" | ||||||
|     :disabled="disabled || loading" |     :disabled="disabled" | ||||||
|     :class="[defaultClass, sizeClass, variantClass, roundedClass, buttonDisabledClass]" |     :class="[defaultClass, sizeClass, variantClass, roundedClass]" | ||||||
|   > |   > | ||||||
|     <SpinnerIcon v-if="loading && !loadingRight" :class="[iconLeftClass, iconVariantClass]" /> |     <SpinnerIcon v-if="loading" :class="[iconLeftClass, iconVariantClass]" /> | ||||||
|  |  | ||||||
|     <slot v-else name="left" :class="iconLeftClass" /> |     <slot v-else name="left" :class="iconLeftClass"></slot> | ||||||
|  |  | ||||||
|     <slot /> |     <slot /> | ||||||
|  |  | ||||||
|     <SpinnerIcon v-if="loading && loadingRight" :class="[iconRightClass, iconVariantClass]" /> |     <slot name="right" :class="[iconRightClass, iconVariantClass]"></slot> | ||||||
|  |  | ||||||
|     <slot v-else name="right" :class="[iconRightClass, iconVariantClass]" /> |  | ||||||
|   </BaseCustomTag> |   </BaseCustomTag> | ||||||
| </template> | </template> | ||||||
|  | |||||||
| @ -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> | ||||||
|  | |||||||
| @ -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] | ||||||
|           " |           " | ||||||
|         > |         > | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	