Commit 29276e293d178ae4f79fda5d96b1e2593bb59d93

Authored by sanmu
1 parent 3ec84c85

feat: 更新标题&图片alt&keyword&h4

README.md
... ... @@ -17,9 +17,9 @@ docker run -d -p 8088:3000 --name canrud-outside-front canrud-outside-front:dev
17 17 1. 修改 deploy/prod.sh的 TAG 将版本号+1,默认改动小版本,如1.0.0->1.0.1
18 18 1. 在根目录执行 sh deploy/prod.sh
19 19 1. 登录112服务器,,将镜像拷贝到生产的47服务器
20   -scp /root/web/canrud-outside-nuxt-front/canrud-outside-front_1.0.2.tar root@47.89.254.121:/root/web/canrud-outside-nuxt-front
  20 +scp /root/web/canrud-outside-nuxt-front/canrud-outside-front_1.0.6.tar root@47.89.254.121:/root/web/canrud-outside-nuxt-front
21 21 1. 登录47服务器,进入到 /root/web/canrud-outside-nuxt-front 目录
22   -1. 加载镜像 docker load -i canrud-outside-front_1.0.2.tar (1.0.0对应你的tag)
  22 +1. 加载镜像 docker load -i canrud-outside-front_1.0.6.tar (1.0.0对应你的tag)
23 23 1. 修改 docker-compose.yaml 的镜像版本号
24 24 1. 启动服务 docker-compose up -d
25 25  
... ...
components/ContactDialog.vue
... ... @@ -34,7 +34,7 @@
34 34 <span class="text-grey-darken-4 font-weight-medium"> contactcanrd </span>
35 35 </v-card-text>
36 36 <p>
37   - <img src="/wechat.jpg" alt="" width="140" class="tw-m-auto tw-block" />
  37 + <img src="/wechat.jpg" alt="canrud-wechat" width="140" class="tw-m-auto tw-block" />
38 38 </p>
39 39 <!-- <v-card-actions class="pa-0">
40 40 <v-btn color="blue-darken-1" block @click="dialogStore.updateDialog(false)">Close </v-btn>
... ...
components/Footer.vue
... ... @@ -24,7 +24,7 @@
24 24 <p>Phone: +86 19867737979</p>
25 25 <p>Wechat: contactcanrd</p>
26 26 </div>
27   - <img class="tw-float-left" src="/wechat.jpg" width="80" />
  27 + <img class="tw-float-left" src="/wechat.jpg" alt="canrud-wechat" width="80" />
28 28 </v-col>
29 29 </v-row>
30 30 </v-container>
... ... @@ -38,10 +38,12 @@ b {
38 38 margin-bottom: 12px;
39 39 display: block;
40 40 }
  41 +
41 42 p {
42 43 cursor: pointer;
43 44 margin-bottom: 8px;
44 45 }
  46 +
45 47 p a:hover {
46 48 color: #e0e0e0;
47 49 }
... ...
components/Header.vue
... ... @@ -5,8 +5,8 @@
5 5 <router-link to="/"><v-img src="/logo.jpg" alt="canrud" /></router-link>
6 6 </v-col>
7 7 <v-col cols="6" md="8" class="px-0">
8   - <v-text-field label="Search keyword" hide-details="auto" variant="solo" append-inner-icon="mdi-magnify"
9   - @click:appendInner="handleClick" @keydown="handleKeyDown" v-model="input">
  8 + <v-text-field name="keyword" label="Search keyword" hide-details="auto" variant="solo"
  9 + append-inner-icon="mdi-magnify" @click:appendInner="handleClick" @keydown="handleKeyDown" v-model="input">
10 10 </v-text-field>
11 11 </v-col>
12 12 <v-col cols="4" md="2" class="px-0">
... ... @@ -30,11 +30,11 @@
30 30 <v-tab :value="4" to="/contact"><span @click="handleTabClick"
31 31 class="text-grey-lighten-3 tw-font-bold">Contact</span>
32 32 </v-tab>
33   - <v-tab>
34   - <span class="text-grey-lighten-3 tw-font-bold">
35   - <a href="http://blog.canrud.com/" target="" title="Blog">Blog</a>
36   - </span>
37   - </v-tab>
  33 + <v-tab>
  34 + <span class="text-grey-lighten-3 tw-font-bold">
  35 + <a href="http://blog.canrud.com/" target="" title="Blog">Blog</a>
  36 + </span>
  37 + </v-tab>
38 38 </v-tabs>
39 39 </div>
40 40 </div>
... ... @@ -71,7 +71,7 @@ const handleClick = () =&gt; {
71 71 categoryStore.updateDisplay(!input.value)
72 72 productStore.updateKeyword(input.value)
73 73 productStore.updatePageNo(1)
74   - router.push('/products')
  74 + router.push({ path: '/products', query: { keyword: input.value } })
75 75 }
76 76  
77 77 const tab = ref(1)
... ... @@ -100,6 +100,11 @@ onMounted(() =&gt; {
100 100 if (obj.flag) {
101 101 dialog.updateDialog(true)
102 102 }
  103 +
  104 + if (obj.keyword) {
  105 + productStore.updateKeyword(obj.keyword)
  106 + categoryStore.updateDisplay(false)
  107 + }
103 108 }
104 109 })
105 110 </script>
... ...
components/MainTitleList.vue
1 1 <template>
2 2 <div class="text-blue-darken-1 text-h4 text-sm-h3 tw-text-center tw-mb-[16px] font-weight-bold">
3   - <div :class="titleCls">{{ title }}</div>
  3 + <h2 :class="titleCls">{{ title }}</h2>
4 4 </div>
5 5 <div class="text-body-1 tw-max-w-[600px] tw-m-auto tw-mb-8">
6   - <span class="tw-mb-[64px] tw-max-w-[600px] tw-m-auto font-weight-medium text-grey-darken-1">{{
  6 + <section class="tw-inline tw-mb-[64px] tw-max-w-[600px] tw-m-auto font-weight-medium text-grey-darken-1">{{
7 7 desc
8   - }}</span>
  8 + }}</section>
9 9 <router-link :to="href" v-if="href">
10 10 <span
11   - class="font-weight-bold text-decoration-underline tw-inline-block tw-underline tw-text-sky-500 hover:tw-text-sky-800"
12   - >detail
  11 + class="font-weight-bold text-decoration-underline tw-inline-block tw-underline tw-text-sky-500 hover:tw-text-sky-800">detail
13 12 <v-icon class="tw-mt-[-4px]" size="18" icon="mdi-arrow-right"></v-icon>
14 13 </span>
15 14 </router-link>
... ... @@ -18,16 +17,9 @@
18 17 <v-row>
19 18 <v-col v-for="(item, index) in list" :key="index" cols="6" :lg="lgCol" md="4" sm="6">
20 19 <v-hover v-slot="{ isHovering, props }" open-delay="200" :disabled="disabled">
21   - <v-card
22   - color="blue-darken-1"
23   - variant="outlined"
24   - :elevation="isHovering ? 16 : 2"
25   - :class="{ 'on-hover': isHovering }"
26   - class="mx-auto"
27   - max-width="260"
28   - v-bind="props"
29   - @click="handleCardClick(item)"
30   - >
  20 + <v-card color="blue-darken-1" variant="outlined" :elevation="isHovering ? 16 : 2"
  21 + :class="{ 'on-hover': isHovering }" class="mx-auto" max-width="260" v-bind="props"
  22 + @click="handleCardClick(item)">
31 23 <v-img :src="item.imageUrl" :alt="item.name" />
32 24 <div class="text-center bg-blue-darken-1 tw-text-center tw-w-full tw-h-9 tw-leading-9">
33 25 {{ item.name }}
... ... @@ -41,21 +33,12 @@
41 33 <v-row>
42 34 <v-col v-for="(item, index) in list" :key="index">
43 35 <v-hover v-slot="{ isHovering, props }" open-delay="200" :disabled="disabled">
44   - <v-card
45   - color="blue-darken-1"
46   - variant="outlined"
47   - :elevation="isHovering ? 16 : 2"
48   - :class="{ 'on-hover': isHovering }"
49   - class="pt-5 mx-auto"
50   - height="350"
51   - v-bind="props"
52   - :href="item.href ? item.href : undefined"
53   - @click="handleCardClick(item)"
54   - >
  36 + <v-card color="blue-darken-1" variant="outlined" :elevation="isHovering ? 16 : 2"
  37 + :class="{ 'on-hover': isHovering }" class="pt-5 mx-auto" height="350" v-bind="props"
  38 + :href="item.href ? item.href : undefined" @click="handleCardClick(item)">
55 39 <v-img :src="item.imageUrl" width="250" class="text-center ma-auto" />
56 40 <div
57   - class="text-center bg-blue-darken-1 tw-absolute tw-bottom-0 tw-text-center tw-w-full tw-h-9 tw-leading-9"
58   - >
  41 + class="text-center bg-blue-darken-1 tw-absolute tw-bottom-0 tw-text-center tw-w-full tw-h-9 tw-leading-9">
59 42 {{ item.name }}
60 43 </div>
61 44 </v-card>
... ...
components/MainTitleListOdd.vue
1 1 <template>
2 2 <div class="text-blue-darken-1 tw-text-center tw-mb-[16px] font-weight-bold text-h4 text-sm-h3">
3   - <div :class="titleCls">{{ title }}</div>
  3 + <h2 :class="titleCls">{{ title }}</h2>
4 4 </div>
5 5 <div class="text-body-1 tw-max-w-[600px] tw-m-auto tw-mb-8">
6 6 <span class="tw-mb-[64px] tw-max-w-[600px] tw-m-auto font-weight-medium text-grey-darken-1">{{
7 7 desc
8   - }}</span>
  8 + }}</span>
9 9 <router-link :to="href" v-if="href">
10 10 <span
11   - class="font-weight-bold text-decoration-underline tw-inline-block tw-underline tw-text-sky-500 hover:tw-text-sky-800"
12   - >detail
  11 + class="font-weight-bold text-decoration-underline tw-inline-block tw-underline tw-text-sky-500 hover:tw-text-sky-800">detail
13 12 <v-icon class="tw-mt-[-4px]" size="18" icon="mdi-arrow-right"></v-icon>
14 13 </span>
15 14 </router-link>
... ... @@ -18,16 +17,18 @@
18 17 <v-row>
19 18 <v-col v-for="(item, index) in list" :key="index" cols="4" lg="4" md="4" sm="6">
20 19 <v-hover v-slot="{ isHovering, props }" open-delay="200" :disabled="disabled">
21   - <v-card
22   - color="blue-darken-1"
23   - variant="outlined"
24   - :elevation="isHovering ? 16 : 2"
25   - :class="{ 'on-hover': isHovering }"
26   - class="pt-5 mx-auto"
27   - v-bind="props"
28   - @click="handleCardClick(item)"
29   - >
30   - <v-img :src="item.imageUrl" class="text-center ma-auto" :alt="item.name" />
  20 + <v-card color="blue-darken-1" variant="outlined" :elevation="isHovering ? 16 : 2"
  21 + :class="{ 'on-hover': isHovering }" class="pt-5 mx-auto " v-bind="props" @click="handleCardClick(item)">
  22 + <div class="relative w-full bg-gray-200 aspect-w-1 aspect-h-1 aspect-w ">
  23 + <v-img :src="item.imageUrl" class="tw-min-h-[100px] absolute inset-0 object-cover w-full h-full"
  24 + :alt="item.name">
  25 + <template v-slot:placeholder>
  26 + <div class="justify-center d-flex align-center fill-height">
  27 + <v-progress-circular color="grey-lighten-4" indeterminate></v-progress-circular>
  28 + </div>
  29 + </template>
  30 + </v-img>
  31 + </div>
31 32 <div class="text-center bg-blue-darken-1 tw-text-center tw-w-full tw-h-9 tw-leading-9">
32 33 {{ item.name }}
33 34 </div>
... ...
components/MobileHeader.vue
... ... @@ -36,10 +36,10 @@
36 36 <v-divider></v-divider>
37 37 <v-list-item to="/contact" title="Contact" value="contact" @click="handleTabClick"
38 38 color="blue-darken-1"></v-list-item>
39   - <v-divider></v-divider>
40   - <v-list-item title="Blog" value="blog" color="blue-darken-1">
41   - <a href="http://blog.canrud.com/" target="" title="Blog">Blog</a>
42   - </v-list-item>
  39 + <v-divider></v-divider>
  40 + <v-list-item title="Blog" value="blog" color="blue-darken-1">
  41 + <a href="http://blog.canrud.com/" target="" title="Blog">Blog</a>
  42 + </v-list-item>
43 43 </v-list>
44 44 </v-navigation-drawer>
45 45 </v-layout>
... ... @@ -111,6 +111,28 @@ const handleTabClick = () =&gt; {
111 111 watchEffect(() => {
112 112 input.value = productStore.keyword
113 113 })
  114 +
  115 +onMounted(() => {
  116 + // 获取url的参数
  117 + const url = window.location.href
  118 + const index = url.indexOf('?')
  119 + if (index !== -1) {
  120 + const params = url.slice(index + 1).split('&')
  121 + const obj: any = {}
  122 + params.forEach((item) => {
  123 + const arr = item.split('=')
  124 + obj[arr[0]] = arr[1]
  125 + })
  126 + // 获取dialog的状态
  127 + if (obj.flag) {
  128 + dialog.updateDialog(true)
  129 + }
  130 +
  131 + if (obj.keyword) {
  132 + productStore.updateKeyword(obj.keyword)
  133 + }
  134 + }
  135 +})
114 136 </script>
115 137  
116 138 <style lang="scss" scoped>
... ...
components/MobileProductDetail.vue
... ... @@ -43,7 +43,8 @@
43 43 </div>
44 44 </div>
45 45 </v-sheet>
46   - <v-btn size="large" color="blue-darken-1" @click="dialogStore.updateDialog(true)">
  46 + <v-btn size="large" color="blue-darken-1" @click="router.push('/contact')">
  47 +
47 48 Quotation Inquiry
48 49 </v-btn>
49 50 </div>
... ... @@ -115,6 +116,7 @@ const info = props.info
115 116 // })
116 117 const tab = ref(0)
117 118 const slide = ref(0)
  119 +const router = useRouter()
118 120 </script>
119 121  
120 122 <style lang="scss" scoped>
... ...
components/ProductDetail.vue
... ... @@ -43,7 +43,7 @@
43 43 <td class="td text-grey-darken-4 font-weight-medium">{{ item.typeName }}</td>
44 44 <!-- <td class="td">{{ item.price }}</td> -->
45 45 <td class="td">
46   - <v-btn size="small" color="blue-darken-1" @click="dialogStore.updateDialog(true)">
  46 + <v-btn size="small" color="blue-darken-1" @click="router.push('/contact')">
47 47 Quotation Inquiry
48 48 </v-btn>
49 49 </td>
... ... @@ -123,6 +123,7 @@ const info = props.info
123 123  
124 124 const tab = ref(0)
125 125 const slide = ref(0)
  126 +const router = useRouter()
126 127 </script>
127 128  
128 129 <style lang="scss" scoped>
... ...
deploy/prod.sh
... ... @@ -2,7 +2,7 @@
2 2  
3 3 # 变量定义
4 4 IMAGE_NAME="canrud-outside-front"
5   -TAG="1.0.3"
  5 +TAG="1.0.6"
6 6 TAR_FILE="${IMAGE_NAME}_${TAG}.tar"
7 7 REMOTE_HOST="root@112.74.45.244"
8 8 REMOTE_DIR="/root/web/canrud-outside-nuxt-front"
... ...
package.json
... ... @@ -19,6 +19,7 @@
19 19 },
20 20 "devDependencies": {
21 21 "@nuxtjs/i18n": "^8.3.1",
  22 + "@tailwindcss/aspect-ratio": "^0.4.2",
22 23 "autoprefixer": "^10.4.19",
23 24 "postcss": "^8.4.38",
24 25 "sass": "^1.77.1",
... ...
pages/contact.vue
... ... @@ -24,11 +24,15 @@
24 24 <span>contactcanrd</span>
25 25 </div>
26 26 <div class="tw-w-[300px]">
27   - <v-img src="/wechat.jpg"></v-img>
  27 + <v-img src="/wechat.jpg" alt="canrud-wechat"></v-img>
28 28 </div>
29 29 </v-card>
30 30 </template>
31 31  
32   -<script setup lang="ts"></script>
  32 +<script setup lang="ts">
  33 +useHead({
  34 + title: 'Contact',
  35 +
  36 +})</script>
33 37  
34 38 <style lang="less" scoped></style>
... ...
pages/customize.vue
... ... @@ -179,7 +179,7 @@ import ContentDescription from &#39;@/components/ContentDescription.vue&#39;
179 179 import { isMobile } from '~/utils'
180 180  
181 181 useHead({
182   - title: 'About Us',
  182 + title: 'Customize',
183 183 meta: [
184 184 {
185 185 name: 'title',
... ...
pages/equipment.vue
... ... @@ -203,7 +203,7 @@ let equipTimer: any = null
203 203 let pouchTimer: any = null
204 204  
205 205 useHead({
206   - title: 'About Us',
  206 + title: 'Equipment',
207 207 meta: [
208 208 {
209 209 name: 'title',
... ...
pages/index.vue
... ... @@ -56,8 +56,8 @@ import MainTitleListOdd from &#39;../components/MainTitleListOdd.vue&#39;
56 56 import { useCategoryStore } from '../stores/category'
57 57 import { computed } from 'vue'
58 58 import { isMobile } from '../utils'
59   -onMounted(()=>{
60   - console.log('%c [ onMounted ]-10', 'font-size:13px; background:pink; color:#bf2c9f;',111)
  59 +onMounted(() => {
  60 + console.log('%c [ onMounted ]-10', 'font-size:13px; background:pink; color:#bf2c9f;', 111)
61 61 })
62 62 useHead({
63 63 title: 'canrud',
... ... @@ -65,15 +65,18 @@ useHead({
65 65 {
66 66 name: 'title',
67 67 content: "科路得,助您科研之路势在必得。Canrd aims to be the world's leading one-stop service provider in new energy research. With a dedication to excellence, we offer Material Reagents, Lab Devices, Customized Batteries, Testing, and Advanced Packaging for energy materials and storage systems. We master advanced technologies to provide high-quality solutions. Our team's quick responses ensure tailored and professional services to meet your unique needs. Contact us at contact@canrd.com or call +86 19867737979 to explore our innovative offerings. Together, let's shape a greener, brighter world!"
68   - },{
  68 + }, {
69 69 name: 'keywords',
70 70 content:
71   - '科路得,canrd,canrud,Energy Storage Research,Lithium Batteries Research,Material Reagents,Lab Device,Customized Battery,Testing,Pack',
72   - },{
73   - name:"description",
  71 + '科路得,canrd,canrud,Energy Storage Research,Lithium Batteries Research,Material Reagents,Lab Device,Customized Battery,Testing,Pack',
  72 + }, {
  73 + name: "description",
74 74 content:
75   - "科路得,助您科研之路势在必得。Canrd aims to be the world's leading one-stop service provider in new energy research. With a dedication to excellence, we offer Material Reagents, Lab Devices, Customized Batteries, Testing, and Advanced Packaging for energy materials and storage systems. We master advanced technologies to provide high-quality solutions. Our team's quick responses ensure tailored and professional services to meet your unique needs. Contact us at contact@canrd.com or call +86 19867737979 to explore our innovative offerings. Together, let's shape a greener, brighter world!"
76   - }]
  75 + "科路得,助您科研之路势在必得。Canrd aims to be the world's leading one-stop service provider in new energy research. With a dedication to excellence, we offer Material Reagents, Lab Devices, Customized Batteries, Testing, and Advanced Packaging for energy materials and storage systems. We master advanced technologies to provide high-quality solutions. Our team's quick responses ensure tailored and professional services to meet your unique needs. Contact us at contact@canrd.com or call +86 19867737979 to explore our innovative offerings. Together, let's shape a greener, brighter world!"
  76 + }],
  77 + link: [
  78 + { rel: 'preload', href: '/banner/banner1.jpg', as: 'image' }
  79 + ]
77 80 })
78 81  
79 82 // useAsyncData(async ({ app }) => {
... ... @@ -101,7 +104,7 @@ const banners = [
101 104 '/banner/banner1.jpg',
102 105 '/banner/banner2.jpg',
103 106 '/banner/banner3.jpg',
104   - '/banner/banner4.png'
  107 + '/banner/banner5.jpg'
105 108 ]
106 109  
107 110 const mobileBanners = [
... ...
pages/pack.vue
... ... @@ -74,7 +74,7 @@ import { ref, onMounted, onUnmounted } from &#39;vue&#39;
74 74 import { isMobile } from '~/utils'
75 75  
76 76 useHead({
77   - title: 'canrud',
  77 + title: 'Pack',
78 78 meta: [{
79 79 name: 'title',
80 80 content:
... ...
pages/products/detail/[id]/index.vue
... ... @@ -28,6 +28,25 @@ let { data: resData } = await useAsyncData(&#39;detail&#39;, () =&gt; $fetch(&#39;/shop/product
28 28 server: true // 仅在服务器端获取数据
29 29 })
30 30  
  31 +useHead({
  32 + title: info.name || 'canrud',
  33 + meta: [
  34 + {
  35 + name: 'title',
  36 + content:
  37 + '科路得,Equipment,High-precision,Machining center,Design,Manufacturing capabilities,Equipment supply,Production line planning,Construction services,Battery assembly lines,Pouch cell testing lines',
  38 + }, {
  39 + name: 'keywords',
  40 + content:
  41 + '科路得,Equipment,High-precision,Machining center,Design,Manufacturing capabilities,Equipment supply,Production line planning,Construction services,Battery assembly lines,Pouch cell testing lines',
  42 + }, {
  43 + name: 'description',
  44 + content:
  45 + '科路得,助您科研之路势在必得。Equipment Business: With our self-built high-precision machining center, we possess robust design and manufacturing capabilities. We offer comprehensive equipment supply, production line planning, and construction services, including battery assembly lines, pouch cell testing lines, and more. Our aim is to provide complete equipment solutions that cater to the diverse needs of our clients. Expect top-quality equipment and professional services that will help you stand out in a fiercely competitive market!'
  46 + },
  47 + ],
  48 +})
  49 +
31 50 const newData: Product = resData.value.data
32 51  
33 52 newData.productimageliststore = typeof newData.productimageliststore === 'string' ?
... ...
pages/products/index.vue
... ... @@ -23,9 +23,11 @@
23 23 </div>
24 24 </v-expand-transition> -->
25 25 </v-img>
26   - <v-card-text class="tw-text-left font-weight-medium title">{{
27   - item.name
28   - }}</v-card-text>
  26 + <v-card-text class="tw-text-left font-weight-medium title">
  27 + <h4>{{
  28 + item.name
  29 + }}</h4>
  30 + </v-card-text>
29 31 </v-card>
30 32 </v-hover>
31 33 </v-col>
... ...
pages/test.vue
... ... @@ -104,7 +104,7 @@ import { onMounted, onUnmounted, ref } from &#39;vue&#39;
104 104 import { isMobile } from '~/utils'
105 105  
106 106 useHead({
107   - title: 'canrud',
  107 + title: 'Test',
108 108 meta: [{
109 109 name: 'title',
110 110 content:
... ...
pnpm-lock.yaml
... ... @@ -28,6 +28,9 @@ devDependencies:
28 28 '@nuxtjs/i18n':
29 29 specifier: ^8.3.1
30 30 version: 8.3.1(rollup@4.17.2)(vue@3.4.27)
  31 + '@tailwindcss/aspect-ratio':
  32 + specifier: ^0.4.2
  33 + version: 0.4.2(tailwindcss@3.4.3)
31 34 autoprefixer:
32 35 specifier: ^10.4.19
33 36 version: 10.4.19(postcss@8.4.38)
... ... @@ -1901,6 +1904,14 @@ packages:
1901 1904 resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
1902 1905 engines: {node: '>=18'}
1903 1906  
  1907 + /@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.3):
  1908 + resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==}
  1909 + peerDependencies:
  1910 + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
  1911 + dependencies:
  1912 + tailwindcss: 3.4.3
  1913 + dev: true
  1914 +
1904 1915 /@trysound/sax@0.2.0:
1905 1916 resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
1906 1917 engines: {node: '>=10.13.0'}
... ...
public/banner/banner4.png deleted 100644 → 0

3.05 MB

public/banner/banner5.jpg 0 → 100644

335 KB

tailwind.config.js
... ... @@ -21,5 +21,7 @@ export default {
21 21 }
22 22 },
23 23 },
24   - plugins: [],
  24 + plugins: [
  25 + require('@tailwindcss/aspect-ratio'),
  26 + ],
25 27 }
26 28 \ No newline at end of file
... ...