mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-29 12:41:10 -04:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			dark-card
			...
			test-uffiz
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5a8e30d748 | |||
| e0e9aff6d1 | |||
| abc66dd768 | 
							
								
								
									
										9
									
								
								.github/workflows/uffizzi-build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/uffizzi-build.yml
									
									
									
									
										vendored
									
									
								
							| @ -14,8 +14,6 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       - name: Checkout git repo |       - name: Checkout git repo | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|       - name: Set up Docker Buildx |  | ||||||
|         uses: docker/setup-buildx-action@v2         |  | ||||||
|       - name: Generate UUID image name |       - name: Generate UUID image name | ||||||
|         id: uuid |         id: uuid | ||||||
|         run: echo "UUID_TAG_APP=$(uuidgen)" >> $GITHUB_ENV |         run: echo "UUID_TAG_APP=$(uuidgen)" >> $GITHUB_ENV | ||||||
| @ -33,11 +31,10 @@ jobs: | |||||||
|           tags: ${{ steps.meta.outputs.tags }} |           tags: ${{ steps.meta.outputs.tags }} | ||||||
|           labels: ${{ steps.meta.outputs.labels }} |           labels: ${{ steps.meta.outputs.labels }} | ||||||
|           file: ./uffizzi/Dockerfile |           file: ./uffizzi/Dockerfile | ||||||
|           cache-from: type=gha |  | ||||||
|           cache-to: type=gha,mode=max |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   build-nginx: |   build-nginx: | ||||||
|  |     needs:  | ||||||
|  |       - build-application | ||||||
|     name: Build and Push `nginx` |     name: Build and Push `nginx` | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} |     if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | ||||||
| @ -65,6 +62,8 @@ jobs: | |||||||
|           tags: ${{ steps.meta.outputs.tags }} |           tags: ${{ steps.meta.outputs.tags }} | ||||||
|           labels: ${{ steps.meta.outputs.labels }} |           labels: ${{ steps.meta.outputs.labels }} | ||||||
|           file: ./uffizzi/nginx/Dockerfile |           file: ./uffizzi/nginx/Dockerfile | ||||||
|  |           build-args: | | ||||||
|  |             BASE_IMAGE=${{ needs.build-application.outputs.tags }} | ||||||
|           cache-from: type=gha |           cache-from: type=gha | ||||||
|           cache-to: type=gha,mode=max |           cache-to: type=gha,mode=max | ||||||
|  |  | ||||||
|  | |||||||
| @ -12,6 +12,8 @@ | |||||||
|       class="h-screen h-screen-ios overflow-y-auto md:pl-56 xl:pl-64 min-h-0" |       class="h-screen h-screen-ios overflow-y-auto md:pl-56 xl:pl-64 min-h-0" | ||||||
|     > |     > | ||||||
|       <div class="pt-16 pb-16"> |       <div class="pt-16 pb-16"> | ||||||
|  |         <h1>Testing</h1> | ||||||
|  |  | ||||||
|         <router-view /> |         <router-view /> | ||||||
|       </div> |       </div> | ||||||
|     </main> |     </main> | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="h-screen overflow-y-auto text-base"> |   <div class="h-screen overflow-y-auto text-base"> | ||||||
|  |     <h1>Testing</h1> | ||||||
|     <NotificationRoot /> |     <NotificationRoot /> | ||||||
|  |  | ||||||
|     <div class="container mx-auto px-4"> |     <div class="container mx-auto px-4"> | ||||||
|  | |||||||
| @ -93,6 +93,9 @@ | |||||||
|         > |         > | ||||||
|           {{ pageHeading }} |           {{ pageHeading }} | ||||||
|         </h1> |         </h1> | ||||||
|  |  | ||||||
|  |         <h1>Testing</h1> | ||||||
|  |  | ||||||
|         <p |         <p | ||||||
|           class=" |           class=" | ||||||
|             hidden |             hidden | ||||||
|  | |||||||
| @ -15,13 +15,6 @@ | |||||||
|       bg-gradient-to-r |       bg-gradient-to-r | ||||||
|       from-primary-500 |       from-primary-500 | ||||||
|       to-primary-400 |       to-primary-400 | ||||||
|       dark:from-gray-700/70 dark:to-gray-800/70 |  | ||||||
|       bg-primary-500 |  | ||||||
|       dark:bg-transparent |  | ||||||
|       dark:backdrop-blur-xl |  | ||||||
|       dark:shadow-glass |  | ||||||
|       dark:border |  | ||||||
|       dark:border-white/10 |  | ||||||
|     " |     " | ||||||
|   > |   > | ||||||
|     <router-link |     <router-link | ||||||
| @ -60,7 +53,6 @@ | |||||||
|         cursor-pointer |         cursor-pointer | ||||||
|         md:hidden md:ml-0 |         md:hidden md:ml-0 | ||||||
|         hover:bg-gray-100 |         hover:bg-gray-100 | ||||||
|         dark:bg-gray-800 dark:border-gray-500 dark:border |  | ||||||
|       " |       " | ||||||
|       @click.prevent="onToggle" |       @click.prevent="onToggle" | ||||||
|     > |     > | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|         leave-from="opacity-100" |         leave-from="opacity-100" | ||||||
|         leave-to="opacity-0" |         leave-to="opacity-0" | ||||||
|       > |       > | ||||||
|         <DialogOverlay |         <DialogOverlay class="fixed inset-0 bg-gray-600 bg-opacity-75" /> | ||||||
|           class="fixed inset-0 bg-gray-600 bg-opacity-75 dark:bg-gray-900/90" |  | ||||||
|         /> |  | ||||||
|       </TransitionChild> |       </TransitionChild> | ||||||
|  |  | ||||||
|       <TransitionChild |       <TransitionChild | ||||||
| @ -29,9 +27,7 @@ | |||||||
|         leave-from="translate-x-0" |         leave-from="translate-x-0" | ||||||
|         leave-to="-translate-x-full" |         leave-to="-translate-x-full" | ||||||
|       > |       > | ||||||
|         <div |         <div class="relative flex flex-col flex-1 w-full max-w-xs bg-white"> | ||||||
|           class="relative flex flex-col flex-1 w-full max-w-xs bg-white dark:bg-gray-800" |  | ||||||
|         > |  | ||||||
|           <TransitionChild |           <TransitionChild | ||||||
|             as="template" |             as="template" | ||||||
|             enter="ease-in-out duration-300" |             enter="ease-in-out duration-300" | ||||||
| @ -44,17 +40,18 @@ | |||||||
|             <div class="absolute top-0 right-0 pt-2 -mr-12"> |             <div class="absolute top-0 right-0 pt-2 -mr-12"> | ||||||
|               <button |               <button | ||||||
|                 class=" |                 class=" | ||||||
|                 flex |                   flex | ||||||
|                 items-center |                   items-center | ||||||
|                 justify-center |                   justify-center | ||||||
|                 w-10 |                   w-10 | ||||||
|                 h-10 |                   h-10 | ||||||
|                 ml-1 |                   ml-1 | ||||||
|                 rounded-full |                   rounded-full | ||||||
|                 focus:outline-none |                   focus:outline-none | ||||||
|                 focus:ring-2 |                   focus:ring-2 | ||||||
|                 focus:ring-inset |                   focus:ring-inset | ||||||
|                 focus:ring-white" |                   focus:ring-white | ||||||
|  |                 " | ||||||
|                 @click="globalStore.setSidebarVisibility(false)" |                 @click="globalStore.setSidebarVisibility(false)" | ||||||
|               > |               > | ||||||
|                 <span class="sr-only">Close sidebar</span> |                 <span class="sr-only">Close sidebar</span> | ||||||
| @ -85,8 +82,8 @@ | |||||||
|                 :to="item.link" |                 :to="item.link" | ||||||
|                 :class="[ |                 :class="[ | ||||||
|                   hasActiveUrl(item.link) |                   hasActiveUrl(item.link) | ||||||
|                     ? 'text-primary-500 border-primary-500 bg-gray-100 dark:shadow-glass dark:backdrop-blur-xl dark:hover:bg-gray-700  dark:bg-gray-700/50 dark:text-primary-400 dark:font-medium' |                     ? 'text-primary-500 border-primary-500 bg-gray-100 ' | ||||||
|                     : 'text-black dark:text-gray-300', |                     : 'text-black', | ||||||
|                   'cursor-pointer px-0 pl-4 py-3 border-transparent flex items-center border-l-4 border-solid text-sm not-italic font-medium', |                   'cursor-pointer px-0 pl-4 py-3 border-transparent flex items-center border-l-4 border-solid text-sm not-italic font-medium', | ||||||
|                 ]" |                 ]" | ||||||
|                 @click="globalStore.setSidebarVisibility(false)" |                 @click="globalStore.setSidebarVisibility(false)" | ||||||
| @ -103,10 +100,6 @@ | |||||||
|                 /> |                 /> | ||||||
|                 {{ $t(item.title) }} |                 {{ $t(item.title) }} | ||||||
|               </router-link> |               </router-link> | ||||||
|               <LightDarkSwitch |  | ||||||
|                 :show-label="false" |  | ||||||
|                 class="absolute right-6 top-6 !w-auto" |  | ||||||
|               /> |  | ||||||
|             </nav> |             </nav> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
| @ -120,16 +113,17 @@ | |||||||
|   <!-- DESKTOP MENU --> |   <!-- DESKTOP MENU --> | ||||||
|   <div |   <div | ||||||
|     class=" |     class=" | ||||||
|     hidden |       hidden | ||||||
|     w-56 |       w-56 | ||||||
|     h-screen |       h-screen | ||||||
|     bg-white |       pb-32 | ||||||
|     border-r border-gray-200 border-solid |       overflow-y-auto | ||||||
|     xl:w-64 |       bg-white | ||||||
|     md:fixed md:flex md:flex-col md:inset-y-0 |       border-r border-gray-200 border-solid | ||||||
|     pt-16 |       xl:w-64 | ||||||
|     dark:border-gray-800 |       md:fixed md:flex md:flex-col md:inset-y-0 | ||||||
|     dark:bg-gray-800/80" |       pt-16 | ||||||
|  |     " | ||||||
|   > |   > | ||||||
|     <div |     <div | ||||||
|       v-for="menu in globalStore.menuGroups" |       v-for="menu in globalStore.menuGroups" | ||||||
| @ -142,8 +136,8 @@ | |||||||
|         :to="item.link" |         :to="item.link" | ||||||
|         :class="[ |         :class="[ | ||||||
|           hasActiveUrl(item.link) |           hasActiveUrl(item.link) | ||||||
|             ? 'text-primary-500 border-primary-500 bg-gray-100 dark:border-primary-400 dark:shadow-glass dark:backdrop-blur-xl dark:hover:bg-gray-700 dark:bg-gray-700/50 dark:text-primary-400 dark:font-medium' |             ? 'text-primary-500 border-primary-500 bg-gray-100 ' | ||||||
|             : 'text-black dark:hover:bg-transparent dark:hover:text-white dark:text-gray-300', |             : 'text-black', | ||||||
|           'cursor-pointer px-0 pl-6 hover:bg-gray-50 py-3 group flex items-center border-l-4 border-solid border-transparent text-sm not-italic font-medium', |           'cursor-pointer px-0 pl-6 hover:bg-gray-50 py-3 group flex items-center border-l-4 border-solid border-transparent text-sm not-italic font-medium', | ||||||
|         ]" |         ]" | ||||||
|       > |       > | ||||||
| @ -151,8 +145,8 @@ | |||||||
|           :name="item.icon" |           :name="item.icon" | ||||||
|           :class="[ |           :class="[ | ||||||
|             hasActiveUrl(item.link) |             hasActiveUrl(item.link) | ||||||
|               ? 'text-primary-500 group-hover:text-primary-500 dark:text-primary-400 dark:group-hover:text-primary-500 ' |               ? 'text-primary-500 group-hover:text-primary-500 ' | ||||||
|               : 'text-gray-400 group-hover:text-black dark:text-gray-400 dark:group-hover:text-white', |               : 'text-gray-400 group-hover:text-black', | ||||||
|             'mr-4 shrink-0 h-5 w-5 ', |             'mr-4 shrink-0 h-5 w-5 ', | ||||||
|           ]" |           ]" | ||||||
|         /> |         /> | ||||||
| @ -160,9 +154,6 @@ | |||||||
|         {{ $t(item.title) }} |         {{ $t(item.title) }} | ||||||
|       </router-link> |       </router-link> | ||||||
|     </div> |     </div> | ||||||
|     <LightDarkSwitch |  | ||||||
|       class="absolute bottom-0 py-4 border-t border-gray-200 dark:border-gray-700" |  | ||||||
|     /> |  | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| @ -178,7 +169,6 @@ import { | |||||||
|  |  | ||||||
| import { useRoute } from 'vue-router' | import { useRoute } from 'vue-router' | ||||||
| import { useGlobalStore } from '@/scripts/admin/stores/global' | import { useGlobalStore } from '@/scripts/admin/stores/global' | ||||||
| import LightDarkSwitch from '@/scripts/components/LightDarkSwitcher.vue' |  | ||||||
|  |  | ||||||
| const route = useRoute() | const route = useRoute() | ||||||
| const globalStore = useGlobalStore() | const globalStore = useGlobalStore() | ||||||
|  | |||||||
| @ -34,7 +34,6 @@ export const useGlobalStore = (useWindow = false) => { | |||||||
|       isAppLoaded: false, |       isAppLoaded: false, | ||||||
|       isSidebarOpen: false, |       isSidebarOpen: false, | ||||||
|       areCurrenciesLoading: false, |       areCurrenciesLoading: false, | ||||||
|       isDarkModeOn: false, |  | ||||||
|  |  | ||||||
|       downloadReport: null, |       downloadReport: null, | ||||||
|     }), |     }), | ||||||
| @ -71,8 +70,8 @@ export const useGlobalStore = (useWindow = false) => { | |||||||
|               moduleStore.apiToken = response.data.global_settings.api_token |               moduleStore.apiToken = response.data.global_settings.api_token | ||||||
|               moduleStore.enableModules = response.data.modules |               moduleStore.enableModules = response.data.modules | ||||||
|  |  | ||||||
|               // company store |                 // company store | ||||||
|               companyStore.companies = response.data.companies |                 companyStore.companies = response.data.companies | ||||||
|               companyStore.selectedCompany = response.data.current_company |               companyStore.selectedCompany = response.data.current_company | ||||||
|               companyStore.setSelectedCompany(response.data.current_company) |               companyStore.setSelectedCompany(response.data.current_company) | ||||||
|               companyStore.selectedCompanySettings = |               companyStore.selectedCompanySettings = | ||||||
|  | |||||||
| @ -1,101 +0,0 @@ | |||||||
| <!-- This example requires Tailwind CSS v2.0+ --> |  | ||||||
| <script lang="ts" setup> |  | ||||||
| import { Switch, SwitchGroup, SwitchLabel } from '@headlessui/vue' |  | ||||||
| import { useGlobalStore } from '@/scripts/admin/stores/global' |  | ||||||
| import { computed, ref } from 'vue' |  | ||||||
| defineProps({ |  | ||||||
|   showLabel: { |  | ||||||
|     type: Boolean, |  | ||||||
|     default: true, |  | ||||||
|   }, |  | ||||||
|   vertical: { |  | ||||||
|     type: Boolean, |  | ||||||
|     default: false, |  | ||||||
|   }, |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| const globalStore = useGlobalStore() |  | ||||||
|  |  | ||||||
| const enabled = ref( |  | ||||||
|   localStorage.getItem('theme') === 'dark' || |  | ||||||
|     document.documentElement.classList.contains('dark') |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| globalStore.isDarkModeOn = enabled |  | ||||||
|  |  | ||||||
| function onChange(val) { |  | ||||||
|   if (val) { |  | ||||||
|     localStorage.theme = 'dark' |  | ||||||
|     document.documentElement.classList.add('dark') |  | ||||||
|     document.documentElement.style.setProperty('color-scheme', 'dark') |  | ||||||
|     globalStore.isDarkModeOn = true |  | ||||||
|   } else { |  | ||||||
|     localStorage.theme = 'light' |  | ||||||
|     document.documentElement.classList.remove('dark') |  | ||||||
|     document.documentElement.style.setProperty('color-scheme', 'light') |  | ||||||
|     globalStore.isDarkModeOn = false |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <template> |  | ||||||
|   <div class="w-full flex justify-center"> |  | ||||||
|     <SwitchGroup |  | ||||||
|       as="div" |  | ||||||
|       class="flex items-center" |  | ||||||
|       :class="vertical ? 'flex-col justify-center' : 'flex-row'" |  | ||||||
|     > |  | ||||||
|       <Switch |  | ||||||
|         v-model="enabled" |  | ||||||
|         class="relative inline-flex 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 dark:ring-offset-gray-700" |  | ||||||
|         :class="[enabled ? 'bg-primary-600' : 'bg-gray-200']" |  | ||||||
|         @update:modelValue="onChange" |  | ||||||
|       > |  | ||||||
|         <span class="sr-only">Use setting</span> |  | ||||||
|         <span |  | ||||||
|           class="pointer-events-none relative inline-block h-5 w-5 rounded-full bg-white shadow transform ring-0 transition ease-in-out duration-200" |  | ||||||
|           :class="[enabled ? 'translate-x-5' : 'translate-x-0']" |  | ||||||
|         > |  | ||||||
|           <span |  | ||||||
|             class="absolute inset-0 h-full w-full flex items-center justify-center transition-opacity" |  | ||||||
|             :class="[ |  | ||||||
|               enabled |  | ||||||
|                 ? 'opacity-0 ease-out duration-100' |  | ||||||
|                 : 'opacity-100 ease-in duration-200', |  | ||||||
|             ]" |  | ||||||
|             aria-hidden="true" |  | ||||||
|           > |  | ||||||
|             <BaseIcon class="h-3 w-3 text-yellow-500" name="SunIcon" /> |  | ||||||
|           </span> |  | ||||||
|           <span |  | ||||||
|             class="absolute inset-0 h-full w-full flex items-center justify-center transition-opacity" |  | ||||||
|             :class="[ |  | ||||||
|               enabled |  | ||||||
|                 ? 'opacity-100 ease-in duration-200' |  | ||||||
|                 : 'opacity-0 ease-out duration-100', |  | ||||||
|             ]" |  | ||||||
|             aria-hidden="true" |  | ||||||
|           > |  | ||||||
|             <BaseIcon class="h-3 w-3 text-primary-500" name="MoonIcon" /> |  | ||||||
|           </span> |  | ||||||
|         </span> |  | ||||||
|       </Switch> |  | ||||||
|       <SwitchLabel |  | ||||||
|         v-if="showLabel" |  | ||||||
|         as="span" |  | ||||||
|         class="cursor-pointer" |  | ||||||
|         :class="vertical ? 'px-1 text-center mt-2' : 'ml-3'" |  | ||||||
|       > |  | ||||||
|         <span |  | ||||||
|           v-if="enabled" |  | ||||||
|           class="text-sm font-medium text-gray-500 dark:text-gray-400" |  | ||||||
|         > |  | ||||||
|           Dark Mode |  | ||||||
|         </span> |  | ||||||
|         <span v-else class="text-sm font-medium text-gray-500"> |  | ||||||
|           Light Mode |  | ||||||
|         </span> |  | ||||||
|       </SwitchLabel> |  | ||||||
|     </SwitchGroup> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
| @ -1,9 +1,5 @@ | |||||||
| <template> | <template> | ||||||
|   <div |   <div class="bg-white rounded-lg shadow"> | ||||||
|     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" | ||||||
|  | |||||||
| @ -1,21 +0,0 @@ | |||||||
| <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> |  | ||||||
| @ -17,7 +17,7 @@ | |||||||
|     <meta name="csrf-token" content="{{ csrf_token() }}"> |     <meta name="csrf-token" content="{{ csrf_token() }}"> | ||||||
|  |  | ||||||
|     <!-- Module Styles --> |     <!-- Module Styles --> | ||||||
|     @foreach (\Crater\Services\Module\ModuleFacade::allStyles() as $name => $path) |     @foreach(\Crater\Services\Module\ModuleFacade::allStyles() as $name => $path) | ||||||
|         <link rel="stylesheet" href="/modules/styles/{{ $name }}"> |         <link rel="stylesheet" href="/modules/styles/{{ $name }}"> | ||||||
|     @endforeach |     @endforeach | ||||||
|  |  | ||||||
| @ -25,8 +25,8 @@ | |||||||
| </head> | </head> | ||||||
|  |  | ||||||
| <body | <body | ||||||
|     class="h-full overflow-hidden bg-gray-100 dark:bg-gray-900 dark:text-white font-base |     class="h-full overflow-hidden bg-gray-100 font-base | ||||||
|     @if (isset($current_theme)) theme-{{ $current_theme }} @else theme-{{ get_app_setting('admin_portal_theme') ?? 'crater' }} @endif "> |     @if(isset($current_theme)) theme-{{ $current_theme }} @else theme-{{get_app_setting('admin_portal_theme') ?? 'crater'}} @endif "> | ||||||
|  |  | ||||||
|     <!-- Module Scripts --> |     <!-- Module Scripts --> | ||||||
|     @foreach (\Crater\Services\Module\ModuleFacade::allScripts() as $name => $path) |     @foreach (\Crater\Services\Module\ModuleFacade::allScripts() as $name => $path) | ||||||
| @ -38,14 +38,6 @@ | |||||||
|     @endforeach |     @endforeach | ||||||
|  |  | ||||||
|     <script type="module"> |     <script type="module"> | ||||||
|         if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { |  | ||||||
|             document.documentElement.classList.add('dark') |  | ||||||
|             document.documentElement.style.setProperty('color-scheme', 'dark'); |  | ||||||
|         } else { |  | ||||||
|             document.documentElement.classList.remove('dark') |  | ||||||
|             document.documentElement.style.setProperty('color-scheme', 'light') |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         @if(isset($customer_logo)) |         @if(isset($customer_logo)) | ||||||
|  |  | ||||||
|         window.customer_logo = "/storage/{{$customer_logo}}" |         window.customer_logo = "/storage/{{$customer_logo}}" | ||||||
|  | |||||||
| @ -19,7 +19,6 @@ module.exports = { | |||||||
|     './resources/scripts/**/*.js', |     './resources/scripts/**/*.js', | ||||||
|     './resources/scripts/**/*.vue', |     './resources/scripts/**/*.vue', | ||||||
|   ], |   ], | ||||||
|   darkMode: 'class', |  | ||||||
|   theme: { |   theme: { | ||||||
|     extend: { |     extend: { | ||||||
|       colors: { |       colors: { | ||||||
| @ -36,7 +35,6 @@ module.exports = { | |||||||
|           900: withOpacityValue('--color-primary-900'), |           900: withOpacityValue('--color-primary-900'), | ||||||
|         }, |         }, | ||||||
|         black: '#040405', |         black: '#040405', | ||||||
|         highlight: 'rgb(56, 189, 248)', |  | ||||||
|         red: colors.red, |         red: colors.red, | ||||||
|         teal: colors.teal, |         teal: colors.teal, | ||||||
|         gray: colors.slate, |         gray: colors.slate, | ||||||
|  | |||||||
| @ -11,7 +11,8 @@ RUN apt-get update && apt-get install -y \ | |||||||
|     unzip \ |     unzip \ | ||||||
|     libzip-dev \ |     libzip-dev \ | ||||||
|     libmagickwand-dev \ |     libmagickwand-dev \ | ||||||
|     mariadb-client |     mariadb-client \ | ||||||
|  |     npm | ||||||
|  |  | ||||||
| # Clear cache | # Clear cache | ||||||
| RUN apt-get clean && rm -rf /var/lib/apt/lists/* | RUN apt-get clean && rm -rf /var/lib/apt/lists/* | ||||||
| @ -45,4 +46,19 @@ RUN chmod -R 775 composer.json composer.lock \ | |||||||
| RUN chown -R $(whoami):$(whoami) /var/log/ | RUN chown -R $(whoami):$(whoami) /var/log/ | ||||||
| RUN chmod -R 775 /var/log | RUN chmod -R 775 /var/log | ||||||
|  |  | ||||||
|  | # Cleanup manually generated build files | ||||||
|  | RUN rm -rf /var/www/public/build | ||||||
|  | RUN npm config set user 0 | ||||||
|  | RUN npm config set unsafe-perm true | ||||||
|  | # Frontend bulding | ||||||
|  | RUN sed -i 's/DB_CONNECTION=mysql/DB_CONNECTION=sqlite/g' /var/www/.env | ||||||
|  | RUN sed -i 's/DB_DATABASE=crater/DB_DATABASE=\/tmp\/crater.sqlite/g' /var/www/.env | ||||||
|  | RUN touch /tmp/crater.sqlite | ||||||
|  | RUN composer install --no-interaction --prefer-dist | ||||||
|  | RUN npm i -f | ||||||
|  | RUN npm install --save-dev sass | ||||||
|  | RUN export NODE_OPTIONS="--max-old-space-size=4096" && /usr/bin/npx vite build --target=es2020 | ||||||
|  | RUN sed -i 's/DB_CONNECTION=sqlite/DB_CONNECTION=mysql/g' /var/www/.env | ||||||
|  | RUN sed -i 's/DB_DATABASE=\/tmp\/crater.sqlite/DB_DATABASE=crater/g' /var/www/.env | ||||||
|  |  | ||||||
| USER crater-user | USER crater-user | ||||||
|  | |||||||
| @ -1,7 +1,9 @@ | |||||||
|  | ARG BASE_IMAGE | ||||||
|  |  | ||||||
|  | FROM $BASE_IMAGE as build | ||||||
| FROM nginx:1.17-alpine | FROM nginx:1.17-alpine | ||||||
|  |  | ||||||
| RUN rm /etc/nginx/conf.d/default.conf | RUN rm /etc/nginx/conf.d/default.conf | ||||||
|  |  | ||||||
| COPY ./ /var/www | COPY --from=build /var/www /var/www | ||||||
| COPY ./uffizzi/nginx/nginx /etc/nginx/conf.d/ | COPY ./uffizzi/nginx/nginx /etc/nginx/conf.d/ | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	