]> _ Git - miranui.git/commitdiff
wip #7254 modif compilation, configuration laravel mix, menu responsive, init widget...
authorsoufiane <soufiane@cubedesigners.com>
Thu, 24 Apr 2025 16:30:44 +0000 (18:30 +0200)
committersoufiane <soufiane@cubedesigners.com>
Thu, 24 Apr 2025 16:30:44 +0000 (18:30 +0200)
15 files changed:
wp-content/mu-plugins/cube/Widgets/BannerText.php [new file with mode: 0644]
wp-content/themes/miranui_new/bud.config.js [new file with mode: 0644]
wp-content/themes/miranui_new/resources/css/common.scss [new file with mode: 0644]
wp-content/themes/miranui_new/resources/css/font.scss [new file with mode: 0644]
wp-content/themes/miranui_new/resources/css/header.scss [new file with mode: 0644]
wp-content/themes/miranui_new/resources/css/mixins.scss [new file with mode: 0644]
wp-content/themes/miranui_new/resources/css/variables.scss
wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff [new file with mode: 0644]
wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff2 [new file with mode: 0644]
wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff [new file with mode: 0644]
wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff2 [new file with mode: 0644]
wp-content/themes/miranui_new/resources/images/linkedin.svg [new file with mode: 0644]
wp-content/themes/miranui_new/resources/images/logo_miranui.svg [new file with mode: 0644]
wp-content/themes/miranui_new/resources/views/widgets/banner.blade.php [new file with mode: 0644]
wp-content/themes/miranui_new/webpack.mix.js [new file with mode: 0644]

diff --git a/wp-content/mu-plugins/cube/Widgets/BannerText.php b/wp-content/mu-plugins/cube/Widgets/BannerText.php
new file mode 100644 (file)
index 0000000..b2000c5
--- /dev/null
@@ -0,0 +1,141 @@
+<?php
+
+namespace Cube\Widgets;
+
+use Elementor\Controls_Manager;
+
+class BannerText extends _Base {
+
+    public function get_name() {
+        return 'cube-banner-text';
+    }
+
+    public function get_title() {
+        return esc_html__( 'Bannière', 'cube' );
+    }
+
+    public function get_icon() {
+        return 'eicon-post-title';
+    }
+
+    protected function start($id, $name) {
+        $this->start_controls_section(
+            $id,
+            [
+                'label' => esc_html__($name, 'cube'),
+                'tab' => Controls_Manager::TAB_CONTENT,
+            ]
+        );
+    }
+    protected function controls() {
+        $this->add_control(
+            'title',
+            [
+                'label' => __( 'Title', 'elementor' ),
+                'type' => Controls_Manager::TEXTAREA,
+                'placeholder' => __( 'Enter your title', 'elementor' ),
+                'default' => 'Lorem ipsum',
+            ]
+        );
+
+        $this->add_control(
+            'image',
+            [
+                'label' => esc_html__( 'Choose Image', 'textdomain' ),
+                'type' => Controls_Manager::MEDIA,
+                'default' => [
+                    'url' => \Elementor\Utils::get_placeholder_image_src(),
+                ],
+            ]
+        );
+    }
+
+    protected function end() {
+        $this->end_controls_section();
+    }
+
+    protected function register_controls() {
+        self::start('content_section', 'Content');
+        $this->controls();
+        self::end();
+    }
+
+    /**
+     * Render list widget output on the frontend.
+     *
+     * Written in PHP and used to generate the final HTML.
+     *
+     * @since 1.0.0
+     * @access protected
+     */
+    protected function render() {
+
+        $size = $this->get_settings('text_size') ? $this->get_settings('text_size') : 'large';
+
+        $size_classes = [
+            'xxlarge' => 'text-xl',
+            'xlarge' => 'text-lg-1',
+            'large' => 'text-lg',
+        ];
+
+        // CSS Classes for elements
+        $this->add_render_attribute('title', 'class', ["text-block-title font-bold $size_classes[$size]"]);
+        $this->add_render_attribute('subtitle', 'class', ["text-block-subtitle font-bold text-md"]);
+        $this->add_render_attribute('body', 'class', ['text-block-body']);
+
+        $settings = $this->get_controls_settings();
+        $attributes = $this->get_render_attributes();
+
+        // Rendered content
+        echo view("widgets/banner", compact("settings", "attributes"));
+    }
+
+    protected function backboneTemplate(){ ?>
+        <#
+        size_classes = {
+            'xlarge': 'text-xl',
+            'large': 'text-lg',
+        };
+
+        view.addRenderAttribute(
+            'title',
+            {
+                'class': [ 'text-block-title font-bold text-xl', size_classes[settings.text_size] ]
+            }
+        );
+        view.addRenderAttribute( 'subtitle', 'class', ['text-block-subtitle font-bold text-md']);
+        view.addRenderAttribute( 'body', 'class', ['text-block-body']);
+
+        view.addInlineEditingAttributes( 'title', 'none' );
+        view.addInlineEditingAttributes( 'subtitle', 'none' );
+        view.addInlineEditingAttributes( 'body', 'none' );
+        #>
+        <div class="text-block">
+
+        <# if ('' !== settings.title) { #>
+        <{{{ settings.title_tag }}} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}}</{{{ settings.title_tag }}}>
+        <# } #>
+
+        <# if ('' !== settings.subtitle) { #>
+        <{{{ settings.subtitle_tag }}} {{{ view.getRenderAttributeString( 'subtitle' ) }}}>{{{ settings.subtitle }}}</{{{ settings.subtitle_tag }}}>
+        <# } #>
+
+        <# if ('' !== settings.body) { #>
+        <div {{{ view.getRenderAttributeString( 'body' ) }}}>{{{ settings.body }}}</div>
+        <# } #>
+
+        </div>
+    <?php }
+
+    /**
+     * Render text editor widget output in the editor.
+     *
+     * Written as a Backbone JavaScript template and used to generate the live preview.
+     *
+     * @since 1.0.0
+     * @access protected
+     */
+    protected function content_template() {
+        //self::backboneTemplate();
+    }
+}
\ No newline at end of file
diff --git a/wp-content/themes/miranui_new/bud.config.js b/wp-content/themes/miranui_new/bud.config.js
new file mode 100644 (file)
index 0000000..d2f036e
--- /dev/null
@@ -0,0 +1,62 @@
+/**
+ * Build configuration
+ *
+ * @see {@link https://roots.io/docs/sage/ sage documentation}
+ * @see {@link https://bud.js.org/guides/configure/ bud.js configuration guide}
+ *
+ * @typedef {import('@roots/bud').Bud} Bud
+ * @param {Bud} app
+ */
+
+export default async (app) => {
+  /**
+   * Application entrypoints
+   * @see {@link https://bud.js.org/docs/bud.entry/}
+   */
+  app
+    .entry({
+      app: ['@styles/app','@scripts/app'],
+      //editor: ['@scripts/editor', '@styles/editor']
+    })
+
+    .tap(bud => bud.postcss.setPluginOptions('env', {
+      //preserve: false,
+      features: {
+        'custom-properties': false, // Don't make css var fallback values
+      },
+    }))
+    .provide({
+      jquery: ["jQuery", "$"],
+    })
+    /**
+     * Directory contents to be included in the compilation
+     * @see {@link https://bud.js.org/docs/bud.assets/}
+     */
+    .assets(['images'])
+
+    /**
+     * Matched files trigger a page reload when modified
+     * @see {@link https://bud.js.org/docs/bud.watch/}
+     */
+    .watch(['resources/views', 'app'])
+
+
+    /**
+     * Proxy origin (`WP_HOME`)
+     * @see {@link https://bud.js.org/docs/bud.proxy/}
+     */
+    .proxy('http://example.test')
+
+    /**
+     * Development origin
+     * @see {@link https://bud.js.org/docs/bud.serve/}
+     */
+    .serve('http://localhost:3000')
+
+    /**
+     * URI of the `public` directory
+     * @see {@link https://bud.js.org/docs/bud.setPublicPath/}
+     */
+    .setPublicPath('/wp-content/themes/miranui_new/public/')
+
+};
diff --git a/wp-content/themes/miranui_new/resources/css/common.scss b/wp-content/themes/miranui_new/resources/css/common.scss
new file mode 100644 (file)
index 0000000..7edbb8c
--- /dev/null
@@ -0,0 +1,41 @@
+.mira {
+  &-container {
+    max-width: 1460px;
+    width: 100%;
+    margin: 0 auto;
+    padding: 0 16px;
+    @include above($mdScreen) {
+      padding: 0 32px;
+    }
+  }
+
+  &-label {
+    padding-left: 20px;
+    position: relative;
+    font-size: 18px;
+    &:before {
+      content: "";
+      width: 12px;
+      height: 12px;
+      background-color: $clearRed;
+      border-radius: 24px;
+    }
+  }
+
+  &-semibold {
+    font-weight: 600;
+  }
+
+}
+
+.hide-on-desktop {
+  @include above($mdScreen) {
+    display: none !important;
+  }
+}
+
+.hide-on-mobile {
+  @include below($mdScreen) {
+    display: none !important;
+  }
+}
diff --git a/wp-content/themes/miranui_new/resources/css/font.scss b/wp-content/themes/miranui_new/resources/css/font.scss
new file mode 100644 (file)
index 0000000..89cf046
--- /dev/null
@@ -0,0 +1,17 @@
+@font-face {
+  font-family: 'Poppins';
+  src: url('../fonts/Poppins-SemiBold.woff2') format('woff2'),
+  url('../fonts/Poppins-SemiBold.woff') format('woff');
+  font-weight: 600;
+  font-style: normal;
+  font-display: swap;
+}
+
+@font-face {
+  font-family: 'Poppins';
+  src: url('../fonts/Poppins-Regular.woff2') format('woff2'),
+  url('../fonts/Poppins-Regular.woff') format('woff');
+  font-weight: normal;
+  font-style: normal;
+  font-display: swap;
+}
diff --git a/wp-content/themes/miranui_new/resources/css/header.scss b/wp-content/themes/miranui_new/resources/css/header.scss
new file mode 100644 (file)
index 0000000..301ab62
--- /dev/null
@@ -0,0 +1,111 @@
+.mira {
+  &-header {
+    padding: 24px 0;
+    transition: all .3s;
+
+    .clear & {
+      @include bg($navBlue)
+    }
+
+    .mira-container {
+      @include flex(space-between, center);
+      position: relative;
+    }
+
+    @include above(992px) {
+      padding: 52px 0;
+    }
+
+    &-btn {
+      @include bg($clearRed);
+      @include r(20px);
+      @include flex(center,center);
+      color: #fff;
+      height: 40px;
+      width: max-content;
+      padding: 0 24px;
+      border: 0;
+      &:hover {
+        @include bg($darkRed);
+      }
+    }
+
+    #menu-item-20 {
+      @extend .hide-on-desktop;
+    }
+
+    #toggleMenu {
+      display: flex;
+      flex-direction: column;
+      gap: 2px;
+      width: 40px;
+      padding: 0;
+      &:hover,
+      &.active {
+        .bar:first-child {
+          transform: rotate(45deg);
+          top: 20px;
+        }
+        .bar:last-child {
+          transform: rotate(-45deg);
+          bottom: 18px;
+        }
+      }
+      .bar {
+        width: 40%;
+        height: 2px;
+        @include bg(white);
+        position: absolute;
+        transition: .3s all;
+        &:first-child {
+          top: 17px;
+        }
+        &:last-child {
+          bottom: 15px;
+        }
+      }
+    }
+  }
+
+  &-logo,
+  &-header-btn {
+    position: relative;
+    z-index: 1;
+  }
+
+  &-nav {
+    @include flex(center,center);
+    @include bg($navBlue);
+    flex-direction: column;
+    gap: 32px;
+    position: absolute;
+    width: 100vw;
+    height: 100vh;
+    top: -100vh;
+    left: 0;
+    transition: top .3s;
+    &.active {
+      top: 0;
+    }
+    @include above($mdScreen) {
+      @include bg(transparent);
+      @include absoluteCenter;
+      top: 50%;
+      left: 50%;
+      width: auto;
+      height: auto;
+    }
+
+    ul {
+      @include flex(center, center);
+      flex-direction: column;
+      gap: 32px;
+      @include above($mdScreen) {
+        flex-direction: row;
+      }
+      a {
+        color: #fff;
+      }
+    }
+  }
+}
diff --git a/wp-content/themes/miranui_new/resources/css/mixins.scss b/wp-content/themes/miranui_new/resources/css/mixins.scss
new file mode 100644 (file)
index 0000000..6e33e8e
--- /dev/null
@@ -0,0 +1,32 @@
+@mixin absoluteCenter() {
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%,-50%);
+}
+
+@mixin flex($justifyContent: 'initial',$alignItems: 'initial',$order:'initial') {
+  display: flex;
+  justify-content: $justifyContent;
+  align-items: $alignItems;
+  order: $order;
+}
+
+@mixin r($r) {
+  border-radius: $r;
+}
+
+@mixin above($value) {
+  @media (min-width: $value) {
+    @content;
+  }
+}
+
+@mixin below($value) {
+  @media (max-width: $value) {
+    @content;
+  }
+}
+
+@mixin bg($var) {
+  background-color: $var;
+}
index d92db6b9650812a48545399462b01f6e51bbe745..25fd6230c98565044dc1ff1e2bf455d519778b1d 100644 (file)
@@ -1,6 +1,12 @@
-$actionRed: #B34049;
-$logoRed: #D75B65;
+$clearRed: #D75B65;
+$darkRed: #B34049;
 $clearBlue: #6F7BB6;
 $middleBlue: #404F8E;
 $navBlue: #22335C;
 $darkblue: #15203F;
+
+$mdScreen: 992px;
+$lgScreen: 1280px;
+
+$fsH1: clamp(3rem, 1.7249rem + 5.4406vw, 7.4375rem);
+$fsH2: clamp(2.4375rem, 2.0424rem + 1.6858vw, 3.8125rem);
diff --git a/wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff b/wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff
new file mode 100644 (file)
index 0000000..4d078d0
Binary files /dev/null and b/wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff differ
diff --git a/wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff2 b/wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff2
new file mode 100644 (file)
index 0000000..9743d2c
Binary files /dev/null and b/wp-content/themes/miranui_new/resources/fonts/Poppins-Regular.woff2 differ
diff --git a/wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff b/wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff
new file mode 100644 (file)
index 0000000..3953d50
Binary files /dev/null and b/wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff differ
diff --git a/wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff2 b/wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff2
new file mode 100644 (file)
index 0000000..4d1e972
Binary files /dev/null and b/wp-content/themes/miranui_new/resources/fonts/Poppins-SemiBold.woff2 differ
diff --git a/wp-content/themes/miranui_new/resources/images/linkedin.svg b/wp-content/themes/miranui_new/resources/images/linkedin.svg
new file mode 100644 (file)
index 0000000..0e04cc6
--- /dev/null
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36">
+  <g id="Groupe_46" data-name="Groupe 46" transform="translate(-1426 -8006)">
+    <g id="LinkedIn_icon" transform="translate(1425 8005)">
+      <path id="Tracé_95" data-name="Tracé 95" d="M28,28H24.3V21.7c0-1.727-.656-2.692-2.023-2.692-1.487,0-2.264,1-2.264,2.692V28H16.45V16h3.564v1.616a4.187,4.187,0,0,1,3.618-1.983C26.178,15.633,28,17.188,28,20.4ZM12.2,14.429a2.214,2.214,0,1,1,2.2-2.214A2.206,2.206,0,0,1,12.2,14.429ZM10.357,28h3.717V16H10.357Z" fill="#fff" fill-rule="evenodd"/>
+    </g>
+    <g id="Rectangle_90" data-name="Rectangle 90" transform="translate(1426 8006)" fill="none" stroke="#fff" stroke-width="2">
+      <rect width="36" height="36" rx="18" stroke="none"/>
+      <rect x="1" y="1" width="34" height="34" rx="17" fill="none"/>
+    </g>
+  </g>
+</svg>
diff --git a/wp-content/themes/miranui_new/resources/images/logo_miranui.svg b/wp-content/themes/miranui_new/resources/images/logo_miranui.svg
new file mode 100644 (file)
index 0000000..eb6d070
--- /dev/null
@@ -0,0 +1,35 @@
+<svg id="Groupe_20" data-name="Groupe 20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="151.202" height="24" viewBox="0 0 151.202 24">
+  <defs>
+    <clipPath id="clip-path">
+      <rect id="Rectangle_26" data-name="Rectangle 26" width="151.202" height="24" fill="none"/>
+    </clipPath>
+    <clipPath id="clip-path-2">
+      <rect id="Rectangle_24" data-name="Rectangle 24" width="151.202" height="24" fill="#fff"/>
+    </clipPath>
+    <clipPath id="clip-path-3">
+      <path id="Tracé_25" data-name="Tracé 25" d="M123.383,32.311l-1.182,2,3.252,7.85a3.445,3.445,0,0,0,4.5,1.865l1.182-2-3.251-7.85a3.443,3.443,0,0,0-4.5-1.865" transform="translate(-122.201 -32.048)" fill="none"/>
+    </clipPath>
+  </defs>
+  <g id="Groupe_19" data-name="Groupe 19" clip-path="url(#clip-path)">
+    <g id="Groupe_16" data-name="Groupe 16">
+      <g id="Groupe_15" data-name="Groupe 15" clip-path="url(#clip-path-2)">
+        <path id="Tracé_16" data-name="Tracé 16" d="M425.308,17.295h.1a2.263,2.263,0,1,0,0-4.527h-.1a2.263,2.263,0,0,0,0,4.527" transform="translate(-347.543 -10.489)" fill="#fff"/>
+        <path id="Tracé_17" data-name="Tracé 17" d="M823.539,17.295h.1a2.263,2.263,0,1,0,0-4.527h-.1a2.263,2.263,0,0,0,0,4.527" transform="translate(-674.7 -10.489)" fill="#fff"/>
+        <path id="Tracé_18" data-name="Tracé 18" d="M296.406,49.831a6.217,6.217,0,0,0-2.974-.706,6.585,6.585,0,0,0-3.095.721,5.431,5.431,0,0,0-1.6,1.258,5.234,5.234,0,0,0-1.511-1.288,5.411,5.411,0,0,0-2.719-.691,6.166,6.166,0,0,0-2.929.676,5.269,5.269,0,0,0-1.037.72,1.1,1.1,0,0,0-1.1-1.1h-3.532v14.6h4.627V55.495a2.3,2.3,0,0,1,.316-1.232,2.188,2.188,0,0,1,.856-.8,2.6,2.6,0,0,1,1.232-.286,2.386,2.386,0,0,1,1.667.616,2.182,2.182,0,0,1,.676,1.7v8.533h4.627V55.495a2.388,2.388,0,0,1,.3-1.232,2.058,2.058,0,0,1,.856-.8,2.627,2.627,0,0,1,1.217-.286,2.347,2.347,0,0,1,1.637.616,2.182,2.182,0,0,1,.676,1.7v8.533h4.627V54.954a6.122,6.122,0,0,0-.751-3.125,5.172,5.172,0,0,0-2.073-2" transform="translate(-226.672 -40.358)" fill="#fff"/>
+        <rect id="Rectangle_22" data-name="Rectangle 22" width="4.627" height="14.602" transform="translate(75.502 9.068)" fill="#fff"/>
+        <path id="Tracé_19" data-name="Tracé 19" d="M539.9,50.643a5.307,5.307,0,0,0-1.367-.947,6.061,6.061,0,0,0-2.659-.571,6.682,6.682,0,0,0-3.59.976,6.923,6.923,0,0,0-2.494,2.7,8.236,8.236,0,0,0-.916,3.921,8.056,8.056,0,0,0,.916,3.891,7.158,7.158,0,0,0,2.509,2.7,6.549,6.549,0,0,0,3.575,1.007,6.13,6.13,0,0,0,2.689-.571,5.206,5.206,0,0,0,1.337-.913,1.183,1.183,0,0,0,1.183,1.183h3.354v-14.6h-3.32A1.217,1.217,0,0,0,539.9,50.643Zm-3.065,9.509a3.21,3.21,0,0,1-1.668-.435,3.177,3.177,0,0,1-1.172-1.217,3.824,3.824,0,0,1,0-3.545,3.148,3.148,0,0,1,2.839-1.652,3.353,3.353,0,0,1,1.712.435,2.873,2.873,0,0,1,1.142,1.2,3.82,3.82,0,0,1,.391,1.758,3.536,3.536,0,0,1-.886,2.494,3.053,3.053,0,0,1-2.358.961" transform="translate(-434.482 -40.358)" fill="#fff"/>
+        <path id="Tracé_20" data-name="Tracé 20" d="M645.68,49.876a5.475,5.475,0,0,0-2.854-.751,6.365,6.365,0,0,0-3.02.706,5.375,5.375,0,0,0-1.1.766,1.172,1.172,0,0,0-1.172-1.172h-3.455v14.6h4.627V55.7a2.591,2.591,0,0,1,.331-1.322,2.323,2.323,0,0,1,.9-.886,2.626,2.626,0,0,1,1.292-.315,2.475,2.475,0,0,1,1.8.706,2.434,2.434,0,0,1,.721,1.818v8.322h4.627V54.683a5.558,5.558,0,0,0-.721-2.779,5.429,5.429,0,0,0-1.983-2.028" transform="translate(-520.916 -40.358)" fill="#fff"/>
+        <path id="Tracé_21" data-name="Tracé 21" d="M737.426,59.191a2.622,2.622,0,0,1-.586,1.8,2.039,2.039,0,0,1-1.607.661,2.326,2.326,0,0,1-1.2-.3,1.963,1.963,0,0,1-.781-.856,2.959,2.959,0,0,1-.27-1.307V50.809h-4.627v8.442a6.4,6.4,0,0,0,.871,3.35,6.158,6.158,0,0,0,2.449,2.3,8.05,8.05,0,0,0,7.135.015,6.024,6.024,0,0,0,2.389-2.283,6.545,6.545,0,0,0,.856-3.38V50.809h-4.627Z" transform="translate(-598.362 -41.741)" fill="#fff"/>
+        <rect id="Rectangle_23" data-name="Rectangle 23" width="4.627" height="14.602" transform="translate(146.576 9.068)" fill="#fff"/>
+        <path id="Tracé_22" data-name="Tracé 22" d="M475.649,53.817l2.251-3.9a3.858,3.858,0,0,0-.858-.478,5.633,5.633,0,0,0-5.588,1.1l-.015.017a1.128,1.128,0,0,0-1.128-1.128h-3.5v14.6h4.627V56.035a2.957,2.957,0,0,1,.676-2.118,2.439,2.439,0,0,1,1.848-.706,2.734,2.734,0,0,1,1.021.18,1.943,1.943,0,0,1,.665.426" transform="translate(-383.499 -40.358)" fill="#fff"/>
+        <path id="Tracé_23" data-name="Tracé 23" d="M11.543,73.486a5.771,5.771,0,1,0-5.771,5.771,5.771,5.771,0,0,0,5.771-5.771" transform="translate(0 -55.63)" fill="#d75b65"/>
+        <path id="Tracé_24" data-name="Tracé 24" d="M49.736,7.98,48.269,4.438a7.185,7.185,0,0,0-12.821-.911L33.993,5.984a3.445,3.445,0,0,1,4.5,1.865l4.285,10.345.434,1.047a7.185,7.185,0,0,0,12.821.911L58.67,15.7l2,4.783a5.146,5.146,0,0,0,4.713,3.186l5.956.01a1.222,1.222,0,0,0,1.127-1.694L65.563,5.47l-.432-1.044a7.15,7.15,0,0,0-12.765-.909Z" transform="translate(-27.926 0)" fill="#d75b65"/>
+      </g>
+    </g>
+    <g id="Groupe_18" data-name="Groupe 18" transform="translate(21.81 5.72)">
+      <g id="Groupe_17" data-name="Groupe 17" clip-path="url(#clip-path-3)">
+        <image id="Rectangle_25" data-name="Rectangle 25" width="18.918" height="19.811" transform="translate(-5.033 -3.493)" xlink:href="data:image/png;base64,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"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/wp-content/themes/miranui_new/resources/views/widgets/banner.blade.php b/wp-content/themes/miranui_new/resources/views/widgets/banner.blade.php
new file mode 100644 (file)
index 0000000..c4672f3
--- /dev/null
@@ -0,0 +1,12 @@
+@php
+  $largeImg = wp_get_attachment_image_url($settings['image']['id'],'large')
+@endphp
+
+<div class="mira-lcp-banner">
+  @if($settings['image']['url'])
+    <img src="{{ esc_url($largeImg) }}" />
+  @endif
+  @if($settings['title'])
+    <h1 class="bigtitle">{{ $settings['title'] }}</h1>
+  @endif
+</div>
diff --git a/wp-content/themes/miranui_new/webpack.mix.js b/wp-content/themes/miranui_new/webpack.mix.js
new file mode 100644 (file)
index 0000000..a3f578d
--- /dev/null
@@ -0,0 +1,46 @@
+let mix = require('laravel-mix');
+
+// Source path helper
+const fs = require('fs');
+const path = require('path');
+
+const themePublicUrl = '/wp-content/themes/miranui_new/public';
+
+mix
+  .setPublicPath('public')
+  .setResourceRoot(`/wp-content/themes/miranui_new/public`)
+  .webpackConfig({
+    output: { publicPath: `/wp-content/themes/miranui_new/public` }
+  });
+
+const publicPath = path => `${mix.config.publicPath}/${path}`;
+
+
+mix.js('resources/js/app.js', 'public').sass('resources/css/app.scss', 'public').options({
+  processCssUrls: false
+}).version();
+
+// Assets
+mix.copyDirectory('resources/images', `public/images`)
+  .copyDirectory('resources/fonts', `public/fonts`);
+
+mix.then(() => {
+  const manifestPath = path.resolve(__dirname, 'public/mix-manifest.json');
+
+  if (!fs.existsSync(manifestPath)) {
+    console.error('mix-manifest.json not found');
+    return;
+  }
+
+  const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
+  const updatedManifest = {};
+
+  for (const key in manifest) {
+    updatedManifest[key] = themePublicUrl + manifest[key];
+  }
+
+  fs.writeFileSync(
+    manifestPath,
+    JSON.stringify(updatedManifest, null, 2)
+  );
+});