medusa-ui-home 2.6.0 → 3.0.2
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/package.json +18 -6
- package/src/home/catalog/components/hero-banner.tsx +201 -0
- package/src/home/catalog/components/loved-by-moms/index.tsx +591 -0
- package/src/home/catalog/components/new-arrivals/index.tsx +109 -0
- package/src/home/catalog/components/shop-by-age/index.tsx +208 -0
- package/src/home/catalog/components/shop-by-category/index.tsx +427 -0
- package/src/home/catalog/components/testimonials/index.tsx +359 -0
- package/src/home/catalog/components/trust-strip/index.tsx +55 -0
- package/src/home/catalog/components/why-choose-us/dynamic-features.tsx +5 -0
- package/src/home/catalog/components/why-choose-us/index.tsx +8 -0
- package/src/home/catalog/page.tsx +151 -0
- package/src/home/components/dynamic-banner/index.tsx +19 -38
- package/src/home/components/home-page-json-ld.tsx +20 -0
- package/src/home/sections/aboutBrand/index.ts +1 -1
- package/src/home/sections/baptism/index.ts +1 -1
- package/src/home/sections/baptism/section.tsx +1 -1
- package/src/home/sections/baptismPicks/index.ts +1 -1
- package/src/home/sections/blogPosts/index.ts +1 -1
- package/src/home/sections/brandMarquee/index.ts +1 -1
- package/src/home/sections/brandPillars/index.ts +1 -1
- package/src/home/sections/categoryPills/index.ts +1 -1
- package/src/home/sections/celebrityTrust/index.ts +1 -1
- package/src/home/sections/celebrityTrust/section.tsx +1 -1
- package/src/home/sections/features/index.ts +1 -1
- package/src/home/sections/hero/index.ts +1 -1
- package/src/home/sections/instagramPosts/index.ts +1 -1
- package/src/home/sections/instagramPosts/section.tsx +1 -1
- package/src/home/sections/lovedByMoms/index.ts +1 -1
- package/src/home/sections/lovedByMoms/section.tsx +1 -1
- package/src/home/sections/luxeFavourites/index.ts +1 -1
- package/src/home/sections/luxeFavourites/section.tsx +1 -1
- package/src/home/sections/newArrivals/index.ts +1 -1
- package/src/home/sections/newArrivals/section.tsx +1 -1
- package/src/home/sections/newArrivalsClassic/index.ts +1 -1
- package/src/home/sections/newArrivalsClassic/section.tsx +1 -1
- package/src/home/sections/promoAnnouncements/component/index.tsx +40 -10
- package/src/home/sections/promoAnnouncements/index.ts +1 -1
- package/src/home/sections/promoAnnouncements/section.tsx +18 -2
- package/src/home/sections/promoCountdown/index.ts +1 -1
- package/src/home/sections/promoCountdown/section.tsx +1 -1
- package/src/home/sections/shopByAge/index.ts +1 -1
- package/src/home/sections/shopByCategory/index.ts +1 -1
- package/src/home/sections/testimonials/component/index.tsx +36 -12
- package/src/home/sections/testimonials/index.ts +1 -1
- package/src/home/sections/themeDresses/index.ts +1 -1
- package/src/home/sections/themeDresses/section.tsx +1 -0
- package/src/home/sections/videoStories/index.ts +1 -1
- package/src/home/sections/whyChooseUs/index.ts +1 -1
- package/src/home/sections/whyChooseUs/section.tsx +1 -1
- package/src/home/sections/aboutBrand/data.json +0 -20
- package/src/home/sections/aboutBrand/dynamic-config.ts +0 -43
- package/src/home/sections/baptism/data.json +0 -3
- package/src/home/sections/baptism/dynamic-config.ts +0 -29
- package/src/home/sections/baptismPicks/data.json +0 -4
- package/src/home/sections/baptismPicks/dynamic-config.ts +0 -42
- package/src/home/sections/blogPosts/data.json +0 -11
- package/src/home/sections/blogPosts/dynamic-config.ts +0 -50
- package/src/home/sections/brandMarquee/data.json +0 -3
- package/src/home/sections/brandMarquee/dynamic-config.ts +0 -28
- package/src/home/sections/brandPillars/data.json +0 -10
- package/src/home/sections/brandPillars/dynamic-config.ts +0 -48
- package/src/home/sections/categoryPills/data.json +0 -1
- package/src/home/sections/categoryPills/dynamic-config.ts +0 -26
- package/src/home/sections/celebrityTrust/data.json +0 -4
- package/src/home/sections/celebrityTrust/dynamic-config.ts +0 -29
- package/src/home/sections/features/data.json +0 -14
- package/src/home/sections/features/dynamic-config.ts +0 -46
- package/src/home/sections/hero/data.json +0 -1
- package/src/home/sections/hero/dynamic-config.ts +0 -33
- package/src/home/sections/instagramPosts/data.json +0 -7
- package/src/home/sections/instagramPosts/dynamic-config.ts +0 -42
- package/src/home/sections/lovedByMoms/data.json +0 -4
- package/src/home/sections/lovedByMoms/dynamic-config.ts +0 -29
- package/src/home/sections/luxeFavourites/data.json +0 -3
- package/src/home/sections/luxeFavourites/dynamic-config.ts +0 -29
- package/src/home/sections/newArrivals/data.json +0 -5
- package/src/home/sections/newArrivals/dynamic-config.ts +0 -28
- package/src/home/sections/newArrivalsClassic/data.json +0 -5
- package/src/home/sections/newArrivalsClassic/dynamic-config.ts +0 -29
- package/src/home/sections/promoAnnouncements/data.json +0 -8
- package/src/home/sections/promoAnnouncements/dynamic-config.ts +0 -28
- package/src/home/sections/promoCountdown/data.json +0 -8
- package/src/home/sections/promoCountdown/dynamic-config.ts +0 -28
- package/src/home/sections/shopByAge/data.json +0 -3
- package/src/home/sections/shopByAge/dynamic-config.ts +0 -29
- package/src/home/sections/shopByCategory/data.json +0 -4
- package/src/home/sections/shopByCategory/dynamic-config.ts +0 -29
- package/src/home/sections/testimonials/data.json +0 -14
- package/src/home/sections/testimonials/dynamic-config.ts +0 -42
- package/src/home/sections/themeDresses/data.json +0 -4
- package/src/home/sections/themeDresses/dynamic-config.ts +0 -29
- package/src/home/sections/videoStories/data.json +0 -4
- package/src/home/sections/videoStories/dynamic-config.ts +0 -42
- package/src/home/sections/whyChooseUs/data.json +0 -9
- package/src/home/sections/whyChooseUs/dynamic-config.ts +0 -46
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusa-ui-home",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "Homepage sections.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,15 +21,16 @@
|
|
|
21
21
|
"lodash": ">=4",
|
|
22
22
|
"lucide-react": "*",
|
|
23
23
|
"medusa-plugin-dynamic-config": ">=0.0.31",
|
|
24
|
+
"medusa-ui-home-config": "^1.1.0",
|
|
24
25
|
"medusa-contact-logic-plugin": "^2.0.0",
|
|
25
26
|
"medusa-reviews-logic": "^2.0.0",
|
|
26
27
|
"medusa-storefront-analytics": "^1.0.0",
|
|
27
|
-
"medusa-storefront-data": "^2.
|
|
28
|
+
"medusa-storefront-data": "^2.5.3",
|
|
28
29
|
"medusa-storefront-hooks": "^1.0.0",
|
|
29
30
|
"medusa-wishlist-logic": "^2.0.0",
|
|
30
|
-
"medusa-storefront-theme-base": "^
|
|
31
|
-
"medusa-ui-common": "^
|
|
32
|
-
"medusa-ui-product": "^
|
|
31
|
+
"medusa-storefront-theme-base": "^3.0.0",
|
|
32
|
+
"medusa-ui-common": "^3.0.0",
|
|
33
|
+
"medusa-ui-product": "^3.0.0",
|
|
33
34
|
"next": ">=14.0.0",
|
|
34
35
|
"react": "^18.0.0 || ^19.0.0",
|
|
35
36
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
@@ -160,6 +161,16 @@
|
|
|
160
161
|
"types": "./src/home/sections/blogPosts/index.ts",
|
|
161
162
|
"import": "./src/home/sections/blogPosts/index.ts",
|
|
162
163
|
"default": "./src/home/sections/blogPosts/index.ts"
|
|
164
|
+
},
|
|
165
|
+
"./catalog/page": {
|
|
166
|
+
"types": "./src/home/catalog/page.tsx",
|
|
167
|
+
"import": "./src/home/catalog/page.tsx",
|
|
168
|
+
"default": "./src/home/catalog/page.tsx"
|
|
169
|
+
},
|
|
170
|
+
"./components/home-page-json-ld": {
|
|
171
|
+
"types": "./src/home/components/home-page-json-ld.tsx",
|
|
172
|
+
"import": "./src/home/components/home-page-json-ld.tsx",
|
|
173
|
+
"default": "./src/home/components/home-page-json-ld.tsx"
|
|
163
174
|
}
|
|
164
175
|
},
|
|
165
176
|
"typesVersions": {
|
|
@@ -185,6 +196,7 @@
|
|
|
185
196
|
"medusa-storefront-data": "workspace:*",
|
|
186
197
|
"medusa-storefront-theme-base": "workspace:*",
|
|
187
198
|
"medusa-ui-common": "workspace:*",
|
|
188
|
-
"medusa-ui-product": "workspace:*"
|
|
199
|
+
"medusa-ui-product": "workspace:*",
|
|
200
|
+
"medusa-ui-home-config": "workspace:*"
|
|
189
201
|
}
|
|
190
202
|
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import Image from "next/image"
|
|
2
|
+
import LocalizedClientLink from "medusa-ui-common/common/components/localized-client-link"
|
|
3
|
+
import type { HomepageBanner } from "medusa-storefront-data/dynamic-config"
|
|
4
|
+
|
|
5
|
+
type CatalogHeroBannerProps = {
|
|
6
|
+
homeBanners?: HomepageBanner[] | null
|
|
7
|
+
appBanners?: HomepageBanner[] | null
|
|
8
|
+
copy?: {
|
|
9
|
+
badge?: string
|
|
10
|
+
desktopHeadingLine1?: string
|
|
11
|
+
desktopHeadingHighlight?: string
|
|
12
|
+
description?: string
|
|
13
|
+
primaryCtaLabel?: string
|
|
14
|
+
primaryCtaHref?: string
|
|
15
|
+
secondaryCtaLabel?: string
|
|
16
|
+
secondaryCtaHref?: string
|
|
17
|
+
mobilePrimaryCtaLabel?: string
|
|
18
|
+
mobileSecondaryCtaLabel?: string
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default function CatalogHeroBanner({
|
|
23
|
+
homeBanners,
|
|
24
|
+
appBanners,
|
|
25
|
+
copy,
|
|
26
|
+
}: CatalogHeroBannerProps) {
|
|
27
|
+
const fallbackBanner: HomepageBanner = {
|
|
28
|
+
image: "/newbanner.png",
|
|
29
|
+
title: "Premium Kids Shop",
|
|
30
|
+
subtitle: "Little Trends, Quality Kids Wear",
|
|
31
|
+
description:
|
|
32
|
+
"Shop stylish kids wear for little ones and children of all years - from newborn up to 15 years.",
|
|
33
|
+
buttonName: "Shop Kids Wear",
|
|
34
|
+
buttonLink: "/store",
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const homeBanner =
|
|
38
|
+
homeBanners && homeBanners.length > 0 ? homeBanners[0] : fallbackBanner
|
|
39
|
+
const firstAppBanner = appBanners && appBanners.length > 0 ? appBanners[0] : null
|
|
40
|
+
|
|
41
|
+
const homeBannerImage = homeBanner.image || fallbackBanner.image
|
|
42
|
+
const appBanner = {
|
|
43
|
+
image: firstAppBanner?.image || "/appbanner.png",
|
|
44
|
+
title: firstAppBanner?.title || homeBanner.title,
|
|
45
|
+
subtitle: firstAppBanner?.subtitle || homeBanner.subtitle,
|
|
46
|
+
description: firstAppBanner?.description || homeBanner.description,
|
|
47
|
+
buttonName: firstAppBanner?.buttonName || homeBanner.buttonName,
|
|
48
|
+
buttonLink: firstAppBanner?.buttonLink || homeBanner.buttonLink,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const heroBadge = copy?.badge ?? "BEST QUALITY"
|
|
52
|
+
const desktopHeadingLine1 = copy?.desktopHeadingLine1 ?? "Electronics &"
|
|
53
|
+
const desktopHeadingHighlight = copy?.desktopHeadingHighlight ?? "Essentials"
|
|
54
|
+
const heroDescription =
|
|
55
|
+
copy?.description ??
|
|
56
|
+
"Discover dependable tools, components, devices, and everyday warehouse-ready stock built for fast-moving stores with large inventories."
|
|
57
|
+
const primaryCtaLabel = copy?.primaryCtaLabel ?? "Add to Cart"
|
|
58
|
+
const primaryCtaHref = copy?.primaryCtaHref ?? homeBanner.buttonLink ?? "/store"
|
|
59
|
+
const secondaryCtaLabel = copy?.secondaryCtaLabel ?? "Explore categories"
|
|
60
|
+
const secondaryCtaHref = copy?.secondaryCtaHref ?? "/categories"
|
|
61
|
+
const mobilePrimaryCtaLabel = copy?.mobilePrimaryCtaLabel ?? "Shop now"
|
|
62
|
+
const mobileSecondaryCtaLabel = copy?.mobileSecondaryCtaLabel ?? secondaryCtaLabel
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<div className="relative w-full overflow-x-hidden">
|
|
66
|
+
<div className="relative hidden sm:block">
|
|
67
|
+
{homeBannerImage ? (
|
|
68
|
+
<Image
|
|
69
|
+
src={homeBannerImage}
|
|
70
|
+
alt={homeBanner.title || "Home Banner"}
|
|
71
|
+
width={1920}
|
|
72
|
+
height={800}
|
|
73
|
+
sizes="100vw"
|
|
74
|
+
className="h-[420px] w-full object-cover md:h-[520px] lg:h-[580px] xl:h-[620px]"
|
|
75
|
+
priority
|
|
76
|
+
/>
|
|
77
|
+
) : (
|
|
78
|
+
<div className="h-[420px] w-full bg-white md:h-[520px] lg:h-[580px] xl:h-[620px]" />
|
|
79
|
+
)}
|
|
80
|
+
|
|
81
|
+
<div className="absolute inset-y-0 left-0 w-[82%] bg-[linear-gradient(90deg,rgba(255,255,255,0.97)_0%,rgba(255,255,255,0.92)_52%,rgba(255,255,255,0.18)_82%,transparent_100%)] md:w-[72%] lg:w-[64%] xl:w-[60%]" />
|
|
82
|
+
|
|
83
|
+
<div className="absolute inset-0 flex items-start pt-8 md:pt-10 lg:pt-12">
|
|
84
|
+
<div className="w-full px-4 sm:px-5 md:px-7 lg:px-10 xl:px-12">
|
|
85
|
+
<div className="sticky top-24 w-full max-w-[min(92vw,34rem)] rounded-[24px] bg-white/78 px-4 py-4 shadow-[0_18px_50px_rgba(4,18,44,0.08)] backdrop-blur-[3px] transition-all duration-300 ease-out hover:bg-white/82 hover:shadow-[0_24px_60px_rgba(42,139,255,0.16)] active:shadow-[0_16px_36px_rgba(42,139,255,0.14)] sm:max-w-[24rem] sm:px-5 sm:py-5 md:max-w-[28rem] md:px-6 md:py-6 lg:max-w-[32rem] lg:px-7 lg:py-7 xl:max-w-[34rem] xl:px-8 xl:py-8">
|
|
86
|
+
<div className="space-y-3 sm:space-y-4 md:space-y-5">
|
|
87
|
+
<div className="inline-flex max-w-full items-center rounded-full border border-[#2A8BFF] bg-white/90 px-3 py-1 text-[10px] font-extrabold uppercase tracking-[0.2em] text-[#0D5BFF] shadow-[0_8px_20px_rgba(42,139,255,0.15)] md:px-4 md:py-1.5 md:text-xs">
|
|
88
|
+
{heroBadge}
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<h1 className="max-w-[13ch] text-[clamp(1.8rem,4vw,3.75rem)] font-bold leading-[1.04] text-[#04122C]">
|
|
92
|
+
{desktopHeadingLine1}
|
|
93
|
+
<br />
|
|
94
|
+
Hardware <span className="text-[#2A8BFF]">{desktopHeadingHighlight}</span>
|
|
95
|
+
</h1>
|
|
96
|
+
|
|
97
|
+
<p className="max-w-[44ch] text-[12px] font-medium leading-relaxed text-[#4B5B76] md:text-sm lg:text-base">
|
|
98
|
+
{heroDescription}
|
|
99
|
+
</p>
|
|
100
|
+
|
|
101
|
+
<div className="flex flex-wrap items-center gap-2.5 pt-1 md:gap-3 md:pt-2">
|
|
102
|
+
<LocalizedClientLink href={primaryCtaHref}>
|
|
103
|
+
<button className="group inline-flex min-h-11 items-center rounded-full bg-[#2A8BFF] px-5 py-3 text-xs font-bold text-white shadow-[0_14px_30px_rgba(42,139,255,0.28)] transition-all hover:bg-[#0D5BFF] hover:scale-[1.02] active:scale-95 md:px-7 md:py-3.5 md:text-sm">
|
|
104
|
+
{primaryCtaLabel}
|
|
105
|
+
<svg
|
|
106
|
+
viewBox="0 0 24 24"
|
|
107
|
+
fill="none"
|
|
108
|
+
stroke="currentColor"
|
|
109
|
+
strokeWidth="3"
|
|
110
|
+
strokeLinecap="round"
|
|
111
|
+
strokeLinejoin="round"
|
|
112
|
+
className="ml-2 h-3.5 w-3.5 transition-transform group-hover:translate-x-1 md:h-4 md:w-4"
|
|
113
|
+
>
|
|
114
|
+
<line x1="5" y1="12" x2="19" y2="12"></line>
|
|
115
|
+
<polyline points="12 5 19 12 12 19"></polyline>
|
|
116
|
+
</svg>
|
|
117
|
+
</button>
|
|
118
|
+
</LocalizedClientLink>
|
|
119
|
+
|
|
120
|
+
<LocalizedClientLink href={secondaryCtaHref}>
|
|
121
|
+
<button className="inline-flex min-h-11 items-center rounded-full border border-[#2A8BFF] bg-white/92 px-5 py-3 text-xs font-bold text-[#0D5BFF] shadow-[0_8px_20px_rgba(4,18,44,0.08)] transition-all hover:bg-[#EFF6FF] active:scale-95 md:px-7 md:py-3.5 md:text-sm">
|
|
122
|
+
{secondaryCtaLabel}
|
|
123
|
+
</button>
|
|
124
|
+
</LocalizedClientLink>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<div className="relative block min-h-[520px] w-full sm:hidden">
|
|
133
|
+
{appBanner.image ? (
|
|
134
|
+
<Image
|
|
135
|
+
src={appBanner.image}
|
|
136
|
+
alt={appBanner.title || "App Banner"}
|
|
137
|
+
width={720}
|
|
138
|
+
height={960}
|
|
139
|
+
sizes="100vw"
|
|
140
|
+
className="h-[560px] w-full object-cover object-top"
|
|
141
|
+
priority
|
|
142
|
+
/>
|
|
143
|
+
) : (
|
|
144
|
+
<div className="h-[560px] w-full bg-[#E9DFFF]" />
|
|
145
|
+
)}
|
|
146
|
+
|
|
147
|
+
<div className="absolute inset-x-0 top-0 h-[82%] bg-[linear-gradient(180deg,rgba(255,255,255,0.97)_0%,rgba(255,255,255,0.92)_46%,rgba(255,255,255,0.14)_82%,transparent_100%)]" />
|
|
148
|
+
|
|
149
|
+
<div className="absolute inset-x-0 top-0 flex items-start pt-4">
|
|
150
|
+
<div className="w-full px-3">
|
|
151
|
+
<div className="w-full max-w-[21rem] rounded-[22px] bg-white/80 px-4 py-4 shadow-[0_16px_40px_rgba(4,18,44,0.08)] backdrop-blur-[2px] transition-all duration-300 ease-out active:bg-white/85 active:shadow-[0_18px_42px_rgba(42,139,255,0.14)]">
|
|
152
|
+
<div className="space-y-3">
|
|
153
|
+
<div className="inline-flex max-w-full items-center rounded-full border border-[#2A8BFF] bg-white/92 px-3 py-1 text-[9px] font-extrabold uppercase tracking-[0.18em] text-[#0D5BFF] shadow-[0_6px_18px_rgba(42,139,255,0.15)]">
|
|
154
|
+
{heroBadge}
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
<h1 className="max-w-[12ch] text-[clamp(1.9rem,8vw,2.5rem)] font-bold leading-[1.06] text-[#04122C]">
|
|
158
|
+
{desktopHeadingLine1}
|
|
159
|
+
<br />
|
|
160
|
+
Hardware <span className="text-[#2A8BFF]">{desktopHeadingHighlight}</span>
|
|
161
|
+
</h1>
|
|
162
|
+
|
|
163
|
+
<p className="text-[12px] font-medium leading-relaxed text-[#4B5B76] line-clamp-4">
|
|
164
|
+
{heroDescription}
|
|
165
|
+
</p>
|
|
166
|
+
|
|
167
|
+
<div className="flex flex-wrap items-center gap-2 pt-1">
|
|
168
|
+
<LocalizedClientLink href={primaryCtaHref}>
|
|
169
|
+
<button className="group inline-flex min-h-10 items-center rounded-full bg-[#2A8BFF] px-4 py-2.5 text-xs font-bold text-white shadow-[0_10px_24px_rgba(42,139,255,0.28)] active:scale-95">
|
|
170
|
+
{mobilePrimaryCtaLabel}
|
|
171
|
+
<svg
|
|
172
|
+
width="14"
|
|
173
|
+
height="14"
|
|
174
|
+
viewBox="0 0 24 24"
|
|
175
|
+
fill="none"
|
|
176
|
+
stroke="currentColor"
|
|
177
|
+
strokeWidth="3"
|
|
178
|
+
strokeLinecap="round"
|
|
179
|
+
strokeLinejoin="round"
|
|
180
|
+
className="ml-2 transition-transform group-hover:translate-x-1"
|
|
181
|
+
>
|
|
182
|
+
<line x1="5" y1="12" x2="19" y2="12"></line>
|
|
183
|
+
<polyline points="12 5 19 12 12 19"></polyline>
|
|
184
|
+
</svg>
|
|
185
|
+
</button>
|
|
186
|
+
</LocalizedClientLink>
|
|
187
|
+
|
|
188
|
+
<LocalizedClientLink href={secondaryCtaHref}>
|
|
189
|
+
<button className="inline-flex min-h-10 items-center rounded-full border border-[#2A8BFF] bg-white/92 px-4 py-2.5 text-xs font-bold text-[#0D5BFF] shadow-[0_6px_18px_rgba(4,18,44,0.08)] active:scale-95">
|
|
190
|
+
{mobileSecondaryCtaLabel}
|
|
191
|
+
</button>
|
|
192
|
+
</LocalizedClientLink>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
)
|
|
201
|
+
}
|