@dcrackel/meyersquaredui 1.0.61 → 1.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/meyersquaredui.es.js +828 -722
- package/dist/meyersquaredui.umd.js +3 -3
- package/package.json +1 -1
- package/src/mocks/getClubById.js +1 -0
- package/src/stories/Molecules/DropDowns/BasicDropDown.vue +38 -5
- package/src/stories/Organisms/Footer/Footer.vue +1 -1
- package/src/stories/Organisms/GridLayout/GridLayout.vue +2 -2
- package/src/stories/Organisms/Headers/ClubHeader/ClubHeader.vue +27 -23
- package/src/stories/Organisms/HeroBanners/HomePage/HeroBanner.vue +5 -5
- package/src/stories/Organisms/HeroBanners/TournamentDetails/TournamentDetailsBanner.vue +11 -2
- package/src/stories/Organisms/HeroBanners/Tournaments/TournamentBanner.vue +10 -4
- package/src/stories/Organisms/SectionBanners/DoubleButtonBanner/DoubleButtonBanner.vue +2 -2
- package/src/stories/Organisms/SectionBanners/SingleButtonBanner/SingleButtonBanner.vue +32 -3
- package/src/stories/Templates/ClubDetailPage/ClubDetailPage.vue +14 -8
- package/src/stories/Templates/ClubListPage/ClubListPage.stories.js +3 -2
- package/src/stories/Templates/ClubListPage/ClubListPage.vue +5 -1
- package/src/stories/Templates/Leaderboard/Leaderboard.vue +1 -1
package/package.json
CHANGED
package/src/mocks/getClubById.js
CHANGED
|
@@ -5,6 +5,7 @@ const mockGetClubById =
|
|
|
5
5
|
"Name": "Acme Fencing Club",
|
|
6
6
|
"ShortName": "ACME",
|
|
7
7
|
"Description": "<b>ACME Fencing Club</b> is the premier destination for historical European martial arts (HEMA), offering specialized classes in longsword, rapier, and saber. With a focus on both traditional techniques and modern applications, ACME provides top-tier instruction from some of the best HEMA instructors in the field.\n<br><br>\nClasses are available three nights a week, tailored to specific weapon disciplines:\n<br>\n<b>Monday</b>: Saber<br>\n<b>Wednesday</b>: Longsword<br>\n<b>Thursday</b>: Rapier<br><br>\nIn addition to formal classes, ACME hosts open sparring every Saturday, giving students a chance to apply their skills in a friendly, competitive environment. Whether you're new to HEMA or an experienced fencer, ACME Fencing Club offers a welcoming community and expert instruction to help you refine your craft.",
|
|
8
|
+
"TagLine": "The premier destination for HEMA",
|
|
8
9
|
"AddressId": 1,
|
|
9
10
|
"Color1": "navy",
|
|
10
11
|
"Color2": "rose",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="relative
|
|
2
|
+
<div :class="`relative ${width}`" ref="dropdownContainer">
|
|
3
3
|
<div @click="toggleDropdown" class="flex items-center cursor-pointer">
|
|
4
4
|
<BaseText
|
|
5
5
|
class="border-b-2 border-transparent hover:border-accent pb-1 duration-300 ease-in-out"
|
|
@@ -13,20 +13,40 @@
|
|
|
13
13
|
<Icon icon="fa-chevron-down" size="sm" color="primary" class="ml-4" />
|
|
14
14
|
</div>
|
|
15
15
|
|
|
16
|
-
<!-- Dropdown Menu -->
|
|
17
|
-
<div v-if="dropdownOpen" class="absolute top-full mt-1 w-
|
|
16
|
+
<!-- Dropdown Menu for PC -->
|
|
17
|
+
<div v-if="dropdownOpen" class="absolute top-full mt-1 w-full bg-secondary border rounded-lg border-lineGrey shadow-xl z-50 hidden md:block">
|
|
18
18
|
<ul>
|
|
19
|
-
<li
|
|
19
|
+
<li
|
|
20
|
+
v-for="item in items"
|
|
20
21
|
:key="item"
|
|
21
22
|
@click="selectWeapon(item)"
|
|
22
|
-
class="px-4 py-2 cursor-pointer hover:bg-hoverColor"
|
|
23
|
+
class="px-4 py-2 cursor-pointer hover:bg-hoverColor"
|
|
24
|
+
>
|
|
23
25
|
<BaseText color="primary" size="xs sm" tag="p" weight="bold">{{ item }}</BaseText>
|
|
24
26
|
</li>
|
|
25
27
|
</ul>
|
|
26
28
|
</div>
|
|
29
|
+
|
|
30
|
+
<!-- Modal Dropdown for Mobile -->
|
|
31
|
+
<div v-if="dropdownOpen" class="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50 md:hidden">
|
|
32
|
+
<!-- Dropdown content -->
|
|
33
|
+
<div class="bg-secondary border rounded-lg border-lineGrey shadow-xl z-50 w-3/4 max-w-lg p-6">
|
|
34
|
+
<ul>
|
|
35
|
+
<li
|
|
36
|
+
v-for="item in items"
|
|
37
|
+
:key="item"
|
|
38
|
+
@click="selectWeapon(item)"
|
|
39
|
+
class="px-4 py-2 cursor-pointer hover:bg-hoverColor"
|
|
40
|
+
>
|
|
41
|
+
<BaseText color="primary" size="xs sm" tag="p" weight="bold">{{ item }}</BaseText>
|
|
42
|
+
</li>
|
|
43
|
+
</ul>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
27
46
|
</div>
|
|
28
47
|
</template>
|
|
29
48
|
|
|
49
|
+
|
|
30
50
|
<script>
|
|
31
51
|
import BaseText from '../../Atoms/BaseText/BaseText.vue';
|
|
32
52
|
import Icon from '../../Atoms/Icon/Icon.vue';
|
|
@@ -46,6 +66,10 @@ export default {
|
|
|
46
66
|
type: String,
|
|
47
67
|
default: ''
|
|
48
68
|
},
|
|
69
|
+
width: {
|
|
70
|
+
type: String,
|
|
71
|
+
default: 'w-48'
|
|
72
|
+
},
|
|
49
73
|
boldText: {
|
|
50
74
|
type: Boolean,
|
|
51
75
|
default: false
|
|
@@ -66,15 +90,24 @@ export default {
|
|
|
66
90
|
methods: {
|
|
67
91
|
toggleDropdown() {
|
|
68
92
|
this.dropdownOpen = !this.dropdownOpen;
|
|
93
|
+
|
|
94
|
+
// Check if we are on mobile (below md) and disable scroll only for mobile modal
|
|
95
|
+
if (window.innerWidth < 768 && this.dropdownOpen) {
|
|
96
|
+
document.body.style.overflow = 'hidden'; // Disable body scroll on mobile
|
|
97
|
+
} else {
|
|
98
|
+
document.body.style.overflow = ''; // Re-enable body scroll for larger screens
|
|
99
|
+
}
|
|
69
100
|
},
|
|
70
101
|
selectWeapon(weapon) {
|
|
71
102
|
this.$emit('item-select', weapon);
|
|
72
103
|
this.selectedItem = weapon;
|
|
73
104
|
this.dropdownOpen = false;
|
|
105
|
+
document.body.style.overflow = ''; // Re-enable body scroll when modal is closed
|
|
74
106
|
},
|
|
75
107
|
handleClickOutside(event) {
|
|
76
108
|
if (this.dropdownOpen && !this.$refs.dropdownContainer.contains(event.target)) {
|
|
77
109
|
this.dropdownOpen = false;
|
|
110
|
+
document.body.style.overflow = ''; // Re-enable body scroll when clicking outside
|
|
78
111
|
}
|
|
79
112
|
}
|
|
80
113
|
}
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
|
|
116
116
|
<div class="w-full flex flex-col items-center ">
|
|
117
117
|
<!-- Subscribe Section -->
|
|
118
|
-
<div class="w-full max-w-xs flex flex-col items-center pt-8">
|
|
118
|
+
<div class="w-full max-w-xs flex flex-col items-center pt-8 px-6">
|
|
119
119
|
<BaseText color="secondary" size="md" tag="p" weight="thin" class="pb-4 w-full">Subscribe for Updates</BaseText>
|
|
120
120
|
<InputField placeholder="Email" type="email" class="w-full" />
|
|
121
121
|
</div>
|
|
@@ -78,12 +78,12 @@ export default {
|
|
|
78
78
|
emits: ['grid-click', 'grid-card-click'],
|
|
79
79
|
computed: {
|
|
80
80
|
topClasses() {
|
|
81
|
-
let retClass = "max-w-[1200px] mx-auto overflow-x-auto";
|
|
81
|
+
let retClass = "max-w-[1200px] mx-auto overflow-x-auto mt-8";
|
|
82
82
|
if (this.whiteStyle) retClass = `w-full md:mr-10 md:mt-10`;
|
|
83
83
|
return retClass;
|
|
84
84
|
},
|
|
85
85
|
headerClasses() {
|
|
86
|
-
let retClasses = "w-full flex py-4 md:pb-10 ml-2 md:ml-0";
|
|
86
|
+
let retClasses = "w-full flex py-4 md:pb-10 ml-2 md:ml-0 mb-4";
|
|
87
87
|
if (!this.whiteStyle) retClasses = `${retClasses} justify-center`;
|
|
88
88
|
return retClasses;
|
|
89
89
|
},
|
|
@@ -1,38 +1,42 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="flex items-center justify-
|
|
3
|
-
<!--
|
|
4
|
-
<div class="
|
|
5
|
-
<BaseText class="mr-2" color="primary" size="xs md" tag="p" weight="bold">
|
|
6
|
-
Search:
|
|
7
|
-
</BaseText>
|
|
8
|
-
<InputField type="text" placeholder="By Name" color="secondary" v-model="searchQuery" class="px-2 py-1 focus:outline-none" />
|
|
9
|
-
</div>
|
|
2
|
+
<div class="flex w-full items-center justify-between bg-white py-6 overflow-x-auto md:overflow-visible">
|
|
3
|
+
<!-- Spacer (Left) - Visible only on larger screens -->
|
|
4
|
+
<div class="hidden md:block w-[150px] flex-shrink-0"></div>
|
|
10
5
|
|
|
11
|
-
<!--
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
<!-- Center Section -->
|
|
7
|
+
<section class="flex w-full md:max-w-none md:flex-grow overflow-x-auto md:overflow-visible md:justify-around md:items-center">
|
|
8
|
+
<!-- Search Bar -->
|
|
9
|
+
<div class="flex items-center pb-1.5 mr-8 flex-shrink-0 md:flex-grow">
|
|
10
|
+
<BaseText class="w-20 mr-2" color="primary" size="xs md" tag="p" weight="bold">Search:</BaseText>
|
|
11
|
+
<InputField type="text" placeholder="By Name" color="secondary" v-model="searchQuery" class="px-2 py-1 focus:outline-none placeholder:text-sm lg:placeholder:text-sm w-full" />
|
|
12
|
+
</div>
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
</
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
<!-- Distance Dropdown -->
|
|
15
|
+
<div class="flex justify-center items-center flex-shrink-0 md:flex-grow">
|
|
16
|
+
<BaseText class="mr-2 pb-1.5" color="primary" size="xs md" tag="p" weight="bold">Within:</BaseText>
|
|
17
|
+
<Dropdown :items="distances" :defaultSelectedItem="selectedDistance" @distance-select="selectDistance" />
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<!-- Weapon Dropdown -->
|
|
21
|
+
<div class="flex justify-end flex-shrink-0 md:flex-grow pt-2">
|
|
22
|
+
<BaseText class="mr-2 pb-1.5" color="primary" size="xs md" tag="p" weight="bold">By Weapon:</BaseText>
|
|
23
|
+
<Dropdown :items="weapons" width="w-32" :defaultSelectedItem="selectedWeapon" @weapon-select="selectWeapon" />
|
|
24
|
+
</div>
|
|
25
|
+
</section>
|
|
26
|
+
|
|
27
|
+
<!-- Spacer (Right) - Visible only on larger screens -->
|
|
28
|
+
<div class="hidden md:block w-[150px]"></div>
|
|
26
29
|
</div>
|
|
27
30
|
</template>
|
|
28
|
-
|
|
29
31
|
<script>
|
|
30
32
|
import BaseText from '../../../Atoms/BaseText/BaseText.vue';
|
|
31
33
|
import Dropdown from '../../../Molecules/DropDowns/BasicDropDown.vue';
|
|
32
34
|
import InputField from "../../../Atoms/InputField/InputField.vue";
|
|
35
|
+
import Icon from "../../../Atoms/Icon/Icon.vue";
|
|
33
36
|
export default {
|
|
34
37
|
name: 'ClubHeader',
|
|
35
38
|
components: {
|
|
39
|
+
Icon,
|
|
36
40
|
InputField,
|
|
37
41
|
BaseText,
|
|
38
42
|
Dropdown
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<section class="relative w-full h-3/4 flex justify-center bg-primary m-0" :style="backgroundStyle">
|
|
2
|
+
<section class="relative w-full h-3/4 flex justify-center bg-primary md:m-0 mt-6 " :style="backgroundStyle">
|
|
3
3
|
<!-- Spacer (Left) -->
|
|
4
4
|
<div class="hidden md:block w-[150px] bg-primary border-b border-lineGrey flex-shrink-0"></div>
|
|
5
5
|
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
</section>
|
|
24
24
|
|
|
25
25
|
<!-- Mobile Overlay -->
|
|
26
|
-
<div v-if="isMobile" class="flex justify-center text-left w-full px-6 py-
|
|
26
|
+
<div v-if="isMobile" class="flex justify-center text-left w-full px-6 py-4">
|
|
27
27
|
<div class="w-full">
|
|
28
|
-
<BaseText color="secondary" tag="h1" size="
|
|
29
|
-
<BaseText color="secondary" tag="p" size="xs" weight="normal" class="mb-
|
|
28
|
+
<BaseText color="secondary" tag="h1" size="md" weight="bold" class="mb-2 w-40 mt-16">{{ title }}</BaseText>
|
|
29
|
+
<BaseText color="secondary" tag="p" size="xs" weight="normal" class="mb-2 w-48">{{ description }}</BaseText>
|
|
30
30
|
<BaseButton
|
|
31
31
|
:label="buttonLabel"
|
|
32
32
|
size="xs"
|
|
33
33
|
color="secondary"
|
|
34
34
|
border="gradient1"
|
|
35
|
-
class="w-
|
|
35
|
+
class="w-32 m-auto"
|
|
36
36
|
@click="onClick"
|
|
37
37
|
/>
|
|
38
38
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<section class="relative w-full
|
|
2
|
+
<section class="hidden md:flex relative w-full justify-center bg-primary m-0 bg-top" :style="backgroundStyle">
|
|
3
3
|
<!-- Left Spacer -->
|
|
4
4
|
<div class="hidden md:block w-[150px] bg-primary border-b border-lineGrey flex-shrink-0"></div>
|
|
5
5
|
|
|
@@ -45,6 +45,16 @@
|
|
|
45
45
|
<!-- Right Spacer -->
|
|
46
46
|
<div class="hidden md:block w-[150px] bg-primary border-b border-lineGrey flex-shrink-0"></div>
|
|
47
47
|
</section>
|
|
48
|
+
<section class="md:hidden w-full flex justify-center mt-10">
|
|
49
|
+
<div class="w-full md:w-2/3 flex-col justify-center pl-2">
|
|
50
|
+
<BaseText color="primary" tag="h1" size="md" weight="bold" class="">{{ formattedDate }}</BaseText>
|
|
51
|
+
<BaseText color="primary" tag="h1" size="2xl" weight="bold" class="mb-1">{{ title }}</BaseText>
|
|
52
|
+
<div class="flex">
|
|
53
|
+
<BaseText color="primary" tag="p" size="xs" weight="normal" class="mr-2">Hosted by:</BaseText>
|
|
54
|
+
<BaseText color="primary" tag="p" size="xs" weight="bold">{{ hostingClubName }}</BaseText>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</section>
|
|
48
58
|
</template>
|
|
49
59
|
|
|
50
60
|
<script>
|
|
@@ -99,7 +109,6 @@ export default {
|
|
|
99
109
|
},
|
|
100
110
|
computed: {
|
|
101
111
|
formattedDate() {
|
|
102
|
-
// Format the date using plain JavaScript
|
|
103
112
|
const date = new Date(this.tournamentStartDate);
|
|
104
113
|
const options = {weekday: 'long', year: 'numeric', month: 'short', day: 'numeric'};
|
|
105
114
|
return date.toLocaleDateString('en-US', options);
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
<section class="hidden md:flex absolute inset-0 items-center justify-start px-8 pt-32">
|
|
9
9
|
<div class="text-left text-white max-w-lg">
|
|
10
10
|
<BaseText color="secondary" tag="h1" size="4xl" weight="bold" class="mb-4">{{ title }}</BaseText>
|
|
11
|
-
<BaseText color="secondary" tag="p" size="xl" weight="normal" class="mb-
|
|
11
|
+
<BaseText color="secondary" tag="p" size="xl" weight="normal" class="mb-8" v-html="description"></BaseText>
|
|
12
12
|
</div>
|
|
13
13
|
</section>
|
|
14
14
|
<div v-if="isMobile" class="flex justify-center text-left w-full px-4 mt-32">
|
|
15
15
|
<div class="w-full mb-4">
|
|
16
|
-
<BaseText color="secondary" tag="h1" size="
|
|
17
|
-
<BaseText color="secondary" tag="p" size="xs" weight="normal" class="w-
|
|
16
|
+
<BaseText color="secondary" tag="h1" size="xl" weight="bold" class="mb-0 w-1/2">{{ title }}</BaseText>
|
|
17
|
+
<BaseText color="secondary" tag="p" size="xs" weight="normal" class="w-6/12 mt-1 mb-1">{{ description }}</BaseText>
|
|
18
18
|
</div>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
@@ -36,6 +36,11 @@ export default {
|
|
|
36
36
|
type: String,
|
|
37
37
|
required: true
|
|
38
38
|
},
|
|
39
|
+
mobileImageSrc: {
|
|
40
|
+
type: String,
|
|
41
|
+
required: false,
|
|
42
|
+
default: 'https://meyersquared.com/images/banners/leaderboardm.png'
|
|
43
|
+
},
|
|
39
44
|
title: {
|
|
40
45
|
type: String,
|
|
41
46
|
required: true,
|
|
@@ -54,8 +59,9 @@ export default {
|
|
|
54
59
|
},
|
|
55
60
|
computed: {
|
|
56
61
|
backgroundStyle() {
|
|
62
|
+
const background = this.isMobile ? `url(${this.mobileImageSrc})` : `url(${this.imageSrc})`;
|
|
57
63
|
return {
|
|
58
|
-
backgroundImage:
|
|
64
|
+
backgroundImage: background,
|
|
59
65
|
backgroundSize: 'cover',
|
|
60
66
|
backgroundPosition: 'top',
|
|
61
67
|
backgroundRepeat: 'no-repeat',
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<div class="relative w-full border-b border-l border-r border-lineGrey">
|
|
14
14
|
<section class="hidden md:flex h-80 justify-between items-center p-14">
|
|
15
15
|
<div class="text-left text-white max-w-lg w-96">
|
|
16
|
-
<BaseText color="secondary" tag="h1" size="5xl" weight="
|
|
16
|
+
<BaseText color="secondary" tag="h1" size="5xl" weight="normal" class="mb-4">{{ title }}</BaseText>
|
|
17
17
|
</div>
|
|
18
18
|
<div class="flex flex-col w-1/3 align-right">
|
|
19
19
|
<BaseButton
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
<!-- Mobile Overlay -->
|
|
63
63
|
<section class="flex justify-center md:hidden text-left bg-primary w-full">
|
|
64
64
|
<div class="w-full px-6 py-8 text-center flex flex-col justify-center items-center">
|
|
65
|
-
<BaseText color="secondary" tag="h1" size="2xl" weight="
|
|
65
|
+
<BaseText color="secondary" tag="h1" size="2xl" weight="normal" class="mb-2">{{ title }}</BaseText>
|
|
66
66
|
<BaseText color="secondary" tag="p" size="sm" weight="normal" class="mb-6">{{ description }}</BaseText>
|
|
67
67
|
<BaseButton
|
|
68
68
|
:label="buttonLabelOne"
|
|
@@ -1,7 +1,36 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<section
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<section
|
|
3
|
+
class="relative h-80 max-w-[1200px] mx-auto rounded-lg overflow-hidden mb-10 bg-primary"
|
|
4
|
+
>
|
|
5
|
+
<!-- Background Image for Non-Mobile -->
|
|
6
|
+
<div
|
|
7
|
+
class="hidden md:block bg-cover bg-top h-full w-full"
|
|
8
|
+
:style="{ backgroundImage: 'url(' + imageUrl + ')' }"
|
|
9
|
+
></div>
|
|
10
|
+
|
|
11
|
+
<!-- Solid Black Background for Mobile -->
|
|
12
|
+
<div
|
|
13
|
+
class="block md:hidden bg-black h-full w-full"
|
|
14
|
+
></div>
|
|
15
|
+
|
|
16
|
+
<!-- Content -->
|
|
17
|
+
<div class="absolute inset-0 flex flex-col justify-center items-center md:items-start text-center md:text-left px-6 md:px-20">
|
|
18
|
+
<BaseText
|
|
19
|
+
color="secondary"
|
|
20
|
+
tag="h3"
|
|
21
|
+
size="5xl"
|
|
22
|
+
weight="normal"
|
|
23
|
+
class="hidden md:block mb-8"
|
|
24
|
+
v-html="description"
|
|
25
|
+
/>
|
|
26
|
+
<BaseText
|
|
27
|
+
color="secondary"
|
|
28
|
+
tag="h3"
|
|
29
|
+
size="3xl"
|
|
30
|
+
weight="normal"
|
|
31
|
+
class="md:hidden mb-8"
|
|
32
|
+
v-html="description"
|
|
33
|
+
/>
|
|
5
34
|
<BaseButton
|
|
6
35
|
:label="buttonLabel"
|
|
7
36
|
size="xs"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="m-0 w-full bg-secondary">
|
|
3
3
|
<Header />
|
|
4
|
-
<TournamentBanner :title="
|
|
4
|
+
<TournamentBanner :title="ClubTitle" :description="ClubTagLine" :imageSrc="ClubHeaderImage" :mobileImageSrc="ClubHeaderImage" />
|
|
5
5
|
|
|
6
|
-
<div class="
|
|
7
|
-
<div class="flex flex-col md:flex-row
|
|
6
|
+
<div class="flex justify-center pl-4 md:pl-0">
|
|
7
|
+
<div class="flex flex-col md:flex-row justify-center md:w-3/4 mt-16 mb-20">
|
|
8
8
|
|
|
9
|
-
<section class="w-full md:w-2/3 pr-8">
|
|
9
|
+
<section class="w-full md:w-2/3 pr-4 md:pr-8">
|
|
10
10
|
<div class="mb-16">
|
|
11
11
|
<BaseText size="xl" color="primary" weight="bold" class="mb-10">{{ club.Name }}</BaseText>
|
|
12
12
|
<BaseText size="md" color="primary" weight="normal" v-html="club.Description"></BaseText>
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
<div class="w-full mb-16">
|
|
16
16
|
<BaseText size="xl" color="primary" weight="bold" class="mb-10">Location</BaseText>
|
|
17
|
-
adsfs{{club.Address.Coordinates}}
|
|
18
17
|
<Mapbox
|
|
19
18
|
:apiKey="apiKey"
|
|
20
19
|
:coordinates="{ lat: 50.7128, lng: -94.006 }"
|
|
@@ -48,8 +47,7 @@
|
|
|
48
47
|
/>
|
|
49
48
|
</div>
|
|
50
49
|
</section>
|
|
51
|
-
|
|
52
|
-
<section class="w-full md:w-1/3 mt-8 md:mt-0 flex flex-col justify-start">
|
|
50
|
+
<section class="w-full pr-4 md:w-1/3 md:mt-8 flex flex-col justify-start">
|
|
53
51
|
<SocialMediaLinkCard :socialMedia="club.SocialMedia"/>
|
|
54
52
|
</section>
|
|
55
53
|
</div>
|
|
@@ -115,8 +113,16 @@ export default {
|
|
|
115
113
|
},
|
|
116
114
|
ClubListCard() {
|
|
117
115
|
return ClubListCard
|
|
116
|
+
},
|
|
117
|
+
ClubHeaderImage() {
|
|
118
|
+
return this.club.Images && this.club.Images[0] ? this.club.Images[0].URL : this.imageSrc
|
|
119
|
+
},
|
|
120
|
+
ClubTitle() {
|
|
121
|
+
return this.club.Name ? this.club.Name : this.title
|
|
122
|
+
},
|
|
123
|
+
ClubTagLine() {
|
|
124
|
+
return this.club.TagLine ? this.club.TagLine : this.description
|
|
118
125
|
}
|
|
119
|
-
|
|
120
126
|
},
|
|
121
127
|
data() {
|
|
122
128
|
return {
|
|
@@ -24,8 +24,9 @@ const Template = (args) => ({
|
|
|
24
24
|
export const Default = Template.bind({});
|
|
25
25
|
Default.args = {
|
|
26
26
|
title: 'Local Clubs',
|
|
27
|
-
description: 'Explore clubs near you
|
|
28
|
-
imageSrc: 'https://meyersquared.com/images/banners/
|
|
27
|
+
description: 'Explore clubs near you and join the community!',
|
|
28
|
+
imageSrc: 'https://meyersquared.com/images/banners/clubmembers.png',
|
|
29
|
+
mobileImageSrc: 'https://meyersquared.com/images/banners/clubmembersm.png',
|
|
29
30
|
clubs: mockAllClubs,
|
|
30
31
|
clubsIsLoading: false,
|
|
31
32
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="m-0 w-full bg-secondary">
|
|
3
3
|
<Header />
|
|
4
|
-
<TournamentBanner :title="title" :description="description" :imageSrc="imageSrc" />
|
|
4
|
+
<TournamentBanner :title="title" :description="description" :imageSrc="imageSrc" :mobileImageSrc="mobileImageSrc" />
|
|
5
5
|
<ClubHeader />
|
|
6
6
|
|
|
7
7
|
<div class="w-full flex justify-center">
|
|
@@ -61,6 +61,10 @@ export default {
|
|
|
61
61
|
type: String,
|
|
62
62
|
default: 'https://meyersquared.com/images/Banner2.png'
|
|
63
63
|
},
|
|
64
|
+
mobileImageSrc: {
|
|
65
|
+
type: String,
|
|
66
|
+
default: 'https://meyersquared.com/images/Banner2.png'
|
|
67
|
+
},
|
|
64
68
|
clubs: {
|
|
65
69
|
type: Array,
|
|
66
70
|
default: () => []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="m-0 w-full bg-secondary">
|
|
3
3
|
<Header @search="onSearch"/>
|
|
4
|
-
<TournamentBanner :title="title" :description="description" :imageSrc="imageSrc" />
|
|
4
|
+
<TournamentBanner :title="title" :description="description" :imageSrc="imageSrc" isMo />
|
|
5
5
|
<LeaderboardHeader :weapons="['Longsword', 'Rapier', 'Saber', 'Sword & Buckler', 'Dagger']" @weaponSelected="changeLeaderBoarder"/>
|
|
6
6
|
|
|
7
7
|
<div class="w-full flex justify-center">
|