trepur_components 2.3.7 → 2.3.9

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 (335) hide show
  1. package/.eslintrc.cjs +33 -4
  2. package/.prettierignore +10 -0
  3. package/README.md +1 -1
  4. package/package.json +9 -5
  5. package/src/components/Accordion/Accordion.stories.tsx +21 -98
  6. package/src/components/Accordion/const.tsx +34 -0
  7. package/src/components/Accordion/index.tsx +19 -25
  8. package/src/components/AlertBar/AlertBar.stories.tsx +78 -84
  9. package/src/components/AlertBar/index.tsx +69 -100
  10. package/src/components/Avatar/Avatar.stories.tsx +2 -7
  11. package/src/components/Avatar/index.tsx +4 -7
  12. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +29 -0
  13. package/src/components/Breadcrumbs/index.tsx +89 -0
  14. package/src/components/Button/Button.stories.tsx +24 -0
  15. package/src/components/Button/index.tsx +59 -0
  16. package/src/components/Calendar/Calendar.stories.tsx +21 -0
  17. package/src/components/Calendar/index.tsx +92 -0
  18. package/src/components/Card/Card.stories.tsx +14 -0
  19. package/src/components/Card/index.tsx +39 -0
  20. package/src/components/Carousel/Carousel.stories.tsx +44 -0
  21. package/src/components/Carousel/index.tsx +301 -0
  22. package/src/components/Carousel/utils.ts +53 -0
  23. package/src/components/CarouselThumbnail/CarouselThumbnail.stories.tsx +29 -0
  24. package/src/components/CarouselThumbnail/const.ts +17 -0
  25. package/src/components/CarouselThumbnail/index.tsx +169 -0
  26. package/src/components/CarouselThumbnail/utils.ts +87 -0
  27. package/src/components/Checkbox/Checkbox.stories.tsx +27 -0
  28. package/src/components/Checkbox/index.tsx +44 -0
  29. package/src/components/Collapsible/Collapsible.stories.tsx +67 -0
  30. package/src/components/Collapsible/index.tsx +169 -0
  31. package/src/components/Counter/Counter.stories.tsx +20 -0
  32. package/src/components/Counter/index.tsx +98 -0
  33. package/src/components/DetailUpdater/DetailUpdater.stories.tsx +37 -0
  34. package/{archive → src/components}/DetailUpdater/index.tsx +20 -25
  35. package/src/components/Dialog/Dialog.stories.tsx +65 -0
  36. package/src/components/Dialog/index.tsx +29 -0
  37. package/src/components/Dropdown/Dropdown.stories.tsx +22 -0
  38. package/src/components/Dropdown/index.tsx +117 -0
  39. package/src/components/Dropdown/utils.ts +15 -0
  40. package/{archive → src/components}/FileUploader/FilePreview.tsx +11 -14
  41. package/src/components/FileUploader/FileUploader.stories.tsx +28 -0
  42. package/src/components/FileUploader/index.tsx +177 -0
  43. package/src/components/Footer/Footer.stories.tsx +47 -0
  44. package/src/components/Footer/index.tsx +96 -0
  45. package/src/components/FooterNav/FooterNav.stories.tsx +32 -0
  46. package/src/components/FooterNav/index.tsx +75 -0
  47. package/{archive → src/components}/Form/Form.stories.tsx +2 -2
  48. package/src/components/Form/index.tsx +41 -0
  49. package/src/components/Gallery/Gallery.stories.tsx +39 -0
  50. package/src/components/Gallery/index.tsx +31 -0
  51. package/src/components/Greeting/Greeting.stories.tsx +16 -0
  52. package/src/components/Greeting/index.tsx +49 -0
  53. package/src/components/HamburgerIcon/HamburgerIcon.stories.tsx +14 -0
  54. package/src/components/HamburgerIcon/index.tsx +75 -0
  55. package/src/components/Icon/Icon.stories.tsx +41 -0
  56. package/src/components/Icon/index.tsx +33 -0
  57. package/src/components/Image/Image.stories.tsx +17 -0
  58. package/src/components/Image/index.tsx +25 -0
  59. package/src/components/ImageCard/ImageCard.stories.tsx +29 -0
  60. package/src/components/ImageCard/index.tsx +75 -0
  61. package/src/components/Input/Input.stories.tsx +25 -0
  62. package/src/components/Input/index.tsx +139 -0
  63. package/{archive → src/components}/MenuButton/MenuButton.stories.tsx +2 -2
  64. package/src/components/MenuButton/index.tsx +66 -0
  65. package/{archive → src/components}/Modal/Modal.stories.tsx +4 -8
  66. package/{archive → src/components}/Modal/index.tsx +9 -12
  67. package/src/components/Nav/Nav.stories.tsx +80 -0
  68. package/src/components/Nav/index.tsx +171 -0
  69. package/src/components/NavItem/NavItem.stories.tsx +17 -0
  70. package/src/components/NavItem/index.tsx +39 -0
  71. package/src/components/Pill/Pill.stories.tsx +51 -0
  72. package/src/components/Pill/index.tsx +69 -0
  73. package/{archive → src/components}/Search/Search.stories.tsx +2 -2
  74. package/{archive → src/components}/Search/index.tsx +12 -16
  75. package/{archive → src/components}/Select/Select.stories.tsx +2 -3
  76. package/{archive → src/components}/Select/index.tsx +21 -30
  77. package/{archive → src/components}/Showcase/Showcase.stories.tsx +4 -3
  78. package/src/components/Showcase/index.tsx +62 -0
  79. package/{archive → src/components}/SideNav/SideNav.stories.tsx +2 -2
  80. package/{archive → src/components}/SideNav/index.tsx +8 -15
  81. package/{archive → src/components}/SocialButton/SocialButton.stories.tsx +2 -2
  82. package/{archive → src/components}/SocialButton/index.tsx +14 -22
  83. package/src/components/SplitCard/SplitCard.stories.tsx +34 -0
  84. package/src/components/SplitCard/index.tsx +132 -0
  85. package/src/components/Stars/Star.stories.tsx +18 -0
  86. package/src/components/Stars/index.tsx +38 -0
  87. package/src/components/Testimonial/Testimonial.stories.tsx +37 -0
  88. package/src/components/Testimonial/index.tsx +123 -0
  89. package/src/components/TextArea/TextArea.stories.tsx +24 -0
  90. package/src/components/TextArea/index.tsx +133 -0
  91. package/src/components/Timeline/Timeline.stories.tsx +45 -0
  92. package/src/components/Timeline/index.tsx +65 -0
  93. package/src/components/Tubestops/Tubestops.stories.tsx +22 -0
  94. package/src/components/Tubestops/index.tsx +132 -0
  95. package/src/components/Video/Video.stories.tsx +58 -0
  96. package/src/components/Video/assets/example.mp4 +0 -0
  97. package/src/components/Video/assets/example.ogv +0 -0
  98. package/src/components/Video/assets/example.webm +0 -0
  99. package/src/components/Video/index.tsx +92 -0
  100. package/src/components/index.ts +66 -112
  101. package/src/custom.d.ts +14 -0
  102. package/src/documentation/Colours.mdx +34 -34
  103. package/src/documentation/Introduction.mdx +9 -5
  104. package/src/documentation/assets/index.ts +3 -0
  105. package/src/documentation/assets/trepurComponentsLogo.svg +32 -0
  106. package/src/documentation/typography/Fonts/Fonts.stories.tsx +14 -0
  107. package/src/documentation/typography/Fonts/Fonts.tsx +73 -0
  108. package/src/styles/global.css +1 -1
  109. package/src/styles/themes/local.css +91 -39
  110. package/src/styles/themes/test.css +28 -0
  111. package/src/utils/screens.ts +1 -1
  112. package/tailwind/colors.ts +53 -385
  113. package/tailwind/preset.ts +4 -0
  114. package/tailwind.config.ts +12 -80
  115. package/tsconfig.json +8 -2
  116. package/archive/Breadcrumbs/Breadcrumbs.stories.tsx +0 -46
  117. package/archive/Breadcrumbs/index.tsx +0 -42
  118. package/archive/BreadcrumbsBordered/BreadcrumbsBordered.stories.tsx +0 -52
  119. package/archive/BreadcrumbsBordered/index.tsx +0 -44
  120. package/archive/BreadcrumbsItem/BreadcrumbsItem.stories.tsx +0 -40
  121. package/archive/BreadcrumbsItem/index.tsx +0 -149
  122. package/archive/Button/Button.stories.tsx +0 -150
  123. package/archive/Button/index.tsx +0 -111
  124. package/archive/Button/style.module.css +0 -76
  125. package/archive/Calendar/Calendar.stories.tsx +0 -82
  126. package/archive/Calendar/index.tsx +0 -76
  127. package/archive/Card/Card.stories.tsx +0 -75
  128. package/archive/Card/index.tsx +0 -102
  129. package/archive/Card/style.module.css +0 -75
  130. package/archive/CardWithTopImage/CardWithTopImage.stories.tsx +0 -50
  131. package/archive/CardWithTopImage/index.tsx +0 -39
  132. package/archive/CardWithTopImage/style.module.css +0 -11
  133. package/archive/Carousel/Carousel.stories.tsx +0 -451
  134. package/archive/Carousel/index.tsx +0 -388
  135. package/archive/Carousel/style.module.css +0 -99
  136. package/archive/CarouselThumbnail/CarouselThumbnail.stories.tsx +0 -350
  137. package/archive/CarouselThumbnail/index.tsx +0 -302
  138. package/archive/CarouselThumbnail/style.module.css +0 -67
  139. package/archive/Checkbox/Checkbox.stories.tsx +0 -34
  140. package/archive/Checkbox/index.tsx +0 -51
  141. package/archive/Checkbox/style.module.css +0 -15
  142. package/archive/Collapsible/Collapsible.stories.tsx +0 -67
  143. package/archive/Collapsible/index.tsx +0 -116
  144. package/archive/Collapsible/style.module.css +0 -47
  145. package/archive/Column/Column.stories.tsx +0 -89
  146. package/archive/Column/index.tsx +0 -119
  147. package/archive/Column/style.module.css +0 -151
  148. package/archive/ComponentWrapper/ComponentWrapper.stories.tsx +0 -40
  149. package/archive/ComponentWrapper/index.tsx +0 -55
  150. package/archive/ComponentWrapper/style.module.css +0 -40
  151. package/archive/Container/Container.stories.tsx +0 -40
  152. package/archive/Container/index.tsx +0 -24
  153. package/archive/Container/style.module.css +0 -4
  154. package/archive/Counter/Counter.stories.tsx +0 -19
  155. package/archive/Counter/index.tsx +0 -66
  156. package/archive/Counter/style.module.css +0 -19
  157. package/archive/DetailUpdater/DetailUpdater.stories.tsx +0 -96
  158. package/archive/DetailUpdater/style.module.css +0 -31
  159. package/archive/Dialog/Dialog.stories.tsx +0 -131
  160. package/archive/Dialog/index.tsx +0 -91
  161. package/archive/Dialog/style.module.css +0 -44
  162. package/archive/DropdownMenu/DropdownMenu.stories.tsx +0 -59
  163. package/archive/DropdownMenu/index.tsx +0 -51
  164. package/archive/DropdownMenu/style.module.css +0 -38
  165. package/archive/DynamicTextSection/DynamicTextSection.stories.tsx +0 -74
  166. package/archive/DynamicTextSection/index.tsx +0 -36
  167. package/archive/DynamicTextSection/style.module.css +0 -0
  168. package/archive/FileUploader/FileUploader.stories.tsx +0 -28
  169. package/archive/FileUploader/index.tsx +0 -135
  170. package/archive/FileUploader/style.module.css +0 -54
  171. package/archive/FilterItem/FilterItem.stories.tsx +0 -33
  172. package/archive/FilterItem/index.tsx +0 -101
  173. package/archive/FilterItem/style.module.css +0 -27
  174. package/archive/Footer/Footer.stories.tsx +0 -59
  175. package/archive/Footer/index.tsx +0 -50
  176. package/archive/Footer/style.module.css +0 -19
  177. package/archive/FooterNav/FooterNav.stories.tsx +0 -125
  178. package/archive/FooterNav/index.tsx +0 -57
  179. package/archive/FooterNav/style.module.css +0 -32
  180. package/archive/FooterNavItem/FooterNavItem.stories.tsx +0 -53
  181. package/archive/FooterNavItem/index.tsx +0 -80
  182. package/archive/FooterNavItem/style.module.css +0 -139
  183. package/archive/Form/index.tsx +0 -61
  184. package/archive/Form/style.module.css +0 -0
  185. package/archive/FyreCard/FyreCard.stories.tsx +0 -31
  186. package/archive/FyreCard/index.tsx +0 -52
  187. package/archive/FyreCard/style.module.css +0 -19
  188. package/archive/Greeting/Greeting.stories.tsx +0 -41
  189. package/archive/Greeting/index.tsx +0 -32
  190. package/archive/HamburgerIcon/HamburgerIcon.stories.tsx +0 -32
  191. package/archive/HamburgerIcon/index.tsx +0 -103
  192. package/archive/HamburgerIcon/style.module.css +0 -85
  193. package/archive/HorizontalLine/HorizontalLine.stories.tsx +0 -54
  194. package/archive/HorizontalLine/index.tsx +0 -40
  195. package/archive/HorizontalLine/style.module.css +0 -55
  196. package/archive/Icon/Icon.stories.tsx +0 -164
  197. package/archive/Icon/index.tsx +0 -115
  198. package/archive/Icon/style.module.css +0 -253
  199. package/archive/IconCard/IconCard.stories.tsx +0 -46
  200. package/archive/IconCard/index.tsx +0 -57
  201. package/archive/IconCard/style.module.css +0 -18
  202. package/archive/Image/Image.stories.tsx +0 -87
  203. package/archive/Image/index.tsx +0 -132
  204. package/archive/Image/style.module.css +0 -109
  205. package/archive/ImageInfo/ImageInfo.stories.tsx +0 -39
  206. package/archive/ImageInfo/index.tsx +0 -95
  207. package/archive/ImageInfo/style.module.css +0 -47
  208. package/archive/ImageLink/ImageLink.stories.tsx +0 -37
  209. package/archive/ImageLink/index.tsx +0 -49
  210. package/archive/ImageLink/style.module.css +0 -23
  211. package/archive/ImageLinkList/ImageLinkList.stories.tsx +0 -34
  212. package/archive/ImageLinkList/index.tsx +0 -33
  213. package/archive/ImageLinkList/style.module.css +0 -3
  214. package/archive/InformationIcon/InformationIcon.stories.tsx +0 -83
  215. package/archive/InformationIcon/index.tsx +0 -128
  216. package/archive/InformationIcon/style.module.css +0 -71
  217. package/archive/InformationIconBlock/InformationIconBlock.stories.tsx +0 -32
  218. package/archive/InformationIconBlock/index.tsx +0 -63
  219. package/archive/InformationIconBlock/style.module.css +0 -7
  220. package/archive/Input/Input.stories.tsx +0 -84
  221. package/archive/Input/index.tsx +0 -131
  222. package/archive/Input/style.module.css +0 -60
  223. package/archive/Jumbotron/Jumbotron.stories.tsx +0 -21
  224. package/archive/Jumbotron/index.tsx +0 -31
  225. package/archive/Jumbotron/style.module.css +0 -8
  226. package/archive/MenuButton/index.tsx +0 -82
  227. package/archive/MenuButton/style.module.css +0 -45
  228. package/archive/Modal/style.module.css +0 -35
  229. package/archive/NavItem/NavItem.stories.tsx +0 -90
  230. package/archive/NavItem/index.tsx +0 -65
  231. package/archive/NavItem/style.module.css +0 -71
  232. package/archive/NavOld/NavOld.stories.tsx +0 -193
  233. package/archive/NavOld/StickyNav.tsx +0 -191
  234. package/archive/NavOld/index.tsx +0 -273
  235. package/archive/NavOld/style.module.css +0 -156
  236. package/archive/NavTwo/Dropdown.tsx +0 -35
  237. package/archive/NavTwo/Nav.stories.tsx +0 -38
  238. package/archive/NavTwo/Sidebar.tsx +0 -34
  239. package/archive/NavTwo/StickyNav.tsx +0 -34
  240. package/archive/NavTwo/index.tsx +0 -45
  241. package/archive/NavTwo/style.module.css +0 -35
  242. package/archive/NewsCard/NewsCard.stories.tsx +0 -72
  243. package/archive/NewsCard/index.tsx +0 -57
  244. package/archive/NewsCard/style.module.css +0 -15
  245. package/archive/Pill/Pill.stories.tsx +0 -44
  246. package/archive/Pill/index.tsx +0 -64
  247. package/archive/Pill/style.module.css +0 -32
  248. package/archive/ProductCard/ProductCard.stories.tsx +0 -61
  249. package/archive/ProductCard/index.tsx +0 -111
  250. package/archive/ProductCard/style.module.css +0 -53
  251. package/archive/ProductCardV2/ProductCardV2.stories.tsx +0 -50
  252. package/archive/ProductCardV2/index.tsx +0 -119
  253. package/archive/ProductCardV2/style.module.css +0 -59
  254. package/archive/Proficiencies/Proficiencies.stories.tsx +0 -50
  255. package/archive/Proficiencies/index.tsx +0 -63
  256. package/archive/Proficiencies/style.module.css +0 -31
  257. package/archive/Profile/Profile.stories.tsx +0 -49
  258. package/archive/Profile/index.tsx +0 -103
  259. package/archive/Profile/style.module.css +0 -47
  260. package/archive/Row/Row.stories.tsx +0 -53
  261. package/archive/Row/index.tsx +0 -23
  262. package/archive/Row/style.module.css +0 -3
  263. package/archive/Search/style.module.css +0 -23
  264. package/archive/Select/style.module.css +0 -52
  265. package/archive/Showcase/index.tsx +0 -75
  266. package/archive/Showcase/style.module.css +0 -47
  267. package/archive/SideNav/style.module.css +0 -43
  268. package/archive/SocialBlock/SocialBlock.stories.tsx +0 -58
  269. package/archive/SocialBlock/index.tsx +0 -63
  270. package/archive/SocialButton/style.module.css +0 -77
  271. package/archive/StarRating/StarRating.stories.tsx +0 -23
  272. package/archive/StarRating/index.tsx +0 -71
  273. package/archive/Testimonial/Testimonial.stories.tsx +0 -110
  274. package/archive/Testimonial/index.tsx +0 -61
  275. package/archive/Testimonial/style.module.css +0 -27
  276. package/archive/TextAndTitle/TextAndTitle.stories.tsx +0 -70
  277. package/archive/TextAndTitle/index.tsx +0 -123
  278. package/archive/TextAndTitle/style.module.css +0 -75
  279. package/archive/TextArea/TextArea.stories.tsx +0 -55
  280. package/archive/TextArea/index.tsx +0 -125
  281. package/archive/TextArea/style.module.css +0 -60
  282. package/archive/Timeline/Timeline.stories.tsx +0 -92
  283. package/archive/Timeline/index.tsx +0 -254
  284. package/archive/Timeline/style.module.css +0 -134
  285. package/archive/TimelineV2/TimelineV2.stories.tsx +0 -95
  286. package/archive/TimelineV2/index.tsx +0 -70
  287. package/archive/TimelineV2/style.module.css +0 -28
  288. package/archive/Tubestops/Tubestops.stories.tsx +0 -42
  289. package/archive/Tubestops/index.tsx +0 -58
  290. package/archive/Tubestops/style.module.css +0 -54
  291. package/archive/UserIcon/UserIcon.stories.tsx +0 -52
  292. package/archive/UserIcon/index.tsx +0 -46
  293. package/archive/UserIcon/style.module.css +0 -19
  294. package/archive/Video/Video.stories.tsx +0 -23
  295. package/archive/Video/index.tsx +0 -47
  296. package/archive/theme.ts +0 -39
  297. package/archive/typography/Fonts/Fonts.stories.tsx +0 -14
  298. package/archive/typography/Fonts/Fonts.tsx +0 -181
  299. package/lib/components/Accordion/Accordion.stories.d.ts +0 -94
  300. package/lib/components/Accordion/index.d.ts +0 -8
  301. package/lib/components/Accordion/index.js +0 -15
  302. package/lib/components/AlertBar/AlertBar.stories.d.ts +0 -162
  303. package/lib/components/AlertBar/index.d.ts +0 -12
  304. package/lib/components/AlertBar/index.js +0 -49
  305. package/lib/components/Avatar/Avatar.stories.d.ts +0 -44
  306. package/lib/components/Avatar/index.d.ts +0 -4
  307. package/lib/components/index.d.ts +0 -4
  308. package/lib/index.d.ts +0 -1
  309. package/lib/index.js +0 -6
  310. package/lib/styles/global.css +0 -75
  311. package/lib/styles/themes/local.css +0 -40
  312. package/lib/styles/themes/palette.css +0 -131
  313. package/lib/tailwind/boxShadow.ts +0 -9
  314. package/lib/tailwind/colors.ts +0 -410
  315. package/lib/tailwind/container.ts +0 -11
  316. package/lib/tailwind/preset.ts +0 -88
  317. package/lib/tailwind/spacing.ts +0 -14
  318. package/lib/utils/controls.d.ts +0 -36
  319. package/lib/utils/matchMedia.d.ts +0 -2
  320. package/lib/utils/screens.d.ts +0 -7
  321. package/src/styles/themes/palette.css +0 -131
  322. package/svg.d.ts +0 -4
  323. /package/{archive → src/components}/Calendar/style.css +0 -0
  324. /package/{archive → src/components}/Checkbox/Checkbox.mdx +0 -0
  325. /package/{archive → src}/fonts/Sora/OFL.txt +0 -0
  326. /package/{archive → src}/fonts/Sora/README.txt +0 -0
  327. /package/{archive → src}/fonts/Sora/Sora-VariableFont_wght.ttf +0 -0
  328. /package/{archive → src}/fonts/Sora/static/Sora-Bold.ttf +0 -0
  329. /package/{archive → src}/fonts/Sora/static/Sora-ExtraBold.ttf +0 -0
  330. /package/{archive → src}/fonts/Sora/static/Sora-ExtraLight.ttf +0 -0
  331. /package/{archive → src}/fonts/Sora/static/Sora-Light.ttf +0 -0
  332. /package/{archive → src}/fonts/Sora/static/Sora-Medium.ttf +0 -0
  333. /package/{archive → src}/fonts/Sora/static/Sora-Regular.ttf +0 -0
  334. /package/{archive → src}/fonts/Sora/static/Sora-SemiBold.ttf +0 -0
  335. /package/{archive → src}/fonts/Sora/static/Sora-Thin.ttf +0 -0
@@ -1,11 +1,10 @@
1
- import React, { useState } from 'react';
1
+ import { useState } from 'react';
2
2
 
3
- import Icon from '@components/Icon';
3
+ import { Icon } from '@components/Icon';
4
+ import { faChevronDown } from '@fortawesome/fontawesome-free-solid';
4
5
  import classNames from 'classnames';
5
6
 
6
-
7
-
8
- interface Props {
7
+ export interface SelectProps {
9
8
  id?: string;
10
9
  className?: string;
11
10
  options: string[];
@@ -16,7 +15,7 @@ interface Props {
16
15
  required?: boolean;
17
16
  }
18
17
 
19
- const Select: React.FC<Props> = ({
18
+ export const Select = ({
20
19
  id,
21
20
  className,
22
21
  options,
@@ -25,7 +24,7 @@ const Select: React.FC<Props> = ({
25
24
  onClick,
26
25
  required = false,
27
26
  fullWidth = false,
28
- }) => {
27
+ }: SelectProps) => {
29
28
  const [showDropDown, setShowDropDown] = useState(false);
30
29
  const [activeValue, setActiveValue] = useState(
31
30
  value !== undefined ? value : options?.[0],
@@ -38,23 +37,22 @@ const Select: React.FC<Props> = ({
38
37
  };
39
38
 
40
39
  const fullWidthClasses = classNames({
41
- [style.fullWidth]: fullWidth,
42
- [style.notFullWidth]: !fullWidth,
40
+ 'w-full': fullWidth,
41
+ 'sm:w-72': !fullWidth,
43
42
  });
44
43
 
45
44
  const headerClassList = classNames(
46
45
  fullWidthClasses,
47
- style.classList,
48
46
  className,
49
- 'theme-local',
47
+ 'w-full rounded-xl bg-white shadow drop-shadow flex cursor-pointer flex-row justify-between px-4',
50
48
  );
51
49
 
52
50
  const dropdownClassList = classNames(
53
51
  fullWidthClasses,
54
- style.optionList,
55
- 'theme-local',
52
+ 'absolute w-full bg-white mt-2 rounded-2xl py-4 shadow-xl border border-lightest-grey h-64 overflow-scroll',
56
53
  );
57
- const dropdownItemClassList = classNames(style.option, 'theme-local');
54
+ const dropdownItemClassList =
55
+ 'bg-white text-ink hover:bg-lightest-grey hover:cursor-pointer px-4 py-2';
58
56
 
59
57
  return (
60
58
  <>
@@ -65,24 +63,19 @@ const Select: React.FC<Props> = ({
65
63
  setShowDropDown(!showDropDown);
66
64
  }}
67
65
  >
68
- <div className={style.labelContainer}>
69
- <div className={style.labelWrapper}>
70
- <p className={style.label}>{label}</p>
71
- {required && <p className={style.required}>&nbsp;*</p>}
66
+ <div className="flex flex-col">
67
+ <div className="absolute mt-2 flex bg-white text-xs font-thin">
68
+ <p>{label}</p>
69
+ {required && <p className="font-semiBold text-error">&nbsp;*</p>}
72
70
  </div>
73
- <p className={style.value}>{activeValue}</p>
71
+ <p className="border-ink text-ink flex justify-between rounded-xl bg-white pb-1 pt-6">
72
+ {activeValue}
73
+ </p>
74
74
  </div>
75
- <Icon
76
- className={style.icon}
77
- bgColour="white"
78
- colour="ink"
79
- hoverBgColour="white"
80
- hoverColour="ink"
81
- type="chevron-down"
82
- />
75
+ <Icon colour="ink" icon={faChevronDown} />
83
76
  </div>
84
77
  {showDropDown && (
85
- <div className={classNames(style.dropdownWrapper, fullWidthClasses)}>
78
+ <div className={classNames('relative z-20', fullWidthClasses)}>
86
79
  <ul className={dropdownClassList}>
87
80
  {options?.map((option: string, i) => (
88
81
  <li
@@ -102,5 +95,3 @@ const Select: React.FC<Props> = ({
102
95
  </>
103
96
  );
104
97
  };
105
-
106
- export default Select;
@@ -1,8 +1,9 @@
1
+ import { faChevronDown } from '@fortawesome/fontawesome-free-solid';
1
2
  import { action } from '@storybook/addon-actions';
2
3
  import { Meta, StoryObj } from '@storybook/react';
3
4
  import { idAndClassName } from '@utils/controls';
4
5
 
5
- import Showcase from '.';
6
+ import { Showcase } from '.';
6
7
 
7
8
  const meta = {
8
9
  title: 'Components/Showcase',
@@ -17,7 +18,7 @@ const meta = {
17
18
  bgColour: 'white',
18
19
  size: 'large',
19
20
  iconProps: {
20
- type: 'chevron-down',
21
+ icon: faChevronDown,
21
22
  onClick: action('Icon click'),
22
23
  },
23
24
  },
@@ -25,6 +26,6 @@ const meta = {
25
26
 
26
27
  export default meta;
27
28
 
28
- type Story = StoryObj<typeof meta>;
29
+ type Story = StoryObj<typeof Showcase>;
29
30
 
30
31
  export const Default: Story = {};
@@ -0,0 +1,62 @@
1
+ import { Avatar } from '@components/Avatar';
2
+ import { Icon, IconProps } from '@components/Icon';
3
+ import { Colours } from '@utils/controls';
4
+ import classNames from 'classnames';
5
+
6
+ export interface Props {
7
+ id: string;
8
+ className?: string;
9
+ title: string;
10
+ subTitle: string;
11
+ description: string;
12
+ bgColour?: Colours;
13
+ image: string;
14
+ size?: 'small' | 'medium' | 'large';
15
+ iconProps?: IconProps;
16
+ }
17
+
18
+ export const Showcase = ({
19
+ id,
20
+ className,
21
+ title,
22
+ subTitle,
23
+ description,
24
+ bgColour,
25
+ size = 'large',
26
+ iconProps,
27
+ }: Props) => {
28
+ const classList = className;
29
+
30
+ const containerSize = classNames(
31
+ {
32
+ 'h-56': size === 'small',
33
+ 'h-96': size === 'medium',
34
+ 'min-h-[calc(100vh-176px)]': size === 'large',
35
+ },
36
+ 'flex flex-wrap text-center md:flex-nowrap md:text-left',
37
+ );
38
+
39
+ return (
40
+ <div>
41
+ <div className={containerSize}>
42
+ <div className="m-auto w-full md:w-2/3 md:pl-16 md:pr-4 lg:pl-32 lg:pr-8 xl:pl-64">
43
+ <h2 className="md:text-xxl text-lg font-bold leading-tight text-primary">
44
+ {title}
45
+ </h2>
46
+ <h2 className="md:text-xxl text-lg font-bold leading-tight text-black">
47
+ {subTitle}
48
+ </h2>
49
+ <p className="md:text-md pt-4 text-sm text-black">{description}</p>
50
+ </div>
51
+ <div className="m-auto flex w-full justify-center md:w-1/3 md:pb-20">
52
+ <Avatar />
53
+ </div>
54
+ </div>
55
+ {iconProps?.icon && (
56
+ <div className="flex justify-center">
57
+ <Icon {...iconProps} size="2x" icon={iconProps.icon} />
58
+ </div>
59
+ )}
60
+ </div>
61
+ );
62
+ };
@@ -1,7 +1,7 @@
1
1
  import { Meta, StoryObj } from '@storybook/react';
2
2
  import { idAndClassName } from '@utils/controls';
3
3
 
4
- import SideNav from '.';
4
+ import { SideNav } from '.';
5
5
 
6
6
  const meta = {
7
7
  title: 'Components/SideNav',
@@ -45,6 +45,6 @@ const meta = {
45
45
 
46
46
  export default meta;
47
47
 
48
- type Story = StoryObj<typeof meta>;
48
+ type Story = StoryObj<typeof SideNav>;
49
49
 
50
50
  export const Default: Story = {};
@@ -1,10 +1,6 @@
1
- import React from 'react';
2
-
3
1
  import { type Colours } from '@utils/controls';
4
2
  import classNames from 'classnames';
5
3
 
6
-
7
-
8
4
  export interface Props {
9
5
  id: string;
10
6
  className: string;
@@ -15,25 +11,24 @@ export interface Props {
15
11
  leftExpand?: boolean;
16
12
  }
17
13
 
18
- const SideNav = ({
14
+ export const SideNav = ({
19
15
  id,
20
16
  className,
21
17
  children,
22
18
  bgColour = 'primary',
23
19
  showNav = false,
24
20
  leftExpand = true,
25
- }: Props): JSX.Element => {
21
+ }: Props) => {
26
22
  const sideNavClasses = classNames(
27
23
  {
28
- [style.sideBarCollapsed]: !showNav,
29
- [style.sideBarExpanded]: showNav,
30
- [style.leftExpand]: leftExpand,
31
- [style.rightExpand]: !leftExpand,
24
+ 'w-0': !showNav,
25
+ 'w-full sm:w-1/3': showNav,
26
+ 'left-0': leftExpand,
27
+ 'right-0': !leftExpand,
32
28
  },
33
- style[bgColour],
34
- style.sideNavClassList,
29
+
35
30
  className,
36
- 'theme-local',
31
+ 'absolute z-50 h-full overflow-hidden duration-700',
37
32
  );
38
33
 
39
34
  return (
@@ -42,5 +37,3 @@ const SideNav = ({
42
37
  </div>
43
38
  );
44
39
  };
45
-
46
- export default SideNav;
@@ -2,7 +2,7 @@ import { action } from '@storybook/addon-actions';
2
2
  import { Meta, StoryObj } from '@storybook/react';
3
3
  import { idAndClassName } from '@utils/controls';
4
4
 
5
- import SocialButton from '.';
5
+ import { SocialButton } from '.';
6
6
 
7
7
  const meta = {
8
8
  title: 'Components/SocialButton',
@@ -83,6 +83,6 @@ const meta = {
83
83
 
84
84
  export default meta;
85
85
 
86
- type Story = StoryObj<typeof meta>;
86
+ type Story = StoryObj<typeof SocialButton>;
87
87
 
88
88
  export const Default: Story = {};
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
2
 
3
- import Icon from '@components/Icon';
4
- import { Colours, SocialTypes } from '@utils/controls';
3
+ import { Icon } from '@components/Icon';
4
+ import { faStar } from '@fortawesome/fontawesome-free-solid';
5
+ import { type Colours, type SocialTypes } from '@utils/controls';
5
6
  import classNames from 'classnames';
6
7
 
7
-
8
-
9
8
  export interface Props {
10
9
  id?: string;
11
10
  className?: string;
@@ -15,14 +14,14 @@ export interface Props {
15
14
  openInNewTab?: boolean;
16
15
  }
17
16
 
18
- const SocialButton = ({
17
+ export const SocialButton = ({
19
18
  id,
20
19
  className,
21
20
  onClick,
22
21
  type = 'facebook',
23
22
  href,
24
23
  openInNewTab = false,
25
- }: Props): JSX.Element => {
24
+ }: Props) => {
26
25
  const getColours = (type: Colours): Colours => {
27
26
  const typeString: string = type;
28
27
  const colour: string = `interactive-${typeString}`;
@@ -30,10 +29,14 @@ const SocialButton = ({
30
29
  };
31
30
 
32
31
  const classList = classNames(
33
- style.classList,
34
- style[type],
32
+ 'flex h-16 w-16 transform rounded-full duration-500',
35
33
  className,
36
- 'theme-local',
34
+ {
35
+ 'bg-facebook hover:bg-interactive-facebook': type === 'facebook',
36
+ 'bg-github hover:bg-interactive-github': type === 'github',
37
+ '': type === 'instagram',
38
+ 'bg-linkedin hover:bg-interactive-linkedin': type === 'linkedin',
39
+ },
37
40
  );
38
41
 
39
42
  const iconType = {
@@ -46,26 +49,15 @@ const SocialButton = ({
46
49
  const typeString: string = type.toString();
47
50
  return (
48
51
  <a
49
- className={style.anchor}
52
+ className="rounded-full"
50
53
  href={href}
51
54
  aria-label={`view me on ${typeString}`}
52
55
  onClick={onClick}
53
56
  {...(openInNewTab && { target: '_blank' })}
54
57
  >
55
58
  <div id={id} className={classList}>
56
- <Icon
57
- type={iconType[type]}
58
- className="mx-auto my-auto"
59
- size={2}
60
- brand
61
- rounded
62
- bgColour={type}
63
- colour="white"
64
- hoverBgColour={getColours(type as Colours)}
65
- />
59
+ <Icon icon={faStar} size="2x" colour="white" />
66
60
  </div>
67
61
  </a>
68
62
  );
69
63
  };
70
-
71
- export default SocialButton;
@@ -0,0 +1,34 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { SplitCard } from '.';
4
+ import { Image } from '..';
5
+
6
+ const meta = {
7
+ title: 'V2Components/Split Card',
8
+ component: SplitCard,
9
+ args: {
10
+ className: 'bg-info-light',
11
+ swapDesktop: true,
12
+ swapMobile: true,
13
+ children: [
14
+ <SplitCard.LeftContent>
15
+ <Image src="https://picsum.photos/200/200" />
16
+ </SplitCard.LeftContent>,
17
+ <SplitCard.RightContent className="flex flex-col justify-center p-8">
18
+ <SplitCard.Title>This is a title</SplitCard.Title>
19
+ <SplitCard.Text>
20
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus
21
+ non reprehenderit quaerat unde eius quisquam enim distinctio tempora
22
+ animi, rerum exercitationem asperiores, consequuntur fuga ex
23
+ cupiditate? Cumque laudantium laborum numquam!
24
+ </SplitCard.Text>
25
+ </SplitCard.RightContent>,
26
+ ],
27
+ },
28
+ } satisfies Meta<typeof SplitCard>;
29
+
30
+ export default meta;
31
+
32
+ type Story = StoryObj<typeof SplitCard>;
33
+
34
+ export const Default: Story = {};
@@ -0,0 +1,132 @@
1
+ import {
2
+ createContext,
3
+ forwardRef,
4
+ HTMLAttributes,
5
+ useContext,
6
+ useMemo,
7
+ } from 'react';
8
+
9
+ import MatchMedia from '@utils/matchMedia';
10
+ import { Screens } from '@utils/screens';
11
+ import clsx from 'clsx';
12
+
13
+ export interface SplitCardContextProps {
14
+ swapDesktop?: boolean;
15
+ swapMobile?: boolean;
16
+ isMd?: boolean;
17
+ }
18
+
19
+ const SplitCardContext = createContext<SplitCardContextProps | null>(null);
20
+
21
+ const SplitCardComponent = forwardRef<
22
+ HTMLDivElement,
23
+ HTMLAttributes<HTMLDivElement> & SplitCardContextProps
24
+ >(({ id, className, children, swapDesktop, swapMobile, ...props }, ref) => {
25
+ const mediumScreen: string = Screens.md;
26
+ const mdScreenSize: string = `(min-width: ${mediumScreen})`;
27
+ const isMd: boolean = MatchMedia(mdScreenSize);
28
+
29
+ const state = useMemo(
30
+ () => ({
31
+ swapDesktop,
32
+ swapMobile,
33
+ isMd,
34
+ }),
35
+ [swapDesktop, swapMobile, isMd],
36
+ );
37
+
38
+ return (
39
+ <SplitCardContext.Provider value={state}>
40
+ <div
41
+ ref={ref}
42
+ {...props}
43
+ className={clsx('grid grid-cols-1 md:grid-cols-2', className)}
44
+ >
45
+ {children}
46
+ </div>
47
+ </SplitCardContext.Provider>
48
+ );
49
+ });
50
+
51
+ const SplitCardLeftContent = forwardRef<
52
+ HTMLDivElement,
53
+ HTMLAttributes<HTMLDivElement>
54
+ >(({ className, children, ...props }, ref) => {
55
+ const { swapDesktop, swapMobile, isMd } = useContext(SplitCardContext) || {};
56
+
57
+ return (
58
+ <div
59
+ ref={ref}
60
+ {...props}
61
+ className={clsx(
62
+ 'flex h-full items-center text-center',
63
+ {
64
+ 'md:order-last': swapDesktop,
65
+ 'order-last': !isMd && swapMobile,
66
+ },
67
+ className,
68
+ )}
69
+ >
70
+ {children}
71
+ </div>
72
+ );
73
+ });
74
+
75
+ const SplitCardRightContent = forwardRef<
76
+ HTMLDivElement,
77
+ HTMLAttributes<HTMLDivElement>
78
+ >(({ className, children, ...props }, ref) => {
79
+ const { swapDesktop, swapMobile, isMd } = useContext(SplitCardContext) || {};
80
+
81
+ return (
82
+ <div
83
+ ref={ref}
84
+ {...props}
85
+ className={clsx(
86
+ 'flex h-full items-center text-center',
87
+ {
88
+ 'md:order-first': swapDesktop,
89
+ 'order-first': !isMd && swapMobile,
90
+ },
91
+ className,
92
+ )}
93
+ >
94
+ {children}
95
+ </div>
96
+ );
97
+ });
98
+
99
+ const SplitCardTitle = forwardRef<
100
+ HTMLParagraphElement,
101
+ HTMLAttributes<HTMLParagraphElement>
102
+ >(({ id, children, ...props }, ref) => {
103
+ return (
104
+ <p ref={ref} className="items-center" {...props}>
105
+ {children}
106
+ </p>
107
+ );
108
+ });
109
+
110
+ const SplitCardText = forwardRef<
111
+ HTMLParagraphElement,
112
+ HTMLAttributes<HTMLParagraphElement>
113
+ >(({ id, children, ...props }, ref) => {
114
+ return (
115
+ <p ref={ref} className="" {...props}>
116
+ {children}
117
+ </p>
118
+ );
119
+ });
120
+
121
+ SplitCardComponent.displayName = 'SplitCard';
122
+ SplitCardLeftContent.displayName = 'SplitCard.LeftContent';
123
+ SplitCardRightContent.displayName = 'SplitCard.RightContent';
124
+
125
+ const SplitCard = Object.assign(SplitCardComponent, {
126
+ LeftContent: SplitCardLeftContent,
127
+ RightContent: SplitCardRightContent,
128
+ Title: SplitCardTitle,
129
+ Text: SplitCardText,
130
+ });
131
+
132
+ export { SplitCard };
@@ -0,0 +1,18 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { Stars } from '.';
4
+
5
+ const meta = {
6
+ title: 'V2Components/Stars',
7
+ component: Stars,
8
+ args: {
9
+ stars: 3,
10
+ size: '2x',
11
+ },
12
+ } satisfies Meta<typeof Stars>;
13
+
14
+ export default meta;
15
+
16
+ type Story = StoryObj<typeof Stars>;
17
+
18
+ export const Default: Story = {};
@@ -0,0 +1,38 @@
1
+ import { forwardRef, HTMLAttributes } from 'react';
2
+
3
+ import { Icon } from '@components/Icon';
4
+ import { faStar } from '@fortawesome/fontawesome-free-solid';
5
+ import { SizeProp } from '@fortawesome/fontawesome-svg-core';
6
+ import clsx from 'clsx';
7
+
8
+ export interface StarProps {
9
+ stars?: 1 | 2 | 3 | 4 | 5;
10
+ size?: SizeProp;
11
+ }
12
+
13
+ const StarComponent = forwardRef<
14
+ HTMLDivElement,
15
+ HTMLAttributes<HTMLDivElement> & StarProps
16
+ >(({ className, stars = 0, size }, ref) => {
17
+ const getStarsChecked = () =>
18
+ [...Array(5)].map((_, i) => (
19
+ <Icon
20
+ className={i < stars ? 'text-star' : ''}
21
+ key={`checked_star_${i}`}
22
+ icon={faStar}
23
+ size="2x"
24
+ />
25
+ ));
26
+
27
+ return (
28
+ <div ref={ref} className={clsx('flex', className)}>
29
+ {getStarsChecked()}
30
+ </div>
31
+ );
32
+ });
33
+
34
+ StarComponent.displayName = 'Stars';
35
+
36
+ const Stars = Object.assign(StarComponent);
37
+
38
+ export { Stars };
@@ -0,0 +1,37 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { Testimonial } from '.';
4
+
5
+ const meta = {
6
+ title: 'V2Components/Testimonial',
7
+ component: Testimonial,
8
+ args: {
9
+ children: [
10
+ <Testimonial.Image src="https://picsum.photos/100/100" />,
11
+ <Testimonial.Title>This is a title</Testimonial.Title>,
12
+ <Testimonial.Section>
13
+ <Testimonial.Position>Position</Testimonial.Position>
14
+ <Testimonial.Date>This is a date</Testimonial.Date>
15
+ </Testimonial.Section>,
16
+ <Testimonial.Text>
17
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Facere delectus
18
+ soluta voluptas, minus sequi fuga facilis rem animi reprehenderit iusto
19
+ recusandae. Accusantium porro possimus id quas quis a soluta cum. Lorem,
20
+ ipsum dolor sit amet consectetur adipisicing elit. Facere odit rem quam
21
+ ullam! Ipsam dolorem libero exercitationem odio atque itaque
22
+ repudiandae? Amet est exercitationem quas iusto magni quod, molestiae
23
+ eaque. Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae
24
+ fuga quibusdam minima assumenda. Culpa ab ea sit molestias aspernatur
25
+ enim ducimus quis consequatur? Ab officiis, sequi reiciendis eos quaerat
26
+ quisquam?
27
+ </Testimonial.Text>,
28
+ <Testimonial.AuthorDetails>Authors Name</Testimonial.AuthorDetails>,
29
+ ],
30
+ },
31
+ } satisfies Meta<typeof Testimonial>;
32
+
33
+ export default meta;
34
+
35
+ type Story = StoryObj<typeof Testimonial>;
36
+
37
+ export const Default: Story = {};