oddsgate-ds 1.0.17 → 1.0.19

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 (98) hide show
  1. package/dist/cjs/index.js +5 -5
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/components/atoms/Button/Button.theme.d.ts +3 -0
  4. package/dist/cjs/types/components/atoms/Chip/Chip.theme.d.ts +3 -0
  5. package/dist/cjs/types/components/atoms/CloseButton/CloseButton.theme.d.ts +3 -0
  6. package/dist/cjs/types/components/atoms/EmptyState/EmptyState.theme.d.ts +3 -0
  7. package/dist/cjs/types/components/atoms/Flex/Flex.theme.d.ts +3 -0
  8. package/dist/cjs/types/components/atoms/FlexGrid/FlexGrid.theme.d.ts +5 -0
  9. package/dist/cjs/types/components/atoms/FormField/CheckRadioField/CheckRadioField.theme.d.ts +3 -0
  10. package/dist/cjs/types/components/atoms/FormField/FormField.theme.d.ts +4 -0
  11. package/dist/cjs/types/components/atoms/Heading/Heading.theme.d.ts +3 -0
  12. package/dist/cjs/types/components/atoms/Icon/Icon.theme.d.ts +3 -0
  13. package/dist/cjs/types/components/atoms/ImageWrapper/ImageWrapper.theme.d.ts +4 -0
  14. package/dist/cjs/types/components/atoms/Loader/Loader.theme.d.ts +3 -0
  15. package/dist/cjs/types/components/atoms/Marquee/Marquee.theme.d.ts +3 -0
  16. package/dist/cjs/types/components/atoms/Quote/Quote.theme.d.ts +3 -0
  17. package/dist/cjs/types/components/atoms/RichText/RichText.theme.d.ts +3 -0
  18. package/dist/cjs/types/components/atoms/ScrollingNav/ScrollingNav.theme.d.ts +3 -0
  19. package/dist/cjs/types/components/atoms/Separator/Separator.theme.d.ts +3 -0
  20. package/dist/cjs/types/components/atoms/SocialLinks/SocialLinks.theme.d.ts +3 -0
  21. package/dist/cjs/types/components/atoms/Spacer/Spacer.theme.d.ts +3 -0
  22. package/dist/cjs/types/components/atoms/Video/Video.theme.d.ts +5 -0
  23. package/dist/cjs/types/components/atoms/VideoEmbed/VideoEmbed.theme.d.ts +5 -0
  24. package/dist/cjs/types/components/molecules/Accordion/Accordion.theme.d.ts +6 -0
  25. package/dist/cjs/types/components/molecules/BlogCard/BlogCard.theme.d.ts +3 -0
  26. package/dist/cjs/types/components/molecules/Card/Card.theme.d.ts +4 -0
  27. package/dist/cjs/types/components/molecules/Dropdown/Dropdown.theme.d.ts +6 -0
  28. package/dist/cjs/types/components/molecules/IconBox/IconBox.theme.d.ts +3 -0
  29. package/dist/cjs/types/components/molecules/IconTitle/IconTitle.theme.d.ts +3 -0
  30. package/dist/cjs/types/components/molecules/Modal/Modal.theme.d.ts +6 -0
  31. package/dist/cjs/types/components/molecules/OffCanvas/OffCanvas.theme.d.ts +3 -0
  32. package/dist/cjs/types/components/molecules/ProjectCard/ProjectCard.theme.d.ts +3 -0
  33. package/dist/cjs/types/components/molecules/ShareModal/ShareModal.theme.d.ts +5 -0
  34. package/dist/cjs/types/components/molecules/TeamCard/TeamCard.theme.d.ts +3 -0
  35. package/dist/cjs/types/components/organisms/CircularSlider/CircularSlider.component.d.ts +4 -0
  36. package/dist/cjs/types/components/organisms/CircularSlider/CircularSlider.interface.d.ts +11 -0
  37. package/dist/cjs/types/components/organisms/CircularSlider/CircularSlider.stories.d.ts +5 -0
  38. package/dist/cjs/types/components/organisms/CircularSlider/CircularSlider.theme.d.ts +7 -0
  39. package/dist/cjs/types/components/organisms/CircularSlider/index.d.ts +1 -0
  40. package/dist/cjs/types/components/organisms/Cover/Cover.theme.d.ts +5 -0
  41. package/dist/cjs/types/components/organisms/Slider/Slider.theme.d.ts +3 -0
  42. package/dist/cjs/types/index.d.ts +1 -0
  43. package/dist/esm/index.js +5 -5
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/types/components/atoms/Button/Button.theme.d.ts +3 -0
  46. package/dist/esm/types/components/atoms/Chip/Chip.theme.d.ts +3 -0
  47. package/dist/esm/types/components/atoms/CloseButton/CloseButton.theme.d.ts +3 -0
  48. package/dist/esm/types/components/atoms/EmptyState/EmptyState.theme.d.ts +3 -0
  49. package/dist/esm/types/components/atoms/Flex/Flex.theme.d.ts +3 -0
  50. package/dist/esm/types/components/atoms/FlexGrid/FlexGrid.theme.d.ts +5 -0
  51. package/dist/esm/types/components/atoms/FormField/CheckRadioField/CheckRadioField.theme.d.ts +3 -0
  52. package/dist/esm/types/components/atoms/FormField/FormField.theme.d.ts +4 -0
  53. package/dist/esm/types/components/atoms/Heading/Heading.theme.d.ts +3 -0
  54. package/dist/esm/types/components/atoms/Icon/Icon.theme.d.ts +3 -0
  55. package/dist/esm/types/components/atoms/ImageWrapper/ImageWrapper.theme.d.ts +4 -0
  56. package/dist/esm/types/components/atoms/Loader/Loader.theme.d.ts +3 -0
  57. package/dist/esm/types/components/atoms/Marquee/Marquee.theme.d.ts +3 -0
  58. package/dist/esm/types/components/atoms/Quote/Quote.theme.d.ts +3 -0
  59. package/dist/esm/types/components/atoms/RichText/RichText.theme.d.ts +3 -0
  60. package/dist/esm/types/components/atoms/ScrollingNav/ScrollingNav.theme.d.ts +3 -0
  61. package/dist/esm/types/components/atoms/Separator/Separator.theme.d.ts +3 -0
  62. package/dist/esm/types/components/atoms/SocialLinks/SocialLinks.theme.d.ts +3 -0
  63. package/dist/esm/types/components/atoms/Spacer/Spacer.theme.d.ts +3 -0
  64. package/dist/esm/types/components/atoms/Video/Video.theme.d.ts +5 -0
  65. package/dist/esm/types/components/atoms/VideoEmbed/VideoEmbed.theme.d.ts +5 -0
  66. package/dist/esm/types/components/molecules/Accordion/Accordion.theme.d.ts +6 -0
  67. package/dist/esm/types/components/molecules/BlogCard/BlogCard.theme.d.ts +3 -0
  68. package/dist/esm/types/components/molecules/Card/Card.theme.d.ts +4 -0
  69. package/dist/esm/types/components/molecules/Dropdown/Dropdown.theme.d.ts +6 -0
  70. package/dist/esm/types/components/molecules/IconBox/IconBox.theme.d.ts +3 -0
  71. package/dist/esm/types/components/molecules/IconTitle/IconTitle.theme.d.ts +3 -0
  72. package/dist/esm/types/components/molecules/Modal/Modal.theme.d.ts +6 -0
  73. package/dist/esm/types/components/molecules/OffCanvas/OffCanvas.theme.d.ts +3 -0
  74. package/dist/esm/types/components/molecules/ProjectCard/ProjectCard.theme.d.ts +3 -0
  75. package/dist/esm/types/components/molecules/ShareModal/ShareModal.theme.d.ts +5 -0
  76. package/dist/esm/types/components/molecules/TeamCard/TeamCard.theme.d.ts +3 -0
  77. package/dist/esm/types/components/organisms/CircularSlider/CircularSlider.component.d.ts +4 -0
  78. package/dist/esm/types/components/organisms/CircularSlider/CircularSlider.interface.d.ts +11 -0
  79. package/dist/esm/types/components/organisms/CircularSlider/CircularSlider.stories.d.ts +5 -0
  80. package/dist/esm/types/components/organisms/CircularSlider/CircularSlider.theme.d.ts +7 -0
  81. package/dist/esm/types/components/organisms/CircularSlider/index.d.ts +1 -0
  82. package/dist/esm/types/components/organisms/Cover/Cover.theme.d.ts +5 -0
  83. package/dist/esm/types/components/organisms/Slider/Slider.theme.d.ts +3 -0
  84. package/dist/esm/types/index.d.ts +1 -0
  85. package/dist/types.d.ts +555 -0
  86. package/package.json +3 -3
  87. package/rollup.config.js +5 -5
  88. package/src/components/atoms/Button/Button.theme.ts +3 -1
  89. package/src/components/atoms/FormField/FormField.component.tsx +1 -1
  90. package/src/components/atoms/FormField/FormField.theme.tsx +2 -1
  91. package/src/components/atoms/SocialLinks/SocialLinks.component.tsx +6 -1
  92. package/src/components/atoms/SocialLinks/SocialLinks.stories.tsx +1 -1
  93. package/src/components/organisms/CircularSlider/CircularSlider.component.tsx +162 -0
  94. package/src/components/organisms/CircularSlider/CircularSlider.interface.ts +12 -0
  95. package/src/components/organisms/CircularSlider/CircularSlider.stories.tsx +74 -0
  96. package/src/components/organisms/CircularSlider/CircularSlider.theme.ts +58 -0
  97. package/src/components/organisms/CircularSlider/index.ts +1 -0
  98. package/src/index.ts +1 -0
@@ -0,0 +1,162 @@
1
+ import React, { useEffect, useRef } from 'react'
2
+ import {
3
+ StyledCircularSlider,
4
+ StyledCircularSliderContent,
5
+ StyledCircularSliderSlide,
6
+ StyledCircularSliderSlides,
7
+ StyledCircularSliderWrapper
8
+ } from './CircularSlider.theme'
9
+
10
+ import { ICircularSlider } from './CircularSlider.interface'
11
+
12
+ const CircularSlider = ({
13
+ content,
14
+ style,
15
+ className,
16
+ }: ICircularSlider) => {
17
+
18
+ const slider = useRef<HTMLDivElement>();
19
+ const wrapper = useRef<HTMLDivElement>();
20
+ const slidesHolder = useRef<HTMLDivElement>();
21
+
22
+ const sliderSize = 80 / 100;
23
+ const slideSize = 15 / 100;
24
+
25
+
26
+ useEffect(() => {
27
+ if (!slidesHolder.current) return //bail out;
28
+
29
+ const animationDuration = 600;
30
+
31
+ const slides = Array.prototype.slice.call(slidesHolder?.current?.children);
32
+
33
+ let slidesSize = 0;
34
+
35
+ let currentAngle = -90;
36
+
37
+ // const stepAngle = 2 * Math.PI / slidesHolder?.current?.children.length;
38
+ const stepAngle = 0.52;
39
+
40
+ let currentSlide = 0;
41
+
42
+ slidesHolder.current.style.transitionDuration = animationDuration + 'ms';
43
+
44
+ const slidesRepositioning = (r) => {
45
+ for (let i = 0; i < slides.length; i++) {
46
+
47
+ let x = r * Math.cos(stepAngle * i - Math.PI / 2),
48
+ y = r * Math.sin(stepAngle * i - Math.PI / 2);
49
+
50
+ slides[i].style.transform = 'translate( ' + x + 'px, ' + y + 'px ) rotate( ' + ((stepAngle * 180 / Math.PI * i) + 90) + 'deg )';
51
+ // slides[i].style.transform = 'translate( ' + x + 'px, ' + y + 'px )';
52
+ };
53
+ }
54
+ const setSize = (radius: number) => {
55
+ if (!wrapper.current || !slidesHolder.current) return //bail out;
56
+
57
+ wrapper.current.style.width = 2 * radius + 'px';
58
+ wrapper.current.style.height = 2 * radius + 'px';
59
+
60
+ let r = 2 * radius * (1 - slideSize);
61
+ slidesHolder.current.style.width = slidesHolder.current.style.height = r + 'px';
62
+ slidesRepositioning(r / 2);
63
+
64
+ slidesHolder.current.style.marginTop = radius * slideSize + 'px';
65
+
66
+ slidesSize = Math.min(2 * radius * slideSize, stepAngle * radius * (1 - slideSize) - 50);
67
+
68
+ for (let i = 0; i < slides.length; i++) {
69
+ slides[i].style.width = slides[i].style.height = slidesSize + 'px';
70
+ };
71
+
72
+ }
73
+ const sliderResize = () => {
74
+ let radius,
75
+ w = slider?.current?.getBoundingClientRect().width || 0,
76
+ h = slider?.current?.getBoundingClientRect().height || 0;
77
+
78
+ 2 * h <= w ? radius = h * sliderSize : radius = (w / 2) * sliderSize;
79
+
80
+ setSize(Math.round(radius));
81
+ }
82
+
83
+ const addStyle = () => {
84
+ slides[currentSlide].classList.add('slides-holder__item_active');
85
+ slides[currentSlide].style.height = slides[currentSlide].style.width = slidesSize + 20 + 'px';
86
+ };
87
+ const removeStyle = () => {
88
+ slides[currentSlide].classList.remove('slides-holder__item_active');
89
+ slides[currentSlide].style.height = slides[currentSlide].style.width = slidesSize + 'px';
90
+ };
91
+
92
+ const rotateSlider = (e) => {
93
+ const newSlide = slides.indexOf(e.target);
94
+
95
+ if (currentSlide === newSlide || !slidesHolder?.current) return;
96
+
97
+ removeStyle();
98
+
99
+ const distanceUntilEnd = slides.length - newSlide;
100
+ const distanteFromStart = currentSlide;
101
+ const a = (distanteFromStart + distanceUntilEnd) > 0 ? (distanteFromStart + distanceUntilEnd) * -1 : (distanteFromStart + distanceUntilEnd);
102
+
103
+ // const multiplier = newSlide >= (slides.length / 2) ? a : newSlide - currentSlide;
104
+ const multiplier = newSlide - currentSlide;
105
+
106
+ const newAngle = Math.abs((stepAngle * 180 / Math.PI) * multiplier);
107
+
108
+ currentSlide < newSlide ? currentAngle -= newAngle : currentAngle += newAngle;
109
+ currentSlide = newSlide;
110
+
111
+ slidesHolder.current.style.transform = 'rotate( ' + currentAngle + 'deg )';
112
+ addStyle();
113
+ }
114
+
115
+ sliderResize();
116
+ addStyle();
117
+
118
+
119
+ for (let i = 0; i < slides.length; i++) {
120
+ slides[i].addEventListener('click', rotateSlider);
121
+ };
122
+
123
+ window.addEventListener('resize', sliderResize)
124
+
125
+ return () => {
126
+ for (let i = 0; i < slides.length; i++) {
127
+ slides[i].removeEventListener('click', rotateSlider);
128
+ };
129
+
130
+ window.removeEventListener('resize', sliderResize)
131
+ }
132
+ }, [])
133
+
134
+
135
+ return (
136
+ <StyledCircularSlider ref={slider as any}>
137
+ <StyledCircularSliderWrapper ref={wrapper as any}>
138
+ {/* <div className="controls">
139
+ <div className="controls__left">
140
+ <div className="icon-wrapper">left</div>
141
+ </div>
142
+ <div className="controls__right">
143
+ <div className="icon-wrapper">right</div>
144
+ </div>
145
+ </div> */}
146
+ <StyledCircularSliderSlides ref={slidesHolder as any}>
147
+ {content?.map((item, index) => {
148
+ return (
149
+ <StyledCircularSliderSlide key={`slide-${index}`}>{item.img}</StyledCircularSliderSlide>
150
+ )
151
+ })}
152
+ </StyledCircularSliderSlides>
153
+ <StyledCircularSliderContent>
154
+
155
+ </StyledCircularSliderContent>
156
+ </StyledCircularSliderWrapper>
157
+ </StyledCircularSlider>
158
+
159
+ )
160
+ }
161
+
162
+ export default CircularSlider
@@ -0,0 +1,12 @@
1
+ import { CSSProperties } from 'react';
2
+
3
+ export type ICircularSlider = {
4
+ id?: string;
5
+ className?: string;
6
+ style?: CSSProperties;
7
+ content?: {
8
+ name?: string,
9
+ role?: string,
10
+ img?: React.ReactNode
11
+ }[]
12
+ }
@@ -0,0 +1,74 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+
3
+ import Button from '../../atoms/Button/Button.component'
4
+ import CircularSlider from './CircularSlider.component'
5
+ import Flex from '../../atoms/Flex/Flex.component'
6
+ import { ICircularSlider } from './CircularSlider.interface'
7
+ import React from 'react'
8
+ import RichText from '../../atoms/RichText/RichText.component'
9
+ import Video from '../../atoms/Video/Video.component'
10
+
11
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
12
+ export default {
13
+ title: 'Components/CircularSlider',
14
+ component: CircularSlider,
15
+ tags: ['autodocs']
16
+ } as Meta
17
+
18
+ const image = (
19
+ <img
20
+ width="100%"
21
+ height="100%"
22
+ sizes="100vw"
23
+ decoding="async"
24
+ src="/assets/placeholder.png"
25
+ alt="Empty state"
26
+ />
27
+ )
28
+
29
+ export const Simple: StoryObj<ICircularSlider> = {
30
+ render: args => (
31
+ <CircularSlider {...args}>
32
+
33
+ </CircularSlider>
34
+ ),
35
+ args: {
36
+ content: [
37
+ {
38
+ name: "My name",
39
+ role: "My role",
40
+ img: image
41
+ },
42
+ {
43
+ name: "My name",
44
+ role: "My role",
45
+ img: image
46
+ },
47
+ {
48
+ name: "My name",
49
+ role: "My role",
50
+ img: image
51
+ },
52
+ {
53
+ name: "My name",
54
+ role: "My role",
55
+ img: image
56
+ },
57
+ {
58
+ name: "My name",
59
+ role: "My role",
60
+ img: image
61
+ },
62
+ {
63
+ name: "My name",
64
+ role: "My role",
65
+ img: image
66
+ },
67
+ {
68
+ name: "My name",
69
+ role: "My role",
70
+ img: image
71
+ }
72
+ ]
73
+ }
74
+ }
@@ -0,0 +1,58 @@
1
+ import { ICircularSlider } from './CircularSlider.interface';
2
+ import { StyledVideo } from '../../atoms/Video/Video.theme';
3
+ import styled from 'styled-components';
4
+
5
+ export const StyledCircularSlider = styled.div<ICircularSlider>`
6
+ width: 100%;
7
+ min-height: 100vh;
8
+ overflow: hidden;
9
+ display: flex;
10
+ justify-content: center;
11
+ align-items: flex-end;
12
+
13
+ `;
14
+
15
+ export const StyledCircularSliderWrapper = styled.div<ICircularSlider>`
16
+ margin: 0 auto;
17
+ margin-right: 0;
18
+ display: flex;
19
+ justify-content: center;
20
+ position: relative;
21
+ padding: 20px 20px 0px 20px;
22
+ overflow: hidden;
23
+ transform: translateX(60%);
24
+ `;
25
+
26
+ export const StyledCircularSliderSlides = styled.div<ICircularSlider>`
27
+ border-radius: 50%;
28
+ border: 2px solid #8EB8E5;
29
+ transform-origin: center;
30
+ display: flex;
31
+ justify-content: center;
32
+ align-items: center;
33
+ position: relative;
34
+ z-index: 100;
35
+ transform: rotate(-90deg);
36
+ `;
37
+ export const StyledCircularSliderSlide = styled.div<ICircularSlider>`
38
+ border-radius: 50%;
39
+ border: 2px solid #7C99B4;
40
+ position: absolute;
41
+ transform-origin: center;
42
+ background-color: #222;
43
+ transition: .3s linear all;
44
+ filter: brightness(70%);
45
+
46
+ & img{
47
+ pointer-events:none;
48
+ }
49
+
50
+ &.slides-holder__item_active{
51
+ filter: brightness(100%);
52
+ }
53
+ `;
54
+
55
+ export const StyledCircularSliderContent = styled.div<ICircularSlider>`
56
+
57
+ `;
58
+
@@ -0,0 +1 @@
1
+ export { default } from './CircularSlider.component'
package/src/index.ts CHANGED
@@ -43,6 +43,7 @@ export { default as ProjectCard } from './components/molecules/ProjectCard'
43
43
  // //organisms
44
44
  export { default as Slider } from './components/organisms/Slider'
45
45
  export { default as Cover } from './components/organisms/Cover'
46
+ export { default as CircularSlider } from './components/organisms/CircularSlider'
46
47
 
47
48
  export { iconsList } from './helpers/getIcons'
48
49