]> _ Git - odl.git/commitdiff
WIP #4781 @7
authorStephen Cameron <stephen@cubedesigners.com>
Tue, 26 Oct 2021 18:44:22 +0000 (20:44 +0200)
committerStephen Cameron <stephen@cubedesigners.com>
Tue, 26 Oct 2021 18:44:22 +0000 (20:44 +0200)
13 files changed:
package-lock.json
package.json
resources/css/app.css
resources/css/common/fonts.css [new file with mode: 0644]
resources/css/common/global.css [new file with mode: 0644]
resources/css/common/menu.css [new file with mode: 0644]
resources/css/common/utilities.css [new file with mode: 0644]
resources/css/fonts.css [deleted file]
resources/js/bootstrap.js
resources/views/components/link.blade.php [new file with mode: 0644]
resources/views/front/home.blade.php
resources/views/layouts/app.blade.php
tailwind.config.js

index 79cccd99ed421973178be3e8edf58dff8f0ff636..b92bef2889145763c7f3bb9b9453757836c779c2 100644 (file)
@@ -5,6 +5,7 @@
     "packages": {
         "": {
             "devDependencies": {
+                "alpinejs": "^3.4.2",
                 "autoprefixer": "^10.3.7",
                 "axios": "^0.21",
                 "laravel-mix": "^6.0.6",
             "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==",
             "dev": true
         },
+        "node_modules/@vue/reactivity": {
+            "version": "3.1.5",
+            "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
+            "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
+            "dev": true,
+            "dependencies": {
+                "@vue/shared": "3.1.5"
+            }
+        },
+        "node_modules/@vue/shared": {
+            "version": "3.1.5",
+            "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
+            "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==",
+            "dev": true
+        },
         "node_modules/@webassemblyjs/ast": {
             "version": "1.11.1",
             "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
             "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
             "dev": true
         },
+        "node_modules/alpinejs": {
+            "version": "3.4.2",
+            "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.4.2.tgz",
+            "integrity": "sha512-PCTLdySJG5ercbN/g4sO+Nyo0TjzV3IP5W9L3UiSj3756VZPUctNiikLAoKX5al2NlLE2O7jPpgtakuRpLLeIQ==",
+            "dev": true,
+            "dependencies": {
+                "@vue/reactivity": "~3.1.1"
+            }
+        },
         "node_modules/ansi-escapes": {
             "version": "4.3.2",
             "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
             "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==",
             "dev": true
         },
+        "@vue/reactivity": {
+            "version": "3.1.5",
+            "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
+            "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
+            "dev": true,
+            "requires": {
+                "@vue/shared": "3.1.5"
+            }
+        },
+        "@vue/shared": {
+            "version": "3.1.5",
+            "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
+            "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==",
+            "dev": true
+        },
         "@webassemblyjs/ast": {
             "version": "1.11.1",
             "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
             "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
             "dev": true
         },
+        "alpinejs": {
+            "version": "3.4.2",
+            "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.4.2.tgz",
+            "integrity": "sha512-PCTLdySJG5ercbN/g4sO+Nyo0TjzV3IP5W9L3UiSj3756VZPUctNiikLAoKX5al2NlLE2O7jPpgtakuRpLLeIQ==",
+            "dev": true,
+            "requires": {
+                "@vue/reactivity": "~3.1.1"
+            }
+        },
         "ansi-escapes": {
             "version": "4.3.2",
             "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
index dc1a364dbefd4b819aa9fbe4e427a8c58c97e4dc..df0a457ef4e63b0c27a106822965204c18121b14 100644 (file)
@@ -10,6 +10,7 @@
         "production": "mix --production"
     },
     "devDependencies": {
+        "alpinejs": "^3.4.2",
         "autoprefixer": "^10.3.7",
         "axios": "^0.21",
         "laravel-mix": "^6.0.6",
index 0d5bd2b169b3df4a497ad62a5bd0585b328e999a..2c062a057090c2701604451b721d9ab606a65b91 100644 (file)
@@ -1,57 +1,13 @@
-
 @tailwind base;
 @tailwind components;
 @tailwind utilities;
 
 @layer base {
-    @import 'fonts.css';
-
-    html, body {
-        min-height: 100%;
-    }
-
-    b, strong {
-        @apply font-semibold;
-    }
-
-    h1, h2, h3, h4 {
-        @apply font-semibold;
-    }
-
-    h1 { @apply text-6xl; }
-    h2 { @apply text-4xl; }
-
-    .circle-arrow {
-        display: inline-block;
-        width: 3em;
-        height: 3em;
-        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Crect width='48' height='48' rx='24' fill='%230825e2'/%3E%3Cg fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M29.089 23.537H18'/%3E%3Cpath d='m24.555 19 4.534 4.541-4.534 4.533'/%3E%3C/g%3E%3C/svg%3E");
-    }
+    @import 'common/fonts.css';
+    @import 'common/menu.css';
+    @import 'common/global.css';
 }
 
-
-/* Variable font support: https://github.com/tailwindlabs/tailwindcss/discussions/3225 */
 @layer utilities {
-    .font-extralight {
-        font-variation-settings: 'wght' 200;
-    }
-    .font-light {
-        font-variation-settings: 'wght' 300;
-    }
-    .font-normal {
-        font-variation-settings: 'wght' 400;
-    }
-    .font-medium {
-        font-variation-settings: 'wght' 500;
-    }
-    .font-semibold {
-        font-variation-settings: 'wght' 600;
-    }
-    .font-bold {
-        font-variation-settings: 'wght' 700;
-    }
-
-    .min-h-content {
-        min-height: calc(100vh - 96px); /* Allow for header and padding */
-    }
+    @import 'common/utilities.css';
 }
diff --git a/resources/css/common/fonts.css b/resources/css/common/fonts.css
new file mode 100644 (file)
index 0000000..e31a08e
--- /dev/null
@@ -0,0 +1,79 @@
+/**
+ * @license
+ *
+ * Font Family: General Sans
+ * Designed by: Frode Helland
+ * URL: https://www.fontshare.com/fonts/general-sans
+ * © 2021 Indian Type Foundry
+ *
+ * Font Styles:
+ * General Sans Variable (Variable font)
+ * General Sans Variable Italic (Variable font)
+*/
+
+
+/**
+* This is a variable font
+* You can control variable axes as shown below:
+* font-variation-settings: 'wght' 700.0;
+*
+* available axes:
+
+* 'wght' (range from 200.0 to 700.0)
+
+*/
+
+/*=== GeneralSans-Variable ===*/
+@font-face {
+    font-family: 'GeneralSans';
+    src: url('../../fonts/GeneralSans-Variable.woff2') format('woff2'),
+    url('../../fonts/GeneralSans-Variable.woff') format('woff'),
+    url('../../fonts/GeneralSans-Variable.ttf') format('truetype');
+    font-weight: 200 700;
+    font-display: swap;
+    font-style: normal;
+}
+
+/*=== GeneralSans-VariableItalic ===*/
+@font-face {
+    font-family: 'GeneralSans';
+    src: url('../../fonts/GeneralSans-VariableItalic.woff2') format('woff2'),
+    url('../../fonts/GeneralSans-VariableItalic.woff') format('woff'),
+    url('../../fonts/GeneralSans-VariableItalic.ttf') format('truetype');
+    font-weight: 200 700;
+    font-display: swap;
+    font-style: italic;
+}
+
+
+/*=======
+| ROBOTO - https://google-webfonts-helper.herokuapp.com/fonts/roboto?subsets=latin
+========*/
+
+/* roboto-regular - latin */
+@font-face {
+    font-family: 'Roboto';
+    font-style: normal;
+    font-weight: 400;
+    src: local(''),
+    url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
+    url('../../fonts/roboto-v29-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+/* roboto-500 - latin */
+@font-face {
+    font-family: 'Roboto';
+    font-style: normal;
+    font-weight: 500;
+    src: local(''),
+    url('../../fonts/roboto-v29-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
+    url('../../fonts/roboto-v29-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+/* roboto-700 - latin */
+@font-face {
+    font-family: 'Roboto';
+    font-style: normal;
+    font-weight: 700;
+    src: local(''),
+    url('../../fonts/roboto-v29-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
+    url('../../fonts/roboto-v29-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
diff --git a/resources/css/common/global.css b/resources/css/common/global.css
new file mode 100644 (file)
index 0000000..21e8a5d
--- /dev/null
@@ -0,0 +1,23 @@
+html, body {
+    min-height: 100%;
+}
+
+b, strong {
+    @apply font-semibold;
+}
+
+h1, h2, h3, h4 {
+    @apply font-semibold;
+}
+
+h1 { @apply text-6xl; }
+h2 { @apply text-4xl; }
+
+[x-cloak] { display: none !important; }
+
+.circle-arrow {
+    display: inline-block;
+    width: 3em;
+    height: 3em;
+    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Crect width='48' height='48' rx='24' fill='%230825e2'/%3E%3Cg fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M29.089 23.537H18'/%3E%3Cpath d='m24.555 19 4.534 4.541-4.534 4.533'/%3E%3C/g%3E%3C/svg%3E");
+}
diff --git a/resources/css/common/menu.css b/resources/css/common/menu.css
new file mode 100644 (file)
index 0000000..f63c347
--- /dev/null
@@ -0,0 +1,7 @@
+.menu-open .menu-overlay {
+    @apply opacity-100 pointer-events-auto;
+}
+
+.menu-open .header-logo, .menu-open .site-header {
+    @apply text-white;
+}
diff --git a/resources/css/common/utilities.css b/resources/css/common/utilities.css
new file mode 100644 (file)
index 0000000..e62b3fc
--- /dev/null
@@ -0,0 +1,29 @@
+/*== Utility overrides ==*/
+.min-h-content {
+    min-height: calc(100vh - 96px); /* Allow for header and padding */
+}
+
+/* Variable font support: https://github.com/tailwindlabs/tailwindcss/discussions/3225 */
+.font-extralight {
+    font-variation-settings: 'wght' 200;
+}
+
+.font-light {
+    font-variation-settings: 'wght' 300;
+}
+
+.font-normal {
+    font-variation-settings: 'wght' 400;
+}
+
+.font-medium {
+    font-variation-settings: 'wght' 500;
+}
+
+.font-semibold {
+    font-variation-settings: 'wght' 600;
+}
+
+.font-bold {
+    font-variation-settings: 'wght' 700;
+}
diff --git a/resources/css/fonts.css b/resources/css/fonts.css
deleted file mode 100644 (file)
index d62e891..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * @license
- *
- * Font Family: General Sans
- * Designed by: Frode Helland
- * URL: https://www.fontshare.com/fonts/general-sans
- * © 2021 Indian Type Foundry
- *
- * Font Styles:
- * General Sans Variable (Variable font)
- * General Sans Variable Italic (Variable font)
-*/
-
-
-/**
-* This is a variable font
-* You can control variable axes as shown below:
-* font-variation-settings: 'wght' 700.0;
-*
-* available axes:
-
-* 'wght' (range from 200.0 to 700.0)
-
-*/
-
-/*=== GeneralSans-Variable ===*/
-@font-face {
-    font-family: 'GeneralSans';
-    src: url('../fonts/GeneralSans-Variable.woff2') format('woff2'),
-    url('../fonts/GeneralSans-Variable.woff') format('woff'),
-    url('../fonts/GeneralSans-Variable.ttf') format('truetype');
-    font-weight: 200 700;
-    font-display: swap;
-    font-style: normal;
-}
-
-/*=== GeneralSans-VariableItalic ===*/
-@font-face {
-    font-family: 'GeneralSans';
-    src: url('../fonts/GeneralSans-VariableItalic.woff2') format('woff2'),
-    url('../fonts/GeneralSans-VariableItalic.woff') format('woff'),
-    url('../fonts/GeneralSans-VariableItalic.ttf') format('truetype');
-    font-weight: 200 700;
-    font-display: swap;
-    font-style: italic;
-}
-
-
-/*=======
-| ROBOTO - https://google-webfonts-helper.herokuapp.com/fonts/roboto?subsets=latin
-========*/
-
-/* roboto-regular - latin */
-@font-face {
-    font-family: 'Roboto';
-    font-style: normal;
-    font-weight: 400;
-    src: local(''),
-    url('../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
-    url('../fonts/roboto-v29-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-500 - latin */
-@font-face {
-    font-family: 'Roboto';
-    font-style: normal;
-    font-weight: 500;
-    src: local(''),
-    url('../fonts/roboto-v29-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
-    url('../fonts/roboto-v29-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-700 - latin */
-@font-face {
-    font-family: 'Roboto';
-    font-style: normal;
-    font-weight: 700;
-    src: local(''),
-    url('../fonts/roboto-v29-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
-    url('../fonts/roboto-v29-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
index 6922577695e66ffdb3803e559490798898341abc..ee2ac34768011406867e623d915a1972397ceb3b 100644 (file)
@@ -1,3 +1,9 @@
+// Add AlpineJS - https://alpinejs.dev/
+import Alpine from 'alpinejs';
+window.Alpine = Alpine;
+Alpine.start();
+
+
 window._ = require('lodash');
 
 /**
diff --git a/resources/views/components/link.blade.php b/resources/views/components/link.blade.php
new file mode 100644 (file)
index 0000000..10a8a95
--- /dev/null
@@ -0,0 +1,11 @@
+{{-- Standard Link --}}
+@php
+    if (Illuminate\Support\Str::startsWith($href, '/')) {
+        // TODO: add adapt local URLs based on environment (whether dynamic or static HTML output)
+        $href = '/front' . $href; // Prefix URLs for frontend preview
+    }
+@endphp
+
+<a href="{{ $href ?? '#' }}" {{ $attributes }}>
+    {{ $slot }}
+</a>
index ebd15338e8c4be2a8a12ff3d1f8dd447a70980d7..e733c0e1ab1bb86d9347f0224faf3105cc27b471 100644 (file)
                 'title' => 'Médiathèque',
                 'content' => 'Consultez les médias audio et vidéo',
                 'image' => 'https://odl.paris.cubedesigners.com/storage/105/groupe-211-at-2x.png',
-                'link' => '#',
+                'link' => '/mediatheque',
             ],
             [
                 'title' => 'Visite guidée',
                 'content' => 'Laissez-vous guider dans une lecture thématique',
                 'image' => 'https://odl.paris.cubedesigners.com/storage/106/groupe-221-at-2x.png',
-                'link' => '#',
+                'link' => '/tour',
             ],
         ];
     @endphp
         {{-- Main home content --}}
         <div class="flex flex-1 justify-center -mb-16">{{-- negative margin so image shadow sits under shortcuts --}}
             {{-- Left Column: logo + text + CTA --}}
-            <div class="home-left flex flex-1 flex-col justify-center items-center p-6 max-w-[310px]">
+            <div class="home-left flex flex-1 flex-col justify-center items-center p-6 max-w-[360px]">
                 @if($logo)<img class="mb-10" src="{{ $logo }}" alt="Logo">@endif
-                @if($subtitle)<p class="text-center mb-5">{{ $subtitle }}</p>@endif
-                @if($button)<a class="bg-blue text-white py-4 px-10 rounded-full" href="/tools/fluidbookpreview">{{ $button }}</a>@endif
+                @if($subtitle)<p class="text-center mb-5 max-w-[280px]">{{ $subtitle }}</p>@endif
+                @if($button)<a class="bg-blue text-white py-4 px-10 rounded-full" href="#">{{ $button }}</a>@endif
             </div>
             {{-- Right Column: Illustration image --}}
-            <div class="home-right flex-1 bg-contain bg-center bg-no-repeat max-w-[700px]" style="@if($illustration)background-image:url({{ $illustration }})@endif"></div>
+            <div class="home-right flex-1 bg-contain bg-center bg-no-repeat max-w-[550px]" style="@if($illustration)background-image:url({{ $illustration }})@endif"></div>
         </div>
 
         {{-- Link blocks --}}
@@ -52,7 +52,7 @@
                     <div class="flex-1 flex-shrink-0 space-y-2">
                         <h3 class="font-semibold uppercase">{{ $shortcut['title'] }}</h3>
                         <p>{{ $shortcut['content'] }}</p>
-                        <a href="{{ $shortcut['link'] }}" class="circle-arrow"></a>
+                        <x-link :href="$shortcut['link']" class="circle-arrow"></x-link>
                     </div>
                 </div>
             @endforeach
index 8d9000489ecd83737fe095253db21c1ceb715ee1..0eecbe1a68182654b51d6bd9d2429f4d32fc1e99 100644 (file)
@@ -6,12 +6,12 @@
     <link href="{{ asset('css/app.css') }}" rel="stylesheet">
     <title>{{ config('app.name') }}</title>
 </head>
-<body class="font-primary p-8">
-    <header class="relative flex justify-between">
+<body class="font-primary p-8" :class="menuOpen && 'menu-open'" x-data="{ menuOpen: false }">
+    <header class="site-header relative flex justify-between z-10">
         {{-- Burger Menu Icon --}}
-        <a href="#">
-            <svg class="fill-current fixed" xmlns="http://www.w3.org/2000/svg" width="33" height="26" viewBox="0 0 33.494 26.495">
-                <g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+        <a href="#" @click.prevent="menuOpen = !menuOpen">
+            <svg class="stroke-current fixed" xmlns="http://www.w3.org/2000/svg" width="33" height="26" viewBox="0 0 33.494 26.495">
+                <g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
                     <path d="M1 1h31.494"/>
                     <path d="M1 13.248h31.494"/>
                     <path d="M1 25.495h31.494"/>
         </a>
 
         {{-- VEOLIA Logo --}}
-        <a class="header-logo text-red" href="/">
+        <x-link class="header-logo text-red" href="/">
             <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="130" height="31.878" viewBox="0 0 130 31.878"><path d="M13.704 31.795A16.13 16.13 0 0 1 .278 19.079a19.191 19.191 0 0 1-.189-5.063A16.014 16.014 0 0 1 13.598.139a19.613 19.613 0 0 1 5.536.127 16.063 16.063 0 0 1 11.993 10.7 15.252 15.252 0 0 1 .794 4.983 16.007 16.007 0 0 1-12.536 15.626 23.994 23.994 0 0 1-5.681.22Zm1.658-7.262a19.68 19.68 0 0 1-2.509-3.99 4.469 4.469 0 0 1-.4-2.247 3.587 3.587 0 0 1 .346-2.02 3.386 3.386 0 0 1 3.156-2.1c2.061-.012 3.576 1.758 3.567 4.166q-.009 2.367-2.468 5.525l-.947 1.215.914-.083a11.289 11.289 0 0 0 7.03-3.344 9.91 9.91 0 0 0 2.146-3.057 9.655 9.655 0 0 0 1.066-4.821 9.577 9.577 0 0 0-.262-2.748 11.391 11.391 0 0 0-12.229-8.536 11.425 11.425 0 0 0-9.762 8.536 13.065 13.065 0 0 0 .01 5.46 11.419 11.419 0 0 0 8.977 8.38 11.273 11.273 0 0 0 1.33.167l.468.011Zm63.629.811a12.141 12.141 0 0 1-3.307-1.111 7.234 7.234 0 0 1-3.274-5.455 16.528 16.528 0 0 1 .2-4.7 7.168 7.168 0 0 1 2.883-4.3 11.8 11.8 0 0 1 6.823-1.261c2.5.255 4.008.871 5.278 2.153a6.778 6.778 0 0 1 1.844 3.475 16.166 16.166 0 0 1 .051 5.776 6.754 6.754 0 0 1-5.2 5.254 16.019 16.019 0 0 1-5.298.17Zm4.092-3.055a3.074 3.074 0 0 0 1.737-1.57 7.571 7.571 0 0 0 .736-3.75c0-3.9-1.372-5.6-4.516-5.6a4.05 4.05 0 0 0-3.041.95c-1.035.93-1.478 2.323-1.478 4.647 0 3.219 1 5.013 3.1 5.541a7.933 7.933 0 0 0 3.461-.221Zm-39.092 2.622c-.062-.158-1.636-3.728-3.5-7.932s-3.387-7.689-3.387-7.744a6.066 6.066 0 0 1 1.548-.1c1.387 0 1.6.029 2.079.28a2.662 2.662 0 0 1 .841.753c.171.26 1.2 2.562 2.278 5.114s2.006 4.715 2.053 4.8a40.742 40.742 0 0 0 2.044-4.732c1.078-2.693 2.076-5.068 2.218-5.278a2.56 2.56 0 0 1 .789-.661c.484-.255.684-.28 2.246-.28h1.715l-3.31 7.323c-1.821 4.027-3.445 7.5-3.609 7.715-.506.666-1.126.9-2.6.966-1.278.068-1.298.062-1.406-.223Zm17.04-.007a6.749 6.749 0 0 1-4.9-5.126 12.989 12.989 0 0 1 0-5.393 7.238 7.238 0 0 1 3.253-4.507c1.366-.728 1.823-.787 6.226-.8l3.978-.008v2.893l-3.438.06-3.438.06-.794.391a2.765 2.765 0 0 0-1.13.877 4.562 4.562 0 0 0-.661 2.012v.274l4.55.032 4.55.032v2.772l-4.55.032-4.55.032v.266a5.392 5.392 0 0 0 .2.964 3.036 3.036 0 0 0 1.826 2.043c.647.257.9.276 4.094.318l3.405.045v2.873l-4.008-.013c-2.2-.007-4.279-.065-4.611-.128Zm35.54-.1a8.52 8.52 0 0 1-1.373-.486 5.251 5.251 0 0 1-1.992-2.091c-.544-1.188-.585-1.718-.59-7.609V9.073h1.266c1.094 0 1.323.036 1.688.264.806.505.777.3.844 5.943l.06 5.123.3.536a1.956 1.956 0 0 0 .9.844c.586.3.662.309 3.526.347l2.927.04v2.874l-3.345-.007a16.7 16.7 0 0 1-4.207-.233Zm9.869-7.2c.032-7.081.045-7.46.263-7.781.382-.563.851-.73 2.212-.785l1.235-.05v7.433c0 8.2.026 7.911-.759 8.39-.32.195-.609.235-1.685.236h-1.3Zm5.7 7.3c.034-.088 1.464-3.387 3.178-7.331 3.49-8.032 3.517-8.08 4.711-8.388a7.507 7.507 0 0 1 3.108-.019c.1.119 6.534 14.861 6.847 15.676.071.186-.066.2-1.505.2-2.346 0-2.719-.236-3.635-2.308l-.552-1.248-3.217-.032-3.217-.032-.124.325c-.068.179-.361.82-.652 1.426a3.114 3.114 0 0 1-1.039 1.455c-.5.345-.552.355-2.238.393-1.4.032-1.716.008-1.666-.121Zm11.231-6.518c-.92-2.207-2.181-5.116-2.249-5.19a38.91 38.91 0 0 0-2.253 4.949l-.164.392h2.365c1.844 0 2.35-.034 2.301-.151Z"/></svg>
-        </a>
+        </x-link>
 
 
         {{-- Search Icon --}}
         <a href="#">
-            <svg class="fill-current fixed top-8 right-8" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 29.414 29.414">
-                <g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+            <svg class="stroke-current fixed top-8 right-8" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 29.414 29.414">
+                <g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
                     <path d="M1 12.25A11.25 11.25 0 1 0 12.25 1 11.25 11.25 0 0 0 1 12.25Z"/>
                     <path d="m28 28-7.794-7.794"/>
                 </g>
         @yield('content')
     </div>
 
+    {{-- MENU OVERLAY --}}
+    <div class="menu-overlay
+                fixed top-0 left-0 w-screen h-screen
+                flex items-center
+                bg-blue text-white
+                transition-opacity duration-500
+                px-30"
+         :class="menuOpen ? '' : 'opacity-0 pointer-events-none'"
+         x-cloak>
+
+        <ul class="font-medium text-6xl space-y-10">
+            @php
+                $menu_links = [
+                    '/' => 'Accueil',
+                    '/fluidbook' => 'Cœur de l’offre',
+                    '/ressources' => 'Ressources',
+                    '/mediatheque' => 'Médiathèque',
+                    '/tour' => 'Visite guidée',
+                ];
+            @endphp
+
+            @foreach ($menu_links as $link => $text)
+                <li x-show="menuOpen"
+                    style="transition-delay: {{ 700 + (50 * $loop->iteration) }}ms"
+                    x-transition:enter="transition transform ease-out duration-1000"
+                    x-transition:enter-start="opacity-0 translate-x-[-100px]"
+                    x-transition:enter-end="opacity-100 translate-x-0">
+                    <x-link class="text-current transition-opacity duration-200 hover:opacity-60" href="{{ $link }}">{{ $text }}</x-link>
+                </li>
+            @endforeach
+        </ul>
+    </div>
+
+    <script src="{{ asset('js/app.js') }}"></script>
+
 </body>
 </html>
index 7eaf9a6b566e94982fe59cb14a17c98f2f35c677..5f19ae7042aa4eb73ce245b6e75272d4a2a50c26 100644 (file)
@@ -28,6 +28,7 @@ module.exports = {
       spacing: {
         '15': '3.75rem', // 60px
         '22': '5.5rem', // 88px
+        '30': '7.5rem', // 120px
       }
     },
     fontFamily: {