Merge pull request 'Merge Development into main.' (#8) from development into main
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build and Push Docker Image / build-and-push (push) Successful in 27s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build and Push Docker Image / build-and-push (push) Successful in 27s
				
			Reviewed-on: #8
This commit was merged in pull request #8.
	This commit is contained in:
		
							
								
								
									
										31
									
								
								.gitea/workflows/build.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.gitea/workflows/build.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
name: Build and Push Docker Image
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches: [ main ]
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches: [ main ]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build-and-push:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout Repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      
 | 
			
		||||
      - name: Log in to Docker Hub
 | 
			
		||||
        uses: docker/login-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          username: ${{ secrets.CONTAINER_REGISTRY_USERNAME }}
 | 
			
		||||
          password: ${{ secrets.CONTAINER_REGISTRY_PASSKEY }}
 | 
			
		||||
      
 | 
			
		||||
      - name: Set up Docker Buildx
 | 
			
		||||
        uses: docker/setup-buildx-action@v3
 | 
			
		||||
      
 | 
			
		||||
      - name: Build and Tag Docker Image
 | 
			
		||||
        run: |
 | 
			
		||||
          docker build -t ${{ secrets.CONTAINER_REGISTRY_USERNAME }}/luke-else.co.uk:latest .
 | 
			
		||||
      
 | 
			
		||||
      - name: Push Docker Image
 | 
			
		||||
        run: |
 | 
			
		||||
          docker push ${{ secrets.CONTAINER_REGISTRY_USERNAME }}/luke-else.co.uk:latest
 | 
			
		||||
							
								
								
									
										102
									
								
								src/lib/components/Cards/SlidingCard.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								src/lib/components/Cards/SlidingCard.svelte
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
    import { createEventDispatcher } from 'svelte';
 | 
			
		||||
 | 
			
		||||
    const dispatch = createEventDispatcher();
 | 
			
		||||
 | 
			
		||||
    function onClick() {
 | 
			
		||||
        dispatch('click');
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
    .sliding-card {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        flex-direction: column;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        flex-wrap: wrap;
 | 
			
		||||
        flex: 2 1 15em;
 | 
			
		||||
        padding: 0.5em 2.5em 2em 2.5em;
 | 
			
		||||
        background: var(--bg-secondary);
 | 
			
		||||
        border-radius: 0.5em;
 | 
			
		||||
        scroll-snap-align: start;
 | 
			
		||||
        transition: all 0.3s ease-in-out;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        position: relative;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sliding-card:hover {
 | 
			
		||||
        box-shadow: .5em .5em .5em var(--hover);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sliding-card .sliding-card-header :global(div) {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        margin-bottom: 0em;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .content-wrapper {
 | 
			
		||||
        position: relative;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        overflow: hidden; /* Ensure smooth sliding */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sliding-card-content {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        flex-direction: column;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-content: center;
 | 
			
		||||
        max-width: 100%;
 | 
			
		||||
        flex-grow: 1;
 | 
			
		||||
        z-index: 1; /* Keep it below the sliding content */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sliding-content {
 | 
			
		||||
        position: absolute; /* Now it sits on top */
 | 
			
		||||
        top: 0;
 | 
			
		||||
        left: 0;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 100%; /* Cover entire content */
 | 
			
		||||
        background: var(--bg-secondary);
 | 
			
		||||
        transform: translateY(100%); /* Start hidden */
 | 
			
		||||
        transition: transform 0.3s ease-in-out;
 | 
			
		||||
        z-index: 2; /* Now above main content */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sliding-card:hover .sliding-content {
 | 
			
		||||
        transform: translateY(0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sliding-card .sliding-card-footer :global(div){
 | 
			
		||||
        margin-bottom: 1em;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        gap: 1em;
 | 
			
		||||
        max-width: 100%;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
 | 
			
		||||
<!-- svelte-ignore a11y-no-static-element-interactions -->
 | 
			
		||||
<div class="sliding-card" on:click={onClick}>
 | 
			
		||||
    <div class="sliding-card-header">
 | 
			
		||||
        <slot name="header"></slot>
 | 
			
		||||
    </div>
 | 
			
		||||
    <hr />
 | 
			
		||||
    
 | 
			
		||||
    <!-- Wrapper to stack sliding-card-content and sliding-content -->
 | 
			
		||||
    <div class="content-wrapper">
 | 
			
		||||
        <div class="sliding-card-content">
 | 
			
		||||
            <slot name="content"></slot>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="sliding-content">
 | 
			
		||||
            <slot name="sliding-content"></slot>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <hr class="not-required"/>
 | 
			
		||||
    <div class="sliding-card-footer">
 | 
			
		||||
        <slot name="footer"></slot>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -14,7 +14,8 @@ import InfoIcon from '$lib/components/Toasts/InfoIcon.svelte';
 | 
			
		||||
import SuccessIcon from '$lib/components/Toasts/SuccessIcon.svelte';
 | 
			
		||||
import ErrorIcon from '$lib/components/Toasts/ErrorIcon.svelte';
 | 
			
		||||
 | 
			
		||||
import Card from '$lib/components/Card.svelte';
 | 
			
		||||
import Card from '$lib/components/Cards/Card.svelte';
 | 
			
		||||
import SlidingCard from '$lib/components/Cards/SlidingCard.svelte';
 | 
			
		||||
import Modal from '$lib/components/Modal.svelte';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -35,5 +36,6 @@ export {
 | 
			
		||||
    ErrorIcon,
 | 
			
		||||
 | 
			
		||||
    Card,
 | 
			
		||||
    SlidingCard,
 | 
			
		||||
    Modal
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
    import Card from '$lib/components/Card.svelte';
 | 
			
		||||
    import Card from '$lib/components/Cards/Card.svelte';
 | 
			
		||||
    import { Toast, ToastType } from "$lib/toast";
 | 
			
		||||
    import { addToast } from "$lib/store";
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
    export let skills: any;
 | 
			
		||||
 | 
			
		||||
    import Card from '$lib/components/Card.svelte';
 | 
			
		||||
    import Card from '$lib/components/Cards/Card.svelte';
 | 
			
		||||
    import Modal from '$lib/components/Modal.svelte';
 | 
			
		||||
 | 
			
		||||
    let showModal: boolean = false;
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 1.0 MiB  | 
		Reference in New Issue
	
	Block a user