@agilant/toga-blox 1.0.5

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.
Files changed (138) hide show
  1. package/Dockerfile +9 -0
  2. package/README.md +69 -0
  3. package/assets/Logo.png +0 -0
  4. package/assets/compass-card-image-2.png +0 -0
  5. package/assets/compass-card-image-3.png +0 -0
  6. package/assets/compass-card-image-4.png +0 -0
  7. package/assets/compass-card-image.png +0 -0
  8. package/assets/compass-logo.png +0 -0
  9. package/assets/compass-tech-hero-bg.png +0 -0
  10. package/assets/contact-image.png +0 -0
  11. package/assets/green-laptop.png +0 -0
  12. package/assets/heroImage.png +0 -0
  13. package/assets/placeholder-no-image-available.png +0 -0
  14. package/assets/team.png +0 -0
  15. package/declarations.d.ts +4 -0
  16. package/docker-compose.yml +22 -0
  17. package/global.css +4 -0
  18. package/index.js +4 -0
  19. package/nodemon.json +5 -0
  20. package/package.json +70 -0
  21. package/postcss.config.js +6 -0
  22. package/src/components/Badge/Badge.stories.tsx +284 -0
  23. package/src/components/Badge/Badge.test.tsx +185 -0
  24. package/src/components/Badge/Badge.tsx +137 -0
  25. package/src/components/Badge/Badge.types.tsx +28 -0
  26. package/src/components/Badge/badgeClassNames.tsx +152 -0
  27. package/src/components/Badge/index.ts +2 -0
  28. package/src/components/Card/Card.stories.tsx +91 -0
  29. package/src/components/Card/Card.test.tsx +53 -0
  30. package/src/components/Card/Card.tsx +30 -0
  31. package/src/components/Card/Card.types.ts +11 -0
  32. package/src/components/Card/DUMMYPRODUCTDATA.json +670 -0
  33. package/src/components/Card/cardClassNames.ts +49 -0
  34. package/src/components/Card/index.ts +3 -0
  35. package/src/components/Card/templates/CompassCardTemplate.tsx +58 -0
  36. package/src/components/Card/templates/HorizontalCardTemplate.tsx +184 -0
  37. package/src/components/Card/templates/VerticalCardTemplate.tsx +154 -0
  38. package/src/components/Footer/ContactInfoItem.tsx +20 -0
  39. package/src/components/Footer/DUMMYFOOTERDATA.json +132 -0
  40. package/src/components/Footer/Footer.stories.tsx +292 -0
  41. package/src/components/Footer/Footer.test.tsx +90 -0
  42. package/src/components/Footer/Footer.tsx +159 -0
  43. package/src/components/Footer/Footer.types.tsx +61 -0
  44. package/src/components/Footer/footerClassNames.tsx +57 -0
  45. package/src/components/FormButton/FormButton.stories.tsx +199 -0
  46. package/src/components/FormButton/FormButton.test.tsx +73 -0
  47. package/src/components/FormButton/FormButton.tsx +116 -0
  48. package/src/components/FormButton/FormButton.types.ts +32 -0
  49. package/src/components/FormButton/formButtonClassNames.tsx +153 -0
  50. package/src/components/FormButton/index.ts +2 -0
  51. package/src/components/GenericList/DUMMYLISTDATA.json +560 -0
  52. package/src/components/GenericList/GenericList.stories.tsx +104 -0
  53. package/src/components/GenericList/GenericList.test.tsx +29 -0
  54. package/src/components/GenericList/GenericList.tsx +146 -0
  55. package/src/components/GenericList/genericListClassNames.tsx +8 -0
  56. package/src/components/GenericList/templates/DummyDataList.tsx +23 -0
  57. package/src/components/GenericList/templates/DynamicIconList.tsx +74 -0
  58. package/src/components/HamburgerButton/HamburgerButton.tsx +68 -0
  59. package/src/components/HamburgerButton/HamburgerButton.types.tsx +6 -0
  60. package/src/components/HamburgerButton/index.ts +2 -0
  61. package/src/components/Header/DUMMYICONDATA.json +136 -0
  62. package/src/components/Header/Header.stories.tsx +521 -0
  63. package/src/components/Header/Header.test.tsx +323 -0
  64. package/src/components/Header/Header.tsx +289 -0
  65. package/src/components/Header/Header.types.ts +52 -0
  66. package/src/components/Header/headerClassNames.tsx +50 -0
  67. package/src/components/Header/headerContext.tsx +125 -0
  68. package/src/components/Header/index.ts +2 -0
  69. package/src/components/Hero/Hero.stories.tsx +69 -0
  70. package/src/components/Hero/Hero.test.tsx +109 -0
  71. package/src/components/Hero/Hero.tsx +58 -0
  72. package/src/components/Hero/Hero.types.ts +9 -0
  73. package/src/components/Hero/index.ts +2 -0
  74. package/src/components/Icon/Icon.stories.tsx +227 -0
  75. package/src/components/Icon/Icon.test.tsx +53 -0
  76. package/src/components/Icon/Icon.tsx +208 -0
  77. package/src/components/Icon/Icon.types.ts +24 -0
  78. package/src/components/Icon/iconClassNames.ts +79 -0
  79. package/src/components/Icon/index.ts +2 -0
  80. package/src/components/Image/Image.stories.tsx +79 -0
  81. package/src/components/Image/Image.test.tsx +87 -0
  82. package/src/components/Image/Image.tsx +49 -0
  83. package/src/components/Image/Image.types.ts +11 -0
  84. package/src/components/Image/index.ts +2 -0
  85. package/src/components/Input/Input.stories.tsx +651 -0
  86. package/src/components/Input/Input.test.tsx +90 -0
  87. package/src/components/Input/Input.tsx +226 -0
  88. package/src/components/Input/Input.types.ts +52 -0
  89. package/src/components/Input/InputMemoTypes.tsx +32 -0
  90. package/src/components/Input/index.ts +2 -0
  91. package/src/components/Input/inputClassNames.tsx +169 -0
  92. package/src/components/MobileMenu/MobileMenu.tsx +41 -0
  93. package/src/components/MobileMenu/MobileMenu.types.tsx +30 -0
  94. package/src/components/MobileMenu/index.ts +2 -0
  95. package/src/components/Nav/DUMMYNAVDATA.json +234 -0
  96. package/src/components/Nav/Nav.stories.tsx +181 -0
  97. package/src/components/Nav/Nav.test.tsx +89 -0
  98. package/src/components/Nav/Nav.tsx +242 -0
  99. package/src/components/Nav/Nav.types.tsx +35 -0
  100. package/src/components/Nav/index.ts +2 -0
  101. package/src/components/Nav/navClassNames.tsx +192 -0
  102. package/src/components/Page/TableDataDummy.tsx +216 -0
  103. package/src/components/Page/ViewPageTemplate.stories.tsx +546 -0
  104. package/src/components/Page/ViewPageTemplate.test.tsx +361 -0
  105. package/src/components/Page/ViewPageTemplate.tsx +10 -0
  106. package/src/components/Page/ViewPageTemplate.types.ts +6 -0
  107. package/src/components/Page/index.ts +2 -0
  108. package/src/components/PageSection/PageSection.stories.tsx +114 -0
  109. package/src/components/PageSection/PageSection.tsx +12 -0
  110. package/src/components/PageSection/PageSection.types.ts +6 -0
  111. package/src/components/PageSection/PageSections.test.tsx +88 -0
  112. package/src/components/PageSection/index.ts +2 -0
  113. package/src/components/Text/Text.stories.tsx +60 -0
  114. package/src/components/Text/Text.test.tsx +52 -0
  115. package/src/components/Text/Text.tsx +80 -0
  116. package/src/components/Text/Text.types.ts +12 -0
  117. package/src/components/Text/index.ts +2 -0
  118. package/src/components/Toaster/Toaster.stories.tsx +122 -0
  119. package/src/components/Toaster/Toaster.test.tsx +61 -0
  120. package/src/components/Toaster/Toaster.tsx +80 -0
  121. package/src/components/Toaster/Toaster.types.ts +12 -0
  122. package/src/components/Toaster/index.ts +2 -0
  123. package/src/hoc/index.ts +2 -0
  124. package/src/hoc/styling/withStoryBook.tsx +19 -0
  125. package/src/main.css +3 -0
  126. package/src/setupTests.ts +1 -0
  127. package/src/userHoc/index.ts +1 -0
  128. package/src/userHoc/withMemo.tsx +20 -0
  129. package/src/utils/assertTagName.tsx +7 -0
  130. package/src/utils/generateAccordionItem.tsx +102 -0
  131. package/src/utils/generateFooterContacts.tsx +75 -0
  132. package/src/utils/generateNavMenu.tsx +54 -0
  133. package/src/utils/generateSocialList.tsx +34 -0
  134. package/src/utils/getFontAwesomeIcon.tsx +25 -0
  135. package/src/utils/inputValidation.tsx +26 -0
  136. package/tailwind.config.js +32 -0
  137. package/tsconfig.json +25 -0
  138. package/vite.config.ts +33 -0
@@ -0,0 +1,546 @@
1
+ import { Meta, StoryFn } from "@storybook/react";
2
+ import { withStoryBook } from "../../hoc";
3
+ import Hero from "../Hero/Hero";
4
+ import PageSection from "../PageSection/PageSection";
5
+ import Badge from "../Badge/Badge";
6
+ import Text from "../Text/Text";
7
+ import Image from "../Image/Image";
8
+ import Input from "../Input/Input";
9
+ import Nav from "../Nav/Nav";
10
+ import Card from "../Card/Card";
11
+ import FormButton from "../FormButton";
12
+ import CompassCardTemplate from "../Card/templates/CompassCardTemplate";
13
+ import ViewTemplatePage from "./ViewPageTemplate";
14
+ import Footer from "../Footer/Footer";
15
+ import DUMMYICONDATA from "../Header/DUMMYICONDATA.json";
16
+ import DynamicIconList from "../GenericList/templates/DynamicIconList";
17
+ import GenericList from "../GenericList/GenericList";
18
+ import { DUMMYCOMPASSNAVDATA } from "../Nav/DUMMYNAVDATA.json";
19
+ import { DUMMYCOMPASSPRODUCTDATA } from "../Card/DUMMYPRODUCTDATA.json";
20
+ import TableDataDummy from "./TableDataDummy";
21
+ import Header from "../Header/Header";
22
+ import { getFontAwesomeIcon } from "../../utils/getFontAwesomeIcon";
23
+
24
+ // Wrap your component with the HOC
25
+ const StorybookViewTemplatePage = withStoryBook(ViewTemplatePage);
26
+
27
+ export default {
28
+ title: "Page/ViewPageTemplate",
29
+ component: ViewTemplatePage,
30
+ argTypes: {
31
+ children: {
32
+ control: {
33
+ disable: true,
34
+ },
35
+ description: "nodes that can be passed to the component",
36
+ },
37
+ },
38
+
39
+ // tags: ["autodocs"],
40
+ } as Meta;
41
+
42
+ const Template: StoryFn<typeof StorybookViewTemplatePage> = (args) => (
43
+ <StorybookViewTemplatePage
44
+ {...args}
45
+ storybookStyle={{
46
+ backgroundColor: args.bgColor,
47
+ }}
48
+ />
49
+ );
50
+
51
+ export const DefaultView = Template.bind({});
52
+ DefaultView.args = {
53
+ children: (
54
+ <div className="min-h-96 flex items-center justify-center">
55
+ <PageSection key="pageSectionTwo">{<>Default page</>}</PageSection>
56
+ </div>
57
+ ),
58
+ };
59
+
60
+ export const ViewWithHeroAndCardsWithGlassHeader = Template.bind({});
61
+ ViewWithHeroAndCardsWithGlassHeader.args = {
62
+ children: [
63
+ //the div acts as a spacer for the header because the header is fixed
64
+ <div className="h-16" key="spacer"></div>,
65
+ <div className="fixed top-0 w-full z-[1000]" key="header">
66
+ <Header
67
+ mobileLeft={true}
68
+ hasIcons={true}
69
+ hasSearchBar={true}
70
+ hasBadge={true}
71
+ hasNavItems={true}
72
+ hasMobileMenu={true}
73
+ logoBorderRadius={true}
74
+ logoHoverColor="blue"
75
+ backgroundColor="gray"
76
+ bottomBorderColor="black"
77
+ mobileOpenIcon={getFontAwesomeIcon("hamburger")}
78
+ mobileCloseIcon={getFontAwesomeIcon("x")}
79
+ mobileMenuBackground="blue"
80
+ hasMobileIcons={true}
81
+ hasMobileNavItems={true}
82
+ hasMobileBadge={false}
83
+ hasMobileSearchBar={true}
84
+ hasAnimatedHamburgerButton={true}
85
+ icons={
86
+ <GenericList
87
+ hasVirtualization={false}
88
+ listDirection="horizontal"
89
+ listType="unordered"
90
+ containerClasses=""
91
+ data={DUMMYICONDATA.DUMMYICONTOGADATA}
92
+ renderItem={(item) => <DynamicIconList item={item} />}
93
+ />
94
+ }
95
+ badge={
96
+ <Badge
97
+ type="href"
98
+ to="#"
99
+ color="blue"
100
+ hoverColor="blue"
101
+ borderColor="none"
102
+ tagStyle={false}
103
+ mobileIcon={getFontAwesomeIcon("phone")}
104
+ mobileIconLabel="Contact Us"
105
+ onClick={() => alert("Redirect to Contact Us page")}
106
+ image={
107
+ <Image
108
+ src="../../../assets/contact-image.png"
109
+ alt=""
110
+ background={false}
111
+ additionalClasses="flex justify-center w-8 h-8 max-md:hidden"
112
+ />
113
+ }
114
+ text={
115
+ <>
116
+ <Text
117
+ size="sm"
118
+ color="primary"
119
+ fontFamily="serif"
120
+ text="Contact Us"
121
+ tag="h2"
122
+ additionalClasses="pl-2 pb-0 font-bold"
123
+ />
124
+ <Text
125
+ size="xs"
126
+ color="primary"
127
+ fontFamily="serif"
128
+ text="1-800-800-8000"
129
+ tag="p"
130
+ additionalClasses="pl-2 pt-0"
131
+ />
132
+ </>
133
+ }
134
+ />
135
+ }
136
+ logo={
137
+ <Image
138
+ src="../../../assets/Logo.png"
139
+ alt="Generic Company Logo."
140
+ background={false}
141
+ additionalClasses=" w-40 p-2"
142
+ />
143
+ }
144
+ nav={
145
+ <Nav
146
+ navData={DUMMYCOMPASSNAVDATA}
147
+ navBackgroundColor={"#FFFFF"}
148
+ parentHoverBackground={"none"}
149
+ parentHoverFontColor={"black"}
150
+ parentHoverUnderline={true}
151
+ parentHoverBorderColor={"none"}
152
+ parentShape={"cornered"}
153
+ parentBackground={"none"}
154
+ parentBorderColor={"none"}
155
+ submenuBackgroundColor={"white"}
156
+ submenuHoverBackground={"blue"}
157
+ submenuHoverBorderStyle={"top-bottom"}
158
+ submenuHoverBorderColor={"blue"}
159
+ includeSubmenuImages={true}
160
+ mobileBreakpoint={"extraLarge"}
161
+ accordionParentStyle={
162
+ "cornered p-2 w-full border-b-2 border-b-blue-700 text-black"
163
+ }
164
+ accordionExpandedStyle={"pl-2 py-3"}
165
+ />
166
+ }
167
+ input={
168
+ <Input
169
+ labelVisible={false}
170
+ label={undefined}
171
+ inputType={"text"}
172
+ inputName={"search"}
173
+ borderColor="gray"
174
+ hasPlaceholder
175
+ placeholder={"Search"}
176
+ hasButton
177
+ backgroundColor="white"
178
+ additionalClasses="bg-blue-500"
179
+ button={
180
+ <FormButton
181
+ icon={getFontAwesomeIcon("search")}
182
+ color="blue"
183
+ hoverBackground="black"
184
+ hoverFontColor="white"
185
+ additionalClasses="h-full w-8 justify-center"
186
+ shape="none"
187
+ />
188
+ }
189
+ inputWidth="w-full"
190
+ />
191
+ }
192
+ />
193
+ </div>,
194
+ <Hero key="hero" textAlignment={"center"} background="image" />,
195
+ <PageSection
196
+ key="pageSectionOne"
197
+ sectionContainerClasses="flex flex-col w-full h-full bg-slate-100 p-6
198
+ justify-center items-center max-sm:p-2 max-w-pageSectionMaxWidth mx-auto"
199
+ >
200
+ <GenericList
201
+ data={DUMMYCOMPASSPRODUCTDATA}
202
+ listType="unordered"
203
+ hasVirtualization={false}
204
+ containerClasses="w-full h-[100%] grid grid-cols-4 gap-y-12 gap-x-8 max-lg:grid-cols-2 max-lg:gap-y-12 max-lg:gap-x-2 max-md:gap-12 max-sm:w-[90%] max-sm:gap-8 justify-items-center"
205
+ renderItem={(item) => (
206
+ <Card
207
+ containerClasses={
208
+ "w-full h-full shadow-md overflow-hidden rounded-md transition ease-in-out delay-150 hover:-translate-y-1 hover:scale-110 duration-300 max-lg:transition-none max-lg:hover:transform-none max-w-72"
209
+ }
210
+ cardBackgroundColor={item.cardBackgroundColor}
211
+ cardBorderRadius={item.cardBorderRadius}
212
+ cardBorderColor={item.cardBorderColor}
213
+ cardBoxShadow={item.cardBoxShadow}
214
+ key={item.id}
215
+ >
216
+ <CompassCardTemplate data={item} />
217
+ </Card>
218
+ )}
219
+ />
220
+ </PageSection>,
221
+ ],
222
+ };
223
+
224
+ export const ViewWithTable = Template.bind({});
225
+ ViewWithTable.args = {
226
+ children: [
227
+ <Hero key="hero" textAlignment={"center"} background="gradient" />,
228
+ <PageSection key="pageSectionFour">
229
+ <TableDataDummy />
230
+ </PageSection>,
231
+ ],
232
+ };
233
+
234
+ export const ViewWithTableAndTitle = Template.bind({});
235
+ ViewWithTableAndTitle.args = {
236
+ children: [
237
+ <Hero key="hero" textAlignment={"left"} background="gradient" />,
238
+ <PageSection key="37">
239
+ <Text
240
+ size={"xxxl"}
241
+ color={"black"}
242
+ text={"Staff"}
243
+ fontFamily={""}
244
+ tag="h1"
245
+ additionalClasses="font-bold"
246
+ />
247
+ </PageSection>,
248
+ <PageSection key="pageSectionFive">
249
+ <TableDataDummy />
250
+ </PageSection>,
251
+ ],
252
+ };
253
+
254
+ export const CompassPageView = Template.bind({});
255
+ CompassPageView.args = {
256
+ children: [
257
+ <div key="randomNumberOne">
258
+ <div className="h-16"></div>
259
+ <div className="fixed top-0 w-full z-[1000]">
260
+ <Header
261
+ mobileLeft={true}
262
+ icons={
263
+ <GenericList
264
+ hasVirtualization={false}
265
+ listDirection="horizontal"
266
+ containerClasses=""
267
+ listType="unordered"
268
+ data={DUMMYICONDATA.DUMMYICONCOMPASSDATA}
269
+ renderItem={(item) => (
270
+ <DynamicIconList item={item} />
271
+ )}
272
+ />
273
+ }
274
+ hasIcons={true}
275
+ hasSearchBar={true}
276
+ hasBadge={true}
277
+ hasNavItems={true}
278
+ hasMobileMenu={true}
279
+ hasAnimatedHamburgerButton={true}
280
+ logoBorderRadius={true}
281
+ logoHoverColor="green"
282
+ backgroundColor="gray"
283
+ bottomBorderColor="green"
284
+ mobileOpenIcon={getFontAwesomeIcon("hamburger")}
285
+ mobileCloseIcon={getFontAwesomeIcon("x")}
286
+ mobileMenuBackground="green"
287
+ hasMobileIcons={true}
288
+ hasMobileNavItems={true}
289
+ hasMobileBadge={false}
290
+ hasMobileSearchBar={true}
291
+ badge={
292
+ <Badge
293
+ type="href"
294
+ to="#"
295
+ color="green"
296
+ hoverColor="green"
297
+ borderColor="none"
298
+ tagStyle={false}
299
+ mobileIcon={getFontAwesomeIcon("phone")}
300
+ mobileIconLabel="Contact Us"
301
+ onClick={() => alert("Redirect to Contact Us page")}
302
+ image={
303
+ <Image
304
+ src="../../../assets/contact-image.png"
305
+ alt=""
306
+ background={false}
307
+ additionalClasses="flex justify-center w-8 h-8 max-md:hidden"
308
+ />
309
+ }
310
+ text={
311
+ <>
312
+ <Text
313
+ size="sm"
314
+ color="primary"
315
+ fontFamily="serif"
316
+ text="Contact Us"
317
+ tag="h2"
318
+ additionalClasses="pl-2 pb-0 font-bold"
319
+ />
320
+ <Text
321
+ size="xs"
322
+ color="primary"
323
+ fontFamily="serif"
324
+ text="1-800-800-8000"
325
+ tag="p"
326
+ additionalClasses="pl-2 pt-0"
327
+ />
328
+ </>
329
+ }
330
+ />
331
+ }
332
+ logo={
333
+ <Image
334
+ src="../../../assets/compass-logo.png"
335
+ alt="Generic Company Logo."
336
+ background={false}
337
+ additionalClasses=" w-40 p-2"
338
+ />
339
+ }
340
+ nav={
341
+ <Nav
342
+ navData={DUMMYCOMPASSNAVDATA}
343
+ navBackgroundColor={"#FFFFF"}
344
+ parentHoverBackground={"none"}
345
+ parentHoverFontColor={"black"}
346
+ parentHoverUnderline={true}
347
+ parentHoverBorderColor={"none"}
348
+ parentShape={"cornered"}
349
+ parentBackground={"none"}
350
+ parentBorderColor={"none"}
351
+ submenuBackgroundColor={"white"}
352
+ submenuHoverBackground={"green"}
353
+ submenuHoverBorderStyle={"top-bottom"}
354
+ submenuHoverBorderColor={"green"}
355
+ includeSubmenuImages={true}
356
+ mobileBreakpoint={"extraLarge"}
357
+ accordionParentStyle={
358
+ "cornered p-2 w-full border-b-2 border-b-teal-700 text-black"
359
+ }
360
+ accordionExpandedStyle={"pl-2 py-3"}
361
+ />
362
+ }
363
+ input={
364
+ <Input
365
+ labelVisible={false}
366
+ label={undefined}
367
+ inputType={"text"}
368
+ inputName={"search"}
369
+ borderColor="gray"
370
+ hasPlaceholder
371
+ placeholder={"Search"}
372
+ hasButton
373
+ backgroundColor="white"
374
+ additionalClasses="bg-blue-500"
375
+ button={
376
+ <FormButton
377
+ icon={getFontAwesomeIcon("search")}
378
+ color="green"
379
+ hoverBackground="black"
380
+ hoverFontColor="white"
381
+ additionalClasses="h-full w-8 justify-center"
382
+ shape="none"
383
+ />
384
+ }
385
+ inputWidth="w-full"
386
+ />
387
+ }
388
+ />
389
+ </div>
390
+ <Hero
391
+ key="hero"
392
+ textAlignment={"left"}
393
+ background="image"
394
+ src="../../../assets/compass-tech-hero-bg.png"
395
+ text={
396
+ <Text
397
+ size="xxxl"
398
+ color="white"
399
+ fontFamily="serif"
400
+ text="Equip your team with exactly what they need"
401
+ tag="h1"
402
+ additionalClasses="w-3/4 max-sm:text-xl max-sm:w-3/4"
403
+ />
404
+ }
405
+ />
406
+ <PageSection
407
+ key="pageSection"
408
+ sectionContainerClasses="w-full bg-slate-100 flex flex-col p-6
409
+ justify-center items-center h-[100%]"
410
+ >
411
+ <Text
412
+ size="xxxl"
413
+ color="black"
414
+ fontFamily="serif"
415
+ text="Kits"
416
+ tag="h2"
417
+ additionalClasses="my-4 max-sm:text-xl"
418
+ />
419
+ </PageSection>
420
+ <PageSection
421
+ key="pageSectionOne"
422
+ sectionContainerClasses="flex flex-col w-full h-full bg-slate-100 p-6
423
+ justify-center items-center max-sm:p-2 max-w-pageSectionMaxWidth mx-auto"
424
+ >
425
+ <GenericList
426
+ data={DUMMYCOMPASSPRODUCTDATA}
427
+ hasVirtualization={false}
428
+ listType="unordered"
429
+ containerClasses="w-full grid grid-cols-4 gap-y-12 gap-x-8 max-lg:grid-cols-2 max-lg:gap-y-12 max-lg:gap-x-2 max-md:gap-12 max-sm:w-[90%] max-sm:gap-8 justify-items-center"
430
+ renderItem={(item) => (
431
+ <Card
432
+ containerClasses={
433
+ "w-full h-full shadow-md overflow-hidden rounded-md transition ease-in-out delay-150 hover:-translate-y-1 hover:scale-110 duration-300 max-lg:transition-none max-lg:hover:transform-none max-w-72"
434
+ }
435
+ cardBackgroundColor={item.cardBackgroundColor}
436
+ cardBorderRadius={item.cardBorderRadius}
437
+ cardBorderColor={item.cardBorderColor}
438
+ cardBoxShadow={item.cardBoxShadow}
439
+ key={item.id}
440
+ >
441
+ <CompassCardTemplate data={item} />
442
+ </Card>
443
+ )}
444
+ />
445
+ </PageSection>
446
+ <PageSection sectionContainerClasses="flex w-full bg-yellow-400 flex p-6 justify-center items-center h-[100%] mt-6 max-sm:flex-col">
447
+ <Text
448
+ size="xl"
449
+ color="black"
450
+ fontFamily="serif"
451
+ text="Help us improve your experience:"
452
+ tag="h2"
453
+ additionalClasses="p-6 max-sm:p-2 max-sm:text-lg"
454
+ />
455
+ <FormButton
456
+ text={
457
+ <Text
458
+ size={""}
459
+ color={""}
460
+ text={"Take the Survey!"}
461
+ fontFamily={""}
462
+ />
463
+ }
464
+ color="green"
465
+ fontColor="white"
466
+ size="md"
467
+ shape="semiRounded"
468
+ borderColor="none"
469
+ hoverBackground="green"
470
+ hoverFontColor="green"
471
+ hoverBorderColor="green"
472
+ hoverUnderline={true}
473
+ onClick={() => alert("Button clicked!")}
474
+ as="a"
475
+ />
476
+ </PageSection>
477
+ <Footer
478
+ logo={
479
+ <Image
480
+ src="../../../assets/compass-logo.png"
481
+ alt="Generic Compass Logo."
482
+ background={false}
483
+ additionalClasses=" w-40 p-2"
484
+ />
485
+ }
486
+ title={
487
+ <Text
488
+ size={"xl"}
489
+ color={""}
490
+ text={"Compass Website"}
491
+ fontFamily={""}
492
+ tag={"h2"}
493
+ additionalClasses="font-bold uppercase pl-2 mt-2"
494
+ />
495
+ }
496
+ slogan={
497
+ <Text
498
+ size={"md"}
499
+ color={""}
500
+ text={"Great slogan goes here."}
501
+ fontFamily={""}
502
+ tag={"p"}
503
+ additionalClasses="pl-2"
504
+ />
505
+ }
506
+ copyRightText={
507
+ <Text
508
+ size={"md"}
509
+ color={"black"}
510
+ text="Copyright © 2024 - All right reserved by Generic Company"
511
+ fontFamily={""}
512
+ additionalClasses="text-center"
513
+ />
514
+ }
515
+ socialTitle={
516
+ <Text
517
+ size={"md"}
518
+ color={"black"}
519
+ text="Connect"
520
+ fontFamily={""}
521
+ additionalClasses="font-bold uppercase w-full"
522
+ />
523
+ }
524
+ contactTitle={
525
+ <Text
526
+ size={"md"}
527
+ color={"black"}
528
+ text="Contact Us:"
529
+ fontFamily={""}
530
+ additionalClasses="font-bold uppercase"
531
+ />
532
+ }
533
+ logoBorderRadius={true}
534
+ hasNavItems={true}
535
+ hasSocial={true}
536
+ logoHoverColor="green"
537
+ backgroundColor="green"
538
+ accordionGap="gap-1"
539
+ copyRightTextPlacement="center"
540
+ socialPlacement="center"
541
+ accordionParentStyle="border-b border-black p-2 w-full"
542
+ accordionExpandedStyle="pl-3 py-3"
543
+ />
544
+ </div>,
545
+ ],
546
+ };