@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,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;