@veracity/vui 0.3.2 → 0.5.0

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 (209) hide show
  1. package/avatar/avatar.js +1 -1
  2. package/button/button.d.ts +15 -1
  3. package/button/button.js +3 -3
  4. package/button/button.types.d.ts +4 -4
  5. package/button/consts.js +2 -2
  6. package/button/theme.d.ts +2 -0
  7. package/button/theme.js +3 -2
  8. package/buttonGroup/buttonGroup.d.ts +1 -1
  9. package/buttonGroup/buttonGroup.js +1 -1
  10. package/buttonGroup/helpers.js +3 -1
  11. package/checkbox/checkbox.d.ts +1 -1
  12. package/core/consts.d.ts +7 -0
  13. package/core/consts.js +8 -1
  14. package/core/index.d.ts +1 -0
  15. package/core/index.js +1 -0
  16. package/core/links.d.ts +20 -0
  17. package/core/links.js +173 -0
  18. package/dialog/consts.d.ts +3 -0
  19. package/dialog/consts.js +30 -0
  20. package/dialog/context.d.ts +4 -0
  21. package/dialog/context.js +23 -0
  22. package/dialog/dialog.d.ts +26 -0
  23. package/dialog/dialog.js +122 -0
  24. package/dialog/dialog.types.d.ts +47 -0
  25. package/dialog/dialogBody.d.ts +9 -0
  26. package/dialog/dialogBody.js +85 -0
  27. package/dialog/dialogCancelButton.d.ts +4 -0
  28. package/dialog/dialogCancelButton.js +30 -0
  29. package/dialog/dialogCloseButton.d.ts +4 -0
  30. package/dialog/dialogCloseButton.js +30 -0
  31. package/dialog/dialogFooter.d.ts +4 -0
  32. package/dialog/dialogFooter.js +45 -0
  33. package/dialog/dialogHeader.d.ts +4 -0
  34. package/dialog/dialogHeader.js +53 -0
  35. package/dialog/dialogIcon.d.ts +4 -0
  36. package/dialog/dialogIcon.js +32 -0
  37. package/dialog/dialogSubmitButton.d.ts +4 -0
  38. package/dialog/dialogSubmitButton.js +28 -0
  39. package/dialog/dialogTitle.d.ts +4 -0
  40. package/dialog/dialogTitle.js +30 -0
  41. package/dialog/index.d.ts +13 -0
  42. package/dialog/index.js +30 -0
  43. package/dialog/theme.d.ts +22 -0
  44. package/dialog/theme.js +28 -0
  45. package/footer/context.d.ts +4 -0
  46. package/footer/context.js +23 -0
  47. package/footer/footer.d.ts +2 -0
  48. package/footer/footer.js +11 -29
  49. package/footer/footer.types.d.ts +19 -16
  50. package/footer/footerColumn.d.ts +2 -218
  51. package/footer/footerColumn.js +16 -2
  52. package/footer/footerContent.d.ts +3 -0
  53. package/footer/footerContent.js +28 -0
  54. package/footer/footerHeading.js +2 -1
  55. package/footer/footerLink.js +2 -1
  56. package/footer/footerRow.js +2 -1
  57. package/footer/footerSection.js +4 -3
  58. package/footer/footerTrademark.d.ts +3 -5
  59. package/footer/footerTrademark.js +23 -6
  60. package/footer/helpers.d.ts +7 -10
  61. package/footer/helpers.js +91 -33
  62. package/footer/index.d.ts +1 -1
  63. package/footer/index.js +1 -1
  64. package/footer/theme.js +1 -1
  65. package/grid/grid.d.ts +5 -0
  66. package/{header/headerLink.js → grid/grid.js} +17 -13
  67. package/grid/grid.types.d.ts +3 -0
  68. package/grid/grid.types.js +2 -0
  69. package/grid/index.d.ts +3 -0
  70. package/grid/index.js +20 -0
  71. package/grid/theme.d.ts +7 -0
  72. package/grid/theme.js +12 -0
  73. package/header/context.d.ts +2 -2
  74. package/header/context.js +3 -3
  75. package/header/header.d.ts +11 -10
  76. package/header/header.js +36 -21
  77. package/header/header.types.d.ts +54 -39
  78. package/header/headerAccount.d.ts +8 -0
  79. package/header/{headerProfile.js → headerAccount.js} +32 -45
  80. package/header/headerAccount.types.d.ts +35 -0
  81. package/header/headerAccount.types.js +2 -0
  82. package/header/headerAccountUserInfo.d.ts +4 -0
  83. package/header/headerAccountUserInfo.js +46 -0
  84. package/header/headerContent.d.ts +2 -3
  85. package/header/headerContent.js +3 -3
  86. package/header/headerCreateAccount.js +8 -5
  87. package/header/headerDivider.js +2 -2
  88. package/header/headerLinkItem.d.ts +4 -0
  89. package/header/headerLinkItem.js +53 -0
  90. package/header/headerLogo.js +8 -10
  91. package/header/headerMainLinks.d.ts +4 -0
  92. package/header/{headerLinks.js → headerMainLinks.js} +10 -7
  93. package/header/headerMobileContent.js +4 -3
  94. package/header/headerMobileToggle.d.ts +2 -2
  95. package/header/headerMobileToggle.js +6 -7
  96. package/header/headerNotifications.js +8 -8
  97. package/header/headerServices.d.ts +5 -1
  98. package/header/headerServices.js +23 -14
  99. package/header/headerServicesMessage.d.ts +4 -0
  100. package/header/headerServicesMessage.js +49 -0
  101. package/header/headerSignIn.js +5 -3
  102. package/header/helpers.d.ts +8 -0
  103. package/header/helpers.js +115 -0
  104. package/header/index.d.ts +8 -3
  105. package/header/index.js +8 -3
  106. package/header/loggedInHeader.d.ts +1 -1
  107. package/header/loggedInHeader.js +16 -12
  108. package/header/loggedOutHeader.js +15 -12
  109. package/header/theme.d.ts +62 -7
  110. package/header/theme.js +53 -12
  111. package/icons/baseIcons/fas/fasCalendarAlt.js +1 -1
  112. package/index.d.ts +4 -0
  113. package/index.js +4 -0
  114. package/input/consts.js +2 -2
  115. package/input/input.js +1 -1
  116. package/input/input.types.d.ts +3 -3
  117. package/link/link.types.d.ts +4 -4
  118. package/link/linkText.js +1 -1
  119. package/list/listHeading.js +1 -1
  120. package/list/listItem.js +2 -2
  121. package/list/theme.d.ts +2 -4
  122. package/list/theme.js +2 -4
  123. package/menu/menuItem.js +7 -22
  124. package/menu/menuList.js +1 -1
  125. package/modal/ModalBackdrop.d.ts +4 -0
  126. package/modal/ModalBackdrop.js +37 -0
  127. package/modal/ModalContent.d.ts +4 -0
  128. package/modal/ModalContent.js +38 -0
  129. package/modal/context.d.ts +4 -0
  130. package/modal/context.js +23 -0
  131. package/modal/focusLock.d.ts +9 -0
  132. package/modal/focusLock.js +47 -0
  133. package/modal/focusLock.types.d.ts +28 -0
  134. package/modal/focusLock.types.js +2 -0
  135. package/modal/index.d.ts +9 -0
  136. package/modal/index.js +26 -0
  137. package/modal/modal.d.ts +15 -0
  138. package/modal/modal.js +113 -0
  139. package/modal/modal.types.d.ts +46 -0
  140. package/modal/modal.types.js +2 -0
  141. package/modal/modalManager.d.ts +12 -0
  142. package/modal/modalManager.js +33 -0
  143. package/modal/theme.d.ts +8 -0
  144. package/modal/theme.js +14 -0
  145. package/notification/consts.js +2 -2
  146. package/notification/notification.types.d.ts +1 -2
  147. package/notification/theme.js +1 -1
  148. package/package.json +3 -1
  149. package/popover/popover.d.ts +1 -1
  150. package/popover/popover.js +5 -4
  151. package/popover/popoverContent.js +1 -1
  152. package/popover/popoverTrigger.js +7 -2
  153. package/popover/usePopover.js +7 -9
  154. package/popover/usePopover.types.d.ts +1 -1
  155. package/portal/index.d.ts +3 -0
  156. package/portal/index.js +20 -0
  157. package/portal/portal.d.ts +5 -0
  158. package/portal/portal.js +56 -0
  159. package/portal/portal.types.d.ts +7 -0
  160. package/portal/portal.types.js +2 -0
  161. package/radio/radio.d.ts +1 -1
  162. package/radio/radioGroup.js +1 -1
  163. package/svg/svg.js +9 -7
  164. package/svg/svg.types.d.ts +2 -2
  165. package/system/custom.d.ts +0 -4
  166. package/system/custom.js +1 -15
  167. package/system/effects.d.ts +4 -4
  168. package/system/grids.d.ts +5 -3
  169. package/system/system.d.ts +2 -2
  170. package/system/system.js +1 -1
  171. package/system/transitions.d.ts +1 -1
  172. package/tag/tag.js +1 -2
  173. package/tag/tag.types.d.ts +3 -4
  174. package/tag/theme.d.ts +1 -0
  175. package/tag/theme.js +2 -1
  176. package/textarea/textarea.js +2 -2
  177. package/theme/components.d.ts +101 -11
  178. package/theme/components.js +48 -42
  179. package/theme/defaultTheme.d.ts +130 -12
  180. package/theme/foundations/gridTemplateColumns.d.ts +15 -0
  181. package/theme/foundations/gridTemplateColumns.js +16 -0
  182. package/theme/foundations/gridTemplateRows.d.ts +9 -0
  183. package/theme/foundations/gridTemplateRows.js +10 -0
  184. package/theme/foundations/index.d.ts +29 -1
  185. package/theme/foundations/index.js +6 -0
  186. package/theme/foundations/timingFunctions.d.ts +2 -0
  187. package/theme/foundations/timingFunctions.js +3 -0
  188. package/theme/foundations/zIndices.d.ts +6 -1
  189. package/theme/foundations/zIndices.js +6 -1
  190. package/theme/types.d.ts +9 -1
  191. package/utils/assertion.d.ts +2 -0
  192. package/utils/assertion.js +6 -1
  193. package/utils/function.d.ts +4 -0
  194. package/utils/function.js +19 -1
  195. package/utils/index.d.ts +1 -0
  196. package/utils/index.js +1 -0
  197. package/utils/number.d.ts +2 -0
  198. package/utils/number.js +10 -0
  199. package/utils/object.js +9 -17
  200. package/utils/react.d.ts +12 -5
  201. package/utils/react.js +69 -9
  202. package/utils/types.d.ts +4 -2
  203. package/footer/consts.d.ts +0 -72
  204. package/footer/consts.js +0 -132
  205. package/header/headerLink.d.ts +0 -4
  206. package/header/headerLinks.d.ts +0 -4
  207. package/header/headerProfile.d.ts +0 -4
  208. package/header/headerProfile.types.d.ts +0 -35
  209. /package/{header/headerProfile.types.js → dialog/dialog.types.js} +0 -0
@@ -1,84 +1,99 @@
1
- import { Dispatch, SetStateAction } from 'react';
1
+ import { Dispatch, RefObject, SetStateAction } from 'react';
2
2
  import { BoxProps } from '../box';
3
3
  import { ButtonProps } from '../button';
4
+ import { LinksDict } from '../core';
4
5
  import { IconProp } from '../icon';
5
6
  import { ListItemProps, ListProps } from '../list';
6
7
  import { MenuProps } from '../menu';
7
8
  import { SystemProps } from '../system';
8
9
  import { ThemingProps } from '../theme';
9
- import { AnyElement, RenderProps } from '../utils';
10
- import { HeaderProfileData } from './headerProfile.types';
11
- export declare type HeaderContext = {
10
+ import { HeaderAccountData } from './headerAccount.types';
11
+ export declare type HeaderContentProps = BoxProps;
12
+ export declare type HeaderContext = Pick<HeaderProps, 'headerHeight'> & {
12
13
  isDesktop: boolean;
13
14
  isMobile: boolean;
14
15
  isMobileOpen: boolean;
16
+ links: LinksDict;
17
+ mobileContentRef: RefObject<HTMLElement | null>;
18
+ mobileToggleRef: RefObject<HTMLElement | null>;
15
19
  setIsMobileOpen: Dispatch<SetStateAction<boolean>>;
16
20
  };
17
- /** Defines create account link URL. */
18
21
  export declare type HeaderCreateAccountData = {
22
+ /** Provides URL to create account link. */
19
23
  url?: string;
20
24
  };
21
25
  export declare type HeaderCreateAccountProps = BoxProps & HeaderCreateAccountData;
22
- /** Defines link information. */
23
26
  export declare type HeaderLinkData = {
27
+ /** Displays and icon on the left side of the link. */
24
28
  icon?: IconProp;
29
+ /** Unique name that identifies a link in the links dictionary. */
30
+ id?: string;
31
+ /** Adds styling for currently active link. */
32
+ isActive?: boolean;
33
+ /** Provides text content to the list item. */
25
34
  text?: string;
35
+ /** Provides href attribute to the internal link element. */
26
36
  url?: string;
27
37
  };
28
- export declare type HeaderLinkProps = ListItemProps & HeaderLinkData;
29
- export declare type HeaderLinksProps = ListProps & {
30
- /** Array of objects with data for each link. */
31
- links?: HeaderLinkData[];
32
- };
33
- /** Defines src to load the logo from and link's URL. */
38
+ export declare type HeaderLinkItemProps = ListItemProps & HeaderLinkData;
34
39
  export declare type HeaderLogoData = {
40
+ /** Loads logo svg from the given source. */
35
41
  src?: string;
42
+ /** Renders logo wrapper as a link with given url as href. */
36
43
  url?: string;
37
44
  };
38
45
  export declare type HeaderLogoProps = BoxProps & HeaderLogoData;
39
- /** Defines notifications count and icon link URL. */
46
+ export declare type HeaderMainLinksProps = ListProps & {
47
+ /** Array of objects with data for each link. */
48
+ links?: HeaderLinkData[];
49
+ };
40
50
  export declare type HeaderNotificationsData = {
51
+ /** Displays a badge with given number of notifications. */
41
52
  count?: number;
53
+ /** Provides href to the icon link. */
42
54
  url?: string;
43
55
  };
44
- export declare type HeaderNotificationsProps = ThemingProps<'Header'> & Omit<ButtonProps, 'size' | 'variant'> & HeaderNotificationsData;
56
+ export declare type HeaderNotificationsProps = ButtonProps & HeaderNotificationsData;
45
57
  export declare type HeaderProps = SystemProps & ThemingProps<'Header'> & {
46
- /** Exposes render props to the children. */
47
- children?: HeaderRenderProps;
58
+ /** Sets the height of the Header and is used by internal parts for positioning and sizing. */
59
+ headerHeight?: number;
48
60
  };
49
- export declare type HeaderRenderProps = RenderProps<HeaderContext>;
50
- export declare type HeaderServicesProps = MenuProps & {
61
+ export declare type HeaderServicesData = {
62
+ /** Array of objects with data for each service link. */
63
+ links?: HeaderLinkData[];
64
+ };
65
+ export declare type HeaderServicesProps = MenuProps & HeaderServicesData & {
51
66
  /** Props object passed to the MenuButton component. */
52
67
  buttonProps?: ButtonProps;
68
+ /** Children are disabled for this component. */
69
+ children?: never;
53
70
  /** Props object passed to the MenuList component. */
54
71
  listProps?: ListProps;
55
- /** Array of objects with data for each service link. */
56
- services?: HeaderLinkData[];
57
72
  };
58
- /** Defines URL of the sign in button. */
59
73
  export declare type HeaderSignInData = {
74
+ /** Provides href to the button link. */
60
75
  url?: string;
61
76
  };
62
77
  export declare type HeaderSignInProps = ButtonProps & HeaderSignInData;
63
78
  export declare type LoggedInHeaderProps = HeaderProps & {
64
- /** Socket placing links in the middle. */
65
- links?: HeaderLinkData[] | AnyElement;
66
- /** Socket placing logo on the left side. */
67
- logo?: HeaderLogoData | AnyElement;
68
- /** Socket placing notifications icon on the right side. */
69
- notifications?: HeaderNotificationsData | AnyElement;
70
- /** Socket placing profile popover icon on the right side. */
71
- profile?: HeaderProfileData | AnyElement;
72
- /** Socket placing services menu icon on the right side. */
73
- services?: HeaderLinkData[] | AnyElement;
79
+ /** Socket for account popover icon on the right side. */
80
+ account?: HeaderAccountData | JSX.Element;
81
+ /** Socket for logo on the left side. */
82
+ logo?: HeaderLogoData | JSX.Element;
83
+ /** Socket for main links in the middle-right. */
84
+ mainLinks?: HeaderLinkData[] | JSX.Element;
85
+ /** Socket for notifications icon on the right side. */
86
+ notifications?: HeaderNotificationsData | JSX.Element;
87
+ /** Socket for services menu icon on the right side. */
88
+ services?: HeaderServicesData | JSX.Element;
74
89
  };
75
90
  export declare type LoggedOutHeaderProps = HeaderProps & {
76
- /** Socket placing create account prompt on the right side. */
77
- createAccount?: string | AnyElement;
78
- /** Socket placing links in the middle. */
79
- links?: HeaderLinkData[] | AnyElement;
80
- /** Socket placing logo on the left side. */
81
- logo?: HeaderLogoData | AnyElement;
82
- /** Socket placing sign in button on the right side. */
83
- signIn?: HeaderSignInData['url'] | AnyElement;
91
+ /** Socket for create account prompt on the right side. */
92
+ createAccount?: HeaderCreateAccountData | JSX.Element;
93
+ /** Socket for logo on the left side. */
94
+ logo?: HeaderLogoData | JSX.Element;
95
+ /** Socket for links in the middle-right section. */
96
+ mainLinks?: HeaderLinkData[] | JSX.Element;
97
+ /** Socket for sign in button on the right side. */
98
+ signIn?: HeaderSignInData | JSX.Element;
84
99
  };
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { HeaderAccountProps } from './headerAccount.types';
3
+ /** Displays user account information and helpful links, like settings or logout. */
4
+ export declare function HeaderAccount(props: HeaderAccountProps): JSX.Element;
5
+ export declare namespace HeaderAccount {
6
+ var displayName: string;
7
+ }
8
+ export default HeaderAccount;
@@ -40,62 +40,49 @@ var __rest = (this && this.__rest) || function (s, e) {
40
40
  }
41
41
  return t;
42
42
  };
43
- var __read = (this && this.__read) || function (o, n) {
44
- var m = typeof Symbol === "function" && o[Symbol.iterator];
45
- if (!m) return o;
46
- var i = m.call(o), r, ar = [], e;
47
- try {
48
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
49
- }
50
- catch (error) { e = { error: error }; }
51
- finally {
52
- try {
53
- if (r && !r.done && (m = i["return"])) m.call(i);
54
- }
55
- finally { if (e) throw e.error; }
56
- }
57
- return ar;
58
- };
59
43
  var __importDefault = (this && this.__importDefault) || function (mod) {
60
44
  return (mod && mod.__esModule) ? mod : { "default": mod };
61
45
  };
62
46
  Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.HeaderAccount = void 0;
63
48
  var react_1 = __importStar(require("react"));
64
49
  var avatar_1 = __importDefault(require("../avatar"));
65
- var box_1 = __importDefault(require("../box"));
66
50
  var core_1 = require("../core");
67
51
  var list_1 = __importDefault(require("../list"));
68
52
  var popover_1 = __importDefault(require("../popover"));
69
- var t_1 = __importDefault(require("../t"));
70
53
  var utils_1 = require("../utils");
71
54
  var context_1 = require("./context");
72
- function UserInfo(_a) {
73
- var companyName = _a.companyName, userName = _a.userName;
74
- return (react_1.default.createElement(box_1.default, { p: 2, spaceX: 2 },
75
- react_1.default.createElement(avatar_1.default, { colorScheme: "prussian", name: userName, size: "lg", variant: "solid" }),
76
- react_1.default.createElement(box_1.default, { column: true },
77
- userName && (react_1.default.createElement(t_1.default, { mb: 0.5, weight: "demi" }, userName)),
78
- companyName && react_1.default.createElement(t_1.default, null, companyName))));
79
- }
80
- /** Displays user profile information and helpful links, like settings or logout. */
81
- function HeaderProfile(props) {
82
- var children = props.children, contentProps = props.contentProps, sections = props.sections, triggerProps = props.triggerProps, userInfo = props.userInfo, rest = __rest(props, ["children", "contentProps", "sections", "triggerProps", "userInfo"]);
83
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)()).profile;
55
+ var headerAccountUserInfo_1 = __importDefault(require("./headerAccountUserInfo"));
56
+ /** Disables popper's dynamic re-positioning */
57
+ var mobilePopoverOptions = { popperOptions: { modifiers: [{ name: 'computeStyles', enabled: false }] } };
58
+ /** Displays user account information and helpful links, like settings or logout. */
59
+ function HeaderAccount(props) {
60
+ var contentProps = props.contentProps, _a = props.options, options = _a === void 0 ? {} : _a, sections = props.sections, triggerProps = props.triggerProps, userInfo = props.userInfo, rest = __rest(props, ["contentProps", "options", "sections", "triggerProps", "userInfo"]);
61
+ var _b = (0, context_1.useHeaderContext)(), headerHeight = _b.headerHeight, isMobile = _b.isMobile;
62
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)()).account;
63
+ // Render content in full view on mobile
64
+ var popoverOptions = isMobile ? (0, utils_1.merge)(options, mobilePopoverOptions) : options;
65
+ var contentScreenProps = isMobile
66
+ ? { h: "calc(100vh - " + headerHeight + "px)", left: 0, position: 'fixed', top: headerHeight, w: '100vw' }
67
+ : { maxH: 360, py: 1, w: 320 };
84
68
  var name = (0, utils_1.isObject)(userInfo) ? userInfo.userName : '';
85
- return (react_1.default.createElement(popover_1.default, __assign({ placement: "bottom-end" }, rest),
86
- react_1.default.createElement(popover_1.default.Trigger, __assign({ as: avatar_1.default, colorScheme: "prussian", isInteractive: true, name: name, variant: "solid" }, styles.trigger, triggerProps)),
87
- react_1.default.createElement(popover_1.default.Content, __assign({ column: true, py: 1 }, styles.content, contentProps),
88
- (0, utils_1.isObject)(userInfo) ? react_1.default.createElement(UserInfo, __assign({}, userInfo)) : userInfo,
89
- (0, utils_1.isObject)(sections)
90
- ? Object.entries(sections).map(function (_a) {
91
- var _b = __read(_a, 2), key = _b[0], _c = _b[1], heading = _c.heading, links = _c.links;
92
- return (react_1.default.createElement(react_1.Fragment, { key: key },
69
+ return (react_1.default.createElement(popover_1.default, __assign({ offset: [0, 8], options: popoverOptions, placement: "bottom-end" }, rest),
70
+ react_1.default.createElement(popover_1.default.Trigger, __assign({ as: avatar_1.default, colorScheme: "prussian", isInteractive: true, ml: 2, name: name, title: "Account", variant: "solid" }, styles.trigger, triggerProps)),
71
+ react_1.default.createElement(popover_1.default.Content, __assign({ column: true }, styles.content, contentScreenProps, contentProps),
72
+ (0, utils_1.isJsx)(userInfo) ? userInfo : userInfo && react_1.default.createElement(headerAccountUserInfo_1.default, __assign({}, userInfo)),
73
+ (0, utils_1.isJsx)(sections)
74
+ ? sections
75
+ : sections && (react_1.default.createElement(list_1.default, null, sections.map(function (_a, index) {
76
+ var heading = _a.heading, links = _a.links;
77
+ return (react_1.default.createElement(react_1.Fragment, { key: index },
93
78
  react_1.default.createElement(list_1.default.Divider, null),
94
- react_1.default.createElement(list_1.default, { heading: heading }, links === null || links === void 0 ? void 0 : links.map(function (_a, index) {
95
- var icon = _a.icon, text = _a.text, url = _a.url;
96
- return (react_1.default.createElement(list_1.default.Item, { iconLeft: icon, key: index, linkProps: { href: url }, text: text }));
97
- }))));
98
- })
99
- : sections)));
79
+ heading && react_1.default.createElement(list_1.default.Heading, { text: heading }), links === null || links === void 0 ? void 0 :
80
+ links.map(function (_a, index) {
81
+ var icon = _a.icon, url = _a.url, rest = __rest(_a, ["icon", "url"]);
82
+ return (react_1.default.createElement(list_1.default.Item, __assign({ iconLeft: icon, key: index, linkProps: { href: url } }, rest)));
83
+ })));
84
+ }))))));
100
85
  }
101
- exports.default = HeaderProfile;
86
+ exports.HeaderAccount = HeaderAccount;
87
+ HeaderAccount.displayName = 'HeaderAccount';
88
+ exports.default = HeaderAccount;
@@ -0,0 +1,35 @@
1
+ /// <reference types="react" />
2
+ import { AvatarProps } from '../avatar';
3
+ import { BoxProps } from '../box';
4
+ import { PopoverContentProps, PopoverProps, PopoverTriggerProps } from '../popover';
5
+ import { RightJoinProps } from '../utils';
6
+ import { HeaderLinkData } from './header.types';
7
+ /** Defines account link sections and user information. */
8
+ export declare type HeaderAccountData = {
9
+ sections?: HeaderAccountSectionData[];
10
+ userInfo?: HeaderAccountUserInfoData;
11
+ };
12
+ export declare type HeaderAccountProps = PopoverProps & {
13
+ /** Children are disabled for this component. */
14
+ children?: never;
15
+ /** Props object passed to the PopoverContent component. */
16
+ contentProps?: PopoverContentProps;
17
+ /** Socket for a set of link sections below user information. */
18
+ sections?: HeaderAccountData['sections'] | JSX.Element;
19
+ /** Props object passed to the PopoverTrigger component. */
20
+ triggerProps?: RightJoinProps<PopoverTriggerProps, AvatarProps>;
21
+ /** Socket for user information on top of the account popover. */
22
+ userInfo?: HeaderAccountData['userInfo'] | JSX.Element;
23
+ };
24
+ /** Defines heading and an array of links within one section. */
25
+ export declare type HeaderAccountSectionData = {
26
+ heading?: string;
27
+ links?: HeaderLinkData[];
28
+ };
29
+ export declare type HeaderAccountUserInfoData = {
30
+ /** Displays company name in account user info section. */
31
+ companyName?: string;
32
+ /** Displays user name in account user info section. */
33
+ userName?: string;
34
+ };
35
+ export declare type HeaderAccountUserInfoProps = BoxProps & HeaderAccountUserInfoData;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { HeaderAccountUserInfoProps } from './headerAccount.types';
2
+ /** Displays user information, like username and company name, within HeaderAccount part. */
3
+ export declare const HeaderAccountUserInfo: import("../core").VuiComponent<"div", HeaderAccountUserInfoProps>;
4
+ export default HeaderAccountUserInfo;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.HeaderAccountUserInfo = void 0;
29
+ var react_1 = __importDefault(require("react"));
30
+ var avatar_1 = __importDefault(require("../avatar"));
31
+ var box_1 = __importDefault(require("../box"));
32
+ var core_1 = require("../core");
33
+ var t_1 = __importDefault(require("../t"));
34
+ var context_1 = require("./context");
35
+ /** Displays user information, like username and company name, within HeaderAccount part. */
36
+ exports.HeaderAccountUserInfo = (0, core_1.vui)(function (props, ref) {
37
+ var children = props.children, companyName = props.companyName, userName = props.userName, rest = __rest(props, ["children", "companyName", "userName"]);
38
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)());
39
+ return (react_1.default.createElement(box_1.default, __assign({ className: "vui-headerAccountUserInfo", p: 2, pb: 1, ref: ref, spaceX: 2 }, styles.accountUserInfo, rest), children !== null && children !== void 0 ? children : (react_1.default.createElement(react_1.default.Fragment, null,
40
+ react_1.default.createElement(avatar_1.default, { colorScheme: "prussian", name: userName, size: "lg", variant: "solid" }),
41
+ react_1.default.createElement(box_1.default, { column: true },
42
+ userName && (react_1.default.createElement(t_1.default, { mb: 0.5, weight: "demi" }, userName)),
43
+ companyName && react_1.default.createElement(t_1.default, null, companyName))))));
44
+ });
45
+ exports.HeaderAccountUserInfo.displayName = 'HeaderAccountUserInfo';
46
+ exports.default = exports.HeaderAccountUserInfo;
@@ -1,4 +1,3 @@
1
- import { BoxProps } from '../box';
2
- /** Controls max-width of the content and centers itself vertically. */
3
- export declare const HeaderContent: import("../core").VuiComponent<"div", BoxProps>;
1
+ /** Controls max-width of the content and centers itself horizontally. */
2
+ export declare const HeaderContent: import("../core").VuiComponent<"div", import("../box").BoxProps>;
4
3
  export default HeaderContent;
@@ -19,10 +19,10 @@ var react_1 = __importDefault(require("react"));
19
19
  var box_1 = __importDefault(require("../box"));
20
20
  var core_1 = require("../core");
21
21
  var context_1 = require("./context");
22
- /** Controls max-width of the content and centers itself vertically. */
22
+ /** Controls max-width of the content and centers itself horizontally. */
23
23
  exports.HeaderContent = (0, core_1.vui)(function (props, ref) {
24
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
25
- return (react_1.default.createElement(box_1.default, __assign({ centerV: true, className: "vui-headerContent", h: "100%", maxW: 1440, mx: "auto", ref: ref, w: "100%" }, styles.content, props)));
24
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)());
25
+ return react_1.default.createElement(box_1.default, __assign({ centerV: true, className: "vui-headerContent", h: 1, mx: "auto", ref: ref, w: 1 }, styles.content, props));
26
26
  });
27
27
  exports.HeaderContent.displayName = 'HeaderContent';
28
28
  exports.default = exports.HeaderContent;
@@ -34,11 +34,14 @@ var t_1 = __importDefault(require("../t"));
34
34
  var context_1 = require("./context");
35
35
  /** Text inviting to create an account when logged out. */
36
36
  exports.HeaderCreateAccount = (0, core_1.vui)(function (props, ref) {
37
- var url = props.url, rest = __rest(props, ["url"]);
38
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
39
- return (react_1.default.createElement(box_1.default, __assign({ className: "vui-headerCreateAccount", column: true, flexShrink: 0, ref: ref }, styles.createAccount, rest),
40
- react_1.default.createElement(t_1.default, { size: "sm" }, "New to Veracity?"),
41
- react_1.default.createElement(link_1.default, { fontWeight: "medium", href: url, isUnderlined: true, size: "sm" }, "Create account")));
37
+ var _a;
38
+ var children = props.children, url = props.url, rest = __rest(props, ["children", "url"]);
39
+ var _b = (_a = (0, context_1.useHeaderContext)()) !== null && _a !== void 0 ? _a : {}, isMobile = _b.isMobile, links = _b.links;
40
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)()).createAccount;
41
+ var screenProps = isMobile ? { borderBottom: '1px solid grey.40', p: 2 } : { ml: 3 };
42
+ return (react_1.default.createElement(box_1.default, __assign({ className: "vui-headerCreateAccount", column: true, flexShrink: 0, ref: ref }, styles.container, screenProps, rest), children !== null && children !== void 0 ? children : (react_1.default.createElement(react_1.default.Fragment, null,
43
+ react_1.default.createElement(t_1.default, __assign({ size: "sm" }, styles.text), "New to Veracity?"),
44
+ react_1.default.createElement(link_1.default, __assign({ fontWeight: "medium", href: url !== null && url !== void 0 ? url : links.signUp, isUnderlined: true, size: "sm" }, styles.link), "Create account")))));
42
45
  });
43
46
  exports.HeaderCreateAccount.displayName = 'HeaderCreateAccount';
44
47
  exports.default = exports.HeaderCreateAccount;
@@ -21,8 +21,8 @@ var divider_1 = __importDefault(require("../divider"));
21
21
  var context_1 = require("./context");
22
22
  /** Vertical line dividing some of the Header content. */
23
23
  exports.HeaderDivider = (0, core_1.vui)(function (props, ref) {
24
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
25
- return (react_1.default.createElement(divider_1.default, __assign({ borderColor: "prussian.80", className: "vui-headerDivider", isVertical: true, mx: 1, ref: ref }, styles.divider, props)));
24
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)());
25
+ return (react_1.default.createElement(divider_1.default, __assign({ borderColor: "prussian.80", className: "vui-headerDivider", h: 40, isVertical: true, ref: ref }, styles.divider, props)));
26
26
  });
27
27
  exports.HeaderDivider.displayName = 'HeaderDivider';
28
28
  exports.default = exports.HeaderDivider;
@@ -0,0 +1,4 @@
1
+ import { HeaderLinkItemProps } from './header.types';
2
+ /** Individual link item of the Header. */
3
+ export declare const HeaderLinkItem: import("../core").VuiComponent<"li", HeaderLinkItemProps>;
4
+ export default HeaderLinkItem;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.HeaderLinkItem = void 0;
29
+ var react_1 = __importDefault(require("react"));
30
+ var core_1 = require("../core");
31
+ var list_1 = __importDefault(require("../list"));
32
+ var utils_1 = require("../utils");
33
+ var context_1 = require("./context");
34
+ /** Individual link item of the Header. */
35
+ exports.HeaderLinkItem = (0, core_1.vui)(function (props, ref) {
36
+ var _a;
37
+ var className = props.className, icon = props.icon, isActive = props.isActive, linkProps = props.linkProps, onClickProp = props.onClick, url = props.url, rest = __rest(props, ["className", "icon", "isActive", "linkProps", "onClick", "url"]);
38
+ var _b = (_a = (0, context_1.useHeaderContext)()) !== null && _a !== void 0 ? _a : {}, isMobile = _b.isMobile, setIsMobileOpen = _b.setIsMobileOpen;
39
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)()).linkItem;
40
+ var onClick = (0, utils_1.useCallbackRef)(function (e) {
41
+ setIsMobileOpen(false);
42
+ onClickProp === null || onClickProp === void 0 ? void 0 : onClickProp(e);
43
+ });
44
+ var linkActiveProps = isActive
45
+ ? isMobile
46
+ ? { bg: 'blue.10', borderLeftWidth: 6, hoverBg: 'blue.20', pl: '10px' }
47
+ : { borderBottomWidth: 4, pt: '4px' }
48
+ : {};
49
+ var itemScreenProps = isMobile ? {} : { display: 'inline-flex', fontWeight: 'medium', h: '100%' };
50
+ return (react_1.default.createElement(list_1.default.Item, __assign({ className: (0, utils_1.cs)('vui-headerLinkItem', className), iconLeft: icon, linkProps: __assign(__assign(__assign(__assign({}, linkActiveProps), { borderColor: 'prussian.80', href: url, ringInset: true, transition: 'all 0.1s, border-width 0s, padding 0s', w: { xs: '100%', md: 'max-content' } }), styles.link), linkProps), onClick: onClick, ref: ref }, itemScreenProps, styles.container, rest)));
51
+ });
52
+ exports.HeaderLinkItem.displayName = 'HeaderLinkItem';
53
+ exports.default = exports.HeaderLinkItem;
@@ -30,19 +30,17 @@ var react_1 = __importDefault(require("react"));
30
30
  var box_1 = __importDefault(require("../box"));
31
31
  var core_1 = require("../core");
32
32
  var svg_1 = __importDefault(require("../svg"));
33
- var utils_1 = require("../utils");
34
33
  var context_1 = require("./context");
35
- var defaultLogo = core_1.cdnUrl + "/common/icons/logos/veracity-by-dnv.svg";
34
+ var defaultLogo = core_1.cdnUrl + "/common/icons/logos/veracity-logo.svg";
36
35
  /** Logo displayed in the left corner of the Header. By default Veracity logo is used. */
37
36
  exports.HeaderLogo = (0, core_1.vui)(function (props, ref) {
38
- var _a = props.src, src = _a === void 0 ? defaultLogo : _a, url = props.url, rest = __rest(props, ["src", "url"]);
39
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
40
- var aliasedProps = (0, utils_1.filterUndefined)({
41
- as: url ? 'a' : undefined,
42
- href: url ? url : undefined
43
- });
44
- return (react_1.default.createElement(box_1.default, __assign({ className: "vui-headerLogo", maxH: 72, mr: 2, ref: ref }, styles.logo, aliasedProps, rest),
45
- react_1.default.createElement(svg_1.default, { src: src })));
37
+ var _a;
38
+ var children = props.children, _b = props.src, src = _b === void 0 ? defaultLogo : _b, url = props.url, rest = __rest(props, ["children", "src", "url"]);
39
+ var links = ((_a = (0, context_1.useHeaderContext)()) !== null && _a !== void 0 ? _a : {}).links;
40
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)()).logo;
41
+ var logoUrl = url !== null && url !== void 0 ? url : links.home;
42
+ var linkProps = logoUrl ? { as: 'a', href: logoUrl, outline: 'none', focusRing: 2 } : {};
43
+ return (react_1.default.createElement(box_1.default, __assign({ centerV: true, className: "vui-headerLogo", flexShrink: 0, h: 40, mr: 2, ref: ref }, styles.container, linkProps, rest), children !== null && children !== void 0 ? children : react_1.default.createElement(svg_1.default, __assign({ "aria-label": "logo", h: "100%", src: src }, styles.svg))));
46
44
  });
47
45
  exports.HeaderLogo.displayName = 'HeaderLogo';
48
46
  exports.default = exports.HeaderLogo;
@@ -0,0 +1,4 @@
1
+ import { HeaderMainLinksProps } from './header.types';
2
+ /** List of Header Links. */
3
+ export declare const HeaderMainLinks: import("../core").VuiComponent<"ul", HeaderMainLinksProps>;
4
+ export default HeaderMainLinks;
@@ -25,17 +25,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  return (mod && mod.__esModule) ? mod : { "default": mod };
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.HeaderLinks = void 0;
28
+ exports.HeaderMainLinks = void 0;
29
29
  var react_1 = __importDefault(require("react"));
30
30
  var core_1 = require("../core");
31
31
  var list_1 = __importDefault(require("../list"));
32
32
  var context_1 = require("./context");
33
- var headerLink_1 = __importDefault(require("./headerLink"));
33
+ var headerLinkItem_1 = __importDefault(require("./headerLinkItem"));
34
34
  /** List of Header Links. */
35
- exports.HeaderLinks = (0, core_1.vui)(function (props, ref) {
35
+ exports.HeaderMainLinks = (0, core_1.vui)(function (props, ref) {
36
+ var _a;
36
37
  var children = props.children, links = props.links, rest = __rest(props, ["children", "links"]);
37
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
38
- return (react_1.default.createElement(list_1.default, __assign({ className: "vui-headerLinks", ref: ref }, styles.links, rest), children !== null && children !== void 0 ? children : links === null || links === void 0 ? void 0 : links.map(function (link, index) { return react_1.default.createElement(headerLink_1.default, __assign({ key: index }, link)); })));
38
+ var isMobile = ((_a = (0, context_1.useHeaderContext)()) !== null && _a !== void 0 ? _a : {}).isMobile;
39
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)());
40
+ var screenStyles = isMobile ? { borderBottom: '1px solid grey.40', flexDirection: 'column', mb: 1 } : { h: '100%' };
41
+ return (react_1.default.createElement(list_1.default, __assign({ className: "vui-headerMainLinks", display: "flex", ref: ref }, styles.mainLinks, screenStyles, rest), children !== null && children !== void 0 ? children : links === null || links === void 0 ? void 0 : links.map(function (link, index) { return react_1.default.createElement(headerLinkItem_1.default, __assign({ key: index }, link)); })));
39
42
  });
40
- exports.HeaderLinks.displayName = 'HeaderLinks';
41
- exports.default = exports.HeaderLinks;
43
+ exports.HeaderMainLinks.displayName = 'HeaderMainLinks';
44
+ exports.default = exports.HeaderMainLinks;
@@ -18,13 +18,14 @@ exports.HeaderMobileContent = void 0;
18
18
  var react_1 = __importDefault(require("react"));
19
19
  var box_1 = __importDefault(require("../box"));
20
20
  var core_1 = require("../core");
21
+ var utils_1 = require("../utils");
21
22
  var context_1 = require("./context");
22
23
  /** Displays some of the Header content when on a mobile screen. */
23
24
  exports.HeaderMobileContent = (0, core_1.vui)(function (props, ref) {
24
25
  var _a;
25
- var isMobileOpen = ((_a = (0, context_1.useHeader)()) !== null && _a !== void 0 ? _a : {}).isMobileOpen;
26
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
27
- return isMobileOpen ? (react_1.default.createElement(box_1.default, __assign({ bg: "white", className: "vui-headerMobileContent", column: true, position: "absolute", ref: ref, top: "100%", zIndex: "100" }, styles.mobileContent, props))) : null;
26
+ var _b = (_a = (0, context_1.useHeaderContext)()) !== null && _a !== void 0 ? _a : {}, isMobileOpen = _b.isMobileOpen, mobileContentRef = _b.mobileContentRef;
27
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)());
28
+ return isMobileOpen ? (react_1.default.createElement(box_1.default, __assign({ bg: "white", className: "vui-headerMobileContent", column: true, h: "calc(100vh - 100% - 1px)", left: 0, overflowX: "hidden", overflowY: "auto", position: "absolute", ref: (0, utils_1.mergeRefs)(ref, mobileContentRef), right: 0, top: "calc(100% + 1px)", zIndex: "100" }, styles.mobileContent, props))) : null;
28
29
  });
29
30
  exports.HeaderMobileContent.displayName = 'HeaderMobileContent';
30
31
  exports.default = exports.HeaderMobileContent;
@@ -1,4 +1,4 @@
1
- import { IconProps } from '../icon';
1
+ import { ButtonProps } from '../button';
2
2
  /** Button that toggles display of the mobile content. */
3
- export declare const HeaderMobileToggle: import("../core").VuiComponent<"svg", IconProps>;
3
+ export declare const HeaderMobileToggle: import("../core").VuiComponent<"button", ButtonProps>;
4
4
  export default HeaderMobileToggle;
@@ -16,19 +16,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.HeaderMobileToggle = void 0;
18
18
  var react_1 = __importDefault(require("react"));
19
+ var button_1 = require("../button");
19
20
  var core_1 = require("../core");
20
21
  var icon_1 = __importDefault(require("../icon"));
22
+ var utils_1 = require("../utils");
21
23
  var context_1 = require("./context");
22
24
  /** Button that toggles display of the mobile content. */
23
25
  exports.HeaderMobileToggle = (0, core_1.vui)(function (props, ref) {
24
26
  var _a;
25
- var _b = (_a = (0, context_1.useHeader)()) !== null && _a !== void 0 ? _a : {}, isMobileOpen = _b.isMobileOpen, setIsMobileOpen = _b.setIsMobileOpen;
26
- var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeader)());
27
- var icon = isMobileOpen ? 'falTimes' : 'falBars';
28
- function onClick() {
29
- setIsMobileOpen(function (s) { return !s; });
30
- }
31
- return (react_1.default.createElement(icon_1.default, __assign({ className: "vui-headerMobileToggle", cursor: "pointer", name: icon, onClick: onClick, ref: ref, scale: 2 }, styles.mobileToggle, props)));
27
+ var _b = (_a = (0, context_1.useHeaderContext)()) !== null && _a !== void 0 ? _a : {}, isMobileOpen = _b.isMobileOpen, mobileToggleRef = _b.mobileToggleRef, setIsMobileOpen = _b.setIsMobileOpen;
28
+ var styles = (0, core_1.useStyleConfig)('Header', (0, context_1.useHeaderContext)());
29
+ var iconName = isMobileOpen ? 'falTimes' : 'falBars';
30
+ return (react_1.default.createElement(button_1.IconButton, __assign({ className: "vui-headerMobileToggle", colorScheme: "prussian", icon: react_1.default.createElement(icon_1.default, { name: iconName, scale: 2 }), ml: 2, onClick: function () { return setIsMobileOpen(function (s) { return !s; }); }, p: "3px", ref: (0, utils_1.mergeRefs)(ref, mobileToggleRef) }, styles.mobileToggle, props)));
32
31
  });
33
32
  exports.HeaderMobileToggle.displayName = 'HeaderMobileToggle';
34
33
  exports.default = exports.HeaderMobileToggle;