venice-ui 1.0.34 → 1.0.36

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 (41) hide show
  1. package/dist/cjs/Theme/Theme.js +1 -0
  2. package/dist/cjs/components/ElementSubMenu/ElementSubMenu.js +50 -0
  3. package/dist/cjs/components/{More/More.styles.js → ElementSubMenu/ElementSubMenu.styles.js} +2 -2
  4. package/dist/cjs/components/ElementSubMenu/index.js +17 -0
  5. package/dist/cjs/components/Icons/Icon.styles.js +1 -1
  6. package/dist/cjs/components/Icons/IconsPath.js +1 -0
  7. package/dist/cjs/components/More/More.js +7 -43
  8. package/dist/cjs/components/Typography/Typography.styles.js +16 -1
  9. package/dist/cjs/components/Typography/index.js +15 -6
  10. package/dist/cjs/components/UserMenu/UserMenu.js +22 -0
  11. package/dist/cjs/components/UserMenu/UserMenu.styles.js +21 -0
  12. package/dist/cjs/components/UserMenu/index.js +17 -0
  13. package/dist/cjs/index.js +3 -0
  14. package/dist/esm/Theme/Theme.js +1 -0
  15. package/dist/esm/components/ElementSubMenu/ElementSubMenu.js +23 -0
  16. package/dist/esm/components/{More/More.styles.js → ElementSubMenu/ElementSubMenu.styles.js} +1 -1
  17. package/dist/esm/components/ElementSubMenu/index.js +1 -0
  18. package/dist/esm/components/Icons/Icon.styles.js +1 -1
  19. package/dist/esm/components/Icons/IconsPath.js +1 -0
  20. package/dist/esm/components/More/More.js +6 -22
  21. package/dist/esm/components/Typography/Typography.styles.js +15 -0
  22. package/dist/esm/components/Typography/index.js +1 -1
  23. package/dist/esm/components/UserMenu/UserMenu.js +15 -0
  24. package/dist/esm/components/UserMenu/UserMenu.styles.js +15 -0
  25. package/dist/esm/components/UserMenu/index.js +1 -0
  26. package/dist/esm/index.js +3 -0
  27. package/dist/types/Theme/Theme.d.ts +1 -0
  28. package/dist/types/components/ElementSubMenu/ElementSubMenu.d.ts +11 -0
  29. package/dist/types/components/ElementSubMenu/ElementSubMenu.styles.d.ts +1 -0
  30. package/dist/types/components/ElementSubMenu/index.d.ts +1 -0
  31. package/dist/types/components/Icons/IconsPath.d.ts +1 -0
  32. package/dist/types/components/Input/Input.styles.d.ts +1 -1
  33. package/dist/types/components/Loader/Loader.d.ts +1 -1
  34. package/dist/types/components/Typography/Typography.styles.d.ts +10 -4
  35. package/dist/types/components/Typography/index.d.ts +1 -1
  36. package/dist/types/components/UserMenu/UserMenu.d.ts +11 -0
  37. package/dist/types/components/UserMenu/UserMenu.styles.d.ts +3 -0
  38. package/dist/types/components/UserMenu/index.d.ts +1 -0
  39. package/dist/types/index.d.ts +3 -0
  40. package/package.json +1 -1
  41. package/dist/types/components/More/More.styles.d.ts +0 -1
@@ -10,6 +10,7 @@ exports.Theme = {
10
10
  white: "#ffffff",
11
11
  black: "#333333",
12
12
  gray_1: "#b7b7b7",
13
+ gray_2: "#e3e3e3",
13
14
  overlayer: 'rgba(0,0,0,0.4)',
14
15
  red: '#ad1616'
15
16
  },
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ElementSubMenu = void 0;
27
+ const common_1 = require("../common");
28
+ const react_1 = __importStar(require("react"));
29
+ const Theme_1 = require("../../Theme");
30
+ const Icons_1 = require("../Icons");
31
+ const ElementSubMenu_styles_1 = require("./ElementSubMenu.styles");
32
+ const ElementSubMenu = ({ size = 'medium', iconName = 'more_vert', color = Theme_1.Theme.colors.primary, bgColor = false, children }) => {
33
+ const [open, toogleOpen] = (0, react_1.useState)(false);
34
+ const ref = (0, react_1.useRef)(null);
35
+ (0, react_1.useEffect)(() => {
36
+ const handleClickOutside = (event) => {
37
+ if (ref.current && !ref.current.contains(event.target)) {
38
+ toogleOpen(false);
39
+ }
40
+ };
41
+ document.addEventListener('click', handleClickOutside, true);
42
+ return () => {
43
+ document.removeEventListener('click', handleClickOutside, true);
44
+ };
45
+ }, [open]);
46
+ return (react_1.default.createElement(ElementSubMenu_styles_1.SubMenuElement, null,
47
+ react_1.default.createElement(Icons_1.Icon, { name: iconName, onClick: () => toogleOpen(!open), color: color, bgColor: bgColor, size: (0, common_1.setIconSize)(size), active: open }),
48
+ open && (react_1.default.createElement(common_1.Panel, { ref: ref, size: size, position: "right" }, children))));
49
+ };
50
+ exports.ElementSubMenu = ElementSubMenu;
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MoreElement = void 0;
6
+ exports.SubMenuElement = void 0;
7
7
  const styled_components_1 = __importDefault(require("styled-components"));
8
- exports.MoreElement = styled_components_1.default.div `
8
+ exports.SubMenuElement = styled_components_1.default.div `
9
9
  position:relative;
10
10
  width:auto;
11
11
  display: flex;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ElementSubMenu"), exports);
@@ -12,7 +12,7 @@ exports.IconElement = styled_components_1.default.div `
12
12
  box-sizing: border-box;
13
13
  width:auto;
14
14
  display:inline-flex;
15
- border-radius: ${Theme_1.Theme.borderRadius.s};
15
+ border-radius: 50%;
16
16
  ${p => p.onClick !== undefined &&
17
17
  `
18
18
  padding: ${Theme_1.Theme.padding.s};
@@ -22,4 +22,5 @@ exports.iconsPath = {
22
22
  download: "M6 20q-.825 0-1.412-.587Q4 18.825 4 18v-3h2v3h12v-3h2v3q0 .825-.587 1.413Q18.825 20 18 20Zm6-4-5-5 1.4-1.45 2.6 2.6V4h2v8.15l2.6-2.6L17 11Z",
23
23
  delete: "M7 21q-.825 0-1.412-.587Q5 19.825 5 19V6H4V4h5V3h6v1h5v2h-1v13q0 .825-.587 1.413Q17.825 21 17 21ZM17 6H7v13h10ZM9 17h2V8H9Zm4 0h2V8h-2ZM7 6v13Z",
24
24
  close: "M6.4 19 5 17.6l5.6-5.6L5 6.4 6.4 5l5.6 5.6L17.6 5 19 6.4 13.4 12l5.6 5.6-1.4 1.4-5.6-5.6Z",
25
+ person: "M12 12q-1.65 0-2.825-1.175Q8 9.65 8 8q0-1.65 1.175-2.825Q10.35 4 12 4q1.65 0 2.825 1.175Q16 6.35 16 8q0 1.65-1.175 2.825Q13.65 12 12 12Zm-8 8v-2.8q0-.85.438-1.563.437-.712 1.162-1.087 1.55-.775 3.15-1.163Q10.35 13 12 13t3.25.387q1.6.388 3.15 1.163.725.375 1.162 1.087Q20 16.35 20 17.2V20Zm2-2h12v-.8q0-.275-.137-.5-.138-.225-.363-.35-1.35-.675-2.725-1.013Q13.4 15 12 15t-2.775.337Q7.85 15.675 6.5 16.35q-.225.125-.362.35-.138.225-.138.5Zm6-8q.825 0 1.413-.588Q14 8.825 14 8t-.587-1.412Q12.825 6 12 6q-.825 0-1.412.588Q10 7.175 10 8t.588 1.412Q11.175 10 12 10Zm0-2Zm0 10Z"
25
26
  };
@@ -1,51 +1,15 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
6
  exports.More = void 0;
27
7
  const common_1 = require("../common");
28
- const react_1 = __importStar(require("react"));
29
- const Theme_1 = require("../../Theme");
30
- const Icons_1 = require("../Icons");
31
- const More_styles_1 = require("./More.styles");
8
+ const react_1 = __importDefault(require("react"));
9
+ const ElementSubMenu_1 = require("../ElementSubMenu");
32
10
  const More = ({ options, size = 'medium', iconName = 'more_vert', }) => {
33
- const [open, toogleOpen] = (0, react_1.useState)(false);
34
- const ref = (0, react_1.useRef)(null);
35
- (0, react_1.useEffect)(() => {
36
- const handleClickOutside = (event) => {
37
- if (ref.current && !ref.current.contains(event.target)) {
38
- toogleOpen(false);
39
- }
40
- };
41
- document.addEventListener('click', handleClickOutside, true);
42
- return () => {
43
- document.removeEventListener('click', handleClickOutside, true);
44
- };
45
- }, [open]);
46
- return (react_1.default.createElement(More_styles_1.MoreElement, null,
47
- react_1.default.createElement(Icons_1.Icon, { name: iconName, onClick: () => toogleOpen(!open), color: Theme_1.Theme.colors.primary, size: (0, common_1.setIconSize)(size), active: open }),
48
- open && (react_1.default.createElement(common_1.Panel, { ref: ref, size: size, position: "right" }, options &&
49
- options.map((option) => (react_1.default.createElement(common_1.PanelOption, { key: option.label, onClick: option.action, active: true }, option.label)))))));
11
+ return (react_1.default.createElement(ElementSubMenu_1.ElementSubMenu, { size: size, iconName: iconName },
12
+ react_1.default.createElement(react_1.default.Fragment, null, options &&
13
+ options.map((option) => (react_1.default.createElement(common_1.PanelOption, { key: option.label, onClick: option.action, active: true }, option.label))))));
50
14
  };
51
15
  exports.More = More;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TextLabel = exports.TextSubHeader = exports.TextHeader = exports.TextSmall = exports.Text = void 0;
6
+ exports.TextLabel = exports.TextAccent = exports.TextSubHeader = exports.TextHeader = exports.TextSmall = exports.Text = void 0;
7
7
  const common_1 = require("../common");
8
8
  const styled_components_1 = __importDefault(require("styled-components"));
9
9
  const Theme_1 = require("../../Theme/Theme");
@@ -11,21 +11,36 @@ exports.Text = styled_components_1.default.div `
11
11
  font-size: ${Theme_1.Theme.fontSize.m};
12
12
  line-height: ${Theme_1.Theme.lineHeight.m};
13
13
  font-weight: normal;
14
+ color: ${(p) => (p.color ? p.color : Theme_1.Theme.colors.text)};
15
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
14
16
  `;
15
17
  exports.TextSmall = styled_components_1.default.div `
16
18
  font-size: ${Theme_1.Theme.fontSize.s};
17
19
  line-height: ${Theme_1.Theme.lineHeight.s};
18
20
  font-weight: normal;
21
+ color: ${(p) => (p.color ? p.color : Theme_1.Theme.colors.text)};
22
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
19
23
  `;
20
24
  exports.TextHeader = styled_components_1.default.div `
21
25
  font-size: ${Theme_1.Theme.fontSize.l};
22
26
  line-height: ${Theme_1.Theme.lineHeight.l};
23
27
  font-weight: 300;
28
+ color: ${(p) => (p.color ? p.color : Theme_1.Theme.colors.text)};
29
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
24
30
  `;
25
31
  exports.TextSubHeader = styled_components_1.default.div `
26
32
  font-size: ${Theme_1.Theme.fontSize.m};
27
33
  line-height: ${Theme_1.Theme.lineHeight.m};
28
34
  font-weight: 300;
35
+ color: ${(p) => (p.color ? p.color : Theme_1.Theme.colors.text)};
36
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
37
+ `;
38
+ exports.TextAccent = styled_components_1.default.div `
39
+ font-size: ${Theme_1.Theme.fontSize.xs};
40
+ line-height: ${Theme_1.Theme.lineHeight.xs};
41
+ text-transform:uppercase;
42
+ color: ${(p) => (p.color ? p.color : Theme_1.Theme.colors.text)};
43
+ cursor:${(p) => (p.action ? 'pointer' : 'default')};
29
44
  `;
30
45
  exports.TextLabel = styled_components_1.default.div `
31
46
  font-weight: ${(p) => (p.labelPosition === 'left' ? 'normal' : 'bold')};
@@ -1,8 +1,17 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TextLabel = exports.TextSubHeader = exports.TextHeader = exports.Text = void 0;
4
- var Typography_styles_1 = require("./Typography.styles");
5
- Object.defineProperty(exports, "Text", { enumerable: true, get: function () { return Typography_styles_1.Text; } });
6
- Object.defineProperty(exports, "TextHeader", { enumerable: true, get: function () { return Typography_styles_1.TextHeader; } });
7
- Object.defineProperty(exports, "TextSubHeader", { enumerable: true, get: function () { return Typography_styles_1.TextSubHeader; } });
8
- Object.defineProperty(exports, "TextLabel", { enumerable: true, get: function () { return Typography_styles_1.TextLabel; } });
17
+ __exportStar(require("./Typography.styles"), exports);
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UserMenu = void 0;
7
+ const Aligment_1 = require("../Aligment");
8
+ const react_1 = __importDefault(require("react"));
9
+ const Theme_1 = require("../../Theme");
10
+ const ElementSubMenu_1 = require("../ElementSubMenu");
11
+ const UserMenu_styles_1 = require("./UserMenu.styles");
12
+ const Typography_1 = require("../Typography");
13
+ const UserMenu = ({ color = Theme_1.Theme.colors.white, bgColor = true, userName, logoutAction, logoutLabel = "Logout", children }) => {
14
+ return (react_1.default.createElement(ElementSubMenu_1.ElementSubMenu, { size: "small", iconName: "person", color: color, bgColor: bgColor },
15
+ react_1.default.createElement(Aligment_1.Aligment, { hPadding: Theme_1.Theme.padding.m, direction: "column" },
16
+ react_1.default.createElement(UserMenu_styles_1.UserMenuHeader, null,
17
+ react_1.default.createElement(Typography_1.TextAccent, null, userName)),
18
+ react_1.default.createElement(UserMenu_styles_1.UserMenuContent, null, children),
19
+ react_1.default.createElement(UserMenu_styles_1.UserMenuFooter, null,
20
+ react_1.default.createElement(Typography_1.Text, { color: Theme_1.Theme.colors.red, action: true, onClick: logoutAction }, logoutLabel)))));
21
+ };
22
+ exports.UserMenu = UserMenu;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UserMenuFooter = exports.UserMenuContent = exports.UserMenuHeader = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const Theme_1 = require("../../Theme");
9
+ exports.UserMenuHeader = styled_components_1.default.div `
10
+ border-bottom: 1px solid ${Theme_1.Theme.colors.gray_2};
11
+ padding-bottom: ${Theme_1.Theme.padding.s};
12
+ width:100%;
13
+ `;
14
+ exports.UserMenuContent = styled_components_1.default.div `
15
+ padding: ${Theme_1.Theme.padding.s} 0;
16
+ width:100%;
17
+ `;
18
+ exports.UserMenuFooter = styled_components_1.default.div `
19
+ padding-top: ${Theme_1.Theme.padding.s};
20
+ width:100%;
21
+ `;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./UserMenu"), exports);
package/dist/cjs/index.js CHANGED
@@ -19,13 +19,16 @@ __exportStar(require("./components/Button"), exports);
19
19
  __exportStar(require("./components/Card"), exports);
20
20
  __exportStar(require("./components/Dropdown"), exports);
21
21
  __exportStar(require("./components/ElementHeader"), exports);
22
+ __exportStar(require("./components/ElementSubMenu"), exports);
22
23
  __exportStar(require("./components/File"), exports);
23
24
  __exportStar(require("./components/Icons"), exports);
24
25
  __exportStar(require("./components/Input"), exports);
25
26
  __exportStar(require("./components/Loader"), exports);
26
27
  __exportStar(require("./components/Modal"), exports);
28
+ __exportStar(require("./components/More"), exports);
27
29
  __exportStar(require("./components/Section"), exports);
28
30
  __exportStar(require("./components/Selector"), exports);
29
31
  __exportStar(require("./components/Sidepanel"), exports);
32
+ __exportStar(require("./components/UserMenu"), exports);
30
33
  __exportStar(require("./components/Tile"), exports);
31
34
  __exportStar(require("./components/Typography"), exports);
@@ -7,6 +7,7 @@ export const Theme = {
7
7
  white: "#ffffff",
8
8
  black: "#333333",
9
9
  gray_1: "#b7b7b7",
10
+ gray_2: "#e3e3e3",
10
11
  overlayer: 'rgba(0,0,0,0.4)',
11
12
  red: '#ad1616'
12
13
  },
@@ -0,0 +1,23 @@
1
+ import { Panel, setIconSize } from '../common';
2
+ import React, { useState, useRef, useEffect } from 'react';
3
+ import { Theme } from '../../Theme';
4
+ import { Icon } from '../Icons';
5
+ import { SubMenuElement } from './ElementSubMenu.styles';
6
+ export const ElementSubMenu = ({ size = 'medium', iconName = 'more_vert', color = Theme.colors.primary, bgColor = false, children }) => {
7
+ const [open, toogleOpen] = useState(false);
8
+ const ref = useRef(null);
9
+ useEffect(() => {
10
+ const handleClickOutside = (event) => {
11
+ if (ref.current && !ref.current.contains(event.target)) {
12
+ toogleOpen(false);
13
+ }
14
+ };
15
+ document.addEventListener('click', handleClickOutside, true);
16
+ return () => {
17
+ document.removeEventListener('click', handleClickOutside, true);
18
+ };
19
+ }, [open]);
20
+ return (React.createElement(SubMenuElement, null,
21
+ React.createElement(Icon, { name: iconName, onClick: () => toogleOpen(!open), color: color, bgColor: bgColor, size: setIconSize(size), active: open }),
22
+ open && (React.createElement(Panel, { ref: ref, size: size, position: "right" }, children))));
23
+ };
@@ -1,5 +1,5 @@
1
1
  import styled from "styled-components";
2
- export const MoreElement = styled.div `
2
+ export const SubMenuElement = styled.div `
3
3
  position:relative;
4
4
  width:auto;
5
5
  display: flex;
@@ -0,0 +1 @@
1
+ export * from './ElementSubMenu';
@@ -6,7 +6,7 @@ export const IconElement = styled.div `
6
6
  box-sizing: border-box;
7
7
  width:auto;
8
8
  display:inline-flex;
9
- border-radius: ${Theme.borderRadius.s};
9
+ border-radius: 50%;
10
10
  ${p => p.onClick !== undefined &&
11
11
  `
12
12
  padding: ${Theme.padding.s};
@@ -19,4 +19,5 @@ export const iconsPath = {
19
19
  download: "M6 20q-.825 0-1.412-.587Q4 18.825 4 18v-3h2v3h12v-3h2v3q0 .825-.587 1.413Q18.825 20 18 20Zm6-4-5-5 1.4-1.45 2.6 2.6V4h2v8.15l2.6-2.6L17 11Z",
20
20
  delete: "M7 21q-.825 0-1.412-.587Q5 19.825 5 19V6H4V4h5V3h6v1h5v2h-1v13q0 .825-.587 1.413Q17.825 21 17 21ZM17 6H7v13h10ZM9 17h2V8H9Zm4 0h2V8h-2ZM7 6v13Z",
21
21
  close: "M6.4 19 5 17.6l5.6-5.6L5 6.4 6.4 5l5.6 5.6L17.6 5 19 6.4 13.4 12l5.6 5.6-1.4 1.4-5.6-5.6Z",
22
+ person: "M12 12q-1.65 0-2.825-1.175Q8 9.65 8 8q0-1.65 1.175-2.825Q10.35 4 12 4q1.65 0 2.825 1.175Q16 6.35 16 8q0 1.65-1.175 2.825Q13.65 12 12 12Zm-8 8v-2.8q0-.85.438-1.563.437-.712 1.162-1.087 1.55-.775 3.15-1.163Q10.35 13 12 13t3.25.387q1.6.388 3.15 1.163.725.375 1.162 1.087Q20 16.35 20 17.2V20Zm2-2h12v-.8q0-.275-.137-.5-.138-.225-.363-.35-1.35-.675-2.725-1.013Q13.4 15 12 15t-2.775.337Q7.85 15.675 6.5 16.35q-.225.125-.362.35-.138.225-.138.5Zm6-8q.825 0 1.413-.588Q14 8.825 14 8t-.587-1.412Q12.825 6 12 6q-.825 0-1.412.588Q10 7.175 10 8t.588 1.412Q11.175 10 12 10Zm0-2Zm0 10Z"
22
23
  };
@@ -1,24 +1,8 @@
1
- import { Panel, PanelOption, setIconSize } from '../common';
2
- import React, { useState, useRef, useEffect } from 'react';
3
- import { Theme } from '../../Theme';
4
- import { Icon } from '../Icons';
5
- import { MoreElement } from './More.styles';
1
+ import { PanelOption } from '../common';
2
+ import React from 'react';
3
+ import { ElementSubMenu } from '../ElementSubMenu';
6
4
  export const More = ({ options, size = 'medium', iconName = 'more_vert', }) => {
7
- const [open, toogleOpen] = useState(false);
8
- const ref = useRef(null);
9
- useEffect(() => {
10
- const handleClickOutside = (event) => {
11
- if (ref.current && !ref.current.contains(event.target)) {
12
- toogleOpen(false);
13
- }
14
- };
15
- document.addEventListener('click', handleClickOutside, true);
16
- return () => {
17
- document.removeEventListener('click', handleClickOutside, true);
18
- };
19
- }, [open]);
20
- return (React.createElement(MoreElement, null,
21
- React.createElement(Icon, { name: iconName, onClick: () => toogleOpen(!open), color: Theme.colors.primary, size: setIconSize(size), active: open }),
22
- open && (React.createElement(Panel, { ref: ref, size: size, position: "right" }, options &&
23
- options.map((option) => (React.createElement(PanelOption, { key: option.label, onClick: option.action, active: true }, option.label)))))));
5
+ return (React.createElement(ElementSubMenu, { size: size, iconName: iconName },
6
+ React.createElement(React.Fragment, null, options &&
7
+ options.map((option) => (React.createElement(PanelOption, { key: option.label, onClick: option.action, active: true }, option.label))))));
24
8
  };
@@ -5,21 +5,36 @@ export const Text = styled.div `
5
5
  font-size: ${Theme.fontSize.m};
6
6
  line-height: ${Theme.lineHeight.m};
7
7
  font-weight: normal;
8
+ color: ${(p) => (p.color ? p.color : Theme.colors.text)};
9
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
8
10
  `;
9
11
  export const TextSmall = styled.div `
10
12
  font-size: ${Theme.fontSize.s};
11
13
  line-height: ${Theme.lineHeight.s};
12
14
  font-weight: normal;
15
+ color: ${(p) => (p.color ? p.color : Theme.colors.text)};
16
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
13
17
  `;
14
18
  export const TextHeader = styled.div `
15
19
  font-size: ${Theme.fontSize.l};
16
20
  line-height: ${Theme.lineHeight.l};
17
21
  font-weight: 300;
22
+ color: ${(p) => (p.color ? p.color : Theme.colors.text)};
23
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
18
24
  `;
19
25
  export const TextSubHeader = styled.div `
20
26
  font-size: ${Theme.fontSize.m};
21
27
  line-height: ${Theme.lineHeight.m};
22
28
  font-weight: 300;
29
+ color: ${(p) => (p.color ? p.color : Theme.colors.text)};
30
+ cursor: ${(p) => (p.action ? 'pointer' : 'default')};
31
+ `;
32
+ export const TextAccent = styled.div `
33
+ font-size: ${Theme.fontSize.xs};
34
+ line-height: ${Theme.lineHeight.xs};
35
+ text-transform:uppercase;
36
+ color: ${(p) => (p.color ? p.color : Theme.colors.text)};
37
+ cursor:${(p) => (p.action ? 'pointer' : 'default')};
23
38
  `;
24
39
  export const TextLabel = styled.div `
25
40
  font-weight: ${(p) => (p.labelPosition === 'left' ? 'normal' : 'bold')};
@@ -1 +1 @@
1
- export { Text, TextHeader, TextSubHeader, TextLabel } from './Typography.styles';
1
+ export * from './Typography.styles';
@@ -0,0 +1,15 @@
1
+ import { Aligment } from '../Aligment';
2
+ import React from 'react';
3
+ import { Theme } from '../../Theme';
4
+ import { ElementSubMenu } from '../ElementSubMenu';
5
+ import { UserMenuHeader, UserMenuFooter, UserMenuContent } from './UserMenu.styles';
6
+ import { TextAccent, Text } from '../Typography';
7
+ export const UserMenu = ({ color = Theme.colors.white, bgColor = true, userName, logoutAction, logoutLabel = "Logout", children }) => {
8
+ return (React.createElement(ElementSubMenu, { size: "small", iconName: "person", color: color, bgColor: bgColor },
9
+ React.createElement(Aligment, { hPadding: Theme.padding.m, direction: "column" },
10
+ React.createElement(UserMenuHeader, null,
11
+ React.createElement(TextAccent, null, userName)),
12
+ React.createElement(UserMenuContent, null, children),
13
+ React.createElement(UserMenuFooter, null,
14
+ React.createElement(Text, { color: Theme.colors.red, action: true, onClick: logoutAction }, logoutLabel)))));
15
+ };
@@ -0,0 +1,15 @@
1
+ import styled from "styled-components";
2
+ import { Theme } from "../../Theme";
3
+ export const UserMenuHeader = styled.div `
4
+ border-bottom: 1px solid ${Theme.colors.gray_2};
5
+ padding-bottom: ${Theme.padding.s};
6
+ width:100%;
7
+ `;
8
+ export const UserMenuContent = styled.div `
9
+ padding: ${Theme.padding.s} 0;
10
+ width:100%;
11
+ `;
12
+ export const UserMenuFooter = styled.div `
13
+ padding-top: ${Theme.padding.s};
14
+ width:100%;
15
+ `;
@@ -0,0 +1 @@
1
+ export * from './UserMenu';
package/dist/esm/index.js CHANGED
@@ -3,13 +3,16 @@ export * from './components/Button';
3
3
  export * from './components/Card';
4
4
  export * from './components/Dropdown';
5
5
  export * from './components/ElementHeader';
6
+ export * from './components/ElementSubMenu';
6
7
  export * from './components/File';
7
8
  export * from './components/Icons';
8
9
  export * from "./components/Input";
9
10
  export * from './components/Loader';
10
11
  export * from './components/Modal';
12
+ export * from './components/More';
11
13
  export * from './components/Section';
12
14
  export * from './components/Selector';
13
15
  export * from './components/Sidepanel';
16
+ export * from './components/UserMenu';
14
17
  export * from './components/Tile';
15
18
  export * from './components/Typography';
@@ -7,6 +7,7 @@ export declare const Theme: {
7
7
  white: string;
8
8
  black: string;
9
9
  gray_1: string;
10
+ gray_2: string;
10
11
  overlayer: string;
11
12
  red: string;
12
13
  };
@@ -0,0 +1,11 @@
1
+ import React, { FC } from 'react';
2
+ import { InputSize } from '../../types';
3
+ interface IElementSubMenuProps {
4
+ children: React.ReactNode;
5
+ size?: InputSize;
6
+ iconName?: string;
7
+ color?: string;
8
+ bgColor?: boolean;
9
+ }
10
+ export declare const ElementSubMenu: FC<IElementSubMenuProps>;
11
+ export {};
@@ -0,0 +1 @@
1
+ export declare const SubMenuElement: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1 @@
1
+ export * from './ElementSubMenu';
@@ -19,4 +19,5 @@ export declare const iconsPath: {
19
19
  download: string;
20
20
  delete: string;
21
21
  close: string;
22
+ person: string;
22
23
  };
@@ -7,7 +7,7 @@ interface IInputTextElementProps extends InputHTMLAttributes<HTMLInputElement> {
7
7
  width?: string;
8
8
  }
9
9
  export declare const InputTextElement: import("styled-components").StyledComponent<"input", any, IInputTextElementProps, never>;
10
- export declare const InputLabelElement: import("styled-components").StyledComponent<"div", any, import("../Typography/Typography.styles").ITextLabelProps, never>;
10
+ export declare const InputLabelElement: import("styled-components").StyledComponent<"div", any, import("../Typography").ITextLabelProps, never>;
11
11
  interface IInputWrapperProps {
12
12
  width?: string;
13
13
  }
@@ -2,6 +2,6 @@ import { FC } from 'react';
2
2
  import { InputSize } from '../../types';
3
3
  export interface ILoaderProps {
4
4
  color?: string;
5
- size: InputSize;
5
+ size?: InputSize;
6
6
  }
7
7
  export declare const Loader: FC<ILoaderProps>;
@@ -1,10 +1,16 @@
1
1
  import { InputSize, LabelPosition } from '../../types';
2
- export declare const Text: import("styled-components").StyledComponent<"div", any, {}, never>;
3
- export declare const TextSmall: import("styled-components").StyledComponent<"div", any, {}, never>;
4
- export declare const TextHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
5
- export declare const TextSubHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ interface ITextStyle {
3
+ color?: string;
4
+ action?: boolean;
5
+ }
6
+ export declare const Text: import("styled-components").StyledComponent<"div", any, ITextStyle, never>;
7
+ export declare const TextSmall: import("styled-components").StyledComponent<"div", any, ITextStyle, never>;
8
+ export declare const TextHeader: import("styled-components").StyledComponent<"div", any, ITextStyle, never>;
9
+ export declare const TextSubHeader: import("styled-components").StyledComponent<"div", any, ITextStyle, never>;
10
+ export declare const TextAccent: import("styled-components").StyledComponent<"div", any, ITextStyle, never>;
6
11
  export interface ITextLabelProps {
7
12
  size?: InputSize;
8
13
  labelPosition?: LabelPosition;
9
14
  }
10
15
  export declare const TextLabel: import("styled-components").StyledComponent<"div", any, ITextLabelProps, never>;
16
+ export {};
@@ -1 +1 @@
1
- export { Text, TextHeader, TextSubHeader, TextLabel } from './Typography.styles';
1
+ export * from './Typography.styles';
@@ -0,0 +1,11 @@
1
+ import React, { FC } from 'react';
2
+ interface IUserMenuProps {
3
+ color?: string;
4
+ bgColor?: boolean;
5
+ userName: string;
6
+ logoutAction: () => void;
7
+ logoutLabel: string;
8
+ children: React.ReactNode;
9
+ }
10
+ export declare const UserMenu: FC<IUserMenuProps>;
11
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare const UserMenuHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const UserMenuContent: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const UserMenuFooter: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1 @@
1
+ export * from './UserMenu';
@@ -3,13 +3,16 @@ export * from './components/Button';
3
3
  export * from './components/Card';
4
4
  export * from './components/Dropdown';
5
5
  export * from './components/ElementHeader';
6
+ export * from './components/ElementSubMenu';
6
7
  export * from './components/File';
7
8
  export * from './components/Icons';
8
9
  export * from "./components/Input";
9
10
  export * from './components/Loader';
10
11
  export * from './components/Modal';
12
+ export * from './components/More';
11
13
  export * from './components/Section';
12
14
  export * from './components/Selector';
13
15
  export * from './components/Sidepanel';
16
+ export * from './components/UserMenu';
14
17
  export * from './components/Tile';
15
18
  export * from './components/Typography';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "venice-ui",
3
- "version": "1.0.34",
3
+ "version": "1.0.36",
4
4
  "description": "Component library",
5
5
  "main": "index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -1 +0,0 @@
1
- export declare const MoreElement: import("styled-components").StyledComponent<"div", any, {}, never>;