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,113 +1,82 @@
1
- import { MouseEventHandler, useState } from 'react';
1
+ import { ComponentPropsWithoutRef, forwardRef, HTMLAttributes } from 'react';
2
2
 
3
- // import Icon, { type Props as iconProps } from '@components/Icon';
4
- import classNames from 'classnames';
3
+ import { PickU } from '@components/Pill';
4
+ import { faExclamation } from '@fortawesome/fontawesome-free-solid';
5
+ import { IconProp } from '@fortawesome/fontawesome-svg-core';
6
+ import clsx from 'clsx';
5
7
 
6
- export interface Props {
8
+ import { Button } from '..';
9
+ import { Icon } from '../Icon';
10
+
11
+ export interface AlertBarProps {
7
12
  id?: string;
8
13
  className?: string;
9
- type?: 'success' | 'warning' | 'error' | 'info';
10
- text?: string;
11
- // leftIconProps?: iconProps;
12
- // rightIconProps?: iconProps;
13
- textCenter?: boolean;
14
- isDismissable?: boolean;
15
- onDismissClick?: MouseEventHandler;
14
+ variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
15
+ loading?: boolean;
16
16
  }
17
17
 
18
- export const AlertBar = ({
19
- id,
20
- className,
21
- type = 'warning',
22
- text,
23
- // leftIconProps,
24
- // rightIconProps,
25
- textCenter = false,
26
- isDismissable = false,
27
- onDismissClick,
28
- }: Props): JSX.Element => {
29
- const [alertBarStatus, setAlertBarStatus] = useState({
30
- state: 'open',
31
- display: true,
32
- });
33
-
34
- // const iconLeft = leftIconProps != null && <Icon {...leftIconProps} />;
35
-
36
- // const iconRight = rightIconProps != null && <Icon {...rightIconProps} />;
37
-
38
- const bgColor = classNames({
39
- 'bg-success': type === 'success',
40
- 'bg-warning': type === 'warning',
41
- 'bg-error': type === 'error',
42
- 'bg-info-light': type === 'info',
43
- });
18
+ const AlertBarComponent = forwardRef<
19
+ HTMLDivElement,
20
+ HTMLAttributes<HTMLDivElement> & AlertBarProps
21
+ >(
22
+ (
23
+ { id, className, children, variant = 'default', loading, ...props },
24
+ ref,
25
+ ) => {
26
+ return (
27
+ <div
28
+ id={id}
29
+ className={clsx('flex w-full items-center gap-x-4 px-8 py-2', {
30
+ '': variant === 'default',
31
+ 'border-error-default bg-error-light text-error-default':
32
+ variant === 'error',
33
+ 'border-info-default bg-info-light text-info-default':
34
+ variant === 'info',
35
+ 'border-success-default bg-success-light text-success-default':
36
+ variant === 'success',
37
+ 'border-warning-default bg-warning-light text-warning-default':
38
+ variant === 'warning',
39
+ })}
40
+ ref={ref}
41
+ {...props}
42
+ >
43
+ {children}
44
+ </div>
45
+ );
46
+ },
47
+ );
44
48
 
45
- const alertBarState = classNames({
46
- 'opacity-100': alertBarStatus.state === 'open',
47
- 'opacity-0': alertBarStatus.state === 'closed',
48
- hidden: !alertBarStatus.display,
49
- });
49
+ const AlertBarLabel = forwardRef<
50
+ HTMLParagraphElement,
51
+ HTMLAttributes<HTMLParagraphElement>
52
+ >(({ ...props }, ref) => (
53
+ <p className="text-md text-light-grey flex-1 truncate" ref={ref} {...props} />
54
+ ));
50
55
 
51
- const classList = classNames(
52
- className,
53
- bgColor,
54
- alertBarState,
55
- 'flex py-2 text-white duration-700 w-parent transition-opactiy',
56
- );
56
+ const AlertBarIcon = forwardRef<
57
+ SVGSVGElement,
58
+ PickU<ComponentPropsWithoutRef<typeof Icon>, 'icon'>
59
+ >(({ icon }, ref) => <Icon ref={ref} icon={icon} />);
57
60
 
58
- const textClassList = classNames(
59
- {
60
- 'text-center': textCenter,
61
- // 'pl-20': !textCenter && leftIconProps !== null,
62
- // 'pl-4': !textCenter && leftIconProps === null,
63
- },
64
- 'w-full py-3',
65
- );
61
+ const AlertBarDismiss = forwardRef<
62
+ HTMLButtonElement,
63
+ Omit<HTMLAttributes<HTMLButtonElement>, 'icon'>
64
+ >(({ ...props }) => (
65
+ <Button variant="ghost" {...props}>
66
+ <Icon icon={faExclamation} />
67
+ </Button>
68
+ ));
66
69
 
67
- const rightIconClasses = classNames(
68
- {
69
- 'hover:cursor-pointer': isDismissable,
70
- },
71
- 'absolute right-0 pr-8 pt-3',
72
- );
70
+ AlertBarComponent.displayName = 'AlertBar';
73
71
 
74
- const closeAlertBar = (e: any): void => {
75
- setAlertBarStatus({
76
- state: 'closed',
77
- display: alertBarStatus.display,
78
- });
79
- setTimeout(() => {
80
- setAlertBarStatus({
81
- state: 'closed',
82
- display: false,
83
- });
84
- }, 700);
85
- if (onDismissClick != null) {
86
- onDismissClick(e);
87
- }
88
- };
72
+ AlertBarLabel.displayName = 'AlertBar.Label';
73
+ AlertBarIcon.displayName = 'AlertBar.Icon';
74
+ AlertBarDismiss.displayName = 'AlertBar.Dismiss';
89
75
 
90
- // const dismissIcon = <Icon type="multiply" colour="white" />;
76
+ const AlertBar = Object.assign(AlertBarComponent, {
77
+ Label: AlertBarLabel,
78
+ Icon: AlertBarIcon,
79
+ Dismiss: AlertBarDismiss,
80
+ });
91
81
 
92
- return (
93
- <div id={id} className={classList}>
94
- {/* {leftIconProps != null && (
95
- <span className='absolute pl-8 pt-3'>{iconLeft}</span>
96
- )} */}
97
- <h3 className={textClassList}>{text}</h3>
98
- {/* {isDismissable && (
99
- <a
100
- className={rightIconClasses}
101
- onClick={(e) => {
102
- closeAlertBar(e);
103
- }}
104
- >
105
- <span>{dismissIcon}</span>
106
- </a>
107
- )} */}
108
- {/* {iconRight != null && !isDismissable && (
109
- <span className={rightIconClasses}>{iconRight}</span>
110
- )} */}
111
- </div>
112
- );
113
- };
82
+ export { AlertBar };
@@ -1,16 +1,11 @@
1
+ import { Avatar } from './';
1
2
  import { Meta, StoryObj } from '@storybook/react';
2
- import { idAndClassName } from '@utils/controls';
3
-
4
- import Avatar from '.';
5
3
 
6
4
  const meta = {
7
5
  title: 'Components/Avatar',
8
6
  component: Avatar,
9
- argTypes: {
10
- ...idAndClassName,
11
- },
12
7
  args: {},
13
- };
8
+ } satisfies Meta<typeof Avatar>;
14
9
 
15
10
  export default meta;
16
11
 
@@ -1,10 +1,9 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
 
3
- let Snap: any;
4
- if (typeof window !== 'undefined') {
5
- Snap = require('snapsvg-cjs');
6
- }
7
- const Avatar: React.FC = (): any => {
3
+ // @ts-expect-error
4
+ import Snap from 'snapsvg-cjs';
5
+
6
+ export const Avatar: React.FC = (): any => {
8
7
  const [s, setS] = useState(null);
9
8
 
10
9
  let rightEyeWhite: any,
@@ -491,5 +490,3 @@ const Avatar: React.FC = (): any => {
491
490
  />
492
491
  );
493
492
  };
494
-
495
- export default Avatar;
@@ -0,0 +1,29 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { Breadcrumbs } from '.';
4
+
5
+ const meta = {
6
+ title: 'V2Components/Breadcrumbs',
7
+ component: Breadcrumbs,
8
+ args: {
9
+ children: [
10
+ <Breadcrumbs.Item>
11
+ <Breadcrumbs.Label href="#">Link 1</Breadcrumbs.Label>
12
+ </Breadcrumbs.Item>,
13
+ <Breadcrumbs.Item>
14
+ <Breadcrumbs.Label href="#">Link 2</Breadcrumbs.Label>
15
+ </Breadcrumbs.Item>,
16
+ <Breadcrumbs.Item>
17
+ <Breadcrumbs.Label href="#">Link 3</Breadcrumbs.Label>
18
+ </Breadcrumbs.Item>,
19
+ <Breadcrumbs.Item>
20
+ <Breadcrumbs.Label href="#">Link 4</Breadcrumbs.Label>
21
+ </Breadcrumbs.Item>,
22
+ ],
23
+ },
24
+ } satisfies Meta<typeof Breadcrumbs>;
25
+ export default meta;
26
+
27
+ type Story = StoryObj<typeof Breadcrumbs>;
28
+
29
+ export const Default: Story = {};
@@ -0,0 +1,89 @@
1
+ import { forwardRef, HTMLAttributes } from 'react';
2
+
3
+ import classNames from 'classnames';
4
+
5
+ export interface BreadcrumbsProps {
6
+ id?: string;
7
+ className?: string;
8
+ links?: Array<{ name: string; href: string }>;
9
+ }
10
+
11
+ const BreadcrumbsComponent = forwardRef<
12
+ HTMLUListElement,
13
+ HTMLAttributes<HTMLUListElement> & BreadcrumbsProps
14
+ >(({ children, ...props }, ref) => {
15
+ return (
16
+ <ul className="flex gap-2" {...props}>
17
+ {children}
18
+ </ul>
19
+ );
20
+ });
21
+
22
+ const BreadcrumbsItem = forwardRef<
23
+ HTMLLIElement,
24
+ HTMLAttributes<HTMLLIElement>
25
+ >(({ children, ...props }, ref) => {
26
+ return (
27
+ <li className="flex items-center gap-2" {...props}>
28
+ {children}
29
+ <p>/</p>
30
+ </li>
31
+ );
32
+ });
33
+
34
+ const BreadcrumbsLabel = forwardRef<
35
+ HTMLParagraphElement,
36
+ HTMLAttributes<HTMLParagraphElement> & { href: string }
37
+ >(({ children, href, ...props }, ref) => {
38
+ return (
39
+ <p className="px-1 py-1">
40
+ <a className="text-facebook hover:underline" href={href}>
41
+ {children}
42
+ </a>
43
+ </p>
44
+ );
45
+ });
46
+
47
+ BreadcrumbsComponent.displayName = 'Breadcrumbs';
48
+ BreadcrumbsItem.displayName = 'Breadcrumbs.Item';
49
+ BreadcrumbsLabel.displayName = 'Breadcrumbs.Label';
50
+
51
+ const Breadcrumbs = Object.assign(BreadcrumbsComponent, {
52
+ Item: BreadcrumbsItem,
53
+ Label: BreadcrumbsLabel,
54
+ });
55
+
56
+ export { Breadcrumbs };
57
+
58
+ // export const Breadcrumbs = ({ id, className, links }: Props) => {
59
+ // const linksLength = links != null ? Object.keys(links).length : 0;
60
+
61
+ // const classList = classNames(className, 'flex py-2');
62
+
63
+ // return (
64
+ // <ul id={id} className={classList}>
65
+ // {links?.map((link, i) => {
66
+ // return (
67
+ // <div key={`breadcrumb_${i + 1}`} className="flex">
68
+ // <li className="h-8">
69
+ // {i + 1 >= linksLength ? (
70
+ // <p className="px-1 py-1">{link.name}</p>
71
+ // ) : (
72
+ // <p className="px-1 py-1">
73
+ // <a className="text-facebook hover:underline" href={link.href}>
74
+ // {link.name}
75
+ // </a>
76
+ // </p>
77
+ // )}
78
+ // </li>
79
+ // {i + 1 < linksLength && (
80
+ // <li className="h-8">
81
+ // <p className="py-1">&nbsp; &#62; &nbsp;</p>
82
+ // </li>
83
+ // )}
84
+ // </div>
85
+ // );
86
+ // })}
87
+ // </ul>
88
+ // );
89
+ // };
@@ -0,0 +1,24 @@
1
+ import { faHeart } from '@fortawesome/fontawesome-free-solid';
2
+ import { action } from '@storybook/addon-actions';
3
+ import { Meta, StoryObj } from '@storybook/react';
4
+
5
+ import { Button } from '.';
6
+
7
+ const meta = {
8
+ title: 'V2Components/Button',
9
+ component: Button,
10
+ args: {
11
+ variant: 'primary',
12
+ children: [
13
+ <Button.Icon icon={faHeart} />,
14
+ <Button.Label>This is a button</Button.Label>,
15
+ ],
16
+ onClick: action('clicked'),
17
+ },
18
+ } satisfies Meta<typeof Button>;
19
+
20
+ export default meta;
21
+
22
+ type Story = StoryObj<typeof Button>;
23
+
24
+ export const Default: Story = {};
@@ -0,0 +1,59 @@
1
+ import { ComponentPropsWithoutRef, forwardRef, HTMLAttributes } from 'react';
2
+
3
+ import { Icon } from '@components/Icon';
4
+ import { PickU } from '@components/Pill';
5
+ import clsx from 'clsx';
6
+
7
+ export interface ButtonProps {
8
+ variant?: 'primary' | 'secondary' | 'ghost';
9
+ disabled?: boolean;
10
+ }
11
+
12
+ const ButtonComponent = forwardRef<
13
+ HTMLButtonElement,
14
+ HTMLAttributes<HTMLButtonElement> & ButtonProps
15
+ >(({ className, children, variant = 'primary', disabled, ...props }) => {
16
+ return (
17
+ <button
18
+ className={clsx(
19
+ 'flex items-center gap-2 rounded-lg border px-4 py-2 text-center text-sm duration-200',
20
+ {
21
+ 'border-button-primary-border bg-button-primary-bg text-button-primary-text hover:bg-button-primary-hover active:bg-button-primary-active':
22
+ variant === 'primary',
23
+ 'border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:bg-button-secondary-hover active:bg-button-secondary-active':
24
+ variant === 'secondary',
25
+ 'border-button-ghost-border bg-button-ghost-bg text-button-ghost-text hover:bg-button-ghost-hover active:bg-button-ghost-active':
26
+ variant === 'ghost',
27
+ },
28
+ className,
29
+ )}
30
+ {...props}
31
+ >
32
+ {children}
33
+ </button>
34
+ );
35
+ });
36
+
37
+ const ButtonLabel = forwardRef<
38
+ HTMLParagraphElement,
39
+ HTMLAttributes<HTMLParagraphElement>
40
+ >(({ className, ...props }, ref) => (
41
+ <p className={clsx('text-md', className)} ref={ref} {...props} />
42
+ ));
43
+
44
+ const ButtonIcon = forwardRef<
45
+ SVGSVGElement,
46
+ PickU<ComponentPropsWithoutRef<typeof Icon>, 'icon'>
47
+ >(({ icon }, ref) => <Icon size="md" ref={ref} icon={icon} />);
48
+
49
+ ButtonComponent.displayName = 'Button';
50
+
51
+ ButtonIcon.displayName = 'Button.Icon';
52
+ ButtonLabel.displayName = 'Button.Label';
53
+
54
+ const Button = Object.assign(ButtonComponent, {
55
+ Icon: ButtonIcon,
56
+ Label: ButtonLabel,
57
+ });
58
+
59
+ export { Button };
@@ -0,0 +1,21 @@
1
+ import { CalendarComponent } from './';
2
+ import { Meta, StoryObj } from '@storybook/react';
3
+
4
+ const meta = {
5
+ title: 'V2Components/Calendar',
6
+ component: CalendarComponent,
7
+ } satisfies Meta<typeof CalendarComponent>;
8
+
9
+ export default meta;
10
+
11
+ type Story = StoryObj<typeof CalendarComponent>;
12
+
13
+ export const Default: Story = {};
14
+
15
+ export const ShowDoubleView: Story = {
16
+ ...Default,
17
+ args: {
18
+ ...Default.args,
19
+ showDoubleView: true,
20
+ },
21
+ };
@@ -0,0 +1,92 @@
1
+ import { forwardRef, HTMLAttributes, useState } from 'react';
2
+
3
+ import Calendar from 'react-calendar';
4
+
5
+ import './style.css';
6
+
7
+ export type Detail = 'month' | 'year' | 'decade' | 'century';
8
+
9
+ export interface CalendarProps {
10
+ onChange?: () => void;
11
+ useRange?: boolean;
12
+ minDetail?: Detail;
13
+ minDate?: Date;
14
+ maxDate?: Date;
15
+ showNavigation?: true;
16
+ disabledDates?: string[];
17
+ showDoubleView?: boolean;
18
+ }
19
+
20
+ interface Tile {
21
+ activeStartDate: Date;
22
+ date: Date;
23
+ view: string;
24
+ }
25
+
26
+ const CalendarComp = forwardRef<
27
+ HTMLDivElement,
28
+ HTMLAttributes<HTMLDivElement> & CalendarProps
29
+ >(
30
+ (
31
+ {
32
+ onChange,
33
+ useRange,
34
+ minDetail,
35
+ minDate,
36
+ maxDate,
37
+ showNavigation,
38
+ disabledDates,
39
+ showDoubleView,
40
+ },
41
+ ref,
42
+ ) => {
43
+ const [today, setToday] = useState(new Date());
44
+
45
+ const calculateDisabledDates = (
46
+ date: Tile,
47
+ disabledDates?: string[],
48
+ ): boolean => {
49
+ const formattedDate = new Intl.DateTimeFormat('en-gb', {
50
+ year: 'numeric',
51
+ month: '2-digit',
52
+ day: '2-digit',
53
+ }).format(date?.date);
54
+
55
+ if (!disabledDates) return false;
56
+
57
+ return disabledDates.includes(formattedDate);
58
+ };
59
+
60
+ return (
61
+ <Calendar
62
+ ref={ref}
63
+ onActiveStartDateChange={({ value, activeStartDate, action }) => {
64
+ const toFormat = activeStartDate !== null ? activeStartDate : today;
65
+ if (action === 'next') {
66
+ setToday(new Date(toFormat));
67
+ }
68
+ if (action === 'prev') {
69
+ setToday(new Date(toFormat));
70
+ }
71
+ }}
72
+ activeStartDate={today}
73
+ onChange={onChange}
74
+ selectRange={useRange}
75
+ minDetail={minDetail}
76
+ minDate={minDate}
77
+ maxDate={maxDate}
78
+ showNavigation={showNavigation}
79
+ showDoubleView={showDoubleView}
80
+ tileDisabled={(date: Tile) => {
81
+ return calculateDisabledDates(date, disabledDates);
82
+ }}
83
+ />
84
+ );
85
+ },
86
+ );
87
+
88
+ CalendarComp.displayName = 'Calendar';
89
+
90
+ const CalendarComponent = Object.assign(CalendarComp);
91
+
92
+ export { CalendarComponent };
@@ -0,0 +1,14 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { Card } from '.';
4
+
5
+ const meta = {
6
+ title: 'V2Components/Card',
7
+ component: Card,
8
+ args: {},
9
+ } satisfies Meta<typeof Card>;
10
+ export default meta;
11
+
12
+ type Story = StoryObj<typeof Card>;
13
+
14
+ export const Default: Story = {};
@@ -0,0 +1,39 @@
1
+ import { forwardRef, HTMLAttributes } from 'react';
2
+
3
+ import clsx from 'clsx';
4
+
5
+ interface AnchorAttributes
6
+ extends Partial<Pick<JSX.IntrinsicElements['a'], 'href' | 'target'>> {}
7
+
8
+ const CardComponent = forwardRef<
9
+ HTMLAnchorElement,
10
+ HTMLAttributes<HTMLDivElement> & { href: string; target: string }
11
+ >(({ className, href, target, children, ...props }, ref) => {
12
+ let Tag: keyof Pick<JSX.IntrinsicElements, 'a' | 'div'> = 'div';
13
+ let attributes: AnchorAttributes = {};
14
+
15
+ if (Boolean(href) || Boolean(target)) {
16
+ Tag = 'a';
17
+ attributes = { href, target, ...props };
18
+ }
19
+ return (
20
+ <Tag
21
+ className={clsx(
22
+ 'grid grid-cols-1 rounded-xl bg-white p-4 drop-shadow',
23
+ {
24
+ 'hover:cursor-pointer': href,
25
+ },
26
+ className,
27
+ )}
28
+ {...attributes}
29
+ >
30
+ {children}
31
+ </Tag>
32
+ );
33
+ });
34
+
35
+ CardComponent.displayName = 'Card';
36
+
37
+ const Card = Object.assign(CardComponent);
38
+
39
+ export { Card };
@@ -0,0 +1,44 @@
1
+ import { ImageCard } from '@components/ImageCard';
2
+ import { Meta, StoryObj } from '@storybook/react';
3
+
4
+ import { Carousel } from '.';
5
+
6
+ const meta = {
7
+ title: 'V2Components/Carousel',
8
+ component: Carousel,
9
+ args: {
10
+ perView: 4,
11
+ spacing: 16,
12
+ loop: true,
13
+ children: [
14
+ <Carousel.Content>
15
+ <Carousel.Arrow />
16
+ <Carousel.Slides>
17
+ {[...Array(5)].map((_, i) => (
18
+ <ImageCard className="keen-slider__slide">
19
+ <ImageCard.Image src={`https://picsum.photos/10${i}/100`} />
20
+ <ImageCard.Content>
21
+ <ImageCard.Title>This is a title</ImageCard.Title>
22
+ <ImageCard.Subtitle>This is a subtitle</ImageCard.Subtitle>
23
+ <ImageCard.Text>
24
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit.
25
+ Eaque, est iusto. Veniam ullam impedit expedita perferendis
26
+ cumque culpa saepe magni velit quia nemo suscipit, reiciendis
27
+ ad libero, voluptate incidunt fugiat?
28
+ </ImageCard.Text>
29
+ </ImageCard.Content>
30
+ </ImageCard>
31
+ ))}
32
+ </Carousel.Slides>
33
+ <Carousel.Arrow rightArrow />
34
+ </Carousel.Content>,
35
+ <Carousel.Dots />,
36
+ ],
37
+ },
38
+ } satisfies Meta<typeof Carousel>;
39
+
40
+ export default meta;
41
+
42
+ type Story = StoryObj<typeof Carousel>;
43
+
44
+ export const Default: Story = {};