@pareto-engineering/design-system 2.0.0-alpha.4 → 2.0.0-alpha.42

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 (225) hide show
  1. package/dist/cjs/a/BackgroundGradient/BackgroundGradient.js +77 -0
  2. package/dist/cjs/a/BackgroundGradient/index.js +15 -0
  3. package/dist/cjs/a/BackgroundGradient/styles.scss +16 -0
  4. package/dist/cjs/a/ContentTree/ContentTree.js +83 -0
  5. package/dist/cjs/a/ContentTree/common/Tree/Tree.js +116 -0
  6. package/dist/cjs/a/ContentTree/common/Tree/index.js +15 -0
  7. package/dist/cjs/a/ContentTree/common/index.js +31 -0
  8. package/dist/cjs/a/ContentTree/common/useContentTree.js +82 -0
  9. package/dist/cjs/a/ContentTree/common/useFirstVisibleNode.js +65 -0
  10. package/dist/cjs/a/ContentTree/index.js +15 -0
  11. package/dist/cjs/a/ContentTree/styles.scss +33 -0
  12. package/dist/cjs/a/Conversation/Conversation.js +14 -8
  13. package/dist/cjs/a/Conversation/common/Message/Message.js +32 -6
  14. package/dist/cjs/a/Conversation/styles.scss +132 -33
  15. package/dist/cjs/a/OvalIllustration/OvalIllustration.js +133 -0
  16. package/dist/cjs/a/OvalIllustration/index.js +15 -0
  17. package/dist/cjs/a/OvalIllustration/styles.scss +102 -0
  18. package/dist/cjs/a/Popover/Popover.js +134 -0
  19. package/dist/cjs/a/Popover/common/Divider/Divider.js +67 -0
  20. package/dist/cjs/a/Popover/common/Divider/index.js +15 -0
  21. package/dist/cjs/a/Popover/common/Item/Item.js +67 -0
  22. package/dist/cjs/a/Popover/common/Item/index.js +15 -0
  23. package/dist/cjs/a/Popover/common/index.js +21 -0
  24. package/dist/cjs/a/Popover/index.js +15 -0
  25. package/dist/cjs/a/Popover/styles.scss +43 -0
  26. package/dist/cjs/a/Shapes/Shapes.js +39 -9
  27. package/dist/cjs/a/Shapes/styles.scss +78 -22
  28. package/dist/cjs/a/SnapScroller/SnapScroller.js +77 -0
  29. package/dist/cjs/a/SnapScroller/index.js +15 -0
  30. package/dist/cjs/a/SnapScroller/styles.scss +38 -0
  31. package/dist/cjs/a/index.js +49 -1
  32. package/dist/cjs/b/Button/Button.js +10 -4
  33. package/dist/cjs/b/Button/styles.scss +55 -10
  34. package/dist/cjs/b/Logo/Logo.js +41 -41
  35. package/dist/cjs/b/Logo/styles.scss +0 -138
  36. package/dist/cjs/b/Page/common/Section/Section.js +56 -5
  37. package/dist/cjs/b/Page/styles.scss +8 -2
  38. package/dist/cjs/c/ContentSlides/common/HorizontalMenu/HorizontalMenu.js +16 -9
  39. package/dist/cjs/c/ContentSlides/common/Navigator/Navigator.js +4 -3
  40. package/dist/cjs/c/ContentSlides/styles.scss +10 -4
  41. package/dist/cjs/c/SocialMediaShareButton/SocialMediaShareButton.js +105 -0
  42. package/dist/cjs/c/SocialMediaShareButton/index.js +15 -0
  43. package/dist/cjs/c/SocialMediaShareButton/styles.scss +39 -0
  44. package/dist/cjs/c/index.js +9 -1
  45. package/dist/cjs/f/common/Debugger/Debugger.js +1 -1
  46. package/dist/cjs/f/common/Label/Label.js +1 -1
  47. package/dist/cjs/f/common/Label/styles.scss +1 -1
  48. package/dist/cjs/f/fields/ChoicesInput/ChoicesInput.js +1 -1
  49. package/dist/cjs/f/fields/ChoicesInput/styles.scss +17 -2
  50. package/dist/cjs/f/fields/RatingsInput/RatingsInput.js +39 -6
  51. package/dist/cjs/f/fields/RatingsInput/styles.scss +29 -20
  52. package/dist/cjs/f/fields/SelectInput/SelectInput.js +36 -10
  53. package/dist/cjs/f/fields/SelectInput/styles.scss +13 -8
  54. package/dist/cjs/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +1 -1
  55. package/dist/cjs/f/fields/TextInput/TextInput.js +35 -7
  56. package/dist/cjs/f/fields/TextInput/styles.scss +16 -7
  57. package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +15 -8
  58. package/dist/cjs/f/fields/TextareaInput/styles.scss +19 -6
  59. package/dist/cjs/f/fields/index.js +0 -24
  60. package/dist/cjs/form-reset.scss +1 -1
  61. package/dist/cjs/index.js +13 -0
  62. package/dist/cjs/utils/hooks/index.js +23 -0
  63. package/dist/cjs/utils/hooks/useDynamicPosition.js +107 -0
  64. package/dist/cjs/utils/hooks/useWindowSize.js +39 -0
  65. package/dist/cjs/utils/index.js +19 -0
  66. package/dist/es/a/BackgroundGradient/BackgroundGradient.js +55 -0
  67. package/dist/es/a/BackgroundGradient/index.js +2 -0
  68. package/dist/es/a/BackgroundGradient/styles.scss +16 -0
  69. package/dist/es/a/ContentTree/ContentTree.js +67 -0
  70. package/dist/es/a/ContentTree/common/Tree/Tree.js +98 -0
  71. package/dist/es/a/ContentTree/common/Tree/index.js +2 -0
  72. package/dist/es/a/ContentTree/common/index.js +3 -0
  73. package/dist/es/a/ContentTree/common/useContentTree.js +74 -0
  74. package/dist/es/a/ContentTree/common/useFirstVisibleNode.js +54 -0
  75. package/dist/es/a/ContentTree/index.js +2 -0
  76. package/dist/es/a/ContentTree/styles.scss +33 -0
  77. package/dist/es/a/Conversation/Conversation.js +14 -8
  78. package/dist/es/a/Conversation/common/Message/Message.js +32 -6
  79. package/dist/es/a/Conversation/styles.scss +132 -33
  80. package/dist/es/a/OvalIllustration/OvalIllustration.js +111 -0
  81. package/dist/es/a/OvalIllustration/index.js +2 -0
  82. package/dist/es/a/OvalIllustration/styles.scss +102 -0
  83. package/dist/es/a/Popover/Popover.js +118 -0
  84. package/dist/es/a/Popover/common/Divider/Divider.js +47 -0
  85. package/dist/es/a/Popover/common/Divider/index.js +2 -0
  86. package/dist/es/a/Popover/common/Item/Item.js +47 -0
  87. package/dist/es/a/Popover/common/Item/index.js +2 -0
  88. package/dist/es/a/Popover/common/index.js +2 -0
  89. package/dist/es/a/Popover/index.js +2 -0
  90. package/dist/es/a/Popover/styles.scss +43 -0
  91. package/dist/es/a/Shapes/Shapes.js +39 -9
  92. package/dist/es/a/Shapes/styles.scss +78 -22
  93. package/dist/es/a/SnapScroller/SnapScroller.js +61 -0
  94. package/dist/es/a/SnapScroller/index.js +2 -0
  95. package/dist/es/a/SnapScroller/styles.scss +38 -0
  96. package/dist/es/a/index.js +7 -1
  97. package/dist/es/b/Button/Button.js +8 -2
  98. package/dist/es/b/Button/styles.scss +55 -10
  99. package/dist/es/b/Logo/Logo.js +41 -41
  100. package/dist/es/b/Logo/styles.scss +0 -138
  101. package/dist/es/b/Page/common/Section/Section.js +55 -4
  102. package/dist/es/b/Page/styles.scss +8 -2
  103. package/dist/es/c/ContentSlides/common/HorizontalMenu/HorizontalMenu.js +16 -9
  104. package/dist/es/c/ContentSlides/common/Navigator/Navigator.js +4 -3
  105. package/dist/es/c/ContentSlides/styles.scss +10 -4
  106. package/dist/es/c/SocialMediaShareButton/SocialMediaShareButton.js +89 -0
  107. package/dist/es/c/SocialMediaShareButton/index.js +2 -0
  108. package/dist/es/c/SocialMediaShareButton/styles.scss +39 -0
  109. package/dist/es/c/index.js +2 -1
  110. package/dist/es/f/common/Debugger/Debugger.js +1 -1
  111. package/dist/es/f/common/Label/Label.js +1 -1
  112. package/dist/es/f/common/Label/styles.scss +1 -1
  113. package/dist/es/f/fields/ChoicesInput/ChoicesInput.js +1 -1
  114. package/dist/es/f/fields/ChoicesInput/styles.scss +17 -2
  115. package/dist/es/f/fields/RatingsInput/RatingsInput.js +38 -6
  116. package/dist/es/f/fields/RatingsInput/styles.scss +29 -20
  117. package/dist/es/f/fields/SelectInput/SelectInput.js +36 -10
  118. package/dist/es/f/fields/SelectInput/styles.scss +13 -8
  119. package/dist/es/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +1 -1
  120. package/dist/es/f/fields/TextInput/TextInput.js +35 -7
  121. package/dist/es/f/fields/TextInput/styles.scss +16 -7
  122. package/dist/es/f/fields/TextareaInput/TextareaInput.js +15 -8
  123. package/dist/es/f/fields/TextareaInput/styles.scss +19 -6
  124. package/dist/es/f/fields/index.js +0 -3
  125. package/dist/es/form-reset.scss +1 -1
  126. package/dist/es/index.js +2 -1
  127. package/dist/es/utils/hooks/index.js +2 -0
  128. package/dist/es/utils/hooks/useDynamicPosition.js +93 -0
  129. package/dist/es/utils/hooks/useWindowSize.js +27 -0
  130. package/dist/es/utils/index.js +1 -0
  131. package/package.json +4 -3
  132. package/src/__snapshots__/Storyshots.test.js.snap +4755 -1734
  133. package/src/local.scss +2 -0
  134. package/src/stories/StyleGuide/Sprites.stories.mdx +25 -0
  135. package/src/stories/StyleGuide/helpers.js +16 -0
  136. package/src/stories/a/BackgroundGradient.stories.jsx +38 -0
  137. package/src/stories/a/ContentTree.stories.jsx +662 -0
  138. package/src/stories/a/Conversation.stories.jsx +78 -1
  139. package/src/stories/a/OvalIllustration.stories.jsx +59 -0
  140. package/src/stories/a/Popover.stories.jsx +106 -0
  141. package/src/stories/a/Shapes.stories.jsx +143 -0
  142. package/src/stories/a/SnapScroller.stories.jsx +98 -0
  143. package/src/stories/b/Button.stories.jsx +27 -4
  144. package/src/stories/b/Logo.stories.jsx +17 -9
  145. package/src/stories/b/Page.stories.jsx +51 -1
  146. package/src/stories/c/ContentSlides.stories.jsx +154 -2
  147. package/src/stories/c/SocialMediaShareButton.stories.jsx +25 -0
  148. package/src/stories/f/RatingsInput.stories.jsx +3 -2
  149. package/src/stories/f/SelectInput.stories.jsx +36 -5
  150. package/src/stories/f/TextInput.stories.jsx +15 -4
  151. package/src/stories/f/TextareaInput.stories.jsx +42 -6
  152. package/src/stories/utils/lorem.js +15 -0
  153. package/src/ui/a/BackgroundGradient/BackgroundGradient.jsx +76 -0
  154. package/src/ui/a/BackgroundGradient/index.js +2 -0
  155. package/src/ui/a/BackgroundGradient/styles.scss +16 -0
  156. package/src/ui/a/ContentTree/ContentTree.jsx +88 -0
  157. package/src/ui/a/ContentTree/common/Tree/Tree.jsx +138 -0
  158. package/src/ui/a/ContentTree/common/Tree/index.js +2 -0
  159. package/src/ui/a/ContentTree/common/index.js +3 -0
  160. package/src/ui/a/ContentTree/common/useContentTree.js +83 -0
  161. package/src/ui/a/ContentTree/common/useFirstVisibleNode.js +59 -0
  162. package/src/ui/a/ContentTree/index.js +2 -0
  163. package/src/ui/a/ContentTree/styles.scss +33 -0
  164. package/src/ui/a/Conversation/Conversation.jsx +15 -7
  165. package/src/ui/a/Conversation/common/Message/Message.jsx +38 -6
  166. package/src/ui/a/Conversation/styles.scss +132 -33
  167. package/src/ui/a/OvalIllustration/OvalIllustration.jsx +134 -0
  168. package/src/ui/a/OvalIllustration/index.js +2 -0
  169. package/src/ui/a/OvalIllustration/styles.scss +102 -0
  170. package/src/ui/a/Popover/Popover.jsx +157 -0
  171. package/src/ui/a/Popover/index.js +2 -0
  172. package/src/ui/a/Popover/styles.scss +43 -0
  173. package/src/ui/a/Shapes/Shapes.jsx +191 -0
  174. package/src/ui/a/Shapes/index.js +2 -0
  175. package/src/ui/a/Shapes/styles.scss +255 -0
  176. package/src/ui/a/SnapScroller/SnapScroller.jsx +83 -0
  177. package/src/ui/a/SnapScroller/index.js +2 -0
  178. package/src/ui/a/SnapScroller/styles.scss +38 -0
  179. package/src/ui/a/index.js +6 -0
  180. package/src/ui/b/Button/Button.jsx +9 -1
  181. package/src/ui/b/Button/styles.scss +55 -10
  182. package/src/ui/b/Logo/Logo.jsx +41 -41
  183. package/src/ui/b/Logo/styles.scss +0 -138
  184. package/src/ui/b/Page/common/Section/Section.jsx +68 -2
  185. package/src/ui/b/Page/styles.scss +8 -2
  186. package/src/ui/c/ContentSlides/common/HorizontalMenu/HorizontalMenu.jsx +12 -5
  187. package/src/ui/c/ContentSlides/common/Navigator/Navigator.jsx +3 -2
  188. package/src/ui/c/ContentSlides/styles.scss +10 -4
  189. package/src/ui/c/SocialMediaShareButton/SocialMediaShareButton.jsx +113 -0
  190. package/src/ui/c/SocialMediaShareButton/index.js +2 -0
  191. package/src/ui/c/SocialMediaShareButton/styles.scss +39 -0
  192. package/src/ui/c/index.js +1 -0
  193. package/src/ui/f/common/Debugger/Debugger.jsx +1 -1
  194. package/src/ui/f/common/Label/Label.jsx +1 -1
  195. package/src/ui/f/common/Label/styles.scss +1 -1
  196. package/src/ui/f/fields/ChoicesInput/ChoicesInput.jsx +1 -1
  197. package/src/ui/f/fields/ChoicesInput/styles.scss +17 -2
  198. package/src/ui/f/fields/RatingsInput/RatingsInput.jsx +54 -19
  199. package/src/ui/f/fields/RatingsInput/styles.scss +29 -20
  200. package/src/ui/f/fields/SelectInput/SelectInput.jsx +43 -5
  201. package/src/ui/f/fields/SelectInput/styles.scss +13 -8
  202. package/src/ui/f/fields/TextInput/TextInput.jsx +31 -3
  203. package/src/ui/f/fields/TextInput/styles.scss +16 -7
  204. package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +24 -13
  205. package/src/ui/f/fields/TextareaInput/styles.scss +19 -6
  206. package/src/ui/f/fields/index.js +0 -3
  207. package/src/ui/form-reset.scss +1 -1
  208. package/src/ui/index.js +1 -0
  209. package/src/ui/utils/hooks/index.js +2 -0
  210. package/src/ui/utils/hooks/useDynamicPosition.js +104 -0
  211. package/src/ui/utils/hooks/useWindowSize.js +32 -0
  212. package/src/ui/utils/index.js +1 -0
  213. package/stylelint.config.js +13 -13
  214. package/src/stories/f/CheckboxInput.stories.jsx +0 -37
  215. package/src/stories/f/RadioInput.stories.jsx +0 -37
  216. package/src/stories/f/TaskRecommendationInput.stories.jsx +0 -38
  217. package/src/ui/f/fields/CheckboxInput/CheckboxInput.jsx +0 -107
  218. package/src/ui/f/fields/CheckboxInput/index.js +0 -2
  219. package/src/ui/f/fields/CheckboxInput/styles.scss +0 -28
  220. package/src/ui/f/fields/RadioInput/RadioInput.jsx +0 -112
  221. package/src/ui/f/fields/RadioInput/index.js +0 -2
  222. package/src/ui/f/fields/RadioInput/styles.scss +0 -26
  223. package/src/ui/f/fields/TaskRecommendationInput/TaskRecommendationInput.jsx +0 -130
  224. package/src/ui/f/fields/TaskRecommendationInput/index.js +0 -2
  225. package/src/ui/f/fields/TaskRecommendationInput/styles.scss +0 -41
@@ -43,7 +43,8 @@ var TextareaInput = _ref => {
43
43
  textAreaColor,
44
44
  labelColor,
45
45
  description,
46
- disabled // ...otherProps
46
+ disabled,
47
+ placeholder // ...otherProps
47
48
 
48
49
  } = _ref;
49
50
  (0, React.useLayoutEffect)(() => {
@@ -55,16 +56,18 @@ var TextareaInput = _ref => {
55
56
  });
56
57
  return /*#__PURE__*/React.createElement("div", {
57
58
  id: id,
58
- className: [baseClassName, componentClassName, userClassName, "x-".concat(textAreaColor), "y-".concat(labelColor)].filter(e => e).join(' '),
59
+ className: [baseClassName, componentClassName, userClassName, "y-".concat(textAreaColor)].filter(e => e).join(' '),
59
60
  style: style // {...otherProps}
60
61
 
61
62
  }, /*#__PURE__*/React.createElement(_common.FormLabel, {
62
- className: ['c-y', labelAsDescription ? 'md-s2 s0 v1 mb-v' : 'v50 mb-v'].filter(e => e).join(' '),
63
- name: name
63
+ className: [labelAsDescription ? 'md-s2 s0 v1 mb-v' : 'v50 mb-v'].filter(e => e).join(' '),
64
+ name: name,
65
+ color: labelColor
64
66
  }, label), /*#__PURE__*/React.createElement("textarea", _extends({
65
67
  id: textAreaId,
66
- className: "textarea v50 pv-v ".concat(meta.touched && meta.error ? 'input-border-error' : 'input-border')
68
+ className: "textarea"
67
69
  }, field, {
70
+ placeholder: placeholder,
68
71
  rows: rows,
69
72
  disabled: disabled
70
73
  })), (description || meta.touched && meta.error) && /*#__PURE__*/React.createElement(_common.FormDescription, {
@@ -137,12 +140,16 @@ TextareaInput.propTypes = {
137
140
  /**
138
141
  * Whether the text area should be disabled
139
142
  */
140
- disabled: _propTypes.default.bool
143
+ disabled: _propTypes.default.bool,
144
+
145
+ /**
146
+ * The textarea placeholder text
147
+ */
148
+ placeholder: _propTypes.default.string
141
149
  };
142
150
  TextareaInput.defaultProps = {
143
151
  rows: 3,
144
- textAreaColor: 'background1',
145
- labelColor: 'main1',
152
+ textAreaColor: 'background2',
146
153
  disabled: false
147
154
  };
148
155
 
@@ -1,19 +1,32 @@
1
1
  /* @pareto-engineering/generator-front 1.0.12 */
2
2
  @use "@pareto-engineering/bem";
3
3
 
4
+ $default-padding: .5em;
5
+
4
6
  .#{bem.$base}.text-area-input{
5
7
  display: flex;
6
8
  flex-direction: column;
7
9
 
8
10
  .textarea {
9
- background: var(--light-x);
10
- color: var(--on-x);
11
+ border: var(--theme-border-style) var(--dark-y);
12
+ background: var(--light-y);
13
+ color: var(--on-y);
14
+ padding: $default-padding;
11
15
 
12
- &:focus {
13
- background: var(--dark-x);
16
+ &::placeholder{
17
+ color: var(--metadata);
14
18
  }
15
- }
16
- }
17
19
 
20
+ &:not(:disabled):hover{
21
+ border: var(--theme-border-style) var(--light-background4);
22
+ }
18
23
 
24
+ &:disabled {
25
+ background-color: var(--dark-y);
26
+ }
19
27
 
28
+ &:focus {
29
+ background: var(--light-background4);
30
+ }
31
+ }
32
+ }
@@ -15,24 +15,6 @@ Object.defineProperty(exports, "SelectInput", {
15
15
  return _SelectInput.SelectInput;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "RadioInput", {
19
- enumerable: true,
20
- get: function get() {
21
- return _RadioInput.RadioInput;
22
- }
23
- });
24
- Object.defineProperty(exports, "CheckboxInput", {
25
- enumerable: true,
26
- get: function get() {
27
- return _CheckboxInput.CheckboxInput;
28
- }
29
- });
30
- Object.defineProperty(exports, "TaskRecommendationInput", {
31
- enumerable: true,
32
- get: function get() {
33
- return _TaskRecommendationInput.TaskRecommendationInput;
34
- }
35
- });
36
18
  Object.defineProperty(exports, "ChoicesInput", {
37
19
  enumerable: true,
38
20
  get: function get() {
@@ -56,12 +38,6 @@ var _TextInput = require("./TextInput");
56
38
 
57
39
  var _SelectInput = require("./SelectInput");
58
40
 
59
- var _RadioInput = require("./RadioInput");
60
-
61
- var _CheckboxInput = require("./CheckboxInput");
62
-
63
- var _TaskRecommendationInput = require("./TaskRecommendationInput");
64
-
65
41
  var _ChoicesInput = require("./ChoicesInput");
66
42
 
67
43
  var _TextareaInput = require("./TextareaInput");
@@ -19,7 +19,7 @@ button,
19
19
  textarea,
20
20
  label,
21
21
  select {
22
- background-color: inherit;
22
+ // background-color: inherit;
23
23
  border: 0;
24
24
  display: inline-block;
25
25
  font: inherit;
package/dist/cjs/index.js CHANGED
@@ -80,4 +80,17 @@ Object.keys(_f).forEach(function (key) {
80
80
  return _f[key];
81
81
  }
82
82
  });
83
+ });
84
+
85
+ var _utils = require("./utils");
86
+
87
+ Object.keys(_utils).forEach(function (key) {
88
+ if (key === "default" || key === "__esModule") return;
89
+ if (key in exports && exports[key] === _utils[key]) return;
90
+ Object.defineProperty(exports, key, {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _utils[key];
94
+ }
95
+ });
83
96
  });
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useWindowSize", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _useWindowSize.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useDynamicPosition", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _useDynamicPosition.default;
16
+ }
17
+ });
18
+
19
+ var _useWindowSize = _interopRequireDefault(require("./useWindowSize"));
20
+
21
+ var _useDynamicPosition = _interopRequireDefault(require("./useDynamicPosition"));
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,107 @@
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 _throttle = _interopRequireDefault(require("lodash/throttle"));
11
+
12
+ var _useWindowSize = _interopRequireDefault(require("./useWindowSize"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ var verticalPositions = ['top', 'bottom'];
17
+ var horizontalPositions = ['left', 'right'];
18
+
19
+ var findCompatiblePositions = (primary, secondaryArray) => {
20
+ if (verticalPositions.includes(primary)) {
21
+ return secondaryArray.filter(secondary => horizontalPositions.includes(secondary));
22
+ }
23
+
24
+ if (horizontalPositions.includes(primary)) {
25
+ return secondaryArray.filter(secondary => verticalPositions.includes(secondary));
26
+ }
27
+
28
+ return [];
29
+ };
30
+
31
+ var useDynamicPosition = _ref => {
32
+ var {
33
+ elementRef,
34
+ parentRef,
35
+ preferredPrimaryOrder,
36
+ preferredSecondaryOrder,
37
+ // offsetYPx,
38
+ offsetXPx,
39
+ throttleMs = 200
40
+ } = _ref;
41
+ var isClient = typeof window === 'object';
42
+ var {
43
+ height: currentHeight,
44
+ width: currentWidth
45
+ } = (0, _useWindowSize.default)();
46
+ var [primaryPosition, setPrimaryPosition] = (0, _react.useState)(preferredPrimaryOrder[0]);
47
+ var compatibleSecondaryPositions = (0, _react.useMemo)(() => findCompatiblePositions(primaryPosition, preferredSecondaryOrder), [primaryPosition, preferredSecondaryOrder]);
48
+ var [secondaryPosition, setSecondaryPosition] = (0, _react.useState)(compatibleSecondaryPositions[0]);
49
+ var handle = (0, _react.useCallback)((0, _throttle.default)(() => {
50
+ var parentNode = parentRef === null || parentRef === void 0 ? void 0 : parentRef.current;
51
+ var elementNode = elementRef === null || elementRef === void 0 ? void 0 : elementRef.current;
52
+ var {
53
+ top: parentTop,
54
+ bottom: parentBottom,
55
+ right: parentRight,
56
+ left: parentLeft
57
+ } = (parentNode === null || parentNode === void 0 ? void 0 : parentNode.getBoundingClientRect()) || {};
58
+ var {
59
+ width: elementWidth,
60
+ height: elementHeight
61
+ } = (elementNode === null || elementNode === void 0 ? void 0 : elementNode.getBoundingClientRect()) || {};
62
+ var availablePositions = {
63
+ top: parentTop >= elementHeight,
64
+ bottom: currentHeight - parentBottom >= elementHeight,
65
+ right: parentRight >= elementWidth,
66
+ left: currentWidth - parentLeft >= elementWidth
67
+ };
68
+
69
+ for (var i = 0; i < preferredPrimaryOrder.length; i += 1) {
70
+ var position = preferredPrimaryOrder[i];
71
+
72
+ if (availablePositions[position]) {
73
+ setPrimaryPosition(position);
74
+ break;
75
+ }
76
+ }
77
+
78
+ for (var _i = 0; _i < compatibleSecondaryPositions.length; _i += 1) {
79
+ var _position = compatibleSecondaryPositions[_i];
80
+
81
+ if (availablePositions[_position]) {
82
+ setSecondaryPosition(_position);
83
+ break;
84
+ }
85
+ }
86
+ }, throttleMs), [elementRef, offsetXPx, throttleMs]);
87
+ (0, _react.useEffect)(() => {
88
+ if (!isClient) {
89
+ return false;
90
+ }
91
+
92
+ handle();
93
+ window.addEventListener('scroll', handle);
94
+ window.addEventListener('resize', handle);
95
+ return () => {
96
+ window.removeEventListener('scroll', handle);
97
+ window.removeEventListener('resize', handle);
98
+ };
99
+ }, [handle]);
100
+ return {
101
+ primaryPosition,
102
+ secondaryPosition
103
+ };
104
+ };
105
+
106
+ var _default = useDynamicPosition;
107
+ exports.default = _default;
@@ -0,0 +1,39 @@
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 useWindowSize = function useWindowSize() {
15
+ var debounceMs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 700;
16
+ var isClient = typeof window === 'object';
17
+
18
+ var getSize = () => ({
19
+ width: isClient ? window.innerWidth : undefined,
20
+ height: isClient ? window.innerHeight : undefined
21
+ });
22
+
23
+ var [windowSize, setWindowSize] = (0, _react.useState)(getSize);
24
+ var handle = (0, _react.useCallback)((0, _debounce.default)(() => {
25
+ setWindowSize(getSize());
26
+ }, debounceMs));
27
+ (0, _react.useEffect)(() => {
28
+ if (!isClient) {
29
+ return false;
30
+ }
31
+
32
+ window.addEventListener('resize', handle);
33
+ return () => window.removeEventListener('resize', handle);
34
+ }, [getSize, handle, isClient]);
35
+ return windowSize;
36
+ };
37
+
38
+ var _default = useWindowSize;
39
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useWindowSize", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _hooks.useWindowSize;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useDynamicPosition", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _hooks.useDynamicPosition;
16
+ }
17
+ });
18
+
19
+ var _hooks = require("./hooks");
@@ -0,0 +1,55 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useLayoutEffect } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import styleNames from '@pareto-engineering/bem'; // Local Definitions
6
+
7
+ const baseClassName = styleNames.base;
8
+ const componentClassName = 'background-gradient';
9
+ /**
10
+ * This is the component description.
11
+ */
12
+
13
+ const BackgroundGradient = ({
14
+ id,
15
+ className: userClassName,
16
+ style,
17
+ height // ...otherProps
18
+
19
+ }) => {
20
+ useLayoutEffect(() => {
21
+ import("./styles.scss");
22
+ }, []);
23
+ return /*#__PURE__*/React.createElement("div", {
24
+ id: id,
25
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
26
+ style: { ...style,
27
+ '--gradient-height': height
28
+ }
29
+ });
30
+ };
31
+
32
+ BackgroundGradient.propTypes = {
33
+ /**
34
+ * The HTML id for this element
35
+ */
36
+ id: PropTypes.string,
37
+
38
+ /**
39
+ * The HTML class names for this element
40
+ */
41
+ className: PropTypes.string,
42
+
43
+ /**
44
+ * The React-written, css properties for this element.
45
+ */
46
+ style: PropTypes.objectOf(PropTypes.string),
47
+
48
+ /**
49
+ * The height of the shape.
50
+ */
51
+ height: PropTypes.string
52
+ };
53
+ BackgroundGradient.defaultProps = {// someProp: false,
54
+ };
55
+ export default BackgroundGradient;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as BackgroundGradient } from "./BackgroundGradient";
@@ -0,0 +1,16 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ @use "@pareto-engineering/bem";
3
+
4
+ .#{bem.$base}.background-gradient{
5
+ position: absolute;
6
+ top: 0;
7
+ left: 0;
8
+ width: 100%;
9
+ height: var(--gradient-height);
10
+ background-image: linear-gradient(var(--background1), var(--y) 25%, var(--light-y) 75%, var(--background1));
11
+ opacity: .4;
12
+ z-index: -1;
13
+ }
14
+
15
+
16
+
@@ -0,0 +1,67 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useLayoutEffect } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import styleNames from '@pareto-engineering/bem'; // Local Definitions
6
+
7
+ import { Tree, useContentTree } from "./common";
8
+ const baseClassName = styleNames.base;
9
+ const componentClassName = 'content-tree';
10
+ /**
11
+ * This is the component description.
12
+ */
13
+
14
+ const ContentTree = ({
15
+ id,
16
+ className: userClassName,
17
+ style,
18
+ target,
19
+ selectors // ...otherProps
20
+
21
+ }) => {
22
+ useLayoutEffect(() => {
23
+ import("./styles.scss");
24
+ }, []);
25
+ const contentTree = useContentTree(target, selectors);
26
+ return /*#__PURE__*/React.createElement("div", {
27
+ id: id,
28
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
29
+ style: style // {...otherProps}
30
+
31
+ }, /*#__PURE__*/React.createElement(Tree, {
32
+ tree: contentTree
33
+ }));
34
+ };
35
+
36
+ ContentTree.propTypes = {
37
+ /**
38
+ * The HTML id for this element
39
+ */
40
+ id: PropTypes.string,
41
+
42
+ /**
43
+ * The HTML class names for this element
44
+ */
45
+ className: PropTypes.string,
46
+
47
+ /**
48
+ * The React-written, css properties for this element.
49
+ */
50
+ style: PropTypes.objectOf(PropTypes.string),
51
+
52
+ /**
53
+ * The selectors to use to extract the navigation tree from the content.
54
+ */
55
+ selectors: PropTypes.arrayOf(PropTypes.string),
56
+
57
+ /**
58
+ * The reference to the parent element.
59
+ */
60
+ target: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
61
+ current: PropTypes.instanceOf(Element)
62
+ })])
63
+ };
64
+ ContentTree.defaultProps = {
65
+ selectors: ['h2', 'h3']
66
+ };
67
+ export default ContentTree;
@@ -0,0 +1,98 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useState, useEffect, useMemo } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import styleNames from '@pareto-engineering/bem'; // Local Definitions
6
+
7
+ import useFirstVisibleNode from "../useFirstVisibleNode";
8
+ const baseClassName = styleNames.base;
9
+ const componentClassName = 'tree';
10
+ /**
11
+ * This is the component description.
12
+ */
13
+
14
+ const Tree = ({
15
+ id,
16
+ className: userClassName,
17
+ style,
18
+ tree,
19
+ displayDepth // ...otherProps
20
+
21
+ }) => {
22
+ // The nodeIds to be used to get the first visible node
23
+ const [nodeIds, setNodeIds] = useState([]); // current visible nodeId
24
+
25
+ const visibleNodeId = useFirstVisibleNode(nodeIds);
26
+ useEffect(() => {
27
+ const node = document.getElementsByClassName(visibleNodeId)[0];
28
+ node === null || node === void 0 ? void 0 : node.classList.add(styleNames.modifierActive);
29
+ return () => {
30
+ node === null || node === void 0 ? void 0 : node.classList.remove(styleNames.modifierActive);
31
+ };
32
+ }, [visibleNodeId]); // Generate the tree structure from the content tree data depending on the display depth
33
+
34
+ const getNestedTree = (node, depth) => {
35
+ setNodeIds(prev => [...prev, node.id]);
36
+
37
+ if (depth <= 1) {
38
+ return /*#__PURE__*/React.createElement("li", {
39
+ key: node.id
40
+ }, /*#__PURE__*/React.createElement("a", {
41
+ className: node.id,
42
+ href: node.id
43
+ }, node.text));
44
+ }
45
+
46
+ return /*#__PURE__*/React.createElement("li", {
47
+ key: node.id
48
+ }, /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("a", {
49
+ href: node.id,
50
+ className: node.id
51
+ }, node.text)), node.children.length > 0 && /*#__PURE__*/React.createElement("ul", null, node.children.map(child => getNestedTree(child, depth - 1))));
52
+ };
53
+
54
+ const ContentTree = useMemo(() => tree.map(node => getNestedTree(node, displayDepth)), [tree]);
55
+ return /*#__PURE__*/React.createElement("ul", {
56
+ id: id,
57
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
58
+ style: style
59
+ }, ContentTree);
60
+ };
61
+
62
+ Tree.propTypes = {
63
+ /**
64
+ * The HTML id for this element
65
+ */
66
+ id: PropTypes.string,
67
+
68
+ /**
69
+ * The HTML class names for this element
70
+ */
71
+ className: PropTypes.string,
72
+
73
+ /**
74
+ * The React-written, css properties for this element.
75
+ */
76
+ style: PropTypes.objectOf(PropTypes.string),
77
+
78
+ /**
79
+ * The tree to render.
80
+ */
81
+ tree: PropTypes.arrayOf(PropTypes.shape({
82
+ text: PropTypes.string,
83
+ id: PropTypes.string,
84
+ children: PropTypes.arrayOf(PropTypes.shape({
85
+ text: PropTypes.string,
86
+ id: PropTypes.string
87
+ }))
88
+ })),
89
+
90
+ /**
91
+ * The levels of the tree to display.
92
+ */
93
+ displayDepth: PropTypes.number
94
+ };
95
+ Tree.defaultProps = {
96
+ displayDepth: 4
97
+ };
98
+ export default Tree;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as Tree } from "./Tree";
@@ -0,0 +1,3 @@
1
+ export { default as useContentTree } from "./useContentTree";
2
+ export { default as useFirstVisibleNode } from "./useFirstVisibleNode";
3
+ export { Tree } from "./Tree";
@@ -0,0 +1,74 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+
3
+ const useContentTree = (target, selectors) => {
4
+ const [contentTree, setContentTree] = useState([]);
5
+ const getNodes = useCallback(parentTag => {
6
+ const nodeList = parentTag.querySelectorAll(selectors.join(', '));
7
+ const nodes = [];
8
+ nodeList.forEach(nodeNode => {
9
+ const {
10
+ id,
11
+ innerText,
12
+ tagName
13
+ } = nodeNode;
14
+ nodes.push({
15
+ id: `#${id}`,
16
+ text: innerText,
17
+ level: selectors.indexOf(tagName.toLowerCase())
18
+ });
19
+ });
20
+ return nodes;
21
+ }, [selectors]);
22
+ const buildTree = useCallback(nodes => {
23
+ // Track the nodes we've seen so far in the same level
24
+ const currentSameLevelNodes = []; // Track nodes of the next level which will be children of the current node
25
+
26
+ let nextLevelNodes = []; // Track the current node level
27
+
28
+ let lastLevel = -1; // If the nodes are empty, return an empty tree
29
+
30
+ if (nodes.length === 0) {
31
+ return [];
32
+ }
33
+
34
+ const buildSubTree = () => {
35
+ if (nextLevelNodes.length > 0) {
36
+ currentSameLevelNodes[currentSameLevelNodes.length - 1].children.push(...buildTree(nextLevelNodes));
37
+ }
38
+ };
39
+
40
+ nodes.forEach(node => {
41
+ // If the node is of a greater level, we need to build the sub tree
42
+ if (lastLevel !== -1 && lastLevel < node.level) {
43
+ nextLevelNodes.push(node);
44
+ return;
45
+ } // build a subtree
46
+
47
+
48
+ buildSubTree(); // reset the next level nodes
49
+
50
+ lastLevel = node.level; // add the current node to the current level nodes
51
+
52
+ currentSameLevelNodes.push({
53
+ id: node.id,
54
+ text: node.text,
55
+ children: []
56
+ }); // reset the next level nodes after building the subtree
57
+
58
+ nextLevelNodes = [];
59
+ }); // build subtree
60
+
61
+ buildSubTree();
62
+ return currentSameLevelNodes;
63
+ }, []);
64
+ useEffect(() => {
65
+ if (target.current) {
66
+ const nodes = getNodes(target.current);
67
+ const tree = buildTree(nodes);
68
+ setContentTree(tree);
69
+ }
70
+ }, [target.current]);
71
+ return contentTree;
72
+ };
73
+
74
+ export default useContentTree;