@pareto-engineering/design-system 2.0.0-alpha.32 → 2.0.0-alpha.35

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 (46) hide show
  1. package/dist/cjs/a/ContentTree/ContentTree.js +83 -0
  2. package/dist/cjs/a/ContentTree/common/Tree/Tree.js +116 -0
  3. package/dist/cjs/a/ContentTree/common/Tree/index.js +15 -0
  4. package/dist/cjs/a/ContentTree/common/index.js +31 -0
  5. package/dist/cjs/a/ContentTree/common/useContentTree.js +82 -0
  6. package/dist/cjs/a/ContentTree/common/useFirstVisibleNode.js +65 -0
  7. package/dist/cjs/a/ContentTree/index.js +15 -0
  8. package/dist/cjs/a/ContentTree/styles.scss +33 -0
  9. package/dist/cjs/a/index.js +9 -1
  10. package/dist/cjs/c/SocialMediaShareButton/SocialMediaShareButton.js +106 -0
  11. package/dist/cjs/c/SocialMediaShareButton/index.js +15 -0
  12. package/dist/cjs/c/SocialMediaShareButton/styles.scss +39 -0
  13. package/dist/cjs/c/index.js +9 -1
  14. package/dist/es/a/ContentTree/ContentTree.js +67 -0
  15. package/dist/es/a/ContentTree/common/Tree/Tree.js +98 -0
  16. package/dist/es/a/ContentTree/common/Tree/index.js +2 -0
  17. package/dist/es/a/ContentTree/common/index.js +3 -0
  18. package/dist/es/a/ContentTree/common/useContentTree.js +74 -0
  19. package/dist/es/a/ContentTree/common/useFirstVisibleNode.js +54 -0
  20. package/dist/es/a/ContentTree/index.js +2 -0
  21. package/dist/es/a/ContentTree/styles.scss +33 -0
  22. package/dist/es/a/index.js +2 -1
  23. package/dist/es/c/SocialMediaShareButton/SocialMediaShareButton.js +90 -0
  24. package/dist/es/c/SocialMediaShareButton/index.js +2 -0
  25. package/dist/es/c/SocialMediaShareButton/styles.scss +39 -0
  26. package/dist/es/c/index.js +2 -1
  27. package/package.json +3 -2
  28. package/src/__snapshots__/Storyshots.test.js.snap +196 -12
  29. package/src/local.scss +1 -0
  30. package/src/stories/StyleGuide/Sprites.stories.mdx +25 -0
  31. package/src/stories/StyleGuide/helpers.js +16 -0
  32. package/src/stories/a/ContentTree.stories.jsx +662 -0
  33. package/src/stories/c/SocialMediaShareButton.stories.jsx +25 -0
  34. package/src/ui/a/ContentTree/ContentTree.jsx +88 -0
  35. package/src/ui/a/ContentTree/common/Tree/Tree.jsx +138 -0
  36. package/src/ui/a/ContentTree/common/Tree/index.js +2 -0
  37. package/src/ui/a/ContentTree/common/index.js +3 -0
  38. package/src/ui/a/ContentTree/common/useContentTree.js +83 -0
  39. package/src/ui/a/ContentTree/common/useFirstVisibleNode.js +59 -0
  40. package/src/ui/a/ContentTree/index.js +2 -0
  41. package/src/ui/a/ContentTree/styles.scss +33 -0
  42. package/src/ui/a/index.js +1 -0
  43. package/src/ui/c/SocialMediaShareButton/SocialMediaShareButton.jsx +111 -0
  44. package/src/ui/c/SocialMediaShareButton/index.js +2 -0
  45. package/src/ui/c/SocialMediaShareButton/styles.scss +39 -0
  46. package/src/ui/c/index.js +1 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
+
14
+ var _common = require("./common");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ var baseClassName = _bem.default.base;
23
+ var componentClassName = 'content-tree';
24
+ /**
25
+ * This is the component description.
26
+ */
27
+
28
+ var ContentTree = _ref => {
29
+ var {
30
+ id,
31
+ className: userClassName,
32
+ style,
33
+ target,
34
+ selectors // ...otherProps
35
+
36
+ } = _ref;
37
+ (0, React.useLayoutEffect)(() => {
38
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
39
+ }, []);
40
+ var contentTree = (0, _common.useContentTree)(target, selectors);
41
+ return /*#__PURE__*/React.createElement("div", {
42
+ id: id,
43
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
44
+ style: style // {...otherProps}
45
+
46
+ }, /*#__PURE__*/React.createElement(_common.Tree, {
47
+ tree: contentTree
48
+ }));
49
+ };
50
+
51
+ ContentTree.propTypes = {
52
+ /**
53
+ * The HTML id for this element
54
+ */
55
+ id: _propTypes.default.string,
56
+
57
+ /**
58
+ * The HTML class names for this element
59
+ */
60
+ className: _propTypes.default.string,
61
+
62
+ /**
63
+ * The React-written, css properties for this element.
64
+ */
65
+ style: _propTypes.default.objectOf(_propTypes.default.string),
66
+
67
+ /**
68
+ * The selectors to use to extract the navigation tree from the content.
69
+ */
70
+ selectors: _propTypes.default.arrayOf(_propTypes.default.string),
71
+
72
+ /**
73
+ * The reference to the parent element.
74
+ */
75
+ target: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.shape({
76
+ current: _propTypes.default.instanceOf(Element)
77
+ })])
78
+ };
79
+ ContentTree.defaultProps = {
80
+ selectors: ['h2', 'h3']
81
+ };
82
+ var _default = ContentTree;
83
+ exports.default = _default;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
+
14
+ var _useFirstVisibleNode = _interopRequireDefault(require("../useFirstVisibleNode"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ /* @pareto-engineering/generator-front 1.0.12 */
23
+ // Local Definitions
24
+ var baseClassName = _bem.default.base;
25
+ var componentClassName = 'tree';
26
+ /**
27
+ * This is the component description.
28
+ */
29
+
30
+ var Tree = _ref => {
31
+ var {
32
+ id,
33
+ className: userClassName,
34
+ style,
35
+ tree,
36
+ displayDepth // ...otherProps
37
+
38
+ } = _ref;
39
+ // The nodeIds to be used to get the first visible node
40
+ var [nodeIds, setNodeIds] = (0, React.useState)([]); // current visible nodeId
41
+
42
+ var visibleNodeId = (0, _useFirstVisibleNode.default)(nodeIds);
43
+ (0, React.useEffect)(() => {
44
+ var node = document.getElementsByClassName(visibleNodeId)[0];
45
+ node === null || node === void 0 ? void 0 : node.classList.add(_bem.default.modifierActive);
46
+ return () => {
47
+ node === null || node === void 0 ? void 0 : node.classList.remove(_bem.default.modifierActive);
48
+ };
49
+ }, [visibleNodeId]); // Generate the tree structure from the content tree data depending on the display depth
50
+
51
+ var getNestedTree = (node, depth) => {
52
+ setNodeIds(prev => [...prev, node.id]);
53
+
54
+ if (depth <= 1) {
55
+ return /*#__PURE__*/React.createElement("li", {
56
+ key: node.id
57
+ }, /*#__PURE__*/React.createElement("a", {
58
+ className: node.id,
59
+ href: node.id
60
+ }, node.text));
61
+ }
62
+
63
+ return /*#__PURE__*/React.createElement("li", {
64
+ key: node.id
65
+ }, /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("a", {
66
+ href: node.id,
67
+ className: node.id
68
+ }, node.text)), node.children.length > 0 && /*#__PURE__*/React.createElement("ul", null, node.children.map(child => getNestedTree(child, depth - 1))));
69
+ };
70
+
71
+ var ContentTree = (0, React.useMemo)(() => tree.map(node => getNestedTree(node, displayDepth)), [tree]);
72
+ return /*#__PURE__*/React.createElement("ul", {
73
+ id: id,
74
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
75
+ style: style
76
+ }, ContentTree);
77
+ };
78
+
79
+ Tree.propTypes = {
80
+ /**
81
+ * The HTML id for this element
82
+ */
83
+ id: _propTypes.default.string,
84
+
85
+ /**
86
+ * The HTML class names for this element
87
+ */
88
+ className: _propTypes.default.string,
89
+
90
+ /**
91
+ * The React-written, css properties for this element.
92
+ */
93
+ style: _propTypes.default.objectOf(_propTypes.default.string),
94
+
95
+ /**
96
+ * The tree to render.
97
+ */
98
+ tree: _propTypes.default.arrayOf(_propTypes.default.shape({
99
+ text: _propTypes.default.string,
100
+ id: _propTypes.default.string,
101
+ children: _propTypes.default.arrayOf(_propTypes.default.shape({
102
+ text: _propTypes.default.string,
103
+ id: _propTypes.default.string
104
+ }))
105
+ })),
106
+
107
+ /**
108
+ * The levels of the tree to display.
109
+ */
110
+ displayDepth: _propTypes.default.number
111
+ };
112
+ Tree.defaultProps = {
113
+ displayDepth: 4
114
+ };
115
+ var _default = Tree;
116
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Tree", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Tree.default;
10
+ }
11
+ });
12
+
13
+ var _Tree = _interopRequireDefault(require("./Tree"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useContentTree", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _useContentTree.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useFirstVisibleNode", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _useFirstVisibleNode.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "Tree", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _Tree.Tree;
22
+ }
23
+ });
24
+
25
+ var _useContentTree = _interopRequireDefault(require("./useContentTree"));
26
+
27
+ var _useFirstVisibleNode = _interopRequireDefault(require("./useFirstVisibleNode"));
28
+
29
+ var _Tree = require("./Tree");
30
+
31
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var useContentTree = (target, selectors) => {
11
+ var [contentTree, setContentTree] = (0, _react.useState)([]);
12
+ var getNodes = (0, _react.useCallback)(parentTag => {
13
+ var nodeList = parentTag.querySelectorAll(selectors.join(', '));
14
+ var nodes = [];
15
+ nodeList.forEach(nodeNode => {
16
+ var {
17
+ id,
18
+ innerText,
19
+ tagName
20
+ } = nodeNode;
21
+ nodes.push({
22
+ id: "#".concat(id),
23
+ text: innerText,
24
+ level: selectors.indexOf(tagName.toLowerCase())
25
+ });
26
+ });
27
+ return nodes;
28
+ }, [selectors]);
29
+ var buildTree = (0, _react.useCallback)(nodes => {
30
+ // Track the nodes we've seen so far in the same level
31
+ var currentSameLevelNodes = []; // Track nodes of the next level which will be children of the current node
32
+
33
+ var nextLevelNodes = []; // Track the current node level
34
+
35
+ var lastLevel = -1; // If the nodes are empty, return an empty tree
36
+
37
+ if (nodes.length === 0) {
38
+ return [];
39
+ }
40
+
41
+ var buildSubTree = () => {
42
+ if (nextLevelNodes.length > 0) {
43
+ currentSameLevelNodes[currentSameLevelNodes.length - 1].children.push(...buildTree(nextLevelNodes));
44
+ }
45
+ };
46
+
47
+ nodes.forEach(node => {
48
+ // If the node is of a greater level, we need to build the sub tree
49
+ if (lastLevel !== -1 && lastLevel < node.level) {
50
+ nextLevelNodes.push(node);
51
+ return;
52
+ } // build a subtree
53
+
54
+
55
+ buildSubTree(); // reset the next level nodes
56
+
57
+ lastLevel = node.level; // add the current node to the current level nodes
58
+
59
+ currentSameLevelNodes.push({
60
+ id: node.id,
61
+ text: node.text,
62
+ children: []
63
+ }); // reset the next level nodes after building the subtree
64
+
65
+ nextLevelNodes = [];
66
+ }); // build subtree
67
+
68
+ buildSubTree();
69
+ return currentSameLevelNodes;
70
+ }, []);
71
+ (0, _react.useEffect)(() => {
72
+ if (target.current) {
73
+ var nodes = getNodes(target.current);
74
+ var tree = buildTree(nodes);
75
+ setContentTree(tree);
76
+ }
77
+ }, [target.current]);
78
+ return contentTree;
79
+ };
80
+
81
+ var _default = useContentTree;
82
+ exports.default = _default;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ var useFirstVisibleNode = (nodeIds, config) => {
15
+ var [visibleNodeId, setVisibleNodeId] = (0, _react.useState)(null);
16
+ var {
17
+ debounceMs = 25
18
+ } = config || {}; // get headlines nodes - Should only be recalculated when the ids change
19
+
20
+ var nodes = (0, _react.useMemo)(() => {
21
+ if ((nodeIds === null || nodeIds === void 0 ? void 0 : nodeIds.length) > 0) {
22
+ return Array.from(document.querySelectorAll(nodeIds.join(',')));
23
+ }
24
+
25
+ return [];
26
+ }, [nodeIds]);
27
+ var getVisibleNodeId = (0, _react.useCallback)((0, _debounce.default)(() => {
28
+ var _visibleNode$node;
29
+
30
+ // Get the top postion of each headline node relative to the viewport
31
+ var topOffsets = nodes.map(node => node.getBoundingClientRect().top); // Get the node closer to zero (the top of the viewport)
32
+ // We have the default offset as Infinity so it's always greater that the first node Y position
33
+
34
+ var visibleNode = topOffsets.reduce((prev, currentOffset, currentIndex) => {
35
+ var node = Math.abs(currentOffset - 0) < Math.abs(prev.offset - 0) ? {
36
+ node: nodes[currentIndex],
37
+ offset: currentOffset
38
+ } : prev;
39
+ return node;
40
+ }, {
41
+ node: nodes[0],
42
+ offset: Infinity
43
+ }); // Set the visible node id
44
+
45
+ setVisibleNodeId("#".concat(visibleNode === null || visibleNode === void 0 ? void 0 : (_visibleNode$node = visibleNode.node) === null || _visibleNode$node === void 0 ? void 0 : _visibleNode$node.id));
46
+ }, debounceMs), [nodes]); // Recalculate the visible node id when the page is scrolled
47
+
48
+ (0, _react.useEffect)(() => {
49
+ window.addEventListener('scroll', getVisibleNodeId);
50
+ return () => {
51
+ window.removeEventListener('scroll', getVisibleNodeId);
52
+ };
53
+ }, [getVisibleNodeId]); // Recalculate the visible node id when the page is resized
54
+
55
+ (0, _react.useEffect)(() => {
56
+ window.addEventListener('resize', getVisibleNodeId);
57
+ return () => {
58
+ window.removeEventListener('resize', getVisibleNodeId);
59
+ };
60
+ }, [getVisibleNodeId]);
61
+ return visibleNodeId;
62
+ };
63
+
64
+ var _default = useFirstVisibleNode;
65
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ContentTree", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ContentTree.default;
10
+ }
11
+ });
12
+
13
+ var _ContentTree = _interopRequireDefault(require("./ContentTree"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,33 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ @use "@pareto-engineering/bem";
3
+
4
+ $default-margin: 1em;
5
+ $default-padding: 1em;
6
+
7
+ .#{bem.$base}.content-tree{
8
+
9
+ ul {
10
+ list-style: none;
11
+ }
12
+
13
+ .#{bem.$base}.tree {
14
+ position: sticky;
15
+ top: 0;
16
+ padding: 0;
17
+
18
+ .#{bem.$modifier-active} {
19
+ color: var(--main2);
20
+ transition: color 0.2s;
21
+ }
22
+
23
+ li:not(:last-child) {
24
+ margin-bottom: $default-margin;
25
+ ul {
26
+ padding-left: $default-padding;
27
+ }
28
+ }
29
+ }
30
+ }
31
+
32
+
33
+
@@ -165,6 +165,12 @@ Object.defineProperty(exports, "BackgroundGradient", {
165
165
  return _BackgroundGradient.BackgroundGradient;
166
166
  }
167
167
  });
168
+ Object.defineProperty(exports, "ContentTree", {
169
+ enumerable: true,
170
+ get: function get() {
171
+ return _ContentTree.ContentTree;
172
+ }
173
+ });
168
174
 
169
175
  var _SVG = require("./SVG");
170
176
 
@@ -212,4 +218,6 @@ var _OvalIllustration = require("./OvalIllustration");
212
218
 
213
219
  var _SnapScroller = require("./SnapScroller");
214
220
 
215
- var _BackgroundGradient = require("./BackgroundGradient");
221
+ var _BackgroundGradient = require("./BackgroundGradient");
222
+
223
+ var _ContentTree = require("./ContentTree");
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ // Local Definitions
21
+ var baseClassName = _bem.default.base;
22
+ var componentClassName = 'social-media-share-button';
23
+ /**
24
+ * This is the component description.
25
+ */
26
+
27
+ var SocialMediaShareButton = _ref => {
28
+ var {
29
+ id,
30
+ className: userClassName,
31
+ style,
32
+ icon,
33
+ // children,
34
+ type,
35
+ color
36
+ } = _ref;
37
+ (0, React.useLayoutEffect)(() => {
38
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
39
+ }, []);
40
+ var {
41
+ title
42
+ } = document;
43
+ var link = window.location.href;
44
+ var defaultsMap = {
45
+ facebook: {
46
+ icon: 'f',
47
+ link: "https://www.facebook.com/sharer/sharer.php?u=".concat(link, "&quote=").concat(title)
48
+ },
49
+ twitter: {
50
+ icon: 't',
51
+ link: "https://twitter.com/intent/tweet?text=".concat(title, "&url=").concat(link)
52
+ }
53
+ };
54
+ return /*#__PURE__*/React.createElement("a", {
55
+ href: defaultsMap[type].link,
56
+ target: "_blank",
57
+ rel: "noreferrer",
58
+ id: id,
59
+ className: [baseClassName, componentClassName, "x-".concat(color || type), userClassName].filter(e => e).join(' '),
60
+ style: style
61
+ }, /*#__PURE__*/React.createElement("button", {
62
+ type: "button"
63
+ }, icon || defaultsMap[type].icon));
64
+ };
65
+
66
+ SocialMediaShareButton.propTypes = {
67
+ /**
68
+ * The HTML id for this element
69
+ */
70
+ id: _propTypes.default.string,
71
+
72
+ /**
73
+ * The HTML class names for this element
74
+ */
75
+ className: _propTypes.default.string,
76
+
77
+ /**
78
+ * The React-written, css properties for this element.
79
+ */
80
+ style: _propTypes.default.objectOf(_propTypes.default.string),
81
+
82
+ /**
83
+ * The children JSX
84
+ */
85
+ // children:PropTypes.node,
86
+
87
+ /**
88
+ * The Social Media to Target.
89
+ * If blank, you need to provide both an icon letter (from glyphter) and a link.
90
+ */
91
+ type: _propTypes.default.oneOf(['twitter', 'facebook']),
92
+
93
+ /**
94
+ * The icon of the social media
95
+ */
96
+ icon: _propTypes.default.string,
97
+
98
+ /**
99
+ * The button color
100
+ */
101
+ color: _propTypes.default.string
102
+ };
103
+ SocialMediaShareButton.defaultProps = {// someProp:false
104
+ };
105
+ var _default = SocialMediaShareButton;
106
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "SocialMediaShareButton", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _SocialMediaShareButton.default;
10
+ }
11
+ });
12
+
13
+ var _SocialMediaShareButton = _interopRequireDefault(require("./SocialMediaShareButton"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,39 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+ @use "@aztlan/stylebook/src/mixins";
5
+ @use "@aztlan/stylebook/src/globals" as *;
6
+
7
+ $default-dimensions: 2em;
8
+ $mobile-dimensions: 2.75em;
9
+
10
+ .#{bem.$base}.social-media-share-button{
11
+
12
+ > button {
13
+ appearance: none;
14
+ background: transparent;
15
+ border: 0;
16
+ border-radius: 3em;
17
+ color: var(--x);
18
+ cursor: pointer;
19
+ font-family: "icons", sans-serif;
20
+ height: $default-dimensions;
21
+ transition: all .3s;
22
+ width: $default-dimensions;
23
+
24
+ @include mixins.media($to:$sm-md) {
25
+ height: $mobile-dimensions;
26
+ width: $mobile-dimensions;
27
+ }
28
+
29
+ &:hover {
30
+ background: var(--x);
31
+ color: var(--on-x);
32
+ }
33
+
34
+ &:focus, &:active {
35
+ background: var(--light-x);
36
+ color: var(--on-x);
37
+ }
38
+ }
39
+ }
@@ -27,9 +27,17 @@ Object.defineProperty(exports, "Shortener", {
27
27
  return _Shortener.Shortener;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "SocialMediaShareButton", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _SocialMediaShareButton.SocialMediaShareButton;
34
+ }
35
+ });
30
36
 
31
37
  var _Hero = require("./Hero");
32
38
 
33
39
  var _ContentSlides = require("./ContentSlides");
34
40
 
35
- var _Shortener = require("./Shortener");
41
+ var _Shortener = require("./Shortener");
42
+
43
+ var _SocialMediaShareButton = require("./SocialMediaShareButton");