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

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 (278) hide show
  1. package/dist/index.js +5529 -5460
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.mjs +320 -257
  4. package/dist/index.mjs.map +2 -2
  5. package/package.json +4 -2
  6. package/.editorconfig +0 -10
  7. package/.eslintrc.js +0 -62
  8. package/.github/workflows/release-to-production.yaml +0 -40
  9. package/.github/workflows/release-to-test.yaml +0 -40
  10. package/.prettierrc +0 -12
  11. package/assets/ajax-loader.gif +0 -0
  12. package/assets/default.css +0 -1
  13. package/assets/fonts/slick.eot +0 -0
  14. package/assets/fonts/slick.svg +0 -14
  15. package/assets/fonts/slick.ttf +0 -0
  16. package/assets/fonts/slick.woff +0 -0
  17. package/codegen.yml +0 -19
  18. package/esbuild/build.js +0 -39
  19. package/esbuild/common.js +0 -15
  20. package/esbuild/start.js +0 -21
  21. package/esbuild/www/index.html +0 -32
  22. package/example/src/@types/global.d.ts +0 -7
  23. package/example/src/@types/react-panellum.d.ts +0 -1
  24. package/example/src/App.tsx +0 -77
  25. package/example/src/assets/style/ecom.css +0 -63
  26. package/example/src/assets/style/theme.css +0 -83
  27. package/example/src/index.html +0 -26
  28. package/example/src/index.tsx +0 -11
  29. package/example/src/routes/HashRoute/index.tsx +0 -30
  30. package/example/src/routes/Home/index.tsx +0 -33
  31. package/example/src/routes/NotFound/index.tsx +0 -5
  32. package/example/src/routes/PathRoute/index.tsx +0 -35
  33. package/example/src/routes/Search/index.tsx +0 -28
  34. package/example/src/routes/SearchItem/index.tsx +0 -28
  35. package/example/src/routes/index.tsx +0 -25
  36. package/src/@types/action.ts +0 -3
  37. package/src/@types/codegen/types.ts +0 -366
  38. package/src/@types/filter.ts +0 -18
  39. package/src/@types/queryFilter.ts +0 -5
  40. package/src/@types/react-panellum.d.ts +0 -1
  41. package/src/@types/search.ts +0 -118
  42. package/src/@types/theme.d.ts +0 -5
  43. package/src/@types/vehicle-properties.ts +0 -33
  44. package/src/State/CentralStorage/CentralStorageContext.ts +0 -10
  45. package/src/State/CentralStorage/CentralStorageProvider.tsx +0 -21
  46. package/src/State/CentralStorage/useCentralStorage.ts +0 -37
  47. package/src/State/Path/PathContext.ts +0 -11
  48. package/src/State/Path/PathProvider.tsx +0 -66
  49. package/src/State/Path/reducer.ts +0 -30
  50. package/src/State/Path/usePath.ts +0 -13
  51. package/src/State/RelatedSearch/RelatedSearchContext.ts +0 -18
  52. package/src/State/RelatedSearch/RelatedSearchProvider.tsx +0 -55
  53. package/src/State/RelatedSearch/useRelatedSearch.ts +0 -20
  54. package/src/State/Search/SearchContext.ts +0 -27
  55. package/src/State/Search/SearchProvider.tsx +0 -243
  56. package/src/State/Search/useSearch.ts +0 -6
  57. package/src/State/Settings/SettingsContext.ts +0 -15
  58. package/src/State/Settings/SettingsProvider.tsx +0 -23
  59. package/src/State/Settings/useSettings.ts +0 -7
  60. package/src/components/Accordion/index.tsx +0 -57
  61. package/src/components/Accordion/wrapper.tsx +0 -107
  62. package/src/components/ActionList/index.tsx +0 -48
  63. package/src/components/ActionList/toggle-item.tsx +0 -59
  64. package/src/components/Avatar/index.tsx +0 -12
  65. package/src/components/Avatar/wrapper.tsx +0 -21
  66. package/src/components/Badge/index.tsx +0 -12
  67. package/src/components/Badge/wrapper.tsx +0 -32
  68. package/src/components/Blockquote/index.tsx +0 -32
  69. package/src/components/Blockquote/wrapper.tsx +0 -52
  70. package/src/components/Button/index.tsx +0 -226
  71. package/src/components/CheckMarkList/index.tsx +0 -21
  72. package/src/components/CheckMarkList/wrapper.tsx +0 -31
  73. package/src/components/Checklist/index.tsx +0 -51
  74. package/src/components/Checklist/wrapper.tsx +0 -65
  75. package/src/components/ColorSelect/index.tsx +0 -63
  76. package/src/components/ColorSelect/wrapper.tsx +0 -82
  77. package/src/components/ColumnRow/index.tsx +0 -20
  78. package/src/components/Container/index.tsx +0 -11
  79. package/src/components/Container/wrapper.tsx +0 -14
  80. package/src/components/Content/index.tsx +0 -15
  81. package/src/components/Content/wrapper.tsx +0 -61
  82. package/src/components/ContentLogo/index.tsx +0 -27
  83. package/src/components/DataList/index.tsx +0 -25
  84. package/src/components/DataList/wrapper.tsx +0 -29
  85. package/src/components/DetailBox/index.tsx +0 -34
  86. package/src/components/DetailBox/wrapper.tsx +0 -34
  87. package/src/components/ExtendContent/index.tsx +0 -43
  88. package/src/components/ExtendContent/wrapper.tsx +0 -41
  89. package/src/components/ExtendInfo/index.tsx +0 -32
  90. package/src/components/ExtendInfo/wrapper.tsx +0 -63
  91. package/src/components/Filter/index.tsx +0 -108
  92. package/src/components/Filter/wrapper.tsx +0 -79
  93. package/src/components/FilterPanel/checkListFacet.tsx +0 -46
  94. package/src/components/FilterPanel/colorFacet.tsx +0 -47
  95. package/src/components/FilterPanel/faceSelector.tsx +0 -53
  96. package/src/components/FilterPanel/index.tsx +0 -79
  97. package/src/components/FilterPanel/rangeFacet.tsx +0 -128
  98. package/src/components/FinancialOptions/LoanModal.tsx +0 -223
  99. package/src/components/FinancialOptions/index.tsx +0 -29
  100. package/src/components/FinancialOptions/leasing.tsx +0 -77
  101. package/src/components/FinancialOptions/loan.tsx +0 -87
  102. package/src/components/Gallery/MediaButton.tsx +0 -19
  103. package/src/components/Gallery/index.tsx +0 -227
  104. package/src/components/Gallery/wrapper.tsx +0 -323
  105. package/src/components/Grid/index.tsx +0 -87
  106. package/src/components/Grid/wrapper.tsx +0 -30
  107. package/src/components/Heading/index.tsx +0 -72
  108. package/src/components/Icon/index.tsx +0 -87
  109. package/src/components/InputCheckbox/index.tsx +0 -30
  110. package/src/components/InputCheckbox/wrapper.tsx +0 -87
  111. package/src/components/InputGroup/index.tsx +0 -24
  112. package/src/components/InputLabel/index.tsx +0 -14
  113. package/src/components/InputLabel/wrapper.tsx +0 -10
  114. package/src/components/InputSearch/index.tsx +0 -51
  115. package/src/components/InputSearch/wrapper.tsx +0 -97
  116. package/src/components/InputSelect/index.tsx +0 -35
  117. package/src/components/InputSelect/wrapper.tsx +0 -59
  118. package/src/components/InputText/index.tsx +0 -27
  119. package/src/components/InputText/wrapper.tsx +0 -57
  120. package/src/components/InsuranceOptions/Insurance.tsx +0 -60
  121. package/src/components/InsuranceOptions/InsuranceFree.tsx +0 -59
  122. package/src/components/InsuranceOptions/InsuranceFreeModal.tsx +0 -49
  123. package/src/components/InsuranceOptions/InsuranceModal.tsx +0 -253
  124. package/src/components/InsuranceOptions/index.tsx +0 -27
  125. package/src/components/Lightbox/index.tsx +0 -51
  126. package/src/components/Lightbox/wrapper.tsx +0 -97
  127. package/src/components/Loader/index.tsx +0 -18
  128. package/src/components/Loader/wrapper.tsx +0 -50
  129. package/src/components/LogoBox/index.tsx +0 -22
  130. package/src/components/LogoBox/wrapper.tsx +0 -19
  131. package/src/components/Map/index.tsx +0 -62
  132. package/src/components/Map/wrapper.tsx +0 -29
  133. package/src/components/Modal/index.tsx +0 -51
  134. package/src/components/Modal/wrapper.tsx +0 -127
  135. package/src/components/OpeningHours/index.tsx +0 -145
  136. package/src/components/OptionBox/index.tsx +0 -23
  137. package/src/components/OptionBox/wrapper.tsx +0 -56
  138. package/src/components/OverflowBox/index.tsx +0 -11
  139. package/src/components/OverflowBox/wrapper.tsx +0 -7
  140. package/src/components/OverflowGrid/index.tsx +0 -70
  141. package/src/components/Page/index.tsx +0 -46
  142. package/src/components/Panel/index.tsx +0 -50
  143. package/src/components/Panel/wrapper.tsx +0 -155
  144. package/src/components/Pdf/index.tsx +0 -46
  145. package/src/components/Pdf/wrapper.tsx +0 -61
  146. package/src/components/PhoneNumber/index.tsx +0 -33
  147. package/src/components/Portal/index.ts +0 -5
  148. package/src/components/Portal/portal-element.tsx +0 -9
  149. package/src/components/Portal/portal-namespace.ts +0 -1
  150. package/src/components/Portal/portal.tsx +0 -36
  151. package/src/components/Price/index.tsx +0 -12
  152. package/src/components/PriceTable/index.tsx +0 -34
  153. package/src/components/PriceTable/wrapper.tsx +0 -27
  154. package/src/components/ProductCard/index.tsx +0 -133
  155. package/src/components/ProductCard/wrapper.tsx +0 -147
  156. package/src/components/ProductPage/index.tsx +0 -99
  157. package/src/components/ProgressBar/index.tsx +0 -31
  158. package/src/components/ProgressBar/wrapper.tsx +0 -29
  159. package/src/components/RangeSlider/RangeSliderSimple.tsx +0 -90
  160. package/src/components/RangeSlider/SliderWithLabel.tsx +0 -62
  161. package/src/components/RangeSlider/handle.tsx +0 -26
  162. package/src/components/RangeSlider/index.tsx +0 -132
  163. package/src/components/RangeSlider/track.tsx +0 -19
  164. package/src/components/RangeSlider/wrapper.tsx +0 -93
  165. package/src/components/RangeSliderLabel/index.tsx +0 -18
  166. package/src/components/RangeSliderLabel/wrapper.tsx +0 -33
  167. package/src/components/Repeat/index.tsx +0 -21
  168. package/src/components/Result/index.tsx +0 -91
  169. package/src/components/Result/wrapper.tsx +0 -39
  170. package/src/components/Root/index.tsx +0 -24
  171. package/src/components/SearchBar/index.tsx +0 -48
  172. package/src/components/SearchFilter/index.tsx +0 -31
  173. package/src/components/SearchTerm/index.tsx +0 -23
  174. package/src/components/SearchTerm/wrapper.tsx +0 -71
  175. package/src/components/SectionHeader/index.tsx +0 -25
  176. package/src/components/SectionHeader/wrapper.tsx +0 -17
  177. package/src/components/Snackbar/index.tsx +0 -35
  178. package/src/components/Snackbar/wrapper.tsx +0 -65
  179. package/src/components/SortSelect/index.tsx +0 -35
  180. package/src/components/SortSelect/wrapper.tsx +0 -54
  181. package/src/components/Sphere/Sphere.tsx +0 -49
  182. package/src/components/Sphere/SphereLightbox.tsx +0 -10
  183. package/src/components/Sphere/SphereViewer.tsx +0 -81
  184. package/src/components/Sphere/wrapper.tsx +0 -253
  185. package/src/components/SrOnly/index.tsx +0 -14
  186. package/src/components/SwitchBar/index.tsx +0 -55
  187. package/src/components/SwitchBar/wrapper.tsx +0 -80
  188. package/src/components/TableColumn/index.tsx +0 -18
  189. package/src/components/TableList/index.tsx +0 -39
  190. package/src/components/Tabs/index.tsx +0 -34
  191. package/src/components/Tabs/wrapper.tsx +0 -82
  192. package/src/components/ThreeSixty/Rotation.tsx +0 -136
  193. package/src/components/ThreeSixty/ThreeSixtLightbox.tsx +0 -34
  194. package/src/components/ThreeSixty/ThreeSixty.tsx +0 -53
  195. package/src/components/UspList/index.tsx +0 -47
  196. package/src/components/UspList/wrapper.tsx +0 -92
  197. package/src/components/Utility/index.tsx +0 -17
  198. package/src/components/Video/CustomPlayer.tsx +0 -28
  199. package/src/components/Video/EmbeddedVideoLightbox.tsx +0 -31
  200. package/src/components/Video/EmbededVideo.tsx +0 -72
  201. package/src/components/Video/QuickNavEmbeded.tsx +0 -35
  202. package/src/components/Video/QuickNavVideo.tsx +0 -14
  203. package/src/components/Video/Video.tsx +0 -18
  204. package/src/components/Video/VimeoPlayer.tsx +0 -21
  205. package/src/components/Video/YoutubePlayer.tsx +0 -21
  206. package/src/components/Video/useThumbnail.ts +0 -28
  207. package/src/components/Video/utils.ts +0 -47
  208. package/src/components/Video/wrapper.tsx +0 -29
  209. package/src/hooks/useFetch.ts +0 -88
  210. package/src/hooks/useHasBeenVisible.ts +0 -17
  211. package/src/hooks/useHashGuid.ts +0 -33
  212. package/src/hooks/useInsurance.ts +0 -22
  213. package/src/hooks/useLoan.ts +0 -21
  214. package/src/hooks/useOnScreen.ts +0 -20
  215. package/src/hooks/useOutsideClick.ts +0 -19
  216. package/src/hooks/usePrevious.ts +0 -11
  217. package/src/hooks/useSearchItem.ts +0 -11
  218. package/src/hooks/useSearchItemBranch.ts +0 -14
  219. package/src/hooks/useSessionStorage.ts +0 -32
  220. package/src/hooks/useVimeoThumbnail.ts +0 -31
  221. package/src/images/map/marker.png +0 -0
  222. package/src/images/placeholders/staticmap.jpg +0 -0
  223. package/src/index-dev.tsx +0 -42
  224. package/src/index-esbuild.ts +0 -74
  225. package/src/index.ts +0 -72
  226. package/src/layout/helpers.tsx +0 -6
  227. package/src/layout/keyframes.tsx +0 -23
  228. package/src/layout/theme.ts +0 -60
  229. package/src/layouts/WaykeComposite.tsx +0 -64
  230. package/src/layouts/WaykeCompositeWithProvider.tsx +0 -17
  231. package/src/layouts/search/index.tsx +0 -124
  232. package/src/layouts/searchItem/Branch.tsx +0 -97
  233. package/src/layouts/searchItem/BranchModal.tsx +0 -67
  234. package/src/layouts/searchItem/CheckList.tsx +0 -146
  235. package/src/layouts/searchItem/ManufacturerPackagesOption.tsx +0 -54
  236. package/src/layouts/searchItem/MetadataItem.tsx +0 -74
  237. package/src/layouts/searchItem/PackageOptionModal.tsx +0 -54
  238. package/src/layouts/searchItem/PackageOptions.tsx +0 -58
  239. package/src/layouts/searchItem/Page404.tsx +0 -17
  240. package/src/layouts/searchItem/PageLoading.tsx +0 -17
  241. package/src/layouts/searchItem/Property.tsx +0 -134
  242. package/src/layouts/searchItem/Related.tsx +0 -120
  243. package/src/layouts/searchItem/index.tsx +0 -342
  244. package/src/providers/WaykeItemProvidet.tsx +0 -63
  245. package/src/providers/WaykeProvider.tsx +0 -75
  246. package/src/providers/graphqlProvider.tsx +0 -9
  247. package/src/providers/themeProvider.tsx +0 -15
  248. package/src/queries/INSURANCE_CALCULATION.ts +0 -43
  249. package/src/queries/LOAN_CALCULATION.ts +0 -39
  250. package/src/queries/SEARCH_ITEM_BRANCH_QUERY.ts +0 -120
  251. package/src/queries/SEARCH_ITEM_QUERY.ts +0 -237
  252. package/src/utils/constants.ts +0 -34
  253. package/src/utils/converters.ts +0 -45
  254. package/src/utils/deep-copy.ts +0 -6
  255. package/src/utils/formats.ts +0 -83
  256. package/src/utils/metadata.min.ts +0 -87
  257. package/src/utils/phonenumbers.ts +0 -17
  258. package/src/utils/pubsub/Actions.ts +0 -20
  259. package/src/utils/pubsub/Events.ts +0 -79
  260. package/src/utils/pubsub/pubsub.ts +0 -151
  261. package/src/utils/regex.ts +0 -13
  262. package/src/utils/sortOptions.ts +0 -36
  263. package/src/utils/specification.ts +0 -581
  264. package/src/utils/ssn.ts +0 -1
  265. package/src/utils/url.ts +0 -1
  266. package/src/utils/vehicle-properties/compare-basic-properties.ts +0 -63
  267. package/src/utils/vehicle-properties/compare-categories.ts +0 -45
  268. package/src/utils/vehicle-properties/compare-properties.ts +0 -5
  269. package/src/utils/vehicle-properties/custom-property-adder.ts +0 -163
  270. package/src/utils/vehicle-properties/property-hint-enricher.ts +0 -230
  271. package/src/utils/vehicle-properties/property-remover.ts +0 -28
  272. package/src/utils/vehicle-properties/property-tree-creator.ts +0 -171
  273. package/src/utils/vehicle-properties/property-tree-sorter.ts +0 -20
  274. package/tsconfig.build.json +0 -10
  275. package/tsconfig.eslint.json +0 -11
  276. package/tsconfig.json +0 -18
  277. package/webpack.analyze.js +0 -10
  278. package/webpack.config.js +0 -95
@@ -1,127 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import { fadeIn, noTransform } from '../../layout/keyframes';
5
-
6
- import { ButtonReset } from '../Button/index';
7
- import { H1 } from '../Heading/index';
8
-
9
- export const Wrapper = styled.div.attrs(() => ({
10
- role: 'dialog',
11
- }))`
12
- position: fixed;
13
- top: 0;
14
- bottom: 0;
15
- left: 0;
16
- right: 0;
17
- width: 100%;
18
- white-space: normal;
19
- text-align: left;
20
- z-index: 90;
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
-
25
- ${(props) => props.theme.breakpoint.Sm} {
26
- padding: ${size(2)};
27
- }
28
- `;
29
-
30
- export const UiBlock = styled.div.attrs(() => ({
31
- 'aria-hidden': 'true',
32
- role: 'button',
33
- }))`
34
- position: fixed;
35
- top: 0;
36
- bottom: 0;
37
- left: 0;
38
- right: 0;
39
- background-color: rgba(0, 0, 0, 0.35);
40
- z-index: -1;
41
-
42
- ${(props) => props.theme.breakpoint.LtMd} {
43
- animation: ${fadeIn} 300ms ease forwards;
44
- }
45
-
46
- ${(props) => props.theme.breakpoint.Md} {
47
- animation: ${fadeIn} 400ms ease forwards;
48
- }
49
- `;
50
-
51
- export const Dialog = styled.article.attrs(() => ({
52
- className: 'wayke__theme wayke__font--regular',
53
- }))`
54
- display: flex;
55
- flex-direction: column;
56
- background-color: ${(props) => props.theme.color.bg};
57
- z-index: 1;
58
- width: 100%;
59
- max-width: 680px;
60
- max-height: 100%;
61
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
62
- overflow: hidden;
63
-
64
- ${(props) => props.theme.breakpoint.LtSm} {
65
- align-self: flex-end;
66
- transform: translateY(100%);
67
- animation: ${noTransform} 300ms ease forwards;
68
- }
69
-
70
- ${(props) => props.theme.breakpoint.Sm} {
71
- transform: translateY(${size(2)});
72
- animation: ${fadeIn} 400ms ease, ${noTransform} 400ms ease forwards;
73
- }
74
- `;
75
-
76
- export const Content = styled.div`
77
- flex: 1 1 auto;
78
- overflow: auto;
79
- -webkit-overflow-scrolling: touch;
80
- `;
81
-
82
- export const Header = styled.header`
83
- display: flex;
84
- align-items: center;
85
- min-height: 60px;
86
- padding: ${size(3)};
87
- padding-bottom: 0;
88
- `;
89
-
90
- export const Heading = styled.div`
91
- flex: 1 1 auto;
92
-
93
- ${H1} {
94
- font-size: 1.5rem;
95
- }
96
- `;
97
-
98
- export const Close = styled.div`
99
- flex-shrink: 0;
100
- margin: ${size(-2)};
101
- padding-left: ${size(3)};
102
- `;
103
-
104
- export const CloseBtn = styled(ButtonReset)`
105
- display: block;
106
- padding: ${size(2)};
107
- `;
108
-
109
- export const Body = styled.div`
110
- padding: ${size(3)};
111
- `;
112
-
113
- export const Image = styled.img`
114
- display: block;
115
- width: calc(100% + ${size(6)});
116
- margin-left: ${size(-3)};
117
- margin-bottom: ${size(3)};
118
- `;
119
-
120
- export const ModalFoldout = styled.div`
121
- background-color: ${(props) => props.theme.color.accent};
122
- margin: ${size(-3)};
123
- margin-top: ${size(3)};
124
- padding: ${size(3)};
125
- `;
126
-
127
- export const ModalFoldoutBody = styled.div``;
@@ -1,145 +0,0 @@
1
- import React, { useMemo } from 'react';
2
- import { RepeatSmall } from '../Repeat/index';
3
- import Badge from '../Badge/index';
4
- import { TableColumn, TableColumnRow, TableColumnCell } from '../TableColumn/index';
5
- import { UtilityTextBold } from '../Utility/index';
6
-
7
- import { OpeningHours, Maybe } from '../../@types/codegen/types';
8
-
9
- type Days = Omit<OpeningHours, '__typename'>;
10
- type KeyType = keyof Days;
11
- const KeyOrder: KeyType[] = [
12
- 'monday',
13
- 'tuesday',
14
- 'wednesday',
15
- 'thursday',
16
- 'friday',
17
- 'saturday',
18
- 'sunday',
19
- ];
20
-
21
- const TranslateWeekDays = (d: KeyType) => {
22
- switch (d) {
23
- case 'monday':
24
- return 'Mån';
25
- case 'tuesday':
26
- return 'Tis';
27
- case 'wednesday':
28
- return 'Ons';
29
- case 'thursday':
30
- return 'Tor';
31
- case 'friday':
32
- return 'Fre';
33
- case 'saturday':
34
- return 'Lör';
35
- case 'sunday':
36
- return 'Sön';
37
- }
38
- };
39
-
40
- interface OpeningHoursSample {
41
- titleFrom: string;
42
- titleTo?: string;
43
- from?: string | null;
44
- until?: string | null;
45
- }
46
-
47
- const arr: OpeningHoursSample[] = [];
48
-
49
- const GetOpeningHours = (o: OpeningHours) =>
50
- KeyOrder.reduce((prev, current) => {
51
- const title = TranslateWeekDays(current);
52
- const item = o[current];
53
- const previous = prev?.[prev.length - 1];
54
- if (previous && previous.from == item?.from && previous.until === item?.until) {
55
- prev[prev.length - 1].titleTo = title;
56
- } else {
57
- prev.push({
58
- titleFrom: title,
59
- from: item?.from,
60
- until: item?.until,
61
- });
62
- }
63
-
64
- return prev;
65
- }, arr.slice());
66
-
67
- const GetOpeningHoursToday = (o: OpeningHours) => {
68
- const dayNumber = new Date().getDay();
69
- const day = KeyOrder[dayNumber === 0 ? 6 : dayNumber - 1] as KeyType;
70
- const current = o[day];
71
- return {
72
- title: current ? 'Öppetider idag' : 'Stängt idag',
73
- from: current?.from,
74
- until: current?.until,
75
- };
76
- };
77
-
78
- const valuOfDateString = (s: string) => {
79
- const splitted = s.split(':').map((x) => parseInt(x, 10));
80
- return new Date().setHours(splitted[0], splitted[1]).valueOf();
81
- };
82
-
83
- interface OpeningHoursProps {
84
- openingHours?: Maybe<OpeningHours>;
85
- }
86
-
87
- const OpeningHours = ({ openingHours }: OpeningHoursProps) => {
88
- const today = useMemo(
89
- () => (openingHours ? GetOpeningHoursToday(openingHours) : null),
90
- [openingHours]
91
- );
92
-
93
- const currentlyOpen = useMemo(() => {
94
- try {
95
- if (today?.from && today?.until) {
96
- const currentDate = new Date().valueOf();
97
- const from = valuOfDateString(today.from);
98
- const until = valuOfDateString(today.until);
99
- return currentDate >= from && currentDate <= until;
100
- }
101
- } catch (e) {
102
- return false;
103
- }
104
- }, [today]);
105
-
106
- const oh = useMemo(() => (openingHours ? GetOpeningHours(openingHours) : null), [openingHours]);
107
- if (!oh) {
108
- return null;
109
- }
110
-
111
- return (
112
- <>
113
- <RepeatSmall>
114
- <Badge
115
- label={currentlyOpen ? 'Öppet' : 'Stängt'}
116
- severity={currentlyOpen ? 'positive' : 'negative'}
117
- />
118
- </RepeatSmall>
119
- <RepeatSmall>
120
- <TableColumn>
121
- <TableColumnRow>
122
- <TableColumnCell>
123
- <UtilityTextBold>{today?.title}</UtilityTextBold>
124
- </TableColumnCell>
125
- <TableColumnCell>
126
- <UtilityTextBold>
127
- {today?.from ? `${today.from}-${today.until}` : 'Stängt'}
128
- </UtilityTextBold>
129
- </TableColumnCell>
130
- </TableColumnRow>
131
- {oh.map((o) => (
132
- <TableColumnRow key={o.titleFrom}>
133
- <TableColumnCell>
134
- {o.titleTo ? `${o.titleFrom}-${o.titleTo}` : o.titleFrom}
135
- </TableColumnCell>
136
- <TableColumnCell>{o.from ? `${o.from}-${o.until}` : 'Stängt'}</TableColumnCell>
137
- </TableColumnRow>
138
- ))}
139
- </TableColumn>
140
- </RepeatSmall>
141
- </>
142
- );
143
- };
144
-
145
- export default OpeningHours;
@@ -1,23 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { Logo, LogoImg, Content, Wrapper } from './wrapper';
4
-
5
- interface IOptionBox {
6
- logo?: string;
7
- logo2x?: string;
8
- logoAlt?: string;
9
- children: React.ReactNode;
10
- }
11
-
12
- const OptionBox = ({ logo, logo2x, logoAlt, children }: IOptionBox) => (
13
- <Wrapper>
14
- {logo && (
15
- <Logo>
16
- <LogoImg src={logo} srcSet={logo2x} alt={logoAlt} />
17
- </Logo>
18
- )}
19
- <Content>{children}</Content>
20
- </Wrapper>
21
- );
22
-
23
- export default OptionBox;
@@ -1,56 +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
- padding: ${size(1)};
9
- border: 1px solid ${(props) => props.theme.color.border};
10
- border-radius: 3px;
11
-
12
- & + & {
13
- margin-top: ${size(1)};
14
- }
15
- `;
16
-
17
- export const Logo = styled.div`
18
- position: relative;
19
- flex-shrink: 0;
20
- margin-right: ${size(1)};
21
- width: ${size(9.5)};
22
- height: ${size(6)};
23
- `;
24
-
25
- export const LogoImg = styled.img`
26
- display: block;
27
- position: absolute;
28
- left: 0;
29
- top: 0;
30
- right: auto;
31
- bottom: 0;
32
- margin: auto;
33
- max-width: 100%;
34
- max-height: 100%;
35
- `;
36
-
37
- export const Content = styled.div`
38
- flex: 1 1 auto;
39
- text-align: right;
40
- line-height: 1.4;
41
- `;
42
-
43
- export const OptionBoxHeading = styled.div.attrs(() => ({
44
- className: 'wayke__theme wayke__font--bold',
45
- }))`
46
- font-size: 1rem;
47
- `;
48
-
49
- export const OptionBoxContent = styled.div`
50
- margin-top: ${size(0.5)};
51
- font-size: 0.875rem;
52
-
53
- p {
54
- margin: 0;
55
- }
56
- `;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper } from './wrapper';
4
-
5
- interface IProps {
6
- children?: React.ReactNode;
7
- }
8
-
9
- const OverflowBox = ({ children }: IProps) => <Wrapper>{children}</Wrapper>;
10
-
11
- export default OverflowBox;
@@ -1,7 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- export const Wrapper = styled.div`
4
- max-height: 400px;
5
- overflow: auto;
6
- -webkit-overflow-scrolling: touch;
7
- `;
@@ -1,70 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import { Wrapper as Container } from '../Container/wrapper';
5
-
6
- export const OverflowGrid = styled.div`
7
- ${(props) => props.theme.breakpoint.LtMd} {
8
- ${Container} & {
9
- margin-left: ${size(-3)};
10
- margin-right: ${size(-2)};
11
- }
12
- }
13
-
14
- ${(props) => props.theme.breakpoint.LtSm} {
15
- ${Container} & {
16
- margin-left: ${size(-2)};
17
- margin-right: ${size(-1)};
18
- }
19
- }
20
- `;
21
-
22
- export const OverflowGridList = styled.ul`
23
- display: flex;
24
- align-items: flex-start;
25
- list-style: none;
26
- padding: 0;
27
- margin: ${size(-1)};
28
-
29
- ${(props) => props.theme.breakpoint.LtMd} {
30
- ${Container} & {
31
- overflow: auto;
32
- -webkit-overflow-scrolling: touch;
33
- padding: 0 ${size(3)};
34
-
35
- :after {
36
- content: '';
37
- flex: 0 0 auto;
38
- height: 1px;
39
- width: ${size(2)};
40
- }
41
- }
42
- }
43
-
44
- ${(props) => props.theme.breakpoint.LtSm} {
45
- ${Container} & {
46
- padding: 0 ${size(2)};
47
-
48
- :after {
49
- width: ${size(1)};
50
- }
51
- }
52
- }
53
- `;
54
-
55
- export const OverflowGridItem = styled.li`
56
- flex: 1 0 auto;
57
- width: calc(100% - ${size(2)});
58
- max-width: calc(100% - ${size(2)});
59
- padding: ${size(1)};
60
-
61
- ${(props) => props.theme.breakpoint.Sm} {
62
- width: calc(50% - ${size(3)});
63
- max-width: calc(50% - ${size(3)});
64
- }
65
-
66
- ${(props) => props.theme.breakpoint.Md} {
67
- width: 33.333%;
68
- max-width: 33.333%;
69
- }
70
- `;
@@ -1,46 +0,0 @@
1
- import styled, { css } from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- export const Page = styled.div``;
6
-
7
- type PageSectionProps = React.DetailedHTMLProps<
8
- React.HTMLAttributes<HTMLDivElement>,
9
- HTMLDivElement
10
- > & {
11
- accent?: boolean;
12
- large?: boolean;
13
- fillSpace?: boolean;
14
- };
15
-
16
- export const PageSection = styled.section<PageSectionProps>`
17
- margin-bottom: ${size(4)};
18
-
19
- ${({ accent }: { accent?: boolean }) =>
20
- accent &&
21
- css`
22
- padding: ${size(4)} 0;
23
- background-color: ${(props) => props.theme.color.accent};
24
- margin-bottom: 0;
25
- `}
26
-
27
- ${({ large }: { large?: boolean }) =>
28
- large &&
29
- css`
30
- margin-bottom: ${size(8)};
31
- `}
32
-
33
- ${({ accent, large }) =>
34
- accent &&
35
- large &&
36
- css`
37
- padding: ${size(8)} 0;
38
- margin-bottom: 0;
39
- `}
40
-
41
- ${({ fillSpace }: { fillSpace?: boolean }) =>
42
- fillSpace &&
43
- css`
44
- flex: 1 1 auto;
45
- `}
46
- `;
@@ -1,50 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import {
4
- PanelWrapper,
5
- Close,
6
- CloseBtn,
7
- Header,
8
- Heading,
9
- Body,
10
- Footer,
11
- UiBlock,
12
- Wrapper,
13
- } from './wrapper';
14
- import { Portal, PortalNamespace } from '../Portal/index';
15
- import { H1 } from '../Heading/index';
16
- import { IconCancel } from '../Icon/index';
17
-
18
- interface IPanelPortal {
19
- id?: string | null;
20
- title: string | null;
21
- onClose: () => void;
22
- children: React.ReactNode;
23
- footer?: React.ReactNode;
24
- }
25
-
26
- const Panel = ({ id, title, footer, onClose, children }: IPanelPortal) => {
27
- return (
28
- <Portal id={id || PortalNamespace.DefaultPortal}>
29
- <Wrapper>
30
- <UiBlock title="Stäng panel" onClick={onClose} />
31
- <PanelWrapper>
32
- <Header>
33
- <Heading>
34
- <H1 noMargin>{title}</H1>
35
- </Heading>
36
- <Close>
37
- <CloseBtn title="Stäng panel" aria-label="Stäng panel" onClick={onClose}>
38
- <IconCancel block />
39
- </CloseBtn>
40
- </Close>
41
- </Header>
42
- <Body>{children}</Body>
43
- {footer && <Footer>{footer}</Footer>}
44
- </PanelWrapper>
45
- </Wrapper>
46
- </Portal>
47
- );
48
- };
49
-
50
- export default Panel;
@@ -1,155 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import { fadeIn, noTransform } from '../../layout/keyframes';
5
- import { ButtonReset } from '../Button/index';
6
- import { H1 } from '../Heading/index';
7
-
8
- export const Wrapper = styled.div.attrs(() => ({
9
- role: 'dialog',
10
- }))`
11
- position: relative;
12
- z-index: 80;
13
- `;
14
-
15
- export const UiBlock = styled.div.attrs(() => ({
16
- 'aria-hidden': 'true',
17
- role: 'button',
18
- }))`
19
- position: fixed;
20
- top: 0;
21
- bottom: 0;
22
- left: 0;
23
- right: 0;
24
- background-color: rgba(0, 0, 0, 0.35);
25
- animation: ${fadeIn} 200ms ease;
26
- `;
27
-
28
- export const PanelWrapper = styled.article.attrs(() => ({
29
- className: 'wayke__theme wayke__font--regular',
30
- }))`
31
- display: flex;
32
- flex-direction: column;
33
- position: fixed;
34
- top: 0;
35
- bottom: 0;
36
- right: 0;
37
- width: 100%;
38
- background-color: ${(props) => props.theme.color.accent};
39
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
40
- z-index: 1;
41
- animation: ${noTransform} 200ms ease forwards;
42
-
43
- ${(props) => props.theme.breakpoint.Sm} {
44
- max-width: 450px;
45
- transform: translateX(100%);
46
- }
47
-
48
- ${(props) => props.theme.breakpoint.LtSm} {
49
- top: auto;
50
- max-height: 100%;
51
- transform: translateY(100%);
52
- }
53
- `;
54
-
55
- export const Header = styled.header`
56
- position: relative;
57
- display: flex;
58
- flex-shrink: 0;
59
- align-items: center;
60
- min-height: 45px;
61
- padding: ${size(3)};
62
- padding-bottom: 0;
63
-
64
- :after {
65
- content: '';
66
- position: absolute;
67
- top: 100%;
68
- left: 0;
69
- right: 0;
70
- height: ${size(3)};
71
- background-image: linear-gradient(
72
- ${(props) => props.theme.color.accent},
73
- ${(props) => props.theme.color.accentTransparent}
74
- );
75
- z-index: 1;
76
- }
77
- `;
78
-
79
- export const Heading = styled.div`
80
- flex: 1 1 auto;
81
-
82
- ${H1} {
83
- font-size: 1.5rem;
84
- }
85
- `;
86
-
87
- export const Close = styled.div`
88
- flex-shrink: 0;
89
- margin: ${size(-2)};
90
- padding-left: ${size(3)};
91
- `;
92
-
93
- export const CloseBtn = styled(ButtonReset)`
94
- position: relative;
95
- display: block;
96
- padding: ${size(2)};
97
- transform-origin: 50% 50%;
98
- transition: transform 200ms ease;
99
- z-index: 2;
100
-
101
- :before {
102
- content: '';
103
- position: absolute;
104
- top: 0;
105
- left: 0;
106
- width: 100%;
107
- height: 100%;
108
- border-radius: 50%;
109
- background-color: ${(props) => props.theme.color.accent};
110
- opacity: 0;
111
- transition: opacity 200ms ease;
112
- z-index: -1;
113
- }
114
-
115
- :active {
116
- transform: scale(0.9);
117
- }
118
-
119
- :hover {
120
- :before {
121
- opacity: 1;
122
- }
123
- }
124
- `;
125
-
126
- export const Body = styled.div`
127
- flex: 1 1 auto;
128
- overflow: auto;
129
- -webkit-overflow-scrolling: touch;
130
- padding: ${size(3)};
131
- `;
132
-
133
- export const Footer = styled.footer`
134
- position: relative;
135
- flex-shrink: 0;
136
- padding: ${size(3)};
137
- border-top: 1px solid ${(props) => props.theme.color.border};
138
- `;
139
-
140
- export const FooterAction = styled.div.attrs(() => ({
141
- role: 'group',
142
- }))`
143
- display: flex;
144
- align-items: center;
145
- margin: ${size(-0.5)};
146
- `;
147
-
148
- export const FooterActionItem = styled.div`
149
- flex: 1 1 50%;
150
- padding: ${size(0.5)};
151
-
152
- ${ButtonReset} {
153
- padding: ${size(1.75)} ${size(2)};
154
- }
155
- `;