@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,57 +0,0 @@
1
- import React, { useState, useCallback } from 'react';
2
-
3
- import {
4
- List,
5
- Item,
6
- Header,
7
- Label,
8
- Heading,
9
- Indicator,
10
- IndicatorValue,
11
- Icon,
12
- Body,
13
- } from './wrapper';
14
- import { IconChevronDown } from '../Icon/index';
15
-
16
- export interface IAccordionItem {
17
- heading: string;
18
- activeCount?: number;
19
- children: React.ReactNode;
20
- isActive?: boolean;
21
- }
22
-
23
- export interface IAccordion {
24
- children?: React.ReactNode;
25
- }
26
-
27
- export const AccordionItem = ({ heading, children, activeCount, isActive }: IAccordionItem) => {
28
- const [extend, setExtend] = useState(isActive || false);
29
- const onToggleExtend = useCallback(() => setExtend(!extend), [extend]);
30
-
31
- return (
32
- <Item isOpen={extend}>
33
- <Header onClick={onToggleExtend} title="Visa mer">
34
- <Label>
35
- <Heading
36
- className={activeCount && activeCount > 0 ? 'wayke__theme wayke__font--bold' : ''}
37
- >
38
- {heading}
39
- </Heading>
40
- {activeCount && activeCount > 0 && (
41
- <Indicator>
42
- <IndicatorValue>{activeCount}</IndicatorValue>
43
- </Indicator>
44
- )}
45
- </Label>
46
- <Icon>
47
- <IconChevronDown block />
48
- </Icon>
49
- </Header>
50
- <Body>{children}</Body>
51
- </Item>
52
- );
53
- };
54
-
55
- const Accordion = ({ children }: IAccordion) => <List>{children}</List>;
56
-
57
- export default Accordion;
@@ -1,107 +0,0 @@
1
- import styled, { css } from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import { ButtonReset } from '../Button/index';
5
-
6
- export const List = styled.ul`
7
- list-style: none;
8
- padding: 0;
9
- margin: ${size(-1)} 0;
10
- font-size: 1rem;
11
- `;
12
-
13
- export const Header = styled(ButtonReset)`
14
- display: flex;
15
- align-items: center;
16
- width: 100%;
17
- padding: ${size(3)} 0;
18
- text-align: left;
19
- font: inherit;
20
- `;
21
-
22
- export const Label = styled.div`
23
- display: flex;
24
- align-items: center;
25
- flex: 1 1 auto;
26
- `;
27
-
28
- export const Heading = styled.div`
29
- line-height: 1;
30
- `;
31
-
32
- export const Indicator = styled.div.attrs(() => ({
33
- className: 'wayke__theme wayke__color--primary-bg',
34
- }))`
35
- flex-shrink: 0;
36
- display: flex;
37
- align-items: center;
38
- justify-content: center;
39
- padding: 0 ${size(0.375)};
40
- margin-left: ${size(0.5)};
41
- min-width: 1em;
42
- height: 1em;
43
- border-radius: 999px;
44
- z-index: 1;
45
- `;
46
-
47
- export const IndicatorValue = styled.div`
48
- font-family: sans-serif; // Default font to guarantee visibility
49
- font-size: 0.75rem;
50
- font-weight: bold;
51
- `;
52
-
53
- export const Icon = styled.div`
54
- position: relative;
55
- flex-shrink: 0;
56
- padding-left: ${size(1)};
57
- transition: color 150ms ease;
58
-
59
- :before {
60
- content: '';
61
- position: absolute;
62
- top: ${size(-1)};
63
- bottom: ${size(-1)};
64
- left: 0;
65
- right: ${size(-1)};
66
- border-radius: 50%;
67
- background-color: ${(props) => props.theme.color.accent};
68
- z-index: -1;
69
- opacity: 0;
70
- transition: opacity 200ms ease;
71
- }
72
-
73
- ${Header}:hover & {
74
- :before {
75
- opacity: 1;
76
- }
77
- }
78
- `;
79
-
80
- export const Body = styled.div`
81
- display: none;
82
- padding-bottom: ${size(3)};
83
- `;
84
-
85
- type ItemProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLLIElement>, HTMLLIElement> & {
86
- isOpen?: boolean;
87
- };
88
-
89
- export const Item = styled.li<ItemProps>`
90
- & + & {
91
- border-top: 1px solid ${(props) => props.theme.color.border};
92
- }
93
-
94
- ${({ isOpen }) =>
95
- isOpen &&
96
- css`
97
- ${Body} {
98
- display: block;
99
- }
100
-
101
- ${Icon} {
102
- svg {
103
- transform: rotate(180deg);
104
- }
105
- }
106
- `}
107
- `;
@@ -1,48 +0,0 @@
1
- import React, { useCallback } from 'react';
2
-
3
- import ToggleItem from './toggle-item';
4
- import { Maybe, ContactOptions, Branch } from '../../@types/codegen/types';
5
- import { formatPhonenumber } from '../../utils/phonenumbers';
6
- import PubSub from '../../utils/pubsub/pubsub';
7
-
8
- interface ActionListProps {
9
- branch?: Maybe<Branch>;
10
- contact?: Maybe<ContactOptions>;
11
- }
12
-
13
- const ActionList = ({ contact, branch }: ActionListProps) => {
14
- const email = contact?.email || branch?.contact?.email;
15
- const phonenumber = contact?.phonenumber || branch?.contact?.phonenumber;
16
-
17
- const onClickMailVisible = useCallback(() => PubSub.publish('MailVisible'), []);
18
- const onClickPhoneVisible = useCallback(() => PubSub.publish('PhonenumberVisible'), []);
19
- const onClickPhoneValue = useCallback(() => PubSub.publish('PhonenumberCall'), []);
20
-
21
- if (!email && !phonenumber) {
22
- return null;
23
- }
24
-
25
- return (
26
- <>
27
- {email && (
28
- <ToggleItem
29
- onClickVisible={onClickMailVisible}
30
- title="Visa mailadress"
31
- value={email}
32
- type="mailto"
33
- />
34
- )}
35
- {phonenumber && (
36
- <ToggleItem
37
- title="Visa telefonnummer"
38
- value={formatPhonenumber(phonenumber)}
39
- type="tel"
40
- onClickVisible={onClickPhoneVisible}
41
- onClickValue={onClickPhoneValue}
42
- />
43
- )}
44
- </>
45
- );
46
- };
47
-
48
- export default ActionList;
@@ -1,59 +0,0 @@
1
- import React, { useState, useCallback } from 'react';
2
- import { ButtonSecondary, ButtonContent } from '../Button/index';
3
- import { RepeatTiny } from '../Repeat/index';
4
-
5
- interface ToggleItemProps {
6
- title: string;
7
- value: string;
8
- type: 'tel' | 'mailto';
9
- onClickVisible?: () => void;
10
- onClickValue?: () => void;
11
- }
12
-
13
- const initialValue: { [key: string]: boolean | undefined } = {};
14
-
15
- const getInitialValue = (title: string) => title && !!initialValue[title];
16
-
17
- const ToggleItem = ({ title, value, type, onClickVisible, onClickValue }: ToggleItemProps) => {
18
- const [visible, setVisible] = useState(() => getInitialValue(type));
19
-
20
- const _onClickValue = useCallback(() => {
21
- if (onClickValue) {
22
- onClickValue();
23
- }
24
- }, []);
25
-
26
- const onClick = useCallback(() => {
27
- if (!visible) {
28
- initialValue[type] = true;
29
- setVisible(true);
30
- if (onClickVisible) {
31
- onClickVisible();
32
- }
33
- }
34
- }, [visible]);
35
-
36
- const visibleTitle = type === 'tel' ? 'Ring' : type === 'mailto' ? 'Skicka ett mail till' : '';
37
-
38
- return (
39
- <RepeatTiny>
40
- {visible ? (
41
- <ButtonSecondary
42
- onClick={_onClickValue}
43
- as="a"
44
- href={`${type}:${value}`}
45
- title={`${visibleTitle} ${value}`}
46
- fullWidth
47
- >
48
- <ButtonContent>{value}</ButtonContent>
49
- </ButtonSecondary>
50
- ) : (
51
- <ButtonSecondary onClick={onClick} title={title} fullWidth>
52
- <ButtonContent>{title}</ButtonContent>
53
- </ButtonSecondary>
54
- )}
55
- </RepeatTiny>
56
- );
57
- };
58
-
59
- export default ToggleItem;
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper } from './wrapper';
4
-
5
- interface Props {
6
- image: string;
7
- alt?: string;
8
- }
9
-
10
- const Avatar = ({ image, alt }: Props) => <Wrapper image={image} aria-label={alt} />;
11
-
12
- export default Avatar;
@@ -1,21 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- interface Wrapper {
6
- image: string;
7
- }
8
-
9
- export const Wrapper = styled.div.attrs(() => ({
10
- role: 'image',
11
- }))<Wrapper>`
12
- display: block;
13
- width: ${size(5)};
14
- height: ${size(5)};
15
- border-radius: 50%;
16
- background-image: ${(props): string => `url(${props.image})`};
17
- background-size: cover;
18
- background-position: center;
19
- background-repeat: no-repeat;
20
- background-color: ${(props) => props.theme.color.accent};
21
- `;
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper } from './wrapper';
4
-
5
- interface Props {
6
- label: string;
7
- severity?: 'positive' | 'negative';
8
- }
9
-
10
- const Badge = ({ label, severity }: Props) => <Wrapper severity={severity}>{label}</Wrapper>;
11
-
12
- export default Badge;
@@ -1,32 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import theme from '../../layout/theme';
5
-
6
- const getBg = (severity: string | undefined): string => {
7
- let bg = theme.color.textDark;
8
-
9
- if (severity === 'positive') {
10
- bg = theme.color.ui.positive;
11
- } else if (severity === 'negative') {
12
- bg = theme.color.ui.negative;
13
- }
14
-
15
- return bg;
16
- };
17
-
18
- interface Wrapper {
19
- severity?: string;
20
- }
21
-
22
- export const Wrapper = styled.div.attrs(() => ({
23
- className: 'wayke__theme wayke__font--bold',
24
- }))<Wrapper>`
25
- display: inline-block;
26
- background-color: ${(props): string => getBg(props.severity)};
27
- padding: ${size(0.75)} ${size(1.5)};
28
- color: ${(props) => props.theme.color.textLight};
29
- border-radius: 3px;
30
- font-size: 0.75rem;
31
- line-height: 1.2;
32
- `;
@@ -1,32 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Quote, Author, AvatarWrapper, Info, Name, Date } from './wrapper';
4
- import Avatar from '../Avatar/index';
5
-
6
- interface Props {
7
- children: React.ReactNode;
8
- author?: string | null;
9
- avatar?: string;
10
- date?: string;
11
- }
12
-
13
- const Blockquote = ({ children, author, avatar, date }: Props) => (
14
- <Wrapper>
15
- <Quote>{children}</Quote>
16
- {author && (
17
- <Author>
18
- {avatar && (
19
- <AvatarWrapper>
20
- <Avatar image={avatar} alt={`${author} avatar`} />
21
- </AvatarWrapper>
22
- )}
23
- <Info>
24
- <Name>{author}</Name>
25
- {date && <Date>{date}</Date>}
26
- </Info>
27
- </Author>
28
- )}
29
- </Wrapper>
30
- );
31
-
32
- export default Blockquote;
@@ -1,52 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- export const Wrapper = styled.blockquote`
6
- display: flex;
7
- flex-direction: column;
8
- max-width: 600px;
9
- margin: 0 auto;
10
-
11
- ${(props) => props.theme.breakpoint.Sm} {
12
- align-items: center;
13
- }
14
- `;
15
-
16
- export const Quote = styled.div`
17
- > * {
18
- :first-child {
19
- margin-top: 0;
20
- }
21
-
22
- :last-child {
23
- margin-bottom: 0;
24
- }
25
- }
26
- `;
27
-
28
- export const Author = styled.footer`
29
- display: inline-flex;
30
- align-items: center;
31
- margin-top: ${size(3)};
32
-
33
- ${(props) => props.theme.breakpoint.Md} {
34
- margin-top: ${size(4)};
35
- }
36
- `;
37
-
38
- export const AvatarWrapper = styled.div`
39
- flex-shrink: 0;
40
- padding-right: ${size(1.5)};
41
- `;
42
-
43
- export const Info = styled.div`
44
- flex: 1 1 auto;
45
- font-size: 0.875rem;
46
- `;
47
-
48
- export const Name = styled.div.attrs(() => ({
49
- className: 'wayke__theme wayke__font--bold',
50
- }))``;
51
-
52
- export const Date = styled.div``;
@@ -1,226 +0,0 @@
1
- import * as React from 'react';
2
- import styled, { css } from 'styled-components';
3
-
4
- import { size } from '../../layout/helpers';
5
- import { UtilityTextRight } from '../Utility/index';
6
-
7
- export const ButtonReset = styled.button.attrs(() => ({
8
- type: 'button',
9
- }))`
10
- display: inline-block;
11
- vertical-align: middle;
12
- padding: 0;
13
- margin: 0;
14
- background-color: transparent;
15
- border: 0;
16
- border-radius: 0;
17
- font-family: sans-serif;
18
- font-weight: 400;
19
- font-size: 1em;
20
- color: currentColor;
21
- line-height: 1.2;
22
- text-align: center;
23
- text-decoration: none;
24
- -webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
25
- cursor: pointer;
26
-
27
- :focus {
28
- outline: none;
29
- }
30
-
31
- ::-moz-focus-inner {
32
- border: 0;
33
- }
34
- `;
35
-
36
- type ButtonResetProps = React.DetailedHTMLProps<
37
- React.HTMLAttributes<HTMLButtonElement>,
38
- HTMLButtonElement
39
- > & {
40
- fullWidth?: boolean;
41
- inputHeight?: boolean;
42
- };
43
-
44
- const ButtonBase = styled(ButtonReset)<ButtonResetProps>`
45
- position: relative;
46
- display: inline-flex;
47
- align-items: center;
48
- justify-content: center;
49
- padding: ${size(1.75)} ${size(6)};
50
- border-radius: 3px;
51
- font-size: 1rem;
52
- line-height: 1.2;
53
- text-decoration: none;
54
- transform-origin: 50% 50%;
55
- transition: 200ms ease, transform 300ms cubic-bezier(0.47, 1.64, 0.41, 0.8);
56
-
57
- :before {
58
- content: '';
59
- position: absolute;
60
- top: 0;
61
- left: 0;
62
- width: 100%;
63
- height: 100%;
64
- background-color: ${(props) => props.theme.color.hoverOverlay};
65
- border-radius: 3px;
66
- opacity: 0;
67
- transition: opacity 150ms ease;
68
- }
69
-
70
- :hover {
71
- :before {
72
- opacity: 1;
73
- }
74
- }
75
-
76
- :active {
77
- transform: scale(0.97);
78
- }
79
-
80
- &[disabled] {
81
- background-color: ${(props) => props.theme.color.disabledBg};
82
- border-color: ${(props) => props.theme.color.disabledBg};
83
- color: ${(props) => props.theme.color.disabledText};
84
- }
85
-
86
- ${({ fullWidth }) =>
87
- fullWidth &&
88
- css`
89
- display: flex;
90
- width: 100%;
91
- `}
92
-
93
- ${({ inputHeight }) =>
94
- inputHeight &&
95
- css`
96
- height: ${(props) => props.theme.distances.inputHeight};
97
- `}
98
-
99
- ${(props) => props.theme.breakpoint.LtSm} {
100
- padding: ${size(1.75)} ${size(2.5)};
101
- font-size: 0.875rem;
102
- }
103
- `;
104
-
105
- export const ButtonPrimary = styled(ButtonBase).attrs(() => ({
106
- className: 'wayke__theme wayke__color--primary-bg wayke__font--bold',
107
- }))``;
108
-
109
- export const ButtonSecondary = styled(ButtonBase).attrs(() => ({
110
- className: 'wayke__theme wayke__color--secondary-bg wayke__font--bold',
111
- }))`
112
- background-color: ${(props) => props.theme.color.accentDark};
113
- color: ${(props) => props.theme.color.textDark};
114
- `;
115
-
116
- export const ButtonContent = styled.div`
117
- position: relative;
118
- z-index: 1;
119
-
120
- & + & {
121
- margin-left: ${size(0.5)};
122
- }
123
- `;
124
-
125
- export const ButtonClear = styled(ButtonReset).attrs(() => ({
126
- className: 'wayke__theme wayke__color--primary-text wayke__font--bold',
127
- }))`
128
- position: relative;
129
- font-size: 0.875rem;
130
- padding: ${size(1.5)};
131
- margin: ${size(-1.5)};
132
- text-align: left;
133
- transform-origin: 50% 50%;
134
- transition: transform 300ms cubic-bezier(0.47, 1.64, 0.41, 0.8);
135
-
136
- ${UtilityTextRight} & {
137
- text-align: right;
138
- }
139
-
140
- :before {
141
- content: '';
142
- position: absolute;
143
- top: 0;
144
- bottom: 0;
145
- left: 0;
146
- right: 0;
147
- background-color: ${(props) => props.theme.color.accentDark};
148
- border-radius: 3px;
149
- opacity: 0;
150
- transition: opacity 200ms ease;
151
- }
152
-
153
- :hover {
154
- :before {
155
- opacity: 1;
156
- }
157
- }
158
-
159
- :active {
160
- transform: scale(0.95);
161
- }
162
- `;
163
-
164
- type ButtonInlineProps = React.DetailedHTMLProps<
165
- React.HTMLAttributes<HTMLButtonElement>,
166
- HTMLButtonElement
167
- > & {
168
- inline?: boolean;
169
- as?: string;
170
- };
171
-
172
- export const ButtonInline = styled(ButtonReset).attrs(() => ({
173
- className: 'wayke__theme wayke__color--primary-text wayke__font--regular',
174
- }))<ButtonInlineProps>`
175
- display: inline-flex;
176
- vertical-align: baseline;
177
- text-align: left;
178
- text-decoration: underline;
179
-
180
- :not(:hover) {
181
- color: ${(props) => props.theme.color.textDark};
182
- }
183
-
184
- ${({ inline }) =>
185
- inline &&
186
- css`
187
- display: inline;
188
- `}
189
- `;
190
-
191
- export const ButtonInlineBold = styled(ButtonReset).attrs(() => ({
192
- className: 'wayke__theme wayke__color--primary-text wayke__font--bold',
193
- }))`
194
- display: inline-flex;
195
- vertical-align: baseline;
196
- text-align: left;
197
-
198
- :hover {
199
- text-decoration: underline;
200
- }
201
- `;
202
-
203
- export const ButtonInlineLight = styled(ButtonReset).attrs(() => ({
204
- className: 'wayke__theme wayke__color--primary-text wayke__font--regular',
205
- }))`
206
- display: inline-flex;
207
- vertical-align: baseline;
208
- text-align: left;
209
- text-decoration: none;
210
-
211
- :not(:hover) {
212
- color: ${(props) => props.theme.color.textDarkLighten};
213
- }
214
- `;
215
-
216
- export const ButtonInlinePrimary = styled(ButtonReset).attrs(() => ({
217
- className: 'wayke__theme wayke__color--primary-text wayke__font--regular',
218
- }))<ButtonInlineProps>`
219
- display: inline-flex;
220
- vertical-align: baseline;
221
- text-align: left;
222
-
223
- :hover {
224
- text-decoration: underline;
225
- }
226
- `;
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
-
3
- import { List, Item, Icon, Label } from './wrapper';
4
- import { IconCheck } from '../Icon/index';
5
-
6
- export interface ICheckMarkList {
7
- children: React.ReactNode;
8
- }
9
-
10
- export const CheckMarkListItem = ({ children }: ICheckMarkList) => (
11
- <Item>
12
- <Icon>
13
- <IconCheck block />
14
- </Icon>
15
- <Label>{children}</Label>
16
- </Item>
17
- );
18
-
19
- const CheckMarkList = ({ children }: ICheckMarkList) => <List>{children}</List>;
20
-
21
- export default CheckMarkList;