oddsgate-ds 1.0.2

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 (206) hide show
  1. package/. babelrc +3 -0
  2. package/.cache/storybook/default/dev-server/a5a8bf6e622aef57065c6498611f40c911543d7d-3920d97c51b8ad2521918fb1205babd22b0ed3d7 +1 -0
  3. package/.cache/storybook/default/dev-server/a5a8bf6e622aef57065c6498611f40c911543d7d-43fdebe5fc35e4e9fabee9a83c7faea931b05ea0 +1 -0
  4. package/.cache/storybook/default/dev-server/a5a8bf6e622aef57065c6498611f40c911543d7d-f086b87885981c04ce7a583ff90a49313de83de7 +1 -0
  5. package/.eslintrc.cjs +14 -0
  6. package/.storybook/main.ts +28 -0
  7. package/.storybook/preview.ts +22 -0
  8. package/README.md +30 -0
  9. package/package.json +63 -0
  10. package/public/assets/components/quotes.svg +3 -0
  11. package/public/assets/empty-state.svg +19 -0
  12. package/public/assets/placeholder.png +0 -0
  13. package/public/assets/video.mp4 +0 -0
  14. package/public/fonts/miewfont/miewfont.eot +0 -0
  15. package/public/fonts/miewfont/miewfont.svg +35 -0
  16. package/public/fonts/miewfont/miewfont.ttf +0 -0
  17. package/public/fonts/miewfont/miewfont.woff +0 -0
  18. package/src/components/atoms/Button/Button.component.tsx +48 -0
  19. package/src/components/atoms/Button/Button.interface.ts +29 -0
  20. package/src/components/atoms/Button/Button.stories.tsx +58 -0
  21. package/src/components/atoms/Button/Button.theme.ts +126 -0
  22. package/src/components/atoms/Button/index.ts +1 -0
  23. package/src/components/atoms/Chip/Chip.component.tsx +26 -0
  24. package/src/components/atoms/Chip/Chip.interface.ts +10 -0
  25. package/src/components/atoms/Chip/Chip.stories.tsx +34 -0
  26. package/src/components/atoms/Chip/Chip.theme.ts +47 -0
  27. package/src/components/atoms/Chip/index.ts +1 -0
  28. package/src/components/atoms/CloseButton/CloseButton.component.tsx +17 -0
  29. package/src/components/atoms/CloseButton/CloseButton.interface.ts +9 -0
  30. package/src/components/atoms/CloseButton/CloseButton.stories.tsx +24 -0
  31. package/src/components/atoms/CloseButton/CloseButton.theme.ts +66 -0
  32. package/src/components/atoms/CloseButton/index.ts +1 -0
  33. package/src/components/atoms/EmptyState/EmptyState.component.tsx +27 -0
  34. package/src/components/atoms/EmptyState/EmptyState.interface.ts +10 -0
  35. package/src/components/atoms/EmptyState/EmptyState.stories.tsx +34 -0
  36. package/src/components/atoms/EmptyState/EmptyState.theme.ts +27 -0
  37. package/src/components/atoms/EmptyState/index.ts +1 -0
  38. package/src/components/atoms/Flex/Flex.component.tsx +30 -0
  39. package/src/components/atoms/Flex/Flex.interface.ts +22 -0
  40. package/src/components/atoms/Flex/Flex.theme.ts +11 -0
  41. package/src/components/atoms/Flex/index.ts +1 -0
  42. package/src/components/atoms/FlexGrid/FlexGrid.component.tsx +61 -0
  43. package/src/components/atoms/FlexGrid/FlexGrid.interface.ts +55 -0
  44. package/src/components/atoms/FlexGrid/FlexGrid.stories.tsx +55 -0
  45. package/src/components/atoms/FlexGrid/FlexGrid.theme.ts +79 -0
  46. package/src/components/atoms/FlexGrid/index.ts +1 -0
  47. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.component.tsx +22 -0
  48. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.interface.tsx +6 -0
  49. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.theme.ts +126 -0
  50. package/src/components/atoms/FormField/CheckRadioField/index.ts +1 -0
  51. package/src/components/atoms/FormField/FormField.component.tsx +37 -0
  52. package/src/components/atoms/FormField/FormField.interface.ts +9 -0
  53. package/src/components/atoms/FormField/FormField.stories.tsx +499 -0
  54. package/src/components/atoms/FormField/FormField.theme.tsx +122 -0
  55. package/src/components/atoms/FormField/index.ts +1 -0
  56. package/src/components/atoms/Heading/Heading.component.tsx +17 -0
  57. package/src/components/atoms/Heading/Heading.interface.tsx +21 -0
  58. package/src/components/atoms/Heading/Heading.theme.ts +17 -0
  59. package/src/components/atoms/Heading/index.ts +1 -0
  60. package/src/components/atoms/Icon/Icon.component.tsx +19 -0
  61. package/src/components/atoms/Icon/Icon.interface.ts +8 -0
  62. package/src/components/atoms/Icon/Icon.stories.tsx +26 -0
  63. package/src/components/atoms/Icon/Icon.theme.ts +102 -0
  64. package/src/components/atoms/Icon/index.ts +1 -0
  65. package/src/components/atoms/ImageWrapper/ImageWrapper.component.tsx +42 -0
  66. package/src/components/atoms/ImageWrapper/ImageWrapper.interface.ts +16 -0
  67. package/src/components/atoms/ImageWrapper/ImageWrapper.stories.tsx +27 -0
  68. package/src/components/atoms/ImageWrapper/ImageWrapper.theme.ts +51 -0
  69. package/src/components/atoms/ImageWrapper/index.ts +1 -0
  70. package/src/components/atoms/Loader/Loader.component.tsx +26 -0
  71. package/src/components/atoms/Loader/Loader.interface.ts +10 -0
  72. package/src/components/atoms/Loader/Loader.stories.tsx +33 -0
  73. package/src/components/atoms/Loader/Loader.theme.ts +92 -0
  74. package/src/components/atoms/Loader/index.ts +1 -0
  75. package/src/components/atoms/Marquee/Marquee.component.tsx +130 -0
  76. package/src/components/atoms/Marquee/Marquee.interface.ts +8 -0
  77. package/src/components/atoms/Marquee/Marquee.stories.tsx +20 -0
  78. package/src/components/atoms/Marquee/Marquee.theme.ts +42 -0
  79. package/src/components/atoms/Marquee/index.ts +1 -0
  80. package/src/components/atoms/Quote/Quote.component.tsx +29 -0
  81. package/src/components/atoms/Quote/Quote.interface.ts +10 -0
  82. package/src/components/atoms/Quote/Quote.stories.tsx +25 -0
  83. package/src/components/atoms/Quote/Quote.theme.ts +26 -0
  84. package/src/components/atoms/Quote/index.ts +1 -0
  85. package/src/components/atoms/RichText/RichText.component.tsx +31 -0
  86. package/src/components/atoms/RichText/RichText.interface.ts +11 -0
  87. package/src/components/atoms/RichText/RichText.stories.tsx +73 -0
  88. package/src/components/atoms/RichText/RichText.theme.ts +32 -0
  89. package/src/components/atoms/RichText/index.ts +1 -0
  90. package/src/components/atoms/ScrollingNav/ScrollingNav.component.tsx +18 -0
  91. package/src/components/atoms/ScrollingNav/ScrollingNav.interface.ts +8 -0
  92. package/src/components/atoms/ScrollingNav/ScrollingNav.stories.tsx +44 -0
  93. package/src/components/atoms/ScrollingNav/ScrollingNav.theme.ts +55 -0
  94. package/src/components/atoms/ScrollingNav/index.ts +1 -0
  95. package/src/components/atoms/Separator/Separator.component.tsx +19 -0
  96. package/src/components/atoms/Separator/Separator.interface.tsx +9 -0
  97. package/src/components/atoms/Separator/Separator.stories.tsx +28 -0
  98. package/src/components/atoms/Separator/Separator.theme.ts +12 -0
  99. package/src/components/atoms/Separator/index.ts +1 -0
  100. package/src/components/atoms/SocialLinks/SocialLinks.component.tsx +35 -0
  101. package/src/components/atoms/SocialLinks/SocialLinks.interface.ts +8 -0
  102. package/src/components/atoms/SocialLinks/SocialLinks.stories.tsx +36 -0
  103. package/src/components/atoms/SocialLinks/SocialLinks.theme.ts +52 -0
  104. package/src/components/atoms/SocialLinks/index.ts +1 -0
  105. package/src/components/atoms/Spacer/Spacer.component.tsx +27 -0
  106. package/src/components/atoms/Spacer/Spacer.interface.ts +11 -0
  107. package/src/components/atoms/Spacer/Spacer.stories.tsx +28 -0
  108. package/src/components/atoms/Spacer/Spacer.theme.ts +8 -0
  109. package/src/components/atoms/Spacer/index.ts +1 -0
  110. package/src/components/atoms/Video/Video.component.tsx +116 -0
  111. package/src/components/atoms/Video/Video.interface.ts +13 -0
  112. package/src/components/atoms/Video/Video.stories.tsx +37 -0
  113. package/src/components/atoms/Video/Video.theme.ts +44 -0
  114. package/src/components/atoms/Video/index.ts +1 -0
  115. package/src/components/atoms/VideoEmbed/VideoEmbed.component.tsx +109 -0
  116. package/src/components/atoms/VideoEmbed/VideoEmbed.interface.ts +13 -0
  117. package/src/components/atoms/VideoEmbed/VideoEmbed.stories.tsx +23 -0
  118. package/src/components/atoms/VideoEmbed/VideoEmbed.theme.ts +45 -0
  119. package/src/components/atoms/VideoEmbed/index.ts +1 -0
  120. package/src/components/common/PortalComponent/PortalComponent.tsx +48 -0
  121. package/src/components/common/PortalComponent/index.ts +1 -0
  122. package/src/components/molecules/Accordion/Accordion.component.tsx +58 -0
  123. package/src/components/molecules/Accordion/Accordion.interface.ts +15 -0
  124. package/src/components/molecules/Accordion/Accordion.stories.tsx +100 -0
  125. package/src/components/molecules/Accordion/Accordion.theme.ts +66 -0
  126. package/src/components/molecules/Accordion/index.ts +1 -0
  127. package/src/components/molecules/BlogCard/BlogCard.component.tsx +48 -0
  128. package/src/components/molecules/BlogCard/BlogCard.interface.ts +10 -0
  129. package/src/components/molecules/BlogCard/BlogCard.stories.tsx +37 -0
  130. package/src/components/molecules/BlogCard/BlogCard.theme.ts +63 -0
  131. package/src/components/molecules/BlogCard/index.ts +1 -0
  132. package/src/components/molecules/Card/Card.component.tsx +15 -0
  133. package/src/components/molecules/Card/Card.interface.ts +10 -0
  134. package/src/components/molecules/Card/Card.theme.ts +53 -0
  135. package/src/components/molecules/Card/index.ts +1 -0
  136. package/src/components/molecules/Dropdown/Dropdown.component.tsx +67 -0
  137. package/src/components/molecules/Dropdown/Dropdown.interface.ts +26 -0
  138. package/src/components/molecules/Dropdown/Dropdown.stories.tsx +54 -0
  139. package/src/components/molecules/Dropdown/Dropdown.theme.ts +50 -0
  140. package/src/components/molecules/Dropdown/index.ts +1 -0
  141. package/src/components/molecules/IconBox/IconBox.component.tsx +29 -0
  142. package/src/components/molecules/IconBox/IconBox.interface.tsx +10 -0
  143. package/src/components/molecules/IconBox/IconBox.stories.tsx +23 -0
  144. package/src/components/molecules/IconBox/IconBox.theme.ts +25 -0
  145. package/src/components/molecules/IconBox/index.ts +1 -0
  146. package/src/components/molecules/IconTitle/IconTitle.component.tsx +24 -0
  147. package/src/components/molecules/IconTitle/IconTitle.interface.tsx +10 -0
  148. package/src/components/molecules/IconTitle/IconTitle.stories.tsx +49 -0
  149. package/src/components/molecules/IconTitle/IconTitle.theme.ts +10 -0
  150. package/src/components/molecules/IconTitle/index.ts +1 -0
  151. package/src/components/molecules/Modal/Modal.component.tsx +70 -0
  152. package/src/components/molecules/Modal/Modal.interface.ts +11 -0
  153. package/src/components/molecules/Modal/Modal.stories.tsx +57 -0
  154. package/src/components/molecules/Modal/Modal.theme.ts +55 -0
  155. package/src/components/molecules/Modal/index.ts +1 -0
  156. package/src/components/molecules/OffCanvas/OffCanvas.component.tsx +55 -0
  157. package/src/components/molecules/OffCanvas/OffCanvas.interface.ts +12 -0
  158. package/src/components/molecules/OffCanvas/OffCanvas.stories.tsx +55 -0
  159. package/src/components/molecules/OffCanvas/OffCanvas.theme.ts +50 -0
  160. package/src/components/molecules/OffCanvas/index.ts +1 -0
  161. package/src/components/molecules/ProjectCard/ProjectCard.component.tsx +45 -0
  162. package/src/components/molecules/ProjectCard/ProjectCard.interface.ts +8 -0
  163. package/src/components/molecules/ProjectCard/ProjectCard.stories.tsx +72 -0
  164. package/src/components/molecules/ProjectCard/ProjectCard.theme.ts +61 -0
  165. package/src/components/molecules/ProjectCard/index.ts +1 -0
  166. package/src/components/molecules/ShareModal/ShareModal.component.tsx +166 -0
  167. package/src/components/molecules/ShareModal/ShareModal.interface.ts +9 -0
  168. package/src/components/molecules/ShareModal/ShareModal.stories.tsx +33 -0
  169. package/src/components/molecules/ShareModal/ShareModal.theme.ts +101 -0
  170. package/src/components/molecules/ShareModal/index.ts +1 -0
  171. package/src/components/molecules/TeamCard/TeamCard.component.tsx +31 -0
  172. package/src/components/molecules/TeamCard/TeamCard.interface.ts +7 -0
  173. package/src/components/molecules/TeamCard/TeamCard.stories.tsx +33 -0
  174. package/src/components/molecules/TeamCard/TeamCard.theme.ts +12 -0
  175. package/src/components/molecules/TeamCard/index.ts +1 -0
  176. package/src/components/organisms/Cover/Cover.component.tsx +46 -0
  177. package/src/components/organisms/Cover/Cover.interface.ts +14 -0
  178. package/src/components/organisms/Cover/Cover.stories.tsx +97 -0
  179. package/src/components/organisms/Cover/Cover.theme.ts +49 -0
  180. package/src/components/organisms/Cover/index.ts +1 -0
  181. package/src/components/organisms/Slider/Slider.component.tsx +145 -0
  182. package/src/components/organisms/Slider/Slider.interface.ts +17 -0
  183. package/src/components/organisms/Slider/Slider.stories.tsx +73 -0
  184. package/src/components/organisms/Slider/Slider.theme.ts +125 -0
  185. package/src/components/organisms/Slider/Slider.utils.tsx +19 -0
  186. package/src/components/organisms/Slider/index.ts +1 -0
  187. package/src/helpers/clickOutsideToClose.tsx +17 -0
  188. package/src/helpers/getIcons.ts +5 -0
  189. package/src/helpers/useMediaQuery.tsx +24 -0
  190. package/src/helpers/uuid.ts +5 -0
  191. package/src/iconsList.json +1 -0
  192. package/src/index.ts +53 -0
  193. package/src/reportWebVitals.js +13 -0
  194. package/src/stories/Documentation/Colors.stories.tsx +33 -0
  195. package/src/stories/Documentation/Headings.stories.tsx +24 -0
  196. package/src/stories/Documentation/Icons.stories.tsx +73 -0
  197. package/src/stories/Documentation/JWT.stories.tsx +60 -0
  198. package/src/stories/Documentation/Utilities.stories.tsx +65 -0
  199. package/src/styles/Global.ts +296 -0
  200. package/src/styles/grid.ts +70 -0
  201. package/src/styles/reset.ts +47 -0
  202. package/src/styles/utilities.ts +326 -0
  203. package/src/styles/variables.ts +168 -0
  204. package/tsconfig.json +29 -0
  205. package/tsconfig.node.json +11 -0
  206. package/vite.config.ts +87 -0
@@ -0,0 +1,34 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+
3
+ import Chip from './Chip.component'
4
+ import { IChip } from './Chip.interface'
5
+ import React from 'react'
6
+
7
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
8
+ export default {
9
+ title: 'Components/Chip',
10
+ component: Chip,
11
+ tags: ['autodocs'],
12
+ // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
13
+ argTypes: {}
14
+ } as Meta
15
+
16
+ export const Dark: StoryObj<IChip> = {
17
+ render: args => (
18
+ <div className="bg-primary70 p-6">
19
+ <Chip {...args}>Category name</Chip>
20
+ </div>
21
+ ),
22
+ args: {
23
+ variant: 'dark',
24
+ hover: true
25
+ }
26
+ }
27
+
28
+ export const Light: StoryObj<IChip> = {
29
+ render: args => <Chip {...args}>Category name</Chip>,
30
+ args: {
31
+ variant: 'light',
32
+ hover: true
33
+ }
34
+ }
@@ -0,0 +1,47 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ import { IChip } from './Chip.interface';
4
+ import { colors } from '@/styles/variables';
5
+
6
+ export const StyledChip = styled.div<IChip>`
7
+ display: inline-block;
8
+ vertical-align: top;
9
+
10
+ border-radius: 50px;
11
+ padding: 8px 22px;
12
+ text-transform: uppercase;
13
+
14
+ ${(props) => {
15
+ switch (props.$variant) {
16
+ case "dark": default:
17
+ return css`
18
+ color: ${colors.white};
19
+ border: 1px solid ${colors.white};
20
+
21
+ ${props.hover && `
22
+ &:hover{
23
+ color: ${colors.black};
24
+ background-color: ${colors.white};
25
+ }
26
+ `}
27
+ `;
28
+ case "light":
29
+ return css`
30
+ color: ${colors.black};
31
+ border: 1px solid ${colors.black};
32
+
33
+ ${props.hover && `
34
+ &:hover{
35
+ color: ${colors.white};
36
+ background-color: ${colors.black};
37
+ }
38
+ `}
39
+ `;
40
+ }
41
+ }}
42
+
43
+ ${({ hover }) => hover && `
44
+ transition: all 0.3s linear;
45
+ cursor:pointer;
46
+ `}
47
+ `;
@@ -0,0 +1 @@
1
+ export { default } from './Chip.component'
@@ -0,0 +1,17 @@
1
+ import { ICloseButton } from './CloseButton.interface'
2
+ import React from 'react'
3
+ import { StyledCloseButton } from './CloseButton.theme'
4
+ import cn from 'classnames'
5
+
6
+ const CloseButton = ({ variant, className, onClick, ...props }: ICloseButton) => {
7
+ return (
8
+ <StyledCloseButton
9
+ $variant={variant}
10
+ className={cn(className)}
11
+ onClick={onClick}
12
+ {...props}
13
+ />
14
+ )
15
+ }
16
+
17
+ export default CloseButton
@@ -0,0 +1,9 @@
1
+ import { CSSProperties } from 'react';
2
+
3
+ export type ICloseButton = {
4
+ variant?: string
5
+ $variant?: string
6
+ className?: string,
7
+ style?: CSSProperties
8
+ onClick?: () => void
9
+ }
@@ -0,0 +1,24 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+
3
+ import CloseButton from './CloseButton.component'
4
+ import { ICloseButton } from './CloseButton.interface'
5
+ import React from 'react'
6
+
7
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
8
+ export default {
9
+ title: 'Components/CloseButton',
10
+ component: CloseButton,
11
+ tags: ['autodocs'],
12
+ argTypes: {}
13
+ } as Meta
14
+
15
+ export const Simple: StoryObj<ICloseButton> = {
16
+ render: args => <CloseButton {...args} />,
17
+ args: {}
18
+ }
19
+ export const Small: StoryObj<ICloseButton> = {
20
+ render: args => <CloseButton {...args} />,
21
+ args: {
22
+ variant: 'sm'
23
+ }
24
+ }
@@ -0,0 +1,66 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ import { ICloseButton } from './CloseButton.interface';
4
+
5
+ export const StyledCloseButton = styled.div<ICloseButton>`
6
+ font-family: arial, "sans-serif" !important;
7
+ position: absolute;
8
+ top: 15px;
9
+ right: 15px;
10
+
11
+ color: currentColor;
12
+ font-size: 0;
13
+
14
+ background: none;
15
+
16
+ cursor: pointer;
17
+ z-index: 5;
18
+
19
+ &:before,
20
+ &:after {
21
+ content: "";
22
+ position: absolute;
23
+ top: 50%;
24
+ left: 50%;
25
+ display: block;
26
+ margin: auto;
27
+
28
+ width: 100%;
29
+ height: 0;
30
+ border-top: 1px solid currentColor;
31
+
32
+ transform-origin: center;
33
+ transition: all 0.3s linear;
34
+ }
35
+
36
+ &:before {
37
+ transform: translate(-50%,-50%) rotate(45deg);
38
+ }
39
+ &:after {
40
+ transform: translate(-50%,-50%) rotate(-45deg);
41
+ }
42
+
43
+ &:hover {
44
+ &:before {
45
+ transform: translate(-50%,-50%) rotate(25deg);
46
+ }
47
+ &:after {
48
+ transform: translate(-50%,-50%) rotate(-25deg);
49
+ }
50
+ }
51
+
52
+ ${(props) => {
53
+ switch (props.$variant) {
54
+ case "md": default:
55
+ return css`
56
+ width: 3rem !important;
57
+ height: 3rem !important;
58
+ `;
59
+ case "sm":
60
+ return css`
61
+ width: 1.2rem !important;
62
+ height: 1.2rem !important;
63
+ `;
64
+ }
65
+ }}
66
+ `;
@@ -0,0 +1 @@
1
+ export { default } from './CloseButton.component'
@@ -0,0 +1,27 @@
1
+ import Heading from '../Heading/Heading.component'
2
+ import { IEmptyState } from './EmptyState.interface'
3
+ import React from 'react'
4
+ import { ReactSVG } from 'react-svg'
5
+ import { StyledEmptyState } from '@/components/atoms/EmptyState/EmptyState.theme'
6
+
7
+ const EmptyState = ({
8
+ variant,
9
+ label,
10
+ children,
11
+ className,
12
+ style,
13
+ ...props
14
+ }: IEmptyState) => {
15
+ return (
16
+ <StyledEmptyState $variant={variant} className={className} style={style}>
17
+ <ReactSVG src={`/assets/empty-state.svg`} />
18
+ {label && (
19
+ <Heading tag="span" size="h4" className="fw-semibold mt-4">
20
+ {label}
21
+ </Heading>
22
+ )}
23
+ </StyledEmptyState>
24
+ )
25
+ }
26
+
27
+ export default EmptyState
@@ -0,0 +1,10 @@
1
+ import { CSSProperties } from 'react';
2
+
3
+ export interface IEmptyState {
4
+ variant?: string;
5
+ $variant?: string;
6
+ label?: string,
7
+ className?: string,
8
+ style?: CSSProperties
9
+ children?: React.ReactNode
10
+ }
@@ -0,0 +1,34 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+
3
+ import EmptyState from './EmptyState.component'
4
+ import { IEmptyState } from './EmptyState.interface'
5
+ import React from 'react'
6
+
7
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
8
+ export default {
9
+ title: 'Components/EmptyState',
10
+ component: EmptyState,
11
+ tags: ['autodocs'],
12
+ // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
13
+ argTypes: {}
14
+ } as Meta
15
+
16
+ export const Light: StoryObj<IEmptyState> = {
17
+ render: args => <EmptyState {...args}></EmptyState>,
18
+ args: {
19
+ variant: 'light',
20
+ label: 'No results for this search...'
21
+ }
22
+ }
23
+
24
+ export const Dark: StoryObj<IEmptyState> = {
25
+ render: args => (
26
+ <div className="bg-primary70 color-white p-8">
27
+ <EmptyState {...args}></EmptyState>
28
+ </div>
29
+ ),
30
+ args: {
31
+ variant: 'dark',
32
+ label: 'No results for this search...'
33
+ }
34
+ }
@@ -0,0 +1,27 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ import { IEmptyState } from './EmptyState.interface';
4
+ import { colors } from '@/styles/variables';
5
+
6
+ export const StyledEmptyState = styled.div<IEmptyState>`
7
+ display: flex;
8
+ flex-flow: column;
9
+ text-align: center;
10
+
11
+ ${(props) => {
12
+ switch (props.$variant) {
13
+ case "dark": default:
14
+ return css`
15
+ & svg path{
16
+ fill: ${colors.white} !important;
17
+ }
18
+ `;
19
+ case "light":
20
+ return css`
21
+ & svg path{
22
+ fill: ${colors.primary70} !important;
23
+ }
24
+ `;
25
+ }
26
+ }}
27
+ `;
@@ -0,0 +1 @@
1
+ export { default } from './EmptyState.component'
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+
3
+ import { StyledFlex } from '@/components/atoms/Flex/Flex.theme';
4
+
5
+ import { IFlex } from './Flex.interface';
6
+
7
+ const Flex = ({
8
+ direction,
9
+ align,
10
+ justify,
11
+ wrap,
12
+ children,
13
+ className,
14
+ ...props
15
+ }: IFlex) => {
16
+ return (
17
+ <StyledFlex
18
+ $direction={direction}
19
+ $align={align}
20
+ $justify={justify}
21
+ $wrap={wrap}
22
+ className={className}
23
+ {...props}
24
+ >
25
+ {children}
26
+ </StyledFlex>
27
+ )
28
+ }
29
+
30
+ export default Flex
@@ -0,0 +1,22 @@
1
+ import { CSSProperties } from 'react';
2
+
3
+ interface IFlexBase {
4
+ className?: string,
5
+ style?: CSSProperties
6
+ children?: React.ReactNode
7
+ }
8
+ export type flexAlign = 'flex-start' | 'center' | 'flex-end' | 'stretch' | string
9
+ export type flexJustify = 'flex-start' | 'center' | 'flex-end' | 'space-between' | string
10
+
11
+ export interface IFlex extends IFlexBase{
12
+ direction?: 'row' | 'column',
13
+ align?: flexAlign,
14
+ justify?: flexJustify,
15
+ wrap?: 'wrap' | 'nowrap',
16
+ }
17
+ export interface IFlexSC extends IFlexBase {
18
+ $direction?: 'row' | 'column',
19
+ $align?: flexAlign,
20
+ $justify?: flexJustify,
21
+ $wrap?: 'wrap' | 'nowrap',
22
+ }
@@ -0,0 +1,11 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ import { IFlexSC } from './Flex.interface';
4
+
5
+ export const StyledFlex = styled.div<IFlexSC>`
6
+ display: flex;
7
+ flex-direction: ${props => props.$direction ? props.$direction : "row"};
8
+ align-items: ${props => props.$align ? props.$align : "center"};
9
+ justify-content: ${props => props.$justify ? props.$justify : "start"};
10
+ flex-wrap: ${props => props.$wrap ? props.$wrap : "wrap"};
11
+ `;
@@ -0,0 +1 @@
1
+ export { default } from './Flex.component'
@@ -0,0 +1,61 @@
1
+ import { IColumn, IRow } from './FlexGrid.interface'
2
+ import { StyledColumn, StyledContainer, StyledRow } from './FlexGrid.theme'
3
+
4
+ import React from 'react'
5
+
6
+ export const Row = ({
7
+ fluid,
8
+ direction,
9
+ align,
10
+ justify,
11
+ wrap,
12
+ mobileSpace,
13
+ className,
14
+ style,
15
+ children,
16
+ ...props
17
+ }: IRow) => {
18
+ return (
19
+ <StyledContainer $fluid={fluid} className={className} style={style}>
20
+ <StyledRow
21
+ $direction={direction}
22
+ $align={align}
23
+ $justify={justify}
24
+ $wrap={wrap}
25
+ $mobileSpace={mobileSpace}
26
+ >
27
+ {children}
28
+ </StyledRow>
29
+ </StyledContainer>
30
+ )
31
+ }
32
+
33
+ export const Column = ({
34
+ xs,
35
+ sm,
36
+ md,
37
+ lg,
38
+ align,
39
+ mobileOrder,
40
+ children,
41
+ className,
42
+ style,
43
+ ...props
44
+ }: IColumn) => {
45
+ return (
46
+ <StyledColumn
47
+ $xs={xs}
48
+ $sm={sm}
49
+ $md={md}
50
+ $lg={lg}
51
+ $align={align}
52
+ $mobileOrder={mobileOrder}
53
+ className={className}
54
+ style={style}
55
+ >
56
+ {children}
57
+ </StyledColumn>
58
+ )
59
+ }
60
+
61
+ export default Row
@@ -0,0 +1,55 @@
1
+ import { flexAlign, flexJustify } from '../Flex/Flex.interface';
2
+
3
+ import { CSSProperties } from 'react';
4
+
5
+ export interface IRowBase {
6
+ className?: string,
7
+ style?: CSSProperties
8
+ children?: React.ReactNode
9
+ }
10
+ export interface IRow extends IRowBase {
11
+ fluid?: boolean,
12
+ direction?: 'row' | 'column',
13
+ align?: flexAlign,
14
+ justify?: flexJustify,
15
+ wrap?: 'wrap' | 'nowrap',
16
+ mobileSpace?: boolean
17
+ }
18
+ export interface IRowSC extends IRowBase {
19
+ $fluid?: boolean,
20
+ $direction?: 'row' | 'column',
21
+ $align?: flexAlign,
22
+ $justify?: flexJustify,
23
+ $wrap?: 'wrap' | 'nowrap',
24
+ $mobileSpace?: boolean
25
+ }
26
+
27
+ export type IColumnsSize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | number;
28
+
29
+ export interface IColumnBase {
30
+ className?: string,
31
+ style?: CSSProperties
32
+ children?: React.ReactNode
33
+ }
34
+
35
+ export interface IColumnSC extends IColumnBase {
36
+ $align?: flexAlign,
37
+ $lg?: IColumnsSize
38
+ $md?: IColumnsSize
39
+ $sm?: IColumnsSize
40
+ $xs?: IColumnsSize
41
+ $mobileOrder?: number
42
+ }
43
+
44
+ export interface IColumn extends IColumnBase {
45
+ align?: flexAlign,
46
+ lg?: IColumnsSize
47
+ md?: IColumnsSize
48
+ sm?: IColumnsSize
49
+ xs?: IColumnsSize
50
+ mobileOrder?: number
51
+ }
52
+
53
+
54
+ export type Flex = IRow
55
+
@@ -0,0 +1,55 @@
1
+ import { Column, Row } from './FlexGrid.component'
2
+ import type { Meta, StoryObj } from '@storybook/react'
3
+
4
+ import { IRow } from './FlexGrid.interface'
5
+ import React from 'react'
6
+
7
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
8
+ export default {
9
+ title: 'Components/FlexGrid',
10
+ component: Row,
11
+ tags: ['autodocs'],
12
+ // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
13
+ argTypes: {}
14
+ } as Meta
15
+
16
+ export const Simple: StoryObj<IRow> = {
17
+ render: args => (
18
+ <Row {...args}>
19
+ <Column xs={6} md={8} lg={10}>
20
+ Column sm-6 md-8 lg-10
21
+ </Column>
22
+ <Column xs={6} md={4} lg={2}>
23
+ Column sm-6 md-4 lg-2
24
+ </Column>
25
+ </Row>
26
+ ),
27
+ args: {}
28
+ }
29
+ export const Fluid: StoryObj<IRow> = {
30
+ render: args => (
31
+ <Row {...args}>
32
+ <Column md={8}>Column sm-6 md-8 lg-10</Column>
33
+ <Column md={4}>Column sm-6 md-4 lg-2</Column>
34
+ </Row>
35
+ ),
36
+ args: {
37
+ fluid: true
38
+ }
39
+ }
40
+
41
+ export const Order: StoryObj<IRow> = {
42
+ render: args => (
43
+ <Row {...args}>
44
+ <Column md={8} mobileOrder={2}>
45
+ mobile order 2
46
+ </Column>
47
+ <Column md={4} mobileOrder={1}>
48
+ mobile order 1
49
+ </Column>
50
+ </Row>
51
+ ),
52
+ args: {
53
+ fluid: true
54
+ }
55
+ }
@@ -0,0 +1,79 @@
1
+ // @ts-nocheck
2
+ /* eslint-disable */
3
+
4
+ import { IColumnSC, IRowSC } from './FlexGrid.interface';
5
+ import config, { CONTAINER_NAMES, DIMENSION_NAMES } from '@/styles/grid';
6
+ import { grid_conf, gutter, responsiveMedia, spaces } from '@/styles/variables';
7
+ import styled, { css } from 'styled-components';
8
+
9
+ export const StyledContainer = styled.div<IRowSC>`
10
+ position: relative;
11
+ width: 100%;
12
+ margin-right: auto;
13
+ margin-left: auto;
14
+
15
+ padding-right: ${props => props.$fluid ? "0" : `1rem`};
16
+ padding-left: ${props => props.$fluid ? "0" : `1rem`};
17
+ z-index: 1;
18
+
19
+
20
+ ${Object.keys(CONTAINER_NAMES)
21
+ .sort((k1, k2) => CONTAINER_NAMES.indexOf(k1) - CONTAINER_NAMES.indexOf(k2))
22
+ .map(k => config(CONTAINER_NAMES).mediaContainer[CONTAINER_NAMES[k]]`
23
+ max-width: ${grid_conf.container[CONTAINER_NAMES[k]]};
24
+ `)}
25
+
26
+ `
27
+
28
+ export const StyledRow = styled.div<IRowSC>`
29
+ display: flex;
30
+ flex-direction: ${props => props.$direction ? props.$direction : "row"};
31
+ align-items: ${props => props.$align ? props.$align : "stretch"};
32
+ justify-content: ${props => props.$justify ? props.$justify : "flex-start"};
33
+ flex-wrap: ${props => props.$wrap ? props.$wrap : "wrap"};
34
+
35
+ margin-right: -${gutter};
36
+ margin-left: -${gutter};
37
+
38
+ @media only screen and (max-width: ${responsiveMedia}) {
39
+ ${({ $mobileSpace }) => $mobileSpace && `
40
+ gap: 1.6rem;
41
+ `}
42
+ }
43
+ `;
44
+
45
+ export const StyledColumn = styled.div<IColumnSC>`
46
+ width: 100%;
47
+ padding-right: ${gutter};
48
+ padding-left: ${gutter};
49
+
50
+ ${({ $xs }) => $xs && `
51
+ flex-basis: ${100 / grid_conf.gridSize * $xs}%;
52
+ max-width: ${100 / grid_conf.gridSize * $xs}%;
53
+ `}
54
+
55
+ ${props => Object.keys(props)
56
+ .filter(k => ~DIMENSION_NAMES.indexOf(k))
57
+ .sort((k1, k2) => DIMENSION_NAMES.indexOf(k1) - DIMENSION_NAMES.indexOf(k2))
58
+ .map(k => config(props).media[k]`${Number.isInteger(props[k])
59
+
60
+ // Integer value
61
+ && `
62
+ flex-basis: ${100 / config(props).gridSize * props[k]}%;
63
+ max-width: ${100 / config(props).gridSize * props[k]}%;
64
+ `}
65
+ `)
66
+ }
67
+
68
+ @media only screen and (max-width: ${responsiveMedia}) {
69
+ ${({ $mobileOrder }) => $mobileOrder && `
70
+ order: ${$mobileOrder};
71
+ `}
72
+
73
+ &:empty{
74
+ display:none
75
+ }
76
+ }
77
+ `;
78
+
79
+
@@ -0,0 +1 @@
1
+ export { Column, Row } from './FlexGrid.component'
@@ -0,0 +1,22 @@
1
+ import React, { Children } from 'react'
2
+
3
+ import { Field } from 'formik'
4
+ import { ICheckRadioField } from './CheckRadioField.interface'
5
+ import { StyledCheckRadioField } from './CheckRadioField.theme'
6
+
7
+ const CheckRadioField = ({
8
+ id,
9
+ label,
10
+ className,
11
+ children,
12
+ ...props
13
+ }: ICheckRadioField) => {
14
+ return (
15
+ <StyledCheckRadioField>
16
+ {children}
17
+ <label htmlFor={id}>{label}</label>
18
+ </StyledCheckRadioField>
19
+ )
20
+ }
21
+
22
+ export default CheckRadioField
@@ -0,0 +1,6 @@
1
+ export type ICheckRadioField = {
2
+ id?: string
3
+ label?: string
4
+ className?: string
5
+ children?: React.ReactNode
6
+ }