blixify-ui-web-mcp 0.1.1
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/README.md +5 -0
- package/lib/components/action/button/README.md +75 -0
- package/lib/components/action/button/button.stories.tsx +138 -0
- package/lib/components/action/buttonGroup/README.md +79 -0
- package/lib/components/action/buttonGroup/buttonGroup.stories.tsx +104 -0
- package/lib/components/action/iconButton/README.md +39 -0
- package/lib/components/action/iconButton/iconButton.stories.tsx +22 -0
- package/lib/components/action/radioList/README.md +98 -0
- package/lib/components/action/radioList/radioList.stories.tsx +181 -0
- package/lib/components/action/slider/README.md +86 -0
- package/lib/components/action/slider/slider.stories.tsx +133 -0
- package/lib/components/action/textButton/README.md +34 -0
- package/lib/components/action/textButton/textButton.stories.tsx +16 -0
- package/lib/components/action/toggle/README.md +39 -0
- package/lib/components/action/toggle/toggle.stories.tsx +23 -0
- package/lib/components/advanced/collapse/README.md +106 -0
- package/lib/components/advanced/collapse/collapse.stories.tsx +165 -0
- package/lib/components/advanced/infoWindow/README.md +69 -0
- package/lib/components/advanced/infoWindow/infoWindow.stories.tsx +112 -0
- package/lib/components/advanced/popUp/README.md +95 -0
- package/lib/components/advanced/popUp/popUp.stories.tsx +189 -0
- package/lib/components/auth/bareSignIn/README.md +78 -0
- package/lib/components/auth/bareSignIn/bareSignIn.stories.tsx +141 -0
- package/lib/components/auth/bareSignUp/README.md +130 -0
- package/lib/components/auth/bareSignUp/bareSignUp.stories.tsx +159 -0
- package/lib/components/auth/signIn/README.md +53 -0
- package/lib/components/auth/signIn/signIn.stories.tsx +120 -0
- package/lib/components/auth/signUp/README.md +136 -0
- package/lib/components/auth/signUp/signUp.stories.tsx +193 -0
- package/lib/components/chart/README.md +13 -0
- package/lib/components/chart/areaChart/README.md +133 -0
- package/lib/components/chart/areaChart/areaChart.stories.tsx +199 -0
- package/lib/components/chart/barChart/README.md +193 -0
- package/lib/components/chart/barChart/barChart.stories.tsx +318 -0
- package/lib/components/chart/boxPlotChart/README.md +124 -0
- package/lib/components/chart/boxPlotChart/boxPlotChart.stories.tsx +104 -0
- package/lib/components/chart/bubbleChart/README.md +166 -0
- package/lib/components/chart/bubbleChart/bubbleChart.stories.tsx +144 -0
- package/lib/components/chart/card/README.md +107 -0
- package/lib/components/chart/card/card.stories.tsx +89 -0
- package/lib/components/chart/ganttChart/README.md +142 -0
- package/lib/components/chart/ganttChart/ganttChart.stories.tsx +138 -0
- package/lib/components/chart/heatmapChart/README.md +125 -0
- package/lib/components/chart/heatmapChart/heatmapChart.stories.tsx +106 -0
- package/lib/components/chart/lineChart/README.md +140 -0
- package/lib/components/chart/lineChart/lineChart.stories.tsx +152 -0
- package/lib/components/chart/pieChart/README.md +117 -0
- package/lib/components/chart/pieChart/pieChart.stories.tsx +180 -0
- package/lib/components/chart/polarAreaChart/README.md +126 -0
- package/lib/components/chart/polarAreaChart/polarAreaChart.stories.tsx +106 -0
- package/lib/components/chart/radarChart/README.md +57 -0
- package/lib/components/chart/radarChart/radarChart.stories.tsx +36 -0
- package/lib/components/chart/radialBar/README.md +152 -0
- package/lib/components/chart/radialBar/radialChart.stories.tsx +136 -0
- package/lib/components/chart/rangeBarChart/README.md +323 -0
- package/lib/components/chart/rangeBarChart/rangeBarChart.stories.tsx +208 -0
- package/lib/components/chart/statsCard/README.md +97 -0
- package/lib/components/chart/statsCard/statsCard.stories.tsx +183 -0
- package/lib/components/chart/treemapChart/README.md +142 -0
- package/lib/components/chart/treemapChart/treemapChart.stories.tsx +122 -0
- package/lib/components/chat/chatAnchor/README.md +113 -0
- package/lib/components/chat/chatAnchor/chatAnchor.stories.tsx +156 -0
- package/lib/components/chat/chatBase/README.md +223 -0
- package/lib/components/chat/chatBase/chatBase.stories.tsx +306 -0
- package/lib/components/chat/chatDashboard/README.md +161 -0
- package/lib/components/chat/chatDashboard/chatDashboard.stories.tsx +154 -0
- package/lib/components/data/dataGraph/README.md +13 -0
- package/lib/components/data/dataGraph/dataGraph.stories.tsx +84 -0
- package/lib/components/data/dataReference/README.md +62 -0
- package/lib/components/data/dataReference/dataReference.stories.tsx +53 -0
- package/lib/components/data/dataTemplate/README.md +903 -0
- package/lib/components/data/dataTemplate/dataModule.stories.tsx +196 -0
- package/lib/components/data/dataTemplate/dataTemplate.stories.tsx +337 -0
- package/lib/components/data/dataWrapper/README.md +1077 -0
- package/lib/components/data/dataWrapper/dataWrapper.stories.tsx +831 -0
- package/lib/components/data/queryForm/README.md +56 -0
- package/lib/components/data/queryForm/queryForm.stories.tsx +85 -0
- package/lib/components/data/readQuery/README.md +282 -0
- package/lib/components/data/readQuery/readQuery.stories.tsx +256 -0
- package/lib/components/data/readQueryHoc/README.md +89 -0
- package/lib/components/data/readQueryHoc/readQueryHoc.stories.tsx +33 -0
- package/lib/components/data/writeQuery/README.md +178 -0
- package/lib/components/data/writeQuery/writeQuery.stories.tsx +209 -0
- package/lib/components/design/actionSection/README.md +47 -0
- package/lib/components/design/actionSection/actionSection.stories.tsx +74 -0
- package/lib/components/design/banner/README.md +43 -0
- package/lib/components/design/banner/banner.stories.tsx +34 -0
- package/lib/components/design/bannerAction/README.md +44 -0
- package/lib/components/design/bannerAction/bannerAction.stories.tsx +25 -0
- package/lib/components/design/blogSection/README.md +111 -0
- package/lib/components/design/blogSection/blogSection.stories.tsx +72 -0
- package/lib/components/design/carouselSection/README.md +82 -0
- package/lib/components/design/carouselSection/carouselSection.stories.tsx +52 -0
- package/lib/components/design/designList/README.md +60 -0
- package/lib/components/design/designList/designList.stories.tsx +44 -0
- package/lib/components/design/faq/README.md +121 -0
- package/lib/components/design/faq/faq.stories.tsx +103 -0
- package/lib/components/design/fileGrid/README.md +87 -0
- package/lib/components/design/fileGrid/fileGrid.stories.tsx +110 -0
- package/lib/components/design/fileViewer/README.md +40 -0
- package/lib/components/design/fileViewer/fileViewer.stories.tsx +28 -0
- package/lib/components/design/footerSection/README.md +62 -0
- package/lib/components/design/footerSection/footerSection.stories.tsx +84 -0
- package/lib/components/design/googleReview/README.md +45 -0
- package/lib/components/design/googleReview/googleReview.stories.tsx +33 -0
- package/lib/components/design/heroSection/README.md +48 -0
- package/lib/components/design/heroSection/heroSection.stories.tsx +85 -0
- package/lib/components/design/iconList/README.md +60 -0
- package/lib/components/design/iconList/iconList.stories.tsx +41 -0
- package/lib/components/design/imageGallery/README.md +56 -0
- package/lib/components/design/imageGallery/imageGallery.stories.tsx +45 -0
- package/lib/components/design/imageZoom/README.md +47 -0
- package/lib/components/design/imageZoom/imageZoom.stories.tsx +30 -0
- package/lib/components/design/leftContent/README.md +47 -0
- package/lib/components/design/leftContent/leftContent.stories.tsx +32 -0
- package/lib/components/design/logoCloud/README.md +42 -0
- package/lib/components/design/logoCloud/logoCloud.stories.tsx +44 -0
- package/lib/components/design/onboarding/README.md +100 -0
- package/lib/components/design/onboarding/onboarding.stories.tsx +113 -0
- package/lib/components/design/pricing/README.md +112 -0
- package/lib/components/design/pricing/pricing.stories.tsx +86 -0
- package/lib/components/design/rightContent/README.md +47 -0
- package/lib/components/design/rightContent/rightContent.stories.tsx +32 -0
- package/lib/components/design/sectionList/README.md +51 -0
- package/lib/components/design/sectionList/sectionList.stories.tsx +35 -0
- package/lib/components/design/teams/README.md +62 -0
- package/lib/components/design/teams/teams.stories.tsx +61 -0
- package/lib/components/display/alert/README.md +82 -0
- package/lib/components/display/alert/alert.stories.tsx +71 -0
- package/lib/components/display/calendar/README.md +113 -0
- package/lib/components/display/calendar/calendar.stories.tsx +159 -0
- package/lib/components/display/clipboard/README.md +36 -0
- package/lib/components/display/clipboard/clipboard.stories.tsx +32 -0
- package/lib/components/display/detailList/README.md +61 -0
- package/lib/components/display/detailList/detailList.stories.tsx +131 -0
- package/lib/components/display/drawer/README.md +74 -0
- package/lib/components/display/drawer/drawer.stories.tsx +66 -0
- package/lib/components/display/emptyState/README.md +38 -0
- package/lib/components/display/emptyState/emptyState.stories.tsx +22 -0
- package/lib/components/display/feeds/README.md +80 -0
- package/lib/components/display/feeds/feeds.stories.tsx +75 -0
- package/lib/components/display/flexTable/README.md +160 -0
- package/lib/components/display/flexTable/flexTable.stories.tsx +313 -0
- package/lib/components/display/grid/README.md +121 -0
- package/lib/components/display/grid/grid.stories.tsx +234 -0
- package/lib/components/display/kanban/README.md +78 -0
- package/lib/components/display/kanban/kanban.stories.tsx +133 -0
- package/lib/components/display/list/README.md +109 -0
- package/lib/components/display/list/list.stories.tsx +188 -0
- package/lib/components/display/loading/README.md +25 -0
- package/lib/components/display/loading/loading.stories.tsx +15 -0
- package/lib/components/display/mapView/README.md +99 -0
- package/lib/components/display/mapView/mapView.stories.tsx +225 -0
- package/lib/components/display/modal/README.md +43 -0
- package/lib/components/display/modal/modal.stories.tsx +81 -0
- package/lib/components/display/notification/README.md +43 -0
- package/lib/components/display/notification/notification.stories.tsx +30 -0
- package/lib/components/display/progress/README.md +25 -0
- package/lib/components/display/progress/progress.stories.tsx +15 -0
- package/lib/components/display/stepper/README.md +96 -0
- package/lib/components/display/stepper/stepper.stories.tsx +175 -0
- package/lib/components/display/table/README.md +176 -0
- package/lib/components/display/table/table.stories.tsx +330 -0
- package/lib/components/display/tag/README.md +74 -0
- package/lib/components/display/tag/tag.stories.tsx +79 -0
- package/lib/components/input/address/README.md +132 -0
- package/lib/components/input/address/address.stories.tsx +147 -0
- package/lib/components/input/canvas/README.md +131 -0
- package/lib/components/input/canvas/canvas.stories.tsx +165 -0
- package/lib/components/input/checkbox/README.md +61 -0
- package/lib/components/input/checkbox/checkbox.stories.tsx +30 -0
- package/lib/components/input/datePicker/README.md +124 -0
- package/lib/components/input/datePicker/datePicker.stories.tsx +197 -0
- package/lib/components/input/form/README.md +55 -0
- package/lib/components/input/form/form.stories.tsx +143 -0
- package/lib/components/input/markdown/README.md +146 -0
- package/lib/components/input/markdown/markdown.stories.tsx +40 -0
- package/lib/components/input/monthYearPicker/README.md +69 -0
- package/lib/components/input/monthYearPicker/monthYearPicker.stories.tsx +47 -0
- package/lib/components/input/netPromoterScore/README.md +52 -0
- package/lib/components/input/netPromoterScore/netPromoterScore.stories.tsx +30 -0
- package/lib/components/input/rating/README.md +51 -0
- package/lib/components/input/rating/rating.stories.tsx +30 -0
- package/lib/components/input/select/README.md +108 -0
- package/lib/components/input/select/select.stories.tsx +286 -0
- package/lib/components/input/signature/README.md +106 -0
- package/lib/components/input/signature/signature.stories.tsx +188 -0
- package/lib/components/input/textArea/README.md +55 -0
- package/lib/components/input/textArea/textArea.stories.tsx +30 -0
- package/lib/components/input/textInput/README.md +81 -0
- package/lib/components/input/textInput/textinput.stories.tsx +231 -0
- package/lib/components/input/uploadInput/README.md +134 -0
- package/lib/components/input/uploadInput/uploadInput.stories.tsx +193 -0
- package/lib/components/navigation/bars/README.md +40 -0
- package/lib/components/navigation/bars/bars.stories.tsx +85 -0
- package/lib/components/navigation/bottomTab/README.md +53 -0
- package/lib/components/navigation/bottomTab/bottomTab.stories.tsx +32 -0
- package/lib/components/navigation/breadcrumb/README.md +48 -0
- package/lib/components/navigation/breadcrumb/breadcrumb.stories.tsx +27 -0
- package/lib/components/navigation/header/README.md +149 -0
- package/lib/components/navigation/header/header.stories.tsx +107 -0
- package/lib/components/navigation/leftNav/README.md +91 -0
- package/lib/components/navigation/leftNav/leftNav.stories.tsx +106 -0
- package/lib/components/navigation/tabs/README.md +75 -0
- package/lib/components/navigation/tabs/tabs.stories.tsx +60 -0
- package/lib/components/structure/column/README.md +40 -0
- package/lib/components/structure/column/column.stories.tsx +26 -0
- package/lib/components/structure/container/README.md +34 -0
- package/lib/components/structure/container/container.stories.tsx +19 -0
- package/lib/components/structure/link/README.md +55 -0
- package/lib/components/structure/link/link.stories.tsx +30 -0
- package/lib/components/structure/text/README.md +42 -0
- package/lib/components/structure/text/text.stories.tsx +39 -0
- package/lib/components/template/authPage/authPage.stories.tsx +68 -0
- package/lib/components/template/landingPage/landingPage.stories.tsx +288 -0
- package/lib/components/template/productListing/productListing.stories.tsx +297 -0
- package/lib/components/template/productOverview/productOverview.stories.tsx +194 -0
- package/lib/components/template/shoppingCart/shoppingCart.stories.tsx +252 -0
- package/lib/components/template/userHomePage/userHomePage.stories.tsx +605 -0
- package/lib/components/template/userRankingDashboard/userRankingDashboard.stories.tsx +481 -0
- package/lib/mcp/server.d.ts +2 -0
- package/lib/mcp/server.d.ts.map +1 -0
- package/lib/mcp/server.js +33 -0
- package/lib/mcp/server.js.map +1 -0
- package/lib/mcp/tools/getBackendComponent.d.ts +13 -0
- package/lib/mcp/tools/getBackendComponent.d.ts.map +1 -0
- package/lib/mcp/tools/getBackendComponent.js +119 -0
- package/lib/mcp/tools/getBackendComponent.js.map +1 -0
- package/lib/mcp/tools/getComponent.d.ts +17 -0
- package/lib/mcp/tools/getComponent.d.ts.map +1 -0
- package/lib/mcp/tools/getComponent.js +118 -0
- package/lib/mcp/tools/getComponent.js.map +1 -0
- package/lib/mcp/tools/listComponents.d.ts +13 -0
- package/lib/mcp/tools/listComponents.d.ts.map +1 -0
- package/lib/mcp/tools/listComponents.js +113 -0
- package/lib/mcp/tools/listComponents.js.map +1 -0
- package/lib/mcp/tools/listTemplates.d.ts +13 -0
- package/lib/mcp/tools/listTemplates.d.ts.map +1 -0
- package/lib/mcp/tools/listTemplates.js +68 -0
- package/lib/mcp/tools/listTemplates.js.map +1 -0
- package/lib/mcp/tools/suggestTemplate.d.ts +17 -0
- package/lib/mcp/tools/suggestTemplate.d.ts.map +1 -0
- package/lib/mcp/tools/suggestTemplate.js +212 -0
- package/lib/mcp/tools/suggestTemplate.js.map +1 -0
- package/package.json +23 -0
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
import { storiesOf } from "@storybook/react";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import { Button } from "../../action/button";
|
|
4
|
+
import { ActionSection } from "../../design/actionSection";
|
|
5
|
+
import { FAQContent } from "../../design/faq";
|
|
6
|
+
import { FooterSection } from "../../design/footerSection";
|
|
7
|
+
import { GoogleReview } from "../../design/googleReview";
|
|
8
|
+
import { IconList } from "../../design/iconList";
|
|
9
|
+
import { Grid, GridClass } from "../../display/grid";
|
|
10
|
+
import { Modal } from "../../display/modal";
|
|
11
|
+
import { Select } from "../../input/select";
|
|
12
|
+
import { TextInput } from "../../input/textInput";
|
|
13
|
+
import { Container } from "../../structure/container";
|
|
14
|
+
import { Header } from "../../navigation/header";
|
|
15
|
+
import "../../../index.css";
|
|
16
|
+
import { Disclosure, Menu, Popover, Transition } from "@headlessui/react";
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
18
|
+
const Logo = require("../../../assets/logo.png");
|
|
19
|
+
|
|
20
|
+
const stories = storiesOf("Template", module);
|
|
21
|
+
|
|
22
|
+
const QUAL_ITEMS = [
|
|
23
|
+
{
|
|
24
|
+
title: "Own a Property",
|
|
25
|
+
desc: "Perfect, that means our service is a great fit.",
|
|
26
|
+
icon: (
|
|
27
|
+
<svg
|
|
28
|
+
className="w-6 h-6"
|
|
29
|
+
fill="none"
|
|
30
|
+
viewBox="0 0 24 24"
|
|
31
|
+
stroke="currentColor"
|
|
32
|
+
>
|
|
33
|
+
<path
|
|
34
|
+
strokeLinecap="round"
|
|
35
|
+
strokeLinejoin="round"
|
|
36
|
+
strokeWidth={2}
|
|
37
|
+
d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
|
|
38
|
+
/>
|
|
39
|
+
</svg>
|
|
40
|
+
),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: "Monthly Electricity Bill Over RM 200",
|
|
44
|
+
desc: "The higher your bill, the more you stand to save with solar.",
|
|
45
|
+
icon: (
|
|
46
|
+
<svg
|
|
47
|
+
className="w-6 h-6"
|
|
48
|
+
fill="none"
|
|
49
|
+
viewBox="0 0 24 24"
|
|
50
|
+
stroke="currentColor"
|
|
51
|
+
>
|
|
52
|
+
<path
|
|
53
|
+
strokeLinecap="round"
|
|
54
|
+
strokeLinejoin="round"
|
|
55
|
+
strokeWidth={2}
|
|
56
|
+
d="M13 10V3L4 14h7v7l9-11h-7z"
|
|
57
|
+
/>
|
|
58
|
+
</svg>
|
|
59
|
+
),
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const USE_CASE_ITEMS = [
|
|
64
|
+
{
|
|
65
|
+
id: "user-1",
|
|
66
|
+
percentage: "90%",
|
|
67
|
+
imageSrc:
|
|
68
|
+
"https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=facearea&facepad=2&w=400&h=300&q=80",
|
|
69
|
+
name: "Sarah Lim",
|
|
70
|
+
location: "Petaling Jaya, Selangor",
|
|
71
|
+
totalSaving: "RM 450/mo",
|
|
72
|
+
monthlySaving: "RM 45/mo",
|
|
73
|
+
videoUrl: "",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "user-2",
|
|
77
|
+
percentage: "50%",
|
|
78
|
+
imageSrc:
|
|
79
|
+
"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?auto=format&fit=facearea&facepad=2&w=400&h=300&q=80",
|
|
80
|
+
name: "Ahmad Razif",
|
|
81
|
+
location: "Johor Bahru, Johor",
|
|
82
|
+
totalSaving: "RM 320/mo",
|
|
83
|
+
monthlySaving: "RM 160/mo",
|
|
84
|
+
videoUrl: "",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: "user-3",
|
|
88
|
+
percentage: "60%",
|
|
89
|
+
imageSrc:
|
|
90
|
+
"https://images.unsplash.com/photo-1550525811-e5869dd03032?auto=format&fit=facearea&facepad=2&w=400&h=300&q=80",
|
|
91
|
+
name: "Priya Nair",
|
|
92
|
+
location: "George Town, Penang",
|
|
93
|
+
totalSaving: "RM 380/mo",
|
|
94
|
+
monthlySaving: "RM 152/mo",
|
|
95
|
+
videoUrl: "",
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
const WHY_ITEMS = [
|
|
100
|
+
{
|
|
101
|
+
image:
|
|
102
|
+
"https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?auto=format&fit=crop&w=128&h=128&q=80",
|
|
103
|
+
title: "Lorem ipsum dolor sit amet.",
|
|
104
|
+
desc: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
image:
|
|
108
|
+
"https://images.unsplash.com/photo-1517841905240-472988babdf9?auto=format&fit=crop&w=128&h=128&q=80",
|
|
109
|
+
title: "Consectetur adipiscing elit.",
|
|
110
|
+
desc: "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua ut enim ad minim veniam.",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
image:
|
|
114
|
+
"https://images.unsplash.com/photo-1505840717430-882ce147ef2d?auto=format&fit=crop&w=128&h=128&q=80",
|
|
115
|
+
title: "Ut enim ad minim veniam.",
|
|
116
|
+
desc: "Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat duis aute.",
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
|
|
120
|
+
const HOW_IT_WORKS_STEPS = [
|
|
121
|
+
{
|
|
122
|
+
title: "Step 1: Get a Free Quote",
|
|
123
|
+
description:
|
|
124
|
+
"Fill in your details and we'll prepare a custom proposal for you.",
|
|
125
|
+
icon: (
|
|
126
|
+
<svg
|
|
127
|
+
className="w-6 h-6"
|
|
128
|
+
fill="none"
|
|
129
|
+
viewBox="0 0 24 24"
|
|
130
|
+
stroke="currentColor"
|
|
131
|
+
>
|
|
132
|
+
<path
|
|
133
|
+
strokeLinecap="round"
|
|
134
|
+
strokeLinejoin="round"
|
|
135
|
+
strokeWidth={2}
|
|
136
|
+
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
|
137
|
+
/>
|
|
138
|
+
</svg>
|
|
139
|
+
),
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
title: "Step 2: Professional Installation",
|
|
143
|
+
description: "Our certified team handles your request quickly and cleanly.",
|
|
144
|
+
icon: (
|
|
145
|
+
<svg
|
|
146
|
+
className="w-6 h-6"
|
|
147
|
+
fill="none"
|
|
148
|
+
viewBox="0 0 24 24"
|
|
149
|
+
stroke="currentColor"
|
|
150
|
+
>
|
|
151
|
+
<path
|
|
152
|
+
strokeLinecap="round"
|
|
153
|
+
strokeLinejoin="round"
|
|
154
|
+
strokeWidth={2}
|
|
155
|
+
d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"
|
|
156
|
+
/>
|
|
157
|
+
</svg>
|
|
158
|
+
),
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
title: "Step 3: Start Saving",
|
|
162
|
+
description: "Track your progress and savings directly in the app.",
|
|
163
|
+
icon: (
|
|
164
|
+
<svg
|
|
165
|
+
className="w-6 h-6"
|
|
166
|
+
fill="none"
|
|
167
|
+
viewBox="0 0 24 24"
|
|
168
|
+
stroke="currentColor"
|
|
169
|
+
>
|
|
170
|
+
<path
|
|
171
|
+
strokeLinecap="round"
|
|
172
|
+
strokeLinejoin="round"
|
|
173
|
+
strokeWidth={2}
|
|
174
|
+
d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"
|
|
175
|
+
/>
|
|
176
|
+
</svg>
|
|
177
|
+
),
|
|
178
|
+
},
|
|
179
|
+
];
|
|
180
|
+
|
|
181
|
+
const FAQ_LIST = [
|
|
182
|
+
{
|
|
183
|
+
question: "How does the system work?",
|
|
184
|
+
answer:
|
|
185
|
+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
question: "What is the payback period?",
|
|
189
|
+
answer:
|
|
190
|
+
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
question: "How much do I need to invest?",
|
|
194
|
+
answer:
|
|
195
|
+
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
question: "By how much will my costs be reduced?",
|
|
199
|
+
answer:
|
|
200
|
+
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
|
|
201
|
+
},
|
|
202
|
+
];
|
|
203
|
+
|
|
204
|
+
const PRODUCT_CARDS: GridClass[] = [
|
|
205
|
+
{
|
|
206
|
+
id: "product-a",
|
|
207
|
+
title: "Solar PV System",
|
|
208
|
+
description: "Generate your own clean electricity",
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
id: "product-b",
|
|
212
|
+
title: "Solar + Battery Storage",
|
|
213
|
+
description: "Generate and store energy for round-the-clock savings",
|
|
214
|
+
},
|
|
215
|
+
];
|
|
216
|
+
|
|
217
|
+
const PRODUCT_GRID_ITEMS: { [id: string]: React.ReactElement } = {
|
|
218
|
+
"product-a": (
|
|
219
|
+
<div className="flex flex-col rounded-xl overflow-hidden shadow-md bg-white">
|
|
220
|
+
<img
|
|
221
|
+
src="https://images.unsplash.com/photo-1508514177221-188b1cf16e9d?auto=format&fit=crop&w=600&h=300&q=80"
|
|
222
|
+
alt="Product A"
|
|
223
|
+
className="h-48 w-full object-cover"
|
|
224
|
+
/>
|
|
225
|
+
<div className="p-6 flex flex-col gap-y-2">
|
|
226
|
+
<p className="text-lg font-semibold text-gray-900">Solar PV System</p>
|
|
227
|
+
<p className="text-sm text-gray-500">Model: Jinko Tiger Neo 580W</p>
|
|
228
|
+
<p className="text-sm text-gray-500">System Size: 8 kWp · 14 panels</p>
|
|
229
|
+
<p className="text-2xl font-bold text-primary-600 mt-2">
|
|
230
|
+
Save RM 280/mo
|
|
231
|
+
</p>
|
|
232
|
+
<span className="inline-block mt-1 px-3 py-1 bg-primary-100 text-primary-700 text-xs font-semibold rounded-full w-fit">
|
|
233
|
+
~70% savings
|
|
234
|
+
</span>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
),
|
|
238
|
+
"product-b": (
|
|
239
|
+
<div className="flex flex-col rounded-xl overflow-hidden shadow-md bg-white">
|
|
240
|
+
<img
|
|
241
|
+
src="https://images.unsplash.com/photo-1466611653911-95081537e5b7?auto=format&fit=crop&w=600&h=300&q=80"
|
|
242
|
+
alt="Product B"
|
|
243
|
+
className="h-48 w-full object-cover"
|
|
244
|
+
/>
|
|
245
|
+
<div className="p-6 flex flex-col gap-y-2">
|
|
246
|
+
<p className="text-lg font-semibold text-gray-900">
|
|
247
|
+
Solar + Battery Storage
|
|
248
|
+
</p>
|
|
249
|
+
<p className="text-sm text-gray-500">
|
|
250
|
+
Model: Jinko Tiger Neo 580W + Growatt 10kWh
|
|
251
|
+
</p>
|
|
252
|
+
<p className="text-sm text-gray-500">System Size: 10 kWp · 18 panels</p>
|
|
253
|
+
<p className="text-2xl font-bold text-primary-600 mt-2">
|
|
254
|
+
Save RM 380/mo
|
|
255
|
+
</p>
|
|
256
|
+
<span className="inline-block mt-1 px-3 py-1 bg-primary-100 text-primary-700 text-xs font-semibold rounded-full w-fit">
|
|
257
|
+
~90% savings
|
|
258
|
+
</span>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
),
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
stories.add("User Home Page", () => {
|
|
265
|
+
const [videoModal, setVideoModal] = useState(false);
|
|
266
|
+
const [videoUrl, setVideoUrl] = useState("");
|
|
267
|
+
|
|
268
|
+
const gridItems: GridClass[] = USE_CASE_ITEMS.map((item) => ({
|
|
269
|
+
id: item.id,
|
|
270
|
+
title: item.name,
|
|
271
|
+
description: item.location,
|
|
272
|
+
imageUrl: item.imageSrc,
|
|
273
|
+
extra: item,
|
|
274
|
+
}));
|
|
275
|
+
|
|
276
|
+
const customGridItems: { [id: string]: React.ReactElement } = {};
|
|
277
|
+
USE_CASE_ITEMS.forEach((item) => {
|
|
278
|
+
customGridItems[item.id] = (
|
|
279
|
+
<div className="w-72 h-full flex flex-col rounded-3xl shadow-lg overflow-hidden lg:w-full hover:shadow-xl">
|
|
280
|
+
<img
|
|
281
|
+
src={item.imageSrc}
|
|
282
|
+
alt={item.name}
|
|
283
|
+
className="h-48 object-cover rounded-t-3xl"
|
|
284
|
+
/>
|
|
285
|
+
<div className="-mt-6 p-6 bg-primary-900 text-white">
|
|
286
|
+
<h1 className="text-5xl font-bold">{item.percentage}</h1>
|
|
287
|
+
<p>reduction in bill</p>
|
|
288
|
+
<p className="text-primary-300 text-xl font-semibold">
|
|
289
|
+
From {item.totalSaving} to {item.monthlySaving}
|
|
290
|
+
</p>
|
|
291
|
+
<div className="mt-8 flex justify-between items-center">
|
|
292
|
+
<div className="text-sm text-gray-300">
|
|
293
|
+
<p>{item.name}</p>
|
|
294
|
+
<p>{item.location}</p>
|
|
295
|
+
</div>
|
|
296
|
+
{item.videoUrl && (
|
|
297
|
+
<button
|
|
298
|
+
onClick={() => {
|
|
299
|
+
setVideoUrl(item.videoUrl!);
|
|
300
|
+
setVideoModal(true);
|
|
301
|
+
}}
|
|
302
|
+
className="text-primary-300 hover:text-white"
|
|
303
|
+
>
|
|
304
|
+
<svg
|
|
305
|
+
className="w-8 h-8"
|
|
306
|
+
fill="currentColor"
|
|
307
|
+
viewBox="0 0 24 24"
|
|
308
|
+
>
|
|
309
|
+
<path d="M8 5v14l11-7z" />
|
|
310
|
+
</svg>
|
|
311
|
+
</button>
|
|
312
|
+
)}
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
);
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
return (
|
|
320
|
+
<div className="bg-white">
|
|
321
|
+
<Header
|
|
322
|
+
defaultNav="/"
|
|
323
|
+
page="Headphones"
|
|
324
|
+
logo={Logo}
|
|
325
|
+
navigation={[
|
|
326
|
+
{ name: "Home", href: "#" },
|
|
327
|
+
{ name: "Products", href: "#" },
|
|
328
|
+
{ name: "Calculator", href: "#" },
|
|
329
|
+
{ name: "About Us", href: "#" },
|
|
330
|
+
]}
|
|
331
|
+
lib={{ Disclosure, Menu, Transition, Popover }}
|
|
332
|
+
/>
|
|
333
|
+
<div
|
|
334
|
+
className="relative h-screen bg-cover bg-top"
|
|
335
|
+
style={{
|
|
336
|
+
backgroundImage:
|
|
337
|
+
"url(https://images.unsplash.com/photo-1508514177221-188b1cf16e9d?auto=format&fit=crop&w=1920&q=80)",
|
|
338
|
+
}}
|
|
339
|
+
>
|
|
340
|
+
<div className="absolute inset-0 bg-black/40 z-0" />
|
|
341
|
+
<div className="relative z-10 h-full flex flex-col items-center justify-center text-center px-4">
|
|
342
|
+
<p className="mb-4 text-xl font-medium text-primary-200 sm:text-2xl md:text-3xl">
|
|
343
|
+
Malaysia's Leading Solar Energy Provider
|
|
344
|
+
</p>
|
|
345
|
+
<h1 className="text-3xl font-bold text-white mb-8 max-w-3xl md:text-5xl">
|
|
346
|
+
Cut Your Electricity Bill by Up to 90%
|
|
347
|
+
</h1>
|
|
348
|
+
<div className="mb-6 text-lg text-gray-200 max-w-xl">
|
|
349
|
+
{[
|
|
350
|
+
"How much can I save by switching to solar?",
|
|
351
|
+
"What is the payback period for solar panels?",
|
|
352
|
+
"How do I get started with solar installation?",
|
|
353
|
+
].map((q, i) => (
|
|
354
|
+
<p key={i} className="mb-1 italic">
|
|
355
|
+
"{q}"
|
|
356
|
+
</p>
|
|
357
|
+
))}
|
|
358
|
+
</div>
|
|
359
|
+
<Button text="GET STARTED" type="normal" onClick={() => {}} />
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
|
|
363
|
+
<div id="use-case-section">
|
|
364
|
+
<Modal
|
|
365
|
+
open={videoModal}
|
|
366
|
+
renderContent={() => (
|
|
367
|
+
<iframe
|
|
368
|
+
width="100%"
|
|
369
|
+
height="500"
|
|
370
|
+
src={videoUrl}
|
|
371
|
+
title="Video"
|
|
372
|
+
allowFullScreen
|
|
373
|
+
/>
|
|
374
|
+
)}
|
|
375
|
+
onClose={() => setVideoModal(false)}
|
|
376
|
+
maxWidth="4xl"
|
|
377
|
+
/>
|
|
378
|
+
<Container className="pb-20 pt-10">
|
|
379
|
+
<div className="flex flex-col justify-center items-center text-center">
|
|
380
|
+
<h1 className="text-xl md:text-3xl">If you meet both criteria,</h1>
|
|
381
|
+
<h1 className="text-3xl font-semibold text-primary-800 md:text-5xl md:mt-2">
|
|
382
|
+
You are a qualified applicant!
|
|
383
|
+
</h1>
|
|
384
|
+
</div>
|
|
385
|
+
<div className="mt-8 flex flex-col gap-y-4 md:flex-row md:gap-x-8">
|
|
386
|
+
{QUAL_ITEMS.map((item, i) => (
|
|
387
|
+
<div
|
|
388
|
+
key={i}
|
|
389
|
+
className="p-6 flex flex-1 gap-x-4 items-start bg-white rounded-xl shadow-lg hover:shadow-xl md:p-10"
|
|
390
|
+
>
|
|
391
|
+
<div className="h-fit flex-shrink-0 text-primary-600">
|
|
392
|
+
{item.icon}
|
|
393
|
+
</div>
|
|
394
|
+
<div className="flex flex-col gap-y-1">
|
|
395
|
+
<p className="text-xl font-medium leading-none lg:text-2xl">
|
|
396
|
+
{item.title}
|
|
397
|
+
</p>
|
|
398
|
+
<p className="text-sm text-gray-500 lg:text-base">
|
|
399
|
+
{item.desc}
|
|
400
|
+
</p>
|
|
401
|
+
</div>
|
|
402
|
+
</div>
|
|
403
|
+
))}
|
|
404
|
+
</div>
|
|
405
|
+
<div className="mt-14">
|
|
406
|
+
<Grid
|
|
407
|
+
data={gridItems}
|
|
408
|
+
hidePagination
|
|
409
|
+
loading={false}
|
|
410
|
+
customGridItems={customGridItems}
|
|
411
|
+
itemClassName="mb-5 !bg-gray-50 shadow-none w-full"
|
|
412
|
+
gridColClassName="mb-0 gap-6 grid-cols-1 sm:grid-cols-3 md:gap-8"
|
|
413
|
+
horizontalScroll
|
|
414
|
+
/>
|
|
415
|
+
</div>
|
|
416
|
+
</Container>
|
|
417
|
+
</div>
|
|
418
|
+
|
|
419
|
+
<Container bgColor="bg-gray-100" className="py-16">
|
|
420
|
+
<h2 className="text-3xl font-semibold text-primary-800 text-center md:text-5xl">
|
|
421
|
+
Why Choose Us?
|
|
422
|
+
</h2>
|
|
423
|
+
<div className="my-14 gap-y-6 grid sm:grid-cols-2 sm:gap-x-6 md:mt-20 lg:grid-cols-3 lg:gap-x-8">
|
|
424
|
+
{WHY_ITEMS.map((item, i) => (
|
|
425
|
+
<div key={i}>
|
|
426
|
+
<div className="justify-center flex">
|
|
427
|
+
<img
|
|
428
|
+
src={item.image}
|
|
429
|
+
alt={item.title}
|
|
430
|
+
className="mb-6 w-20 h-20 rounded-full object-cover md:mb-8 md:w-32 md:h-32"
|
|
431
|
+
/>
|
|
432
|
+
</div>
|
|
433
|
+
<p className="mb-2 text-xl text-primary-800 text-center font-medium md:text-2xl">
|
|
434
|
+
{item.title}
|
|
435
|
+
</p>
|
|
436
|
+
<p className="text-sm text-center md:text-base">{item.desc}</p>
|
|
437
|
+
</div>
|
|
438
|
+
))}
|
|
439
|
+
</div>
|
|
440
|
+
</Container>
|
|
441
|
+
|
|
442
|
+
<div id="calculator-section">
|
|
443
|
+
<Container bgColor="bg-white" className="py-14">
|
|
444
|
+
<div className="text-center mb-10">
|
|
445
|
+
<h2 className="text-3xl font-semibold text-primary-800 md:text-5xl">
|
|
446
|
+
Solar Savings Calculator
|
|
447
|
+
</h2>
|
|
448
|
+
<p className="mt-3 text-gray-500 text-base">
|
|
449
|
+
Estimate your savings based on your property and usage details.
|
|
450
|
+
</p>
|
|
451
|
+
</div>
|
|
452
|
+
<div className="bg-primary-900 rounded-xl px-8 py-5 mb-8">
|
|
453
|
+
<p className="text-white font-semibold text-lg">
|
|
454
|
+
Let Us Know Your Details
|
|
455
|
+
</p>
|
|
456
|
+
</div>
|
|
457
|
+
<p className="text-sm font-semibold text-gray-700 mb-4 uppercase tracking-wide">
|
|
458
|
+
B. Property Details
|
|
459
|
+
</p>
|
|
460
|
+
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4">
|
|
461
|
+
<Select
|
|
462
|
+
label="Roof Type"
|
|
463
|
+
value="option-a"
|
|
464
|
+
options={[
|
|
465
|
+
{ key: "option-a", label: "Flat Roof" },
|
|
466
|
+
{ key: "option-b", label: "Pitched Roof" },
|
|
467
|
+
{ key: "option-c", label: "Metal Roof" },
|
|
468
|
+
]}
|
|
469
|
+
/>
|
|
470
|
+
<Select
|
|
471
|
+
label="Electricity Tariff"
|
|
472
|
+
value="option-a"
|
|
473
|
+
options={[
|
|
474
|
+
{ key: "option-a", label: "Residential (TNB)" },
|
|
475
|
+
{ key: "option-b", label: "Commercial (TNB)" },
|
|
476
|
+
{ key: "option-c", label: "Industrial (TNB)" },
|
|
477
|
+
]}
|
|
478
|
+
/>
|
|
479
|
+
<Select
|
|
480
|
+
label="Grid Connection"
|
|
481
|
+
value="option-a"
|
|
482
|
+
options={[
|
|
483
|
+
{ key: "option-a", label: "Single Phase" },
|
|
484
|
+
{ key: "option-b", label: "Three Phase" },
|
|
485
|
+
]}
|
|
486
|
+
/>
|
|
487
|
+
<TextInput
|
|
488
|
+
label="Monthly Bill (RM)"
|
|
489
|
+
type="number"
|
|
490
|
+
value="500"
|
|
491
|
+
placeholder="e.g. 500"
|
|
492
|
+
/>
|
|
493
|
+
</div>
|
|
494
|
+
<div className="mt-12 mb-4 text-center">
|
|
495
|
+
<h3 className="text-2xl font-semibold text-primary-800 md:text-3xl">
|
|
496
|
+
Comparison between Solar PV System and Solar + Battery Storage
|
|
497
|
+
</h3>
|
|
498
|
+
<p className="mt-2 text-gray-500 text-sm">
|
|
499
|
+
Based on your inputs, here are the recommended options for you.
|
|
500
|
+
</p>
|
|
501
|
+
</div>
|
|
502
|
+
<Grid
|
|
503
|
+
data={PRODUCT_CARDS}
|
|
504
|
+
loading={false}
|
|
505
|
+
hidePagination
|
|
506
|
+
customGridItems={PRODUCT_GRID_ITEMS}
|
|
507
|
+
itemClassName="!bg-gray-50 shadow-none"
|
|
508
|
+
gridColClassName="gap-6 grid-cols-1 sm:grid-cols-2"
|
|
509
|
+
/>
|
|
510
|
+
</Container>
|
|
511
|
+
</div>
|
|
512
|
+
|
|
513
|
+
<div className="w-full flex flex-col bg-primary-900 lg:flex-row">
|
|
514
|
+
<div className="hidden overflow-hidden lg:w-1/2 lg:block">
|
|
515
|
+
<img
|
|
516
|
+
src="https://images.unsplash.com/photo-1508514177221-188b1cf16e9d?auto=format&fit=crop&w=800&q=80"
|
|
517
|
+
alt="how it works"
|
|
518
|
+
className="w-full h-full object-cover"
|
|
519
|
+
/>
|
|
520
|
+
</div>
|
|
521
|
+
<div className="w-full flex flex-col justify-center text-white p-8 md:p-14 lg:w-1/2">
|
|
522
|
+
<h1 className="text-2xl font-semibold mb-8 sm:text-3xl md:text-4xl">
|
|
523
|
+
How it works
|
|
524
|
+
</h1>
|
|
525
|
+
<IconList
|
|
526
|
+
iconList={HOW_IT_WORKS_STEPS.map((step) => ({
|
|
527
|
+
name: step.title,
|
|
528
|
+
content: step.description,
|
|
529
|
+
icon: step.icon,
|
|
530
|
+
}))}
|
|
531
|
+
className="text-white [&_p]:text-white [&_dd]:text-gray-200"
|
|
532
|
+
/>
|
|
533
|
+
<Button
|
|
534
|
+
text="GET A FREE QUOTE"
|
|
535
|
+
type="light"
|
|
536
|
+
size="small"
|
|
537
|
+
onClick={() => {}}
|
|
538
|
+
className="mt-8 w-full sm:w-fit"
|
|
539
|
+
/>
|
|
540
|
+
</div>
|
|
541
|
+
</div>
|
|
542
|
+
|
|
543
|
+
<Container bgColor="bg-gray-50" className="py-14">
|
|
544
|
+
<h2 className="mb-14 text-3xl font-semibold text-primary-800 text-center md:text-5xl">
|
|
545
|
+
Frequently Asked Questions (FAQ)
|
|
546
|
+
</h2>
|
|
547
|
+
<div className="bg-white rounded-3xl text-primary-900 shadow-xl">
|
|
548
|
+
<FAQContent faqList={FAQ_LIST} />
|
|
549
|
+
</div>
|
|
550
|
+
</Container>
|
|
551
|
+
|
|
552
|
+
<Container bgColor="bg-white" className="py-10">
|
|
553
|
+
<h2 className="text-3xl font-semibold text-primary-800 text-center md:text-5xl">
|
|
554
|
+
See what our customers say about us!
|
|
555
|
+
</h2>
|
|
556
|
+
<div className="mt-10">
|
|
557
|
+
<GoogleReview placeId="" minRatingScore={4} />
|
|
558
|
+
</div>
|
|
559
|
+
</Container>
|
|
560
|
+
|
|
561
|
+
<Container bgColor="bg-white" className="py-10">
|
|
562
|
+
<ActionSection
|
|
563
|
+
title="Interested to save money? Switch today!"
|
|
564
|
+
buttonText="GET A FREE QUOTE"
|
|
565
|
+
backgroundImgSrc="https://images.unsplash.com/photo-1508514177221-188b1cf16e9d?auto=format&fit=crop&w=1920&q=80"
|
|
566
|
+
backgroundImgStyle={{ bgPosition: "bottom" }}
|
|
567
|
+
onClick={() => {}}
|
|
568
|
+
/>
|
|
569
|
+
</Container>
|
|
570
|
+
|
|
571
|
+
<FooterSection
|
|
572
|
+
linkType="external"
|
|
573
|
+
caption={`© ${new Date().getFullYear()} SolarSave. All rights reserved.`}
|
|
574
|
+
footerList={[
|
|
575
|
+
{
|
|
576
|
+
title: "SolarSave",
|
|
577
|
+
subList: [
|
|
578
|
+
{ name: "About Us", link: "/about" },
|
|
579
|
+
{ name: "How It Works", link: "/how-it-works" },
|
|
580
|
+
{ name: "Terms & Conditions", link: "/terms" },
|
|
581
|
+
{ name: "Privacy Policy", link: "/privacy" },
|
|
582
|
+
],
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
title: "My Account",
|
|
586
|
+
subList: [
|
|
587
|
+
{ name: "Sign In", link: "/signIn" },
|
|
588
|
+
{ name: "FAQ", link: "/faq" },
|
|
589
|
+
],
|
|
590
|
+
},
|
|
591
|
+
]}
|
|
592
|
+
logoCloud={
|
|
593
|
+
<div>
|
|
594
|
+
<div className="flex items-center space-x-2 mb-3">
|
|
595
|
+
<span className="font-semibold text-gray-900">SolarSave</span>
|
|
596
|
+
</div>
|
|
597
|
+
<p className="text-sm text-gray-500">
|
|
598
|
+
Lorem ipsum dolor sit amet consectetur adipiscing elit.
|
|
599
|
+
</p>
|
|
600
|
+
</div>
|
|
601
|
+
}
|
|
602
|
+
/>
|
|
603
|
+
</div>
|
|
604
|
+
);
|
|
605
|
+
});
|