@wayke-se/components-react 3.0.0-beta.11 → 3.0.0-beta.12

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 (274) hide show
  1. package/package.json +4 -2
  2. package/.editorconfig +0 -10
  3. package/.eslintrc.js +0 -62
  4. package/.github/workflows/release-to-production.yaml +0 -40
  5. package/.github/workflows/release-to-test.yaml +0 -40
  6. package/.prettierrc +0 -12
  7. package/assets/ajax-loader.gif +0 -0
  8. package/assets/default.css +0 -1
  9. package/assets/fonts/slick.eot +0 -0
  10. package/assets/fonts/slick.svg +0 -14
  11. package/assets/fonts/slick.ttf +0 -0
  12. package/assets/fonts/slick.woff +0 -0
  13. package/codegen.yml +0 -19
  14. package/esbuild/build.js +0 -39
  15. package/esbuild/common.js +0 -15
  16. package/esbuild/start.js +0 -21
  17. package/esbuild/www/index.html +0 -32
  18. package/example/src/@types/global.d.ts +0 -7
  19. package/example/src/@types/react-panellum.d.ts +0 -1
  20. package/example/src/App.tsx +0 -77
  21. package/example/src/assets/style/ecom.css +0 -63
  22. package/example/src/assets/style/theme.css +0 -83
  23. package/example/src/index.html +0 -26
  24. package/example/src/index.tsx +0 -11
  25. package/example/src/routes/HashRoute/index.tsx +0 -30
  26. package/example/src/routes/Home/index.tsx +0 -33
  27. package/example/src/routes/NotFound/index.tsx +0 -5
  28. package/example/src/routes/PathRoute/index.tsx +0 -35
  29. package/example/src/routes/Search/index.tsx +0 -28
  30. package/example/src/routes/SearchItem/index.tsx +0 -28
  31. package/example/src/routes/index.tsx +0 -25
  32. package/src/@types/action.ts +0 -3
  33. package/src/@types/codegen/types.ts +0 -366
  34. package/src/@types/filter.ts +0 -18
  35. package/src/@types/queryFilter.ts +0 -5
  36. package/src/@types/react-panellum.d.ts +0 -1
  37. package/src/@types/search.ts +0 -118
  38. package/src/@types/theme.d.ts +0 -5
  39. package/src/@types/vehicle-properties.ts +0 -33
  40. package/src/State/CentralStorage/CentralStorageContext.ts +0 -10
  41. package/src/State/CentralStorage/CentralStorageProvider.tsx +0 -21
  42. package/src/State/CentralStorage/useCentralStorage.ts +0 -37
  43. package/src/State/Path/PathContext.ts +0 -11
  44. package/src/State/Path/PathProvider.tsx +0 -66
  45. package/src/State/Path/reducer.ts +0 -30
  46. package/src/State/Path/usePath.ts +0 -13
  47. package/src/State/RelatedSearch/RelatedSearchContext.ts +0 -18
  48. package/src/State/RelatedSearch/RelatedSearchProvider.tsx +0 -55
  49. package/src/State/RelatedSearch/useRelatedSearch.ts +0 -20
  50. package/src/State/Search/SearchContext.ts +0 -27
  51. package/src/State/Search/SearchProvider.tsx +0 -243
  52. package/src/State/Search/useSearch.ts +0 -6
  53. package/src/State/Settings/SettingsContext.ts +0 -15
  54. package/src/State/Settings/SettingsProvider.tsx +0 -23
  55. package/src/State/Settings/useSettings.ts +0 -7
  56. package/src/components/Accordion/index.tsx +0 -57
  57. package/src/components/Accordion/wrapper.tsx +0 -107
  58. package/src/components/ActionList/index.tsx +0 -48
  59. package/src/components/ActionList/toggle-item.tsx +0 -59
  60. package/src/components/Avatar/index.tsx +0 -12
  61. package/src/components/Avatar/wrapper.tsx +0 -21
  62. package/src/components/Badge/index.tsx +0 -12
  63. package/src/components/Badge/wrapper.tsx +0 -32
  64. package/src/components/Blockquote/index.tsx +0 -32
  65. package/src/components/Blockquote/wrapper.tsx +0 -52
  66. package/src/components/Button/index.tsx +0 -226
  67. package/src/components/CheckMarkList/index.tsx +0 -21
  68. package/src/components/CheckMarkList/wrapper.tsx +0 -31
  69. package/src/components/Checklist/index.tsx +0 -51
  70. package/src/components/Checklist/wrapper.tsx +0 -65
  71. package/src/components/ColorSelect/index.tsx +0 -63
  72. package/src/components/ColorSelect/wrapper.tsx +0 -82
  73. package/src/components/ColumnRow/index.tsx +0 -20
  74. package/src/components/Container/index.tsx +0 -11
  75. package/src/components/Container/wrapper.tsx +0 -14
  76. package/src/components/Content/index.tsx +0 -15
  77. package/src/components/Content/wrapper.tsx +0 -61
  78. package/src/components/ContentLogo/index.tsx +0 -27
  79. package/src/components/DataList/index.tsx +0 -25
  80. package/src/components/DataList/wrapper.tsx +0 -29
  81. package/src/components/DetailBox/index.tsx +0 -34
  82. package/src/components/DetailBox/wrapper.tsx +0 -34
  83. package/src/components/ExtendContent/index.tsx +0 -43
  84. package/src/components/ExtendContent/wrapper.tsx +0 -41
  85. package/src/components/ExtendInfo/index.tsx +0 -32
  86. package/src/components/ExtendInfo/wrapper.tsx +0 -63
  87. package/src/components/Filter/index.tsx +0 -108
  88. package/src/components/Filter/wrapper.tsx +0 -79
  89. package/src/components/FilterPanel/checkListFacet.tsx +0 -46
  90. package/src/components/FilterPanel/colorFacet.tsx +0 -47
  91. package/src/components/FilterPanel/faceSelector.tsx +0 -53
  92. package/src/components/FilterPanel/index.tsx +0 -79
  93. package/src/components/FilterPanel/rangeFacet.tsx +0 -128
  94. package/src/components/FinancialOptions/LoanModal.tsx +0 -223
  95. package/src/components/FinancialOptions/index.tsx +0 -29
  96. package/src/components/FinancialOptions/leasing.tsx +0 -77
  97. package/src/components/FinancialOptions/loan.tsx +0 -87
  98. package/src/components/Gallery/MediaButton.tsx +0 -19
  99. package/src/components/Gallery/index.tsx +0 -227
  100. package/src/components/Gallery/wrapper.tsx +0 -323
  101. package/src/components/Grid/index.tsx +0 -87
  102. package/src/components/Grid/wrapper.tsx +0 -30
  103. package/src/components/Heading/index.tsx +0 -72
  104. package/src/components/Icon/index.tsx +0 -87
  105. package/src/components/InputCheckbox/index.tsx +0 -30
  106. package/src/components/InputCheckbox/wrapper.tsx +0 -87
  107. package/src/components/InputGroup/index.tsx +0 -24
  108. package/src/components/InputLabel/index.tsx +0 -14
  109. package/src/components/InputLabel/wrapper.tsx +0 -10
  110. package/src/components/InputSearch/index.tsx +0 -51
  111. package/src/components/InputSearch/wrapper.tsx +0 -97
  112. package/src/components/InputSelect/index.tsx +0 -35
  113. package/src/components/InputSelect/wrapper.tsx +0 -59
  114. package/src/components/InputText/index.tsx +0 -27
  115. package/src/components/InputText/wrapper.tsx +0 -57
  116. package/src/components/InsuranceOptions/Insurance.tsx +0 -60
  117. package/src/components/InsuranceOptions/InsuranceFree.tsx +0 -59
  118. package/src/components/InsuranceOptions/InsuranceFreeModal.tsx +0 -49
  119. package/src/components/InsuranceOptions/InsuranceModal.tsx +0 -253
  120. package/src/components/InsuranceOptions/index.tsx +0 -27
  121. package/src/components/Lightbox/index.tsx +0 -51
  122. package/src/components/Lightbox/wrapper.tsx +0 -97
  123. package/src/components/Loader/index.tsx +0 -18
  124. package/src/components/Loader/wrapper.tsx +0 -50
  125. package/src/components/LogoBox/index.tsx +0 -22
  126. package/src/components/LogoBox/wrapper.tsx +0 -19
  127. package/src/components/Map/index.tsx +0 -62
  128. package/src/components/Map/wrapper.tsx +0 -29
  129. package/src/components/Modal/index.tsx +0 -51
  130. package/src/components/Modal/wrapper.tsx +0 -127
  131. package/src/components/OpeningHours/index.tsx +0 -145
  132. package/src/components/OptionBox/index.tsx +0 -23
  133. package/src/components/OptionBox/wrapper.tsx +0 -56
  134. package/src/components/OverflowBox/index.tsx +0 -11
  135. package/src/components/OverflowBox/wrapper.tsx +0 -7
  136. package/src/components/OverflowGrid/index.tsx +0 -70
  137. package/src/components/Page/index.tsx +0 -46
  138. package/src/components/Panel/index.tsx +0 -50
  139. package/src/components/Panel/wrapper.tsx +0 -155
  140. package/src/components/Pdf/index.tsx +0 -46
  141. package/src/components/Pdf/wrapper.tsx +0 -61
  142. package/src/components/PhoneNumber/index.tsx +0 -33
  143. package/src/components/Portal/index.ts +0 -5
  144. package/src/components/Portal/portal-element.tsx +0 -9
  145. package/src/components/Portal/portal-namespace.ts +0 -1
  146. package/src/components/Portal/portal.tsx +0 -36
  147. package/src/components/Price/index.tsx +0 -12
  148. package/src/components/PriceTable/index.tsx +0 -34
  149. package/src/components/PriceTable/wrapper.tsx +0 -27
  150. package/src/components/ProductCard/index.tsx +0 -133
  151. package/src/components/ProductCard/wrapper.tsx +0 -147
  152. package/src/components/ProductPage/index.tsx +0 -99
  153. package/src/components/ProgressBar/index.tsx +0 -31
  154. package/src/components/ProgressBar/wrapper.tsx +0 -29
  155. package/src/components/RangeSlider/RangeSliderSimple.tsx +0 -90
  156. package/src/components/RangeSlider/SliderWithLabel.tsx +0 -62
  157. package/src/components/RangeSlider/handle.tsx +0 -26
  158. package/src/components/RangeSlider/index.tsx +0 -132
  159. package/src/components/RangeSlider/track.tsx +0 -19
  160. package/src/components/RangeSlider/wrapper.tsx +0 -93
  161. package/src/components/RangeSliderLabel/index.tsx +0 -18
  162. package/src/components/RangeSliderLabel/wrapper.tsx +0 -33
  163. package/src/components/Repeat/index.tsx +0 -21
  164. package/src/components/Result/index.tsx +0 -91
  165. package/src/components/Result/wrapper.tsx +0 -39
  166. package/src/components/Root/index.tsx +0 -24
  167. package/src/components/SearchBar/index.tsx +0 -48
  168. package/src/components/SearchFilter/index.tsx +0 -31
  169. package/src/components/SearchTerm/index.tsx +0 -23
  170. package/src/components/SearchTerm/wrapper.tsx +0 -71
  171. package/src/components/SectionHeader/index.tsx +0 -25
  172. package/src/components/SectionHeader/wrapper.tsx +0 -17
  173. package/src/components/Snackbar/index.tsx +0 -35
  174. package/src/components/Snackbar/wrapper.tsx +0 -65
  175. package/src/components/SortSelect/index.tsx +0 -35
  176. package/src/components/SortSelect/wrapper.tsx +0 -54
  177. package/src/components/Sphere/Sphere.tsx +0 -49
  178. package/src/components/Sphere/SphereLightbox.tsx +0 -10
  179. package/src/components/Sphere/SphereViewer.tsx +0 -81
  180. package/src/components/Sphere/wrapper.tsx +0 -253
  181. package/src/components/SrOnly/index.tsx +0 -14
  182. package/src/components/SwitchBar/index.tsx +0 -55
  183. package/src/components/SwitchBar/wrapper.tsx +0 -80
  184. package/src/components/TableColumn/index.tsx +0 -18
  185. package/src/components/TableList/index.tsx +0 -39
  186. package/src/components/Tabs/index.tsx +0 -34
  187. package/src/components/Tabs/wrapper.tsx +0 -82
  188. package/src/components/ThreeSixty/Rotation.tsx +0 -136
  189. package/src/components/ThreeSixty/ThreeSixtLightbox.tsx +0 -34
  190. package/src/components/ThreeSixty/ThreeSixty.tsx +0 -53
  191. package/src/components/UspList/index.tsx +0 -47
  192. package/src/components/UspList/wrapper.tsx +0 -92
  193. package/src/components/Utility/index.tsx +0 -17
  194. package/src/components/Video/CustomPlayer.tsx +0 -28
  195. package/src/components/Video/EmbeddedVideoLightbox.tsx +0 -31
  196. package/src/components/Video/EmbededVideo.tsx +0 -72
  197. package/src/components/Video/QuickNavEmbeded.tsx +0 -35
  198. package/src/components/Video/QuickNavVideo.tsx +0 -14
  199. package/src/components/Video/Video.tsx +0 -18
  200. package/src/components/Video/VimeoPlayer.tsx +0 -21
  201. package/src/components/Video/YoutubePlayer.tsx +0 -21
  202. package/src/components/Video/useThumbnail.ts +0 -28
  203. package/src/components/Video/utils.ts +0 -47
  204. package/src/components/Video/wrapper.tsx +0 -29
  205. package/src/hooks/useFetch.ts +0 -88
  206. package/src/hooks/useHasBeenVisible.ts +0 -17
  207. package/src/hooks/useHashGuid.ts +0 -33
  208. package/src/hooks/useInsurance.ts +0 -22
  209. package/src/hooks/useLoan.ts +0 -21
  210. package/src/hooks/useOnScreen.ts +0 -20
  211. package/src/hooks/useOutsideClick.ts +0 -19
  212. package/src/hooks/usePrevious.ts +0 -11
  213. package/src/hooks/useSearchItem.ts +0 -11
  214. package/src/hooks/useSearchItemBranch.ts +0 -14
  215. package/src/hooks/useSessionStorage.ts +0 -32
  216. package/src/hooks/useVimeoThumbnail.ts +0 -31
  217. package/src/images/map/marker.png +0 -0
  218. package/src/images/placeholders/staticmap.jpg +0 -0
  219. package/src/index-dev.tsx +0 -42
  220. package/src/index-esbuild.ts +0 -74
  221. package/src/index.ts +0 -72
  222. package/src/layout/helpers.tsx +0 -6
  223. package/src/layout/keyframes.tsx +0 -23
  224. package/src/layout/theme.ts +0 -60
  225. package/src/layouts/WaykeComposite.tsx +0 -64
  226. package/src/layouts/WaykeCompositeWithProvider.tsx +0 -17
  227. package/src/layouts/search/index.tsx +0 -124
  228. package/src/layouts/searchItem/Branch.tsx +0 -97
  229. package/src/layouts/searchItem/BranchModal.tsx +0 -67
  230. package/src/layouts/searchItem/CheckList.tsx +0 -146
  231. package/src/layouts/searchItem/ManufacturerPackagesOption.tsx +0 -54
  232. package/src/layouts/searchItem/MetadataItem.tsx +0 -74
  233. package/src/layouts/searchItem/PackageOptionModal.tsx +0 -54
  234. package/src/layouts/searchItem/PackageOptions.tsx +0 -58
  235. package/src/layouts/searchItem/Page404.tsx +0 -17
  236. package/src/layouts/searchItem/PageLoading.tsx +0 -17
  237. package/src/layouts/searchItem/Property.tsx +0 -134
  238. package/src/layouts/searchItem/Related.tsx +0 -120
  239. package/src/layouts/searchItem/index.tsx +0 -342
  240. package/src/providers/WaykeItemProvidet.tsx +0 -63
  241. package/src/providers/WaykeProvider.tsx +0 -75
  242. package/src/providers/graphqlProvider.tsx +0 -9
  243. package/src/providers/themeProvider.tsx +0 -15
  244. package/src/queries/INSURANCE_CALCULATION.ts +0 -43
  245. package/src/queries/LOAN_CALCULATION.ts +0 -39
  246. package/src/queries/SEARCH_ITEM_BRANCH_QUERY.ts +0 -120
  247. package/src/queries/SEARCH_ITEM_QUERY.ts +0 -237
  248. package/src/utils/constants.ts +0 -34
  249. package/src/utils/converters.ts +0 -45
  250. package/src/utils/deep-copy.ts +0 -6
  251. package/src/utils/formats.ts +0 -83
  252. package/src/utils/metadata.min.ts +0 -87
  253. package/src/utils/phonenumbers.ts +0 -17
  254. package/src/utils/pubsub/Actions.ts +0 -20
  255. package/src/utils/pubsub/Events.ts +0 -79
  256. package/src/utils/pubsub/pubsub.ts +0 -151
  257. package/src/utils/regex.ts +0 -13
  258. package/src/utils/sortOptions.ts +0 -36
  259. package/src/utils/specification.ts +0 -581
  260. package/src/utils/ssn.ts +0 -1
  261. package/src/utils/url.ts +0 -1
  262. package/src/utils/vehicle-properties/compare-basic-properties.ts +0 -63
  263. package/src/utils/vehicle-properties/compare-categories.ts +0 -45
  264. package/src/utils/vehicle-properties/compare-properties.ts +0 -5
  265. package/src/utils/vehicle-properties/custom-property-adder.ts +0 -163
  266. package/src/utils/vehicle-properties/property-hint-enricher.ts +0 -230
  267. package/src/utils/vehicle-properties/property-remover.ts +0 -28
  268. package/src/utils/vehicle-properties/property-tree-creator.ts +0 -171
  269. package/src/utils/vehicle-properties/property-tree-sorter.ts +0 -20
  270. package/tsconfig.build.json +0 -10
  271. package/tsconfig.eslint.json +0 -11
  272. package/tsconfig.json +0 -18
  273. package/webpack.analyze.js +0 -10
  274. package/webpack.config.js +0 -95
@@ -1,48 +0,0 @@
1
- import React, { useCallback, useRef } from 'react';
2
- import InputSearch from '../InputSearch/index';
3
- import useOutsideClick from '../../hooks/useOutsideClick';
4
-
5
- interface SearchBarProps {
6
- value: string;
7
- setValue: (value: string) => void;
8
- onSearch: (value: string) => void;
9
- }
10
-
11
- const SearchBar = ({ value, setValue, onSearch }: SearchBarProps) => {
12
- const ref = useRef<HTMLDivElement>(null);
13
-
14
- const onChange = useCallback(
15
- (e: React.ChangeEvent<HTMLInputElement>) => setValue(e.currentTarget.value),
16
- []
17
- );
18
-
19
- useOutsideClick(ref, () => setValue(''));
20
-
21
- const _onSearch = useCallback(() => {
22
- onSearch(value);
23
- }, [value]);
24
-
25
- const onKeyDown = useCallback(
26
- (e: React.KeyboardEvent<HTMLInputElement>) => {
27
- if (e.keyCode === 13) {
28
- _onSearch();
29
- }
30
- },
31
- [value, _onSearch]
32
- );
33
-
34
- return (
35
- <InputSearch
36
- ref={ref}
37
- value={value}
38
- onChange={onChange}
39
- onKeyDown={onKeyDown}
40
- onSearch={_onSearch}
41
- placeholder="Sök"
42
- label="Sök"
43
- id="main-search"
44
- />
45
- );
46
- };
47
-
48
- export default SearchBar;
@@ -1,31 +0,0 @@
1
- import React, { useCallback, useState } from 'react';
2
- import useSearch from '../../State/Search/useSearch';
3
- import SearchBar from '../SearchBar/index';
4
-
5
- const SearchFilter = () => {
6
- const [value, setValue] = useState('');
7
- const { queryFilter, onFilterUpdate } = useSearch();
8
-
9
- const onSearch = useCallback(
10
- (value: string) => {
11
- const nextQuery = new URLSearchParams(queryFilter.searchParams);
12
- if (value === nextQuery.get('query')) {
13
- return;
14
- }
15
-
16
- if (value) {
17
- nextQuery.set('query', value);
18
- } else {
19
- nextQuery.delete('qquery');
20
- }
21
-
22
- onFilterUpdate(nextQuery.toString());
23
- setValue('');
24
- },
25
- [queryFilter]
26
- );
27
-
28
- return <SearchBar value={value} setValue={setValue} onSearch={onSearch} />;
29
- };
30
-
31
- export default SearchFilter;
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Query, Clear } from './wrapper';
4
- import { IconCancel } from '../Icon/index';
5
-
6
- interface Props {
7
- children: string;
8
- onClear?: () => void;
9
- clearTitle?: string;
10
- }
11
-
12
- const SearchTerm = ({ children, onClear, clearTitle }: Props) => (
13
- <Wrapper>
14
- <Query>{children}</Query>
15
- {onClear && (
16
- <Clear onClick={onClear} title={clearTitle ? clearTitle : 'Rensa fritext'}>
17
- <IconCancel block />
18
- </Clear>
19
- )}
20
- </Wrapper>
21
- );
22
-
23
- export default SearchTerm;
@@ -1,71 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import { ButtonReset } from '../Button/index';
5
-
6
- export const Wrapper = styled.div`
7
- display: flex;
8
- align-items: center;
9
- `;
10
-
11
- export const Query = styled.div.attrs(() => ({
12
- className: 'wayke__theme wayke__font--bold',
13
- }))`
14
- font-size: 2.25rem;
15
- min-width: 0;
16
- overflow-wrap: break-word;
17
- hyphens: auto;
18
-
19
- :before,
20
- :after {
21
- content: '"';
22
- }
23
- `;
24
-
25
- export const Clear = styled(ButtonReset)`
26
- position: relative;
27
- display: flex;
28
- align-items: center;
29
- justify-content: center;
30
- width: ${size(2)};
31
- height: ${size(2)};
32
- border-radius: 50%;
33
- background-color: ${(props) => props.theme.color.accentDark};
34
- margin-left: ${size(1)};
35
- font-size: ${size(1)};
36
- transform-origin: 50% 50%;
37
- transition: transform 150ms ease;
38
-
39
- :before {
40
- content: '';
41
- position: absolute;
42
- top: ${size(-1)};
43
- bottom: ${size(-1)};
44
- left: ${size(-1)};
45
- right: ${size(-1)};
46
- border-radius: 50%;
47
- }
48
-
49
- :after {
50
- content: '';
51
- position: absolute;
52
- top: 0;
53
- left: 0;
54
- width: 100%;
55
- height: 100%;
56
- background-color: ${(props) => props.theme.color.hoverOverlay};
57
- border-radius: 50%;
58
- opacity: 0;
59
- transition: opacity 150ms ease;
60
- }
61
-
62
- :hover {
63
- :after {
64
- opacity: 1;
65
- }
66
- }
67
-
68
- :active {
69
- transform: scale(0.95);
70
- }
71
- `;
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Heading, Action } from './wrapper';
4
- import { ButtonClear, ButtonContent } from '../Button/index';
5
-
6
- interface Props {
7
- children: React.ReactNode;
8
- onClick?: () => void;
9
- actionTitle?: string;
10
- }
11
-
12
- const SectionHeader = ({ children, onClick, actionTitle }: Props) => (
13
- <Wrapper>
14
- <Heading>{children}</Heading>
15
- {onClick && actionTitle && (
16
- <Action>
17
- <ButtonClear as="a" href="#" onClick={onClick}>
18
- <ButtonContent>{actionTitle}</ButtonContent>
19
- </ButtonClear>
20
- </Action>
21
- )}
22
- </Wrapper>
23
- );
24
-
25
- export default SectionHeader;
@@ -1,17 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- export const Wrapper = styled.div`
6
- display: flex;
7
- align-items: center;
8
- `;
9
-
10
- export const Heading = styled.div`
11
- flex: 1 1 auto;
12
- `;
13
-
14
- export const Action = styled.div`
15
- flex-shrink: 0;
16
- padding-left: ${size(2)};
17
- `;
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Icon, Content, Heading, Message } from './wrapper';
4
-
5
- import { IconCheck, IconInfo, IconExclamationCircle, IconExclamationTriangle } from '../Icon/index';
6
-
7
- interface Props {
8
- severity?: string;
9
- icon?: boolean;
10
- heading?: string;
11
- children?: React.ReactNode;
12
- }
13
-
14
- const Snackbar = ({ severity, icon, heading, children }: Props) => {
15
- let iconSelector = <IconInfo block />;
16
- if (severity === 'error') {
17
- iconSelector = <IconExclamationCircle block />;
18
- } else if (severity === 'warning') {
19
- iconSelector = <IconExclamationTriangle block />;
20
- } else if (severity === 'success') {
21
- iconSelector = <IconCheck block />;
22
- }
23
-
24
- return (
25
- <Wrapper severity={severity}>
26
- {icon && <Icon>{iconSelector}</Icon>}
27
- <Content>
28
- {heading && <Heading>{heading}</Heading>}
29
- <Message>{children}</Message>
30
- </Content>
31
- </Wrapper>
32
- );
33
- };
34
-
35
- export default Snackbar;
@@ -1,65 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import theme from '../../layout/theme';
5
-
6
- const getSnackbarBg = (severity: string | undefined): string => {
7
- let bg = theme.color.accent;
8
-
9
- if (severity === 'error') {
10
- bg = theme.color.ui.negativeLight;
11
- } else if (severity === 'warning') {
12
- bg = theme.color.ui.neutralLight;
13
- } else if (severity === 'info') {
14
- bg = theme.color.ui.infoLight;
15
- } else if (severity === 'success') {
16
- bg = theme.color.ui.positiveLight;
17
- }
18
-
19
- return bg;
20
- };
21
-
22
- interface Wrapper {
23
- severity?: string;
24
- }
25
- export const Wrapper = styled.div.attrs(() => ({
26
- role: 'alert',
27
- }))<Wrapper>`
28
- display: flex;
29
- align-items: center;
30
- padding: ${size(1.5)} ${size(2)};
31
- background-color: ${(props): string => getSnackbarBg(props.severity)};
32
- color: ${(props): string => props.theme.color.textDark};
33
- border-radius: 3px;
34
- `;
35
-
36
- export const Icon = styled.div`
37
- flex-shrink: 0;
38
- padding-right: ${size(2)};
39
- font-size: ${size(3)};
40
-
41
- > svg {
42
- display: block;
43
- }
44
- `;
45
-
46
- export const Content = styled.div`
47
- flex: 1 1 auto;
48
- font-size: 1rem;
49
- `;
50
-
51
- export const Heading = styled.div`
52
- font-weight: 700;
53
- `;
54
-
55
- export const Message = styled.div`
56
- > * {
57
- &:first-child {
58
- margin-top: 0;
59
- }
60
-
61
- &:last-child {
62
- margin-bottom: 0;
63
- }
64
- }
65
- `;
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Select, Option, Icon } from './wrapper';
4
- import { IconChevronDown } from '../Icon/index';
5
- import { DrivingDistance } from '../../@types/codegen/types';
6
-
7
- export interface OptionProps {
8
- value: number | string | DrivingDistance;
9
- displayName?: number | string;
10
- }
11
-
12
- interface SortSelectProps {
13
- value: string | number;
14
- options: OptionProps[];
15
- unit?: string;
16
- onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;
17
- }
18
-
19
- const SortSelect = ({ value, options, onChange, unit }: SortSelectProps) => (
20
- <Wrapper>
21
- <Select value={value} onChange={onChange} title="Sortering" aria-label="Sortering">
22
- {options.map((option) => (
23
- <Option key={option.value} value={option.value}>
24
- {option.displayName || option.value}
25
- {unit ? ` ${unit}` : ''}
26
- </Option>
27
- ))}
28
- </Select>
29
- <Icon>
30
- <IconChevronDown block />
31
- </Icon>
32
- </Wrapper>
33
- );
34
-
35
- export default SortSelect;
@@ -1,54 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- const iconSize = '0.875rem';
6
-
7
- export const Wrapper = styled.div`
8
- position: relative;
9
- `;
10
-
11
- export const Select = styled.select.attrs(() => ({
12
- className: 'wayke__theme wayke__font--regular',
13
- }))`
14
- position: relative;
15
- -webkit-appearance: none;
16
- -moz-appearance: none;
17
- appearance: none;
18
- -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
19
- text-indent: 0.01px;
20
- border: 0;
21
- padding: 0;
22
- padding-right: calc(${iconSize} + ${size(1)});
23
- background-color: transparent;
24
- color: ${(props) => props.theme.color.textDark};
25
- border-radius: 0;
26
- font-size: 16px;
27
- cursor: pointer;
28
- z-index: 1;
29
-
30
- :focus {
31
- outline: none;
32
- text-decoration: underline;
33
- }
34
-
35
- ::-ms-expand {
36
- display: none;
37
- }
38
-
39
- ::-moz-focus-inner {
40
- border: 0;
41
- }
42
- `;
43
-
44
- export const Option = styled.option`
45
- color: ${(props) => props.theme.color.textDark};
46
- `;
47
-
48
- export const Icon = styled.div`
49
- position: absolute;
50
- top: 50%;
51
- right: 0;
52
- transform: translateY(-50%);
53
- font-size: ${iconSize};
54
- `;
@@ -1,49 +0,0 @@
1
- import React from 'react';
2
- import SphereViewer from './SphereViewer';
3
-
4
- import { ImageFull } from '../Gallery/wrapper';
5
- import MediaButton from '../Gallery/MediaButton';
6
-
7
- const onMediaClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>, func: () => void) => {
8
- e.stopPropagation();
9
- e.preventDefault();
10
- func();
11
- };
12
-
13
- type PropsType = {
14
- url: string;
15
- preview: string;
16
- navigationDisabled: boolean;
17
- visible: boolean;
18
- onDisableNavigation: () => void;
19
- };
20
-
21
- const Sphere = ({ url, preview, visible, onDisableNavigation, navigationDisabled }: PropsType) => {
22
- if (!visible || (!navigationDisabled && visible)) {
23
- return (
24
- <>
25
- <ImageFull src={preview} alt="alt" />
26
- <MediaButton
27
- text="Starta 360° interiört"
28
- onClick={(e: React.MouseEvent<HTMLButtonElement, MouseEvent>): void =>
29
- onMediaClick(e, onDisableNavigation)
30
- }
31
- />
32
- </>
33
- );
34
- }
35
- if (navigationDisabled && visible) {
36
- return (
37
- <SphereViewer
38
- id={url}
39
- preview={url}
40
- src={url}
41
- autoLoad={true}
42
- onStart={onDisableNavigation}
43
- />
44
- );
45
- }
46
- return null;
47
- };
48
-
49
- export default Sphere;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import SphereViewer from './SphereViewer';
3
-
4
- type PropsType = {
5
- url: string;
6
- };
7
-
8
- const SphereLightbox = ({ url }: PropsType) => <SphereViewer id={url} src={url} preview={url} />;
9
-
10
- export default SphereLightbox;
@@ -1,81 +0,0 @@
1
- import React, { lazy, useState, useEffect } from 'react';
2
-
3
- import { Wrapper } from './wrapper';
4
- import Loader from '../Loader/index';
5
-
6
- const ReactPannellum = lazy(() => import('react-pannellum'));
7
-
8
- const config = {
9
- type: 'equirectangular',
10
- autoRotate: -2,
11
- autoLoad: true,
12
- uiText: {
13
- bylineLabel: 'by %s',
14
- noPanoramaError: 'No panorama image was specified.',
15
- fileAccessError: 'The file %s could not be accessed.',
16
- malformedURLError: 'There is something wrong with the panorama URL.',
17
- iOS8WebGLError:
18
- "Due to iOS 8's broken WebGL implementation, only progressive encoded JPEGs work for your device (this panorama uses standard encoding).",
19
- genericWebGLError:
20
- 'Your browser does not have the necessary WebGL support to display this panorama.',
21
- textureSizeError:
22
- "This panorama is too big for your device! It's %spx wide, but your device only supports images up to %spx wide. Try another device. (If you're the author, try scaling down the image.)",
23
- unknownError: 'Unknown error. Check developer console.',
24
- loadButtonLabel: 'Starta 360° interiört',
25
- loadingLabel: 'Laddar...',
26
- },
27
- preview: '/images/placeholders/placeholder_product_card.jpg',
28
- compass: true,
29
- showZoomCtrl: true,
30
- keyboardZoom: false,
31
- mouseZoom: false,
32
- hfov: 180,
33
- };
34
-
35
- const style = {
36
- height: 0,
37
- width: '100%',
38
- paddingBottom: '66.666%',
39
- touchAction: 'manipulation',
40
- };
41
- type PropsType = {
42
- id: string;
43
- src: string;
44
- preview: string;
45
- autoLoad?: boolean;
46
- onStart?: () => void;
47
- };
48
-
49
- const SphereViewer = ({ id, src, preview, autoLoad, onStart }: PropsType) => {
50
- const [number] = useState(Math.floor(100000000 + Math.random() * 900000000));
51
- useEffect(() => {
52
- setTimeout(() => {
53
- if (onStart) {
54
- const startBtn = document.querySelector('.pnlm-load-button');
55
- if (startBtn) startBtn.addEventListener('click', onStart);
56
- }
57
- }, 100);
58
- }, []);
59
-
60
- const c = {
61
- ...config,
62
- preview,
63
- autoLoad,
64
- };
65
-
66
- return (
67
- <Wrapper>
68
- <React.Suspense fallback={<Loader />}>
69
- <ReactPannellum
70
- id={`a-${id}-${number}`}
71
- sceneId={src}
72
- imageSource={src}
73
- config={c}
74
- style={style}
75
- />
76
- </React.Suspense>
77
- </Wrapper>
78
- );
79
- };
80
-
81
- export default SphereViewer;