trepur_components 2.3.3 → 2.3.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 (254) hide show
  1. package/.eslintrc.cjs +43 -0
  2. package/.husky/pre-commit +4 -0
  3. package/.prettierrc.json +22 -0
  4. package/archive/Breadcrumbs/Breadcrumbs.stories.tsx +46 -0
  5. package/archive/Breadcrumbs/index.tsx +42 -0
  6. package/archive/BreadcrumbsBordered/BreadcrumbsBordered.stories.tsx +52 -0
  7. package/archive/BreadcrumbsBordered/index.tsx +44 -0
  8. package/archive/BreadcrumbsItem/BreadcrumbsItem.stories.tsx +40 -0
  9. package/archive/BreadcrumbsItem/index.tsx +149 -0
  10. package/archive/Button/Button.stories.tsx +150 -0
  11. package/archive/Button/index.tsx +111 -0
  12. package/archive/Button/style.module.css +76 -0
  13. package/archive/Calendar/Calendar.stories.tsx +82 -0
  14. package/archive/Calendar/index.tsx +76 -0
  15. package/archive/Calendar/style.css +233 -0
  16. package/archive/Card/Card.stories.tsx +75 -0
  17. package/archive/Card/index.tsx +102 -0
  18. package/archive/Card/style.module.css +75 -0
  19. package/archive/CardWithTopImage/CardWithTopImage.stories.tsx +50 -0
  20. package/archive/CardWithTopImage/index.tsx +39 -0
  21. package/archive/CardWithTopImage/style.module.css +11 -0
  22. package/archive/Carousel/Carousel.stories.tsx +451 -0
  23. package/archive/Carousel/index.tsx +388 -0
  24. package/archive/Carousel/style.module.css +99 -0
  25. package/archive/CarouselThumbnail/CarouselThumbnail.stories.tsx +350 -0
  26. package/archive/CarouselThumbnail/index.tsx +302 -0
  27. package/archive/CarouselThumbnail/style.module.css +67 -0
  28. package/archive/Checkbox/Checkbox.mdx +33 -0
  29. package/archive/Checkbox/Checkbox.stories.tsx +34 -0
  30. package/archive/Checkbox/index.tsx +51 -0
  31. package/archive/Checkbox/style.module.css +15 -0
  32. package/archive/Collapsible/Collapsible.stories.tsx +67 -0
  33. package/archive/Collapsible/index.tsx +116 -0
  34. package/archive/Collapsible/style.module.css +47 -0
  35. package/archive/Column/Column.stories.tsx +89 -0
  36. package/archive/Column/index.tsx +119 -0
  37. package/archive/Column/style.module.css +151 -0
  38. package/archive/ComponentWrapper/ComponentWrapper.stories.tsx +40 -0
  39. package/archive/ComponentWrapper/index.tsx +55 -0
  40. package/archive/ComponentWrapper/style.module.css +40 -0
  41. package/archive/Container/Container.stories.tsx +40 -0
  42. package/archive/Container/index.tsx +24 -0
  43. package/archive/Container/style.module.css +4 -0
  44. package/archive/Counter/Counter.stories.tsx +19 -0
  45. package/archive/Counter/index.tsx +66 -0
  46. package/archive/Counter/style.module.css +19 -0
  47. package/archive/DetailUpdater/DetailUpdater.stories.tsx +96 -0
  48. package/archive/DetailUpdater/index.tsx +112 -0
  49. package/archive/DetailUpdater/style.module.css +31 -0
  50. package/archive/Dialog/Dialog.stories.tsx +131 -0
  51. package/archive/Dialog/index.tsx +91 -0
  52. package/archive/Dialog/style.module.css +44 -0
  53. package/archive/DropdownMenu/DropdownMenu.stories.tsx +59 -0
  54. package/archive/DropdownMenu/index.tsx +51 -0
  55. package/archive/DropdownMenu/style.module.css +38 -0
  56. package/archive/DynamicTextSection/DynamicTextSection.stories.tsx +74 -0
  57. package/archive/DynamicTextSection/index.tsx +36 -0
  58. package/archive/DynamicTextSection/style.module.css +0 -0
  59. package/archive/FileUploader/FilePreview.tsx +48 -0
  60. package/archive/FileUploader/FileUploader.stories.tsx +28 -0
  61. package/archive/FileUploader/index.tsx +135 -0
  62. package/archive/FileUploader/style.module.css +54 -0
  63. package/archive/FilterItem/FilterItem.stories.tsx +33 -0
  64. package/archive/FilterItem/index.tsx +101 -0
  65. package/archive/FilterItem/style.module.css +27 -0
  66. package/archive/Footer/Footer.stories.tsx +59 -0
  67. package/archive/Footer/index.tsx +50 -0
  68. package/archive/Footer/style.module.css +19 -0
  69. package/archive/FooterNav/FooterNav.stories.tsx +125 -0
  70. package/archive/FooterNav/index.tsx +57 -0
  71. package/archive/FooterNav/style.module.css +32 -0
  72. package/archive/FooterNavItem/FooterNavItem.stories.tsx +53 -0
  73. package/archive/FooterNavItem/index.tsx +80 -0
  74. package/archive/FooterNavItem/style.module.css +139 -0
  75. package/archive/Form/Form.stories.tsx +86 -0
  76. package/archive/Form/index.tsx +61 -0
  77. package/archive/Form/style.module.css +0 -0
  78. package/archive/FyreCard/FyreCard.stories.tsx +31 -0
  79. package/archive/FyreCard/index.tsx +52 -0
  80. package/archive/FyreCard/style.module.css +19 -0
  81. package/archive/Greeting/Greeting.stories.tsx +41 -0
  82. package/archive/Greeting/index.tsx +32 -0
  83. package/archive/HamburgerIcon/HamburgerIcon.stories.tsx +32 -0
  84. package/archive/HamburgerIcon/index.tsx +103 -0
  85. package/archive/HamburgerIcon/style.module.css +85 -0
  86. package/archive/HorizontalLine/HorizontalLine.stories.tsx +54 -0
  87. package/archive/HorizontalLine/index.tsx +40 -0
  88. package/archive/HorizontalLine/style.module.css +55 -0
  89. package/archive/Icon/Icon.stories.tsx +164 -0
  90. package/archive/Icon/index.tsx +115 -0
  91. package/archive/Icon/style.module.css +253 -0
  92. package/archive/IconCard/IconCard.stories.tsx +46 -0
  93. package/archive/IconCard/index.tsx +57 -0
  94. package/archive/IconCard/style.module.css +18 -0
  95. package/archive/Image/Image.stories.tsx +87 -0
  96. package/archive/Image/index.tsx +132 -0
  97. package/archive/Image/style.module.css +109 -0
  98. package/archive/ImageInfo/ImageInfo.stories.tsx +39 -0
  99. package/archive/ImageInfo/index.tsx +95 -0
  100. package/archive/ImageInfo/style.module.css +47 -0
  101. package/archive/ImageLink/ImageLink.stories.tsx +37 -0
  102. package/archive/ImageLink/index.tsx +49 -0
  103. package/archive/ImageLink/style.module.css +23 -0
  104. package/archive/ImageLinkList/ImageLinkList.stories.tsx +34 -0
  105. package/archive/ImageLinkList/index.tsx +33 -0
  106. package/archive/ImageLinkList/style.module.css +3 -0
  107. package/archive/InformationIcon/InformationIcon.stories.tsx +83 -0
  108. package/archive/InformationIcon/index.tsx +128 -0
  109. package/archive/InformationIcon/style.module.css +71 -0
  110. package/archive/InformationIconBlock/InformationIconBlock.stories.tsx +32 -0
  111. package/archive/InformationIconBlock/index.tsx +63 -0
  112. package/archive/InformationIconBlock/style.module.css +7 -0
  113. package/archive/Input/Input.stories.tsx +84 -0
  114. package/archive/Input/index.tsx +131 -0
  115. package/archive/Input/style.module.css +60 -0
  116. package/archive/Jumbotron/Jumbotron.stories.tsx +21 -0
  117. package/archive/Jumbotron/index.tsx +31 -0
  118. package/archive/Jumbotron/style.module.css +8 -0
  119. package/archive/MenuButton/MenuButton.stories.tsx +46 -0
  120. package/archive/MenuButton/index.tsx +82 -0
  121. package/archive/MenuButton/style.module.css +45 -0
  122. package/archive/Modal/Modal.stories.tsx +86 -0
  123. package/archive/Modal/index.tsx +74 -0
  124. package/archive/Modal/style.module.css +35 -0
  125. package/archive/NavItem/NavItem.stories.tsx +90 -0
  126. package/archive/NavItem/index.tsx +65 -0
  127. package/archive/NavItem/style.module.css +71 -0
  128. package/archive/NavOld/NavOld.stories.tsx +193 -0
  129. package/archive/NavOld/StickyNav.tsx +191 -0
  130. package/archive/NavOld/index.tsx +273 -0
  131. package/archive/NavOld/style.module.css +156 -0
  132. package/archive/NavTwo/Dropdown.tsx +35 -0
  133. package/archive/NavTwo/Nav.stories.tsx +38 -0
  134. package/archive/NavTwo/Sidebar.tsx +34 -0
  135. package/archive/NavTwo/StickyNav.tsx +34 -0
  136. package/archive/NavTwo/index.tsx +45 -0
  137. package/archive/NavTwo/style.module.css +35 -0
  138. package/archive/NewsCard/NewsCard.stories.tsx +72 -0
  139. package/archive/NewsCard/index.tsx +57 -0
  140. package/archive/NewsCard/style.module.css +15 -0
  141. package/archive/Pill/Pill.stories.tsx +44 -0
  142. package/archive/Pill/index.tsx +64 -0
  143. package/archive/Pill/style.module.css +32 -0
  144. package/archive/ProductCard/ProductCard.stories.tsx +61 -0
  145. package/archive/ProductCard/index.tsx +111 -0
  146. package/archive/ProductCard/style.module.css +53 -0
  147. package/archive/ProductCardV2/ProductCardV2.stories.tsx +50 -0
  148. package/archive/ProductCardV2/index.tsx +119 -0
  149. package/archive/ProductCardV2/style.module.css +59 -0
  150. package/archive/Proficiencies/Proficiencies.stories.tsx +50 -0
  151. package/archive/Proficiencies/index.tsx +63 -0
  152. package/archive/Proficiencies/style.module.css +31 -0
  153. package/archive/Profile/Profile.stories.tsx +49 -0
  154. package/archive/Profile/index.tsx +103 -0
  155. package/archive/Profile/style.module.css +47 -0
  156. package/archive/Row/Row.stories.tsx +53 -0
  157. package/archive/Row/index.tsx +23 -0
  158. package/archive/Row/style.module.css +3 -0
  159. package/archive/Search/Search.stories.tsx +63 -0
  160. package/archive/Search/index.tsx +68 -0
  161. package/archive/Search/style.module.css +23 -0
  162. package/archive/Select/Select.stories.tsx +56 -0
  163. package/archive/Select/index.tsx +106 -0
  164. package/archive/Select/style.module.css +52 -0
  165. package/archive/Showcase/Showcase.stories.tsx +30 -0
  166. package/archive/Showcase/index.tsx +75 -0
  167. package/archive/Showcase/style.module.css +47 -0
  168. package/archive/SideNav/SideNav.stories.tsx +50 -0
  169. package/archive/SideNav/index.tsx +46 -0
  170. package/archive/SideNav/style.module.css +43 -0
  171. package/archive/SocialBlock/SocialBlock.stories.tsx +58 -0
  172. package/archive/SocialBlock/index.tsx +63 -0
  173. package/archive/SocialButton/SocialButton.stories.tsx +88 -0
  174. package/archive/SocialButton/index.tsx +71 -0
  175. package/archive/SocialButton/style.module.css +77 -0
  176. package/archive/StarRating/StarRating.stories.tsx +23 -0
  177. package/archive/StarRating/index.tsx +71 -0
  178. package/archive/Testimonial/Testimonial.stories.tsx +110 -0
  179. package/archive/Testimonial/index.tsx +61 -0
  180. package/archive/Testimonial/style.module.css +27 -0
  181. package/archive/TextAndTitle/TextAndTitle.stories.tsx +70 -0
  182. package/archive/TextAndTitle/index.tsx +123 -0
  183. package/archive/TextAndTitle/style.module.css +75 -0
  184. package/archive/TextArea/TextArea.stories.tsx +55 -0
  185. package/archive/TextArea/index.tsx +125 -0
  186. package/archive/TextArea/style.module.css +60 -0
  187. package/archive/Timeline/Timeline.stories.tsx +92 -0
  188. package/archive/Timeline/index.tsx +254 -0
  189. package/archive/Timeline/style.module.css +134 -0
  190. package/archive/TimelineV2/TimelineV2.stories.tsx +95 -0
  191. package/archive/TimelineV2/index.tsx +70 -0
  192. package/archive/TimelineV2/style.module.css +28 -0
  193. package/archive/Tubestops/Tubestops.stories.tsx +42 -0
  194. package/archive/Tubestops/index.tsx +58 -0
  195. package/archive/Tubestops/style.module.css +54 -0
  196. package/archive/UserIcon/UserIcon.stories.tsx +52 -0
  197. package/archive/UserIcon/index.tsx +46 -0
  198. package/archive/UserIcon/style.module.css +19 -0
  199. package/archive/Video/Video.stories.tsx +23 -0
  200. package/archive/Video/index.tsx +47 -0
  201. package/archive/fonts/Sora/OFL.txt +93 -0
  202. package/archive/fonts/Sora/README.txt +70 -0
  203. package/archive/fonts/Sora/Sora-VariableFont_wght.ttf +0 -0
  204. package/archive/fonts/Sora/static/Sora-Bold.ttf +0 -0
  205. package/archive/fonts/Sora/static/Sora-ExtraBold.ttf +0 -0
  206. package/archive/fonts/Sora/static/Sora-ExtraLight.ttf +0 -0
  207. package/archive/fonts/Sora/static/Sora-Light.ttf +0 -0
  208. package/archive/fonts/Sora/static/Sora-Medium.ttf +0 -0
  209. package/archive/fonts/Sora/static/Sora-Regular.ttf +0 -0
  210. package/archive/fonts/Sora/static/Sora-SemiBold.ttf +0 -0
  211. package/archive/fonts/Sora/static/Sora-Thin.ttf +0 -0
  212. package/archive/theme.ts +39 -0
  213. package/archive/typography/Fonts/Fonts.stories.tsx +14 -0
  214. package/archive/typography/Fonts/Fonts.tsx +181 -0
  215. package/lib/components/Accordion/index.js +10 -10
  216. package/lib/components/AlertBar/index.js +10 -10
  217. package/lib/components/index.d.ts +4 -0
  218. package/lib/index.js +1 -7
  219. package/lib/styles/base.css +1 -0
  220. package/package.json +6 -8
  221. package/postcss.config.js +8 -0
  222. package/src/components/Accordion/Accordion.stories.tsx +116 -0
  223. package/src/components/Accordion/index.tsx +30 -0
  224. package/src/components/AlertBar/AlertBar.stories.tsx +95 -0
  225. package/src/components/AlertBar/index.tsx +115 -0
  226. package/src/components/Avatar/Avatar.stories.tsx +19 -0
  227. package/src/components/Avatar/index.tsx +495 -0
  228. package/src/components/index.ts +119 -0
  229. package/src/documentation/Colours.mdx +192 -0
  230. package/src/documentation/Introduction.mdx +9 -0
  231. package/src/index.ts +1 -0
  232. package/src/styles/base.css +117 -0
  233. package/src/utils/controls.ts +44 -0
  234. package/src/utils/matchMedia.ts +9 -0
  235. package/src/utils/screens.ts +7 -0
  236. package/svg.d.ts +4 -0
  237. package/tailwind.config.ts +81 -0
  238. package/tsconfig.json +43 -0
  239. package/tsconfig.node.json +12 -0
  240. package/vite.config.mjs +64 -0
  241. package/lib/archive/Breadcrumbs/index.js +0 -12
  242. package/lib/archive/BreadcrumbsBordered/index.js +0 -25
  243. package/lib/archive/BreadcrumbsItem/index.js +0 -117
  244. package/lib/src/components/index.d.ts +0 -7
  245. /package/lib/{src/components → components}/Accordion/Accordion.stories.d.ts +0 -0
  246. /package/lib/{src/components → components}/Accordion/index.d.ts +0 -0
  247. /package/lib/{src/components → components}/AlertBar/AlertBar.stories.d.ts +0 -0
  248. /package/lib/{src/components → components}/AlertBar/index.d.ts +0 -0
  249. /package/lib/{src/components → components}/Avatar/Avatar.stories.d.ts +0 -0
  250. /package/lib/{src/components → components}/Avatar/index.d.ts +0 -0
  251. /package/lib/{src/index.d.ts → index.d.ts} +0 -0
  252. /package/lib/{src/utils → utils}/controls.d.ts +0 -0
  253. /package/lib/{src/utils → utils}/matchMedia.d.ts +0 -0
  254. /package/lib/{src/utils → utils}/screens.d.ts +0 -0
@@ -0,0 +1,53 @@
1
+ import { action } from '@storybook/addon-actions';
2
+ import { Meta, StoryObj } from '@storybook/react';
3
+ import { idAndClassName } from '@utils/controls';
4
+
5
+ import FooterNavItem from '.';
6
+
7
+ const meta = {
8
+ title: 'Components/Footer Nav Item',
9
+ component: FooterNavItem,
10
+ argTypes: {
11
+ ...idAndClassName,
12
+
13
+ title: {
14
+ type: { name: 'string', required: true },
15
+ description: 'The title to display on the component',
16
+ table: {
17
+ type: { summary: 'string' },
18
+ },
19
+ },
20
+ iconProps: {
21
+ type: { name: 'iconProps', required: false },
22
+ description: 'The props to pass to the icon to display on the component',
23
+ table: {
24
+ type: { summary: 'iconProps' },
25
+ },
26
+ },
27
+ backgroundColour: {
28
+ type: { name: 'string', required: false },
29
+ options: ['primary', 'secondary', 'white', 'black', 'gold'],
30
+ description: 'The background colour of the component',
31
+ table: {
32
+ type: { summary: 'string' },
33
+ },
34
+ defaultValue: 'primary',
35
+ control: 'select',
36
+ },
37
+ },
38
+ args: {
39
+ title: 'Wishlist',
40
+ href: '#',
41
+ iconProps: {
42
+ type: 'heart',
43
+ size: 2,
44
+ hollow: true,
45
+ },
46
+ onClick: action('clicked'),
47
+ },
48
+ };
49
+ export default meta;
50
+
51
+ type Story = StoryObj<typeof meta>;
52
+
53
+ export const Default: Story = {};
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+
3
+ import Icon, { type Props as iconProps } from '@components/Icon';
4
+ import { type Colours } from '@utils/controls';
5
+ import classNames from 'classnames';
6
+
7
+
8
+
9
+ export interface Props {
10
+ id: string;
11
+ className?: string;
12
+ title?: string;
13
+ iconProps?: iconProps;
14
+ bgColour?: Colours;
15
+ hoverBgColour?: Colours;
16
+ colour?: Colours;
17
+ hoverColour?: Colours;
18
+
19
+ onClick?: () => void;
20
+ href: string;
21
+ }
22
+
23
+ const FooterNavItem = ({
24
+ id,
25
+ className,
26
+ title,
27
+ iconProps,
28
+ bgColour = 'white',
29
+ hoverBgColour = 'secondary',
30
+ colour = 'grey',
31
+ hoverColour = 'white',
32
+ onClick,
33
+ href,
34
+ }: Props): JSX.Element => {
35
+ const formattedText =
36
+ typeof colour === 'string' ? `text_${colour}` : 'text_primary';
37
+ const formattedBg =
38
+ typeof bgColour === 'string' ? `bg_${bgColour}` : 'bg_secondary';
39
+ const formattedHoverText =
40
+ typeof hoverColour === 'string'
41
+ ? `hover_text_${hoverColour}`
42
+ : 'hover_text_secondary';
43
+ const formattedHoverBg =
44
+ typeof hoverBgColour === 'string'
45
+ ? `hover_bg_${hoverBgColour}`
46
+ : 'hover_bg_primary';
47
+
48
+ const classList = classNames(
49
+ className,
50
+ style.classList,
51
+ style[formattedBg],
52
+ style[formattedHoverBg],
53
+ style[formattedText],
54
+ style[formattedHoverText],
55
+ 'theme-local',
56
+ );
57
+
58
+ return (
59
+ <div id={id} className={classList}>
60
+ <a href={href} onClick={onClick}>
61
+ {iconProps !== undefined && (
62
+ <Icon
63
+ {...iconProps}
64
+ className={style.icon}
65
+ bgColour={bgColour}
66
+ hoverBgColour={hoverBgColour}
67
+ colour={colour}
68
+ hoverColour={hoverColour}
69
+ rounded
70
+ />
71
+ )}
72
+ {title !== undefined && title !== '' && (
73
+ <p className={style.title}>{title}</p>
74
+ )}
75
+ </a>
76
+ </div>
77
+ );
78
+ };
79
+
80
+ export default FooterNavItem;
@@ -0,0 +1,139 @@
1
+ .classList {
2
+ @apply w-full cursor-pointer py-2 text-center transition-all duration-500;
3
+ }
4
+
5
+ .classList:hover .icon {
6
+ @apply bg-secondary text-white;
7
+ }
8
+
9
+ .icon {
10
+ @apply mx-auto;
11
+ }
12
+
13
+ .title {
14
+ @apply pt-0.5 text-xs font-regular;
15
+ }
16
+
17
+ .text_primary {
18
+ @apply text-primary;
19
+ }
20
+ .text_secondary {
21
+ @apply text-secondary;
22
+ }
23
+ .text_white {
24
+ @apply text-white;
25
+ }
26
+ .text_black {
27
+ @apply text-black;
28
+ }
29
+ .text_gold {
30
+ @apply text-gold;
31
+ }
32
+ .text_grey {
33
+ @apply text-light-grey;
34
+ }
35
+ .text_facebook {
36
+ @apply text-facebook;
37
+ }
38
+ .text_interactive-facebook {
39
+ @apply text-interactive-facebook;
40
+ }
41
+ .text_success {
42
+ @apply text-success;
43
+ }
44
+ .text_error {
45
+ @apply text-error;
46
+ }
47
+
48
+ .bg_primary {
49
+ @apply bg-primary;
50
+ }
51
+ .bg_secondary {
52
+ @apply bg-secondary;
53
+ }
54
+ .bg_white {
55
+ @apply bg-white;
56
+ }
57
+ .bg_black {
58
+ @apply bg-black;
59
+ }
60
+ .bg_gold {
61
+ @apply bg-gold;
62
+ }
63
+ .bg_grey {
64
+ @apply bg-light-grey;
65
+ }
66
+ .bg_facebook {
67
+ @apply bg-facebook;
68
+ }
69
+ .bg_interactive-facebook {
70
+ @apply bg-interactive-facebook;
71
+ }
72
+ .bg_success {
73
+ @apply bg-success;
74
+ }
75
+ .bg_error {
76
+ @apply bg-error;
77
+ }
78
+
79
+ .hover_text_primary {
80
+ @apply hover:text-primary;
81
+ }
82
+ .hover_text_secondary {
83
+ @apply hover:text-secondary;
84
+ }
85
+ .hover_text_white {
86
+ @apply hover:text-white;
87
+ }
88
+ .hover_text_black {
89
+ @apply hover:text-black;
90
+ }
91
+ .hover_text_gold {
92
+ @apply hover:text-gold;
93
+ }
94
+ .hover_text_grey {
95
+ @apply hover:text-light-grey;
96
+ }
97
+ .hover_text_facebook {
98
+ @apply hover:text-facebook;
99
+ }
100
+ .hover_text_interactive-facebook {
101
+ @apply hover:text-interactive-facebook;
102
+ }
103
+ .hover_text_success {
104
+ @apply hover:text-success;
105
+ }
106
+ .hover_text_error {
107
+ @apply hover:text-error;
108
+ }
109
+
110
+ .hover_bg_primary {
111
+ @apply hover:bg-primary;
112
+ }
113
+ .hover_bg_secondary {
114
+ @apply hover:bg-secondary;
115
+ }
116
+ .hover_bg_white {
117
+ @apply hover:bg-white;
118
+ }
119
+ .hover_bg_black {
120
+ @apply hover:bg-black;
121
+ }
122
+ .hover_bg_gold {
123
+ @apply hover:bg-gold;
124
+ }
125
+ .hover_bg_grey {
126
+ @apply hover:bg-light-grey;
127
+ }
128
+ .hover_bg_facebook {
129
+ @apply hover:bg-facebook;
130
+ }
131
+ .hover_bg_interactive-facebook {
132
+ @apply hover:bg-interactive-facebook;
133
+ }
134
+ .hover_bg_success {
135
+ @apply hover:bg-success;
136
+ }
137
+ .hover_bg_error {
138
+ @apply hover:bg-error;
139
+ }
@@ -0,0 +1,86 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { idAndClassName } from '@utils/controls';
3
+
4
+ import Form from '.';
5
+
6
+ const meta = {
7
+ title: 'Components/Form',
8
+ component: Form,
9
+ argTypes: {
10
+ ...idAndClassName,
11
+ title: {
12
+ type: { name: 'string', required: false },
13
+ description: 'The title to display on the component',
14
+ table: {
15
+ type: { summary: 'string' },
16
+ defaultValue: { summary: 'undefined' },
17
+ },
18
+ },
19
+ onSubmit: {
20
+ type: { name: 'function', required: false },
21
+ description: 'The action to perform when submitting the component',
22
+ action: 'onClick',
23
+ table: {
24
+ type: {
25
+ summary: 'function',
26
+ },
27
+ defaultValue: { summary: 'undefined' },
28
+ },
29
+ },
30
+ ref: {
31
+ type: { name: 'other', value: 'RefObject<TouchableOpacity>' },
32
+ description: 'An ref for highlighting the current element',
33
+ table: {
34
+ type: {
35
+ summary: 'object',
36
+ },
37
+ defaultValue: { summary: 'undefined' },
38
+ },
39
+ },
40
+ components: {
41
+ description: 'An array of component objects to pass to the component',
42
+ control: 'array',
43
+ table: {
44
+ type: {
45
+ summary: 'array',
46
+ },
47
+ defaultValue: { summary: 'undefined' },
48
+ },
49
+ },
50
+ },
51
+ args: {
52
+ components: [
53
+ {
54
+ htmlType: 'Input',
55
+ label: 'This is a label',
56
+ placeholder: 'This is a placeholder',
57
+ children: 'Submit',
58
+ className: 'mb-4',
59
+ },
60
+ {
61
+ htmlType: 'Input',
62
+ label: 'This is a label',
63
+ placeholder: 'This is a placeholder',
64
+ children: 'Submit',
65
+ className: 'mb-4',
66
+ },
67
+ {
68
+ htmlType: 'Input',
69
+ label: 'This is a label',
70
+ placeholder: 'This is a placeholder',
71
+ children: 'Submit',
72
+ className: 'mb-4',
73
+ },
74
+ {
75
+ htmlType: 'Button',
76
+ children: 'Submit',
77
+ },
78
+ ],
79
+ },
80
+ };
81
+
82
+ export default meta;
83
+
84
+ type Story = StoryObj<typeof meta>;
85
+
86
+ export const Default: Story = {};
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+
3
+ import Button, { type Props as buttonProps } from '@components/Button';
4
+ import Container from '@components/Container';
5
+ import Input, { type Props as inputProps } from '@components/Input';
6
+ import classNames from 'classnames';
7
+
8
+ export interface Props {
9
+ id?: string;
10
+ className?: string;
11
+ onSubmit?: () => void;
12
+ ref?: string;
13
+ components?: Array<inputProps & buttonProps & { htmlType: string }>;
14
+ }
15
+
16
+ const Form = ({
17
+ id,
18
+ className,
19
+ onSubmit,
20
+ ref,
21
+ components,
22
+ }: Props): JSX.Element => {
23
+ return (
24
+ <Container withPadding>
25
+ <form
26
+ id={id}
27
+ ref={ref}
28
+ className={classNames(className, 'theme-local')}
29
+ onSubmit={onSubmit}
30
+ >
31
+ {components?.map((component, i) => {
32
+ if (component?.htmlType === 'Input') {
33
+ return (
34
+ <Input
35
+ key={`input_${i + 0}`}
36
+ className={classNames(component?.className)}
37
+ label={component?.label}
38
+ placeholder={component?.placeholder}
39
+ type={component?.type}
40
+ name={component?.name}
41
+ />
42
+ );
43
+ } else if (component.htmlType === 'Button') {
44
+ return (
45
+ <Button
46
+ key={`button_${i + 0}`}
47
+ type={component?.type}
48
+ onClick={component?.onClick}
49
+ className={classNames(component?.className)}
50
+ >
51
+ {component?.children}
52
+ </Button>
53
+ );
54
+ } else return <></>;
55
+ })}
56
+ </form>
57
+ </Container>
58
+ );
59
+ };
60
+
61
+ export default Form;
File without changes
@@ -0,0 +1,31 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { idAndClassName } from '@utils/controls';
3
+
4
+ import FyreCard from '.';
5
+
6
+ const meta = {
7
+ title: 'Components/Fyre Card',
8
+ component: FyreCard,
9
+ parameters: {},
10
+ argTypes: {
11
+ ...idAndClassName,
12
+ image: {
13
+ description: '',
14
+ control: 'text',
15
+ table: {
16
+ category: '',
17
+ },
18
+ },
19
+ },
20
+ args: {
21
+ image: 'https://picsum.photos/500/300',
22
+ buttonProps: {
23
+ children: 'Shop Now',
24
+ },
25
+ },
26
+ };
27
+ export default meta;
28
+
29
+ type Story = StoryObj<typeof meta>;
30
+
31
+ export const Default: Story = {};
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+
3
+ import Button, { type Props as buttonProps } from '@components/Button';
4
+ import classNames from 'classnames';
5
+
6
+
7
+
8
+ export interface Props {
9
+ id?: string;
10
+ className?: string;
11
+ image?: string;
12
+ imageClass?: string;
13
+ altText?: string;
14
+ bordered?: string;
15
+ buttonProps?: buttonProps;
16
+ }
17
+
18
+ const FyreCard = ({
19
+ id,
20
+ className,
21
+ image,
22
+ imageClass,
23
+ altText,
24
+ bordered,
25
+ buttonProps,
26
+ }: Props): JSX.Element => {
27
+ const classList = classNames(
28
+ {
29
+ [style.bordered]: bordered,
30
+ },
31
+ className,
32
+ style.classList,
33
+ );
34
+ const imageClassList = classNames(imageClass, style.imageClassList);
35
+
36
+ return (
37
+ <div key={id} id={id} className={classList}>
38
+ <div
39
+ className={classNames(style.cardContent, 'card-content theme-local')}
40
+ >
41
+ <div>
42
+ <img className={imageClassList} src={image} alt={altText} />
43
+ </div>
44
+ <div className={style.buttonWrapper}>
45
+ <Button {...buttonProps}>{buttonProps?.children}</Button>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ );
50
+ };
51
+
52
+ export default FyreCard;
@@ -0,0 +1,19 @@
1
+ .classList {
2
+ @apply flex flex-col;
3
+ }
4
+
5
+ .cardContent {
6
+ @apply flex flex-1 flex-col;
7
+ }
8
+
9
+ .buttonWrapper {
10
+ @apply flex justify-end;
11
+ }
12
+
13
+ .bordered {
14
+ @apply border border-grey border-opacity-100;
15
+ }
16
+
17
+ .imageClassList {
18
+ @apply w-full;
19
+ }
@@ -0,0 +1,41 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { idAndClassName } from '@utils/controls';
3
+
4
+ import Greeting from '.';
5
+
6
+ const meta = {
7
+ title: 'Components/Greeting',
8
+ component: Greeting,
9
+ argTypes: {
10
+ ...idAndClassName,
11
+ morningMessage: {
12
+ type: { name: 'string', required: false },
13
+ description: 'Defines the morning message for the greeting component',
14
+ table: {
15
+ type: { summary: 'string' },
16
+ },
17
+ },
18
+ afternoonMessage: {
19
+ type: { name: 'string', required: false },
20
+ description: 'Defines the afternoon message for the greeting component',
21
+ table: {
22
+ type: { summary: 'string' },
23
+ },
24
+ },
25
+ eveningMessage: {
26
+ type: { name: 'string', required: false },
27
+ description: 'Defines the evening message for the greeting component',
28
+ table: {
29
+ type: { summary: 'string' },
30
+ },
31
+ },
32
+ },
33
+ args: {
34
+ morningMessage: 'What a beautiful morning it is today',
35
+ },
36
+ };
37
+ export default meta;
38
+
39
+ type Story = StoryObj<typeof meta>;
40
+
41
+ export const Default: Story = {};
@@ -0,0 +1,32 @@
1
+ export interface Props {
2
+ id?: string;
3
+ className?: string;
4
+ morningMessage?: string;
5
+ afternoonMessage?: string;
6
+ eveningMessage?: string;
7
+ }
8
+
9
+ const Greeting = ({
10
+ morningMessage = 'Good morning',
11
+ afternoonMessage = 'Good afternoon',
12
+ eveningMessage = 'Good evening',
13
+ }: Props): string => {
14
+ const today = new Date();
15
+ const hours = `0${today.getHours().toString()}`.slice(-2);
16
+ const minutes = `0${today.getMinutes().toString()}`.slice(-2);
17
+ const seconds = `0${today.getSeconds().toString()}`.slice(-2);
18
+ const time = parseInt(`${hours}${minutes}${seconds}`);
19
+
20
+ let message = '';
21
+ if (time < 120000) {
22
+ message = morningMessage;
23
+ } else if (time > 115959 && time < 170000) {
24
+ message = afternoonMessage;
25
+ } else if (time > 165959) {
26
+ message = eveningMessage;
27
+ }
28
+
29
+ return message;
30
+ };
31
+
32
+ export default Greeting;
@@ -0,0 +1,32 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { idAndClassName } from '@utils/controls';
3
+
4
+ import HamburgerIcon from '.';
5
+
6
+ const meta = {
7
+ title: 'Components/Hamburger Icon',
8
+ component: HamburgerIcon,
9
+ parameters: {
10
+ docs: {
11
+ description: {
12
+ component: 'An icon component',
13
+ },
14
+ },
15
+ layout: 'padded',
16
+ },
17
+ argTypes: {
18
+ ...idAndClassName,
19
+
20
+ onClick: {
21
+ type: { name: 'function', required: false },
22
+ description: 'Function to be called when the button is clicked',
23
+ table: { type: { summary: 'function' } },
24
+ },
25
+ },
26
+ };
27
+
28
+ export default meta;
29
+
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Default: Story = {};