@veracity/vui 2.7.0 → 2.8.0-rc.1

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 (153) hide show
  1. package/dist/cjs/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  2. package/dist/cjs/breadcrumbs/breadcrumbs.js +7 -3
  3. package/dist/cjs/breadcrumbs/breadcrumbs.types.d.ts +0 -3
  4. package/dist/cjs/breadcrumbs/breadcrumbs.types.d.ts.map +1 -1
  5. package/dist/cjs/breadcrumbs/breadcrumbsItem.d.ts.map +1 -1
  6. package/dist/cjs/breadcrumbs/breadcrumbsItem.js +2 -6
  7. package/dist/cjs/breadcrumbs/breadcrumbsSeparator.d.ts.map +1 -1
  8. package/dist/cjs/breadcrumbs/breadcrumbsSeparator.js +4 -1
  9. package/dist/cjs/breadcrumbs/theme.d.ts +66 -4
  10. package/dist/cjs/breadcrumbs/theme.d.ts.map +1 -1
  11. package/dist/cjs/breadcrumbs/theme.js +61 -5
  12. package/dist/cjs/footer/footer.d.ts.map +1 -1
  13. package/dist/cjs/footer/footer.js +21 -4
  14. package/dist/cjs/footer/footer.types.d.ts +3 -0
  15. package/dist/cjs/footer/footer.types.d.ts.map +1 -1
  16. package/dist/cjs/header/header.d.ts +2 -0
  17. package/dist/cjs/header/header.d.ts.map +1 -1
  18. package/dist/cjs/header/header.js +2 -0
  19. package/dist/cjs/header/header.types.d.ts +14 -0
  20. package/dist/cjs/header/header.types.d.ts.map +1 -1
  21. package/dist/cjs/header/headerAccount.d.ts +1 -0
  22. package/dist/cjs/header/headerAccount.d.ts.map +1 -1
  23. package/dist/cjs/header/headerAccount.js +4 -9
  24. package/dist/cjs/header/headerAccountUserInfo.js +2 -2
  25. package/dist/cjs/header/headerLinkItem.js +2 -2
  26. package/dist/cjs/header/headerMainLinks.d.ts.map +1 -1
  27. package/dist/cjs/header/headerMainLinks.js +0 -1
  28. package/dist/cjs/header/headerMobileContent.d.ts.map +1 -1
  29. package/dist/cjs/header/headerMobileContent.js +2 -1
  30. package/dist/cjs/header/headerServices.d.ts.map +1 -1
  31. package/dist/cjs/header/headerServices.js +5 -4
  32. package/dist/cjs/header/headerSupport.d.ts +5 -0
  33. package/dist/cjs/header/headerSupport.d.ts.map +1 -0
  34. package/dist/cjs/header/headerSupport.js +45 -0
  35. package/dist/cjs/header/loggedInHeader.d.ts.map +1 -1
  36. package/dist/cjs/header/loggedInHeader.js +51 -8
  37. package/dist/cjs/icons/baseIcons/cul/culDatasetAlt.d.ts +4 -0
  38. package/dist/cjs/icons/baseIcons/cul/culDatasetAlt.d.ts.map +1 -0
  39. package/dist/cjs/icons/baseIcons/cul/culDatasetAlt.js +8 -0
  40. package/dist/cjs/icons/baseIcons/icons.d.ts +1 -0
  41. package/dist/cjs/icons/baseIcons/icons.d.ts.map +1 -1
  42. package/dist/cjs/icons/baseIcons/icons.js +10 -8
  43. package/dist/cjs/icons/baseIcons/types.d.ts +1 -1
  44. package/dist/cjs/icons/baseIcons/types.d.ts.map +1 -1
  45. package/dist/cjs/theme/components.d.ts +109 -35
  46. package/dist/cjs/theme/components.d.ts.map +1 -1
  47. package/dist/cjs/theme/defaultTheme.d.ts +109 -35
  48. package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
  49. package/dist/cjs/tree/theme.d.ts +43 -33
  50. package/dist/cjs/tree/theme.d.ts.map +1 -1
  51. package/dist/cjs/tree/theme.js +48 -43
  52. package/dist/cjs/tree/tree.d.ts.map +1 -1
  53. package/dist/cjs/tree/tree.js +4 -2
  54. package/dist/cjs/tree/tree.types.d.ts +10 -3
  55. package/dist/cjs/tree/tree.types.d.ts.map +1 -1
  56. package/dist/cjs/tree/treeItem.d.ts +2 -2
  57. package/dist/cjs/tree/treeItem.d.ts.map +1 -1
  58. package/dist/cjs/tree/treeItem.js +64 -43
  59. package/dist/cjs/tutorial/tutorialCard.d.ts.map +1 -1
  60. package/dist/cjs/tutorial/tutorialCard.js +3 -2
  61. package/dist/cjs/utils/styles.d.ts +1 -2
  62. package/dist/cjs/utils/styles.d.ts.map +1 -1
  63. package/dist/cjs/utils/styles.js +14 -6
  64. package/dist/esm/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  65. package/dist/esm/breadcrumbs/breadcrumbs.js +7 -3
  66. package/dist/esm/breadcrumbs/breadcrumbs.types.d.ts +0 -3
  67. package/dist/esm/breadcrumbs/breadcrumbs.types.d.ts.map +1 -1
  68. package/dist/esm/breadcrumbs/breadcrumbsItem.d.ts.map +1 -1
  69. package/dist/esm/breadcrumbs/breadcrumbsItem.js +2 -6
  70. package/dist/esm/breadcrumbs/breadcrumbsSeparator.d.ts.map +1 -1
  71. package/dist/esm/breadcrumbs/breadcrumbsSeparator.js +6 -1
  72. package/dist/esm/breadcrumbs/theme.d.ts +66 -4
  73. package/dist/esm/breadcrumbs/theme.d.ts.map +1 -1
  74. package/dist/esm/breadcrumbs/theme.js +61 -5
  75. package/dist/esm/footer/footer.d.ts.map +1 -1
  76. package/dist/esm/footer/footer.js +21 -4
  77. package/dist/esm/footer/footer.types.d.ts +3 -0
  78. package/dist/esm/footer/footer.types.d.ts.map +1 -1
  79. package/dist/esm/header/header.d.ts +2 -0
  80. package/dist/esm/header/header.d.ts.map +1 -1
  81. package/dist/esm/header/header.js +2 -0
  82. package/dist/esm/header/header.types.d.ts +14 -0
  83. package/dist/esm/header/header.types.d.ts.map +1 -1
  84. package/dist/esm/header/headerAccount.d.ts +1 -0
  85. package/dist/esm/header/headerAccount.d.ts.map +1 -1
  86. package/dist/esm/header/headerAccount.js +5 -10
  87. package/dist/esm/header/headerAccountUserInfo.js +2 -2
  88. package/dist/esm/header/headerLinkItem.js +2 -2
  89. package/dist/esm/header/headerMainLinks.d.ts.map +1 -1
  90. package/dist/esm/header/headerMainLinks.js +0 -1
  91. package/dist/esm/header/headerMobileContent.d.ts.map +1 -1
  92. package/dist/esm/header/headerMobileContent.js +3 -2
  93. package/dist/esm/header/headerServices.d.ts.map +1 -1
  94. package/dist/esm/header/headerServices.js +5 -4
  95. package/dist/esm/header/headerSupport.d.ts +5 -0
  96. package/dist/esm/header/headerSupport.d.ts.map +1 -0
  97. package/dist/esm/header/headerSupport.js +27 -0
  98. package/dist/esm/header/loggedInHeader.d.ts.map +1 -1
  99. package/dist/esm/header/loggedInHeader.js +46 -9
  100. package/dist/esm/icons/baseIcons/cul/culDatasetAlt.d.ts +4 -0
  101. package/dist/esm/icons/baseIcons/cul/culDatasetAlt.d.ts.map +1 -0
  102. package/dist/esm/icons/baseIcons/cul/culDatasetAlt.js +6 -0
  103. package/dist/esm/icons/baseIcons/icons.d.ts +1 -0
  104. package/dist/esm/icons/baseIcons/icons.d.ts.map +1 -1
  105. package/dist/esm/icons/baseIcons/icons.js +1 -0
  106. package/dist/esm/icons/baseIcons/types.d.ts +1 -1
  107. package/dist/esm/icons/baseIcons/types.d.ts.map +1 -1
  108. package/dist/esm/theme/components.d.ts +109 -35
  109. package/dist/esm/theme/components.d.ts.map +1 -1
  110. package/dist/esm/theme/defaultTheme.d.ts +109 -35
  111. package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
  112. package/dist/esm/tree/theme.d.ts +43 -33
  113. package/dist/esm/tree/theme.d.ts.map +1 -1
  114. package/dist/esm/tree/theme.js +48 -43
  115. package/dist/esm/tree/tree.d.ts.map +1 -1
  116. package/dist/esm/tree/tree.js +4 -2
  117. package/dist/esm/tree/tree.types.d.ts +10 -3
  118. package/dist/esm/tree/tree.types.d.ts.map +1 -1
  119. package/dist/esm/tree/treeItem.d.ts +2 -2
  120. package/dist/esm/tree/treeItem.d.ts.map +1 -1
  121. package/dist/esm/tree/treeItem.js +63 -45
  122. package/dist/esm/tutorial/tutorialCard.d.ts.map +1 -1
  123. package/dist/esm/tutorial/tutorialCard.js +3 -2
  124. package/dist/esm/utils/styles.d.ts +1 -2
  125. package/dist/esm/utils/styles.d.ts.map +1 -1
  126. package/dist/esm/utils/styles.js +12 -4
  127. package/package.json +1 -1
  128. package/src/breadcrumbs/breadcrumbs.tsx +14 -3
  129. package/src/breadcrumbs/breadcrumbs.types.ts +0 -3
  130. package/src/breadcrumbs/breadcrumbsItem.tsx +2 -7
  131. package/src/breadcrumbs/breadcrumbsSeparator.tsx +11 -5
  132. package/src/breadcrumbs/theme.ts +61 -5
  133. package/src/footer/footer.tsx +71 -4
  134. package/src/footer/footer.types.ts +3 -0
  135. package/src/header/header.tsx +3 -0
  136. package/src/header/header.types.ts +15 -0
  137. package/src/header/headerAccount.tsx +6 -14
  138. package/src/header/headerAccountUserInfo.tsx +2 -2
  139. package/src/header/headerLinkItem.tsx +2 -2
  140. package/src/header/headerMainLinks.tsx +0 -1
  141. package/src/header/headerMobileContent.tsx +4 -3
  142. package/src/header/headerServices.tsx +12 -4
  143. package/src/header/headerSupport.tsx +76 -0
  144. package/src/header/loggedInHeader.tsx +130 -13
  145. package/src/icons/baseIcons/cul/culDatasetAlt.ts +9 -0
  146. package/src/icons/baseIcons/icons.ts +1 -0
  147. package/src/icons/baseIcons/types.ts +1 -0
  148. package/src/tree/theme.ts +50 -49
  149. package/src/tree/tree.tsx +10 -16
  150. package/src/tree/tree.types.ts +10 -3
  151. package/src/tree/treeItem.tsx +89 -61
  152. package/src/tutorial/tutorialCard.tsx +4 -2
  153. package/src/utils/styles.ts +15 -6
package/src/tree/tree.tsx CHANGED
@@ -18,24 +18,17 @@ export const TreeBase = styled.divBox`
18
18
 
19
19
  /** Displays a tree of tree link items and optional heading. Exposes some props to the children via context. */
20
20
  export const Tree = vui<'div', TreeProps>((props, ref) => {
21
- const {
22
- activeItemId,
23
- children,
24
- className,
25
- iconCollapse = 'falMinus',
26
- iconExpand = 'falPlus',
27
- items,
28
- onClickItem,
29
- size,
30
- variant,
31
- ...rest
32
- } = props
21
+ const { activeItemId, children, className, iconCollapse, iconExpand, items, onClickItem, size, variant, ...rest } =
22
+ props
33
23
  const styles = useStyleConfig('Tree', props)
34
24
 
35
25
  const { itemsInternal, setItemsInternal, activeItemIndex, setActiveItemIndex } = useTreeState(activeItemId)
36
26
 
37
27
  const context = useMemo(() => filterUndefined({ size, variant }), [size, variant])
38
28
 
29
+ const iconCollapseInternal = iconCollapse ? iconCollapse : variant === 'default' ? 'falAngleRight' : 'falMinus'
30
+ const iconExpandInternal = iconExpand ? iconExpand : variant === 'default' ? 'falAngleDown' : 'falPlus'
31
+
39
32
  const transformChildrenToItems = (children: any) => {
40
33
  const t: TreeItemProps[] = []
41
34
 
@@ -56,7 +49,7 @@ export const Tree = vui<'div', TreeProps>((props, ref) => {
56
49
  isCollapsed: child.props.isCollapsed,
57
50
  disabled: child.props.disabled,
58
51
  onClickTreeItem: onClickTreeItem
59
- })
52
+ } as unknown as TreeItemProps)
60
53
  }
61
54
  })
62
55
  }
@@ -95,10 +88,11 @@ export const Tree = vui<'div', TreeProps>((props, ref) => {
95
88
  return (
96
89
  <TreeItem
97
90
  activeItemIndex={activeItemIndex}
98
- iconCollapse={iconCollapse}
99
- iconExpand={iconExpand}
91
+ iconCollapse={iconCollapseInternal}
92
+ iconExpand={iconExpandInternal}
100
93
  id={id}
101
- isActive={activeItemIndex ? activeItemIndex === id : false}
94
+ isActive={isActive ? isActive : activeItemIndex ? activeItemIndex === id : false}
95
+ isFirstLevel={true}
102
96
  key={id ?? index}
103
97
  onClickTreeItem={onClickTreeItem}
104
98
  {...props}
@@ -2,6 +2,7 @@ import { ReactNode, ReactText } from 'react'
2
2
 
3
3
  import { IconProp } from '../icon'
4
4
  import { LinkProps } from '../link'
5
+ import { ListItemProps } from '../list'
5
6
  import { SystemProps } from '../system'
6
7
  import { ThemingProps } from '../theme'
7
8
  import { PropsOf } from '../utils'
@@ -15,7 +16,7 @@ export type TreeProps = SystemProps &
15
16
  /** Socket defining the expand icon on the left. */
16
17
  iconExpand?: IconProp
17
18
  /** Socket displaying a tree of items. */
18
- items?: PropsOf<'div', TreeItemProps>[] | JSX.Element
19
+ items?: PropsOf<'li', TreeItemProps>[] | JSX.Element
19
20
  /** Socket defining the size of the tree. */
20
21
  onClickItem?: (id: TreeItemId) => void
21
22
  }
@@ -29,7 +30,7 @@ export type TreeOnToggleEvent = {
29
30
  collapsed: boolean
30
31
  }
31
32
 
32
- export type TreeItemProps = SystemProps &
33
+ export type TreeItemProps = ListItemProps &
33
34
  ThemingProps<'Tree'> & {
34
35
  activeItemId?: TreeItemId
35
36
  /** internal, not exposed */
@@ -47,16 +48,22 @@ export type TreeItemProps = SystemProps &
47
48
  /** Socket defining the expand icon on the left. */
48
49
  iconExpand?: IconProp
49
50
  /** The children of this tree item. */
50
- items?: PropsOf<'div', TreeItemProps>[]
51
+ items?: PropsOf<'li', TreeItemProps>[]
51
52
  children?: ReactNode
52
53
  /** Collapsed state */
53
54
  isCollapsed?: boolean
55
+ /** indicates if the item is first-level; if yes it can be styled differently */
56
+ isFirstLevel?: boolean
54
57
  /** Displays item and its content in disabled state with appropriate styling. */
55
58
  disabled?: boolean
56
59
  /** Displays item in selected state with appropriate styling. */
57
60
  isActive?: boolean
58
61
  /** If provided, content is wrapper with a link and the props are provided to the element. */
59
62
  linkProps?: TreeItemLinkProps
63
+ /** internal, padding left; if provided it will accumulate function of levels. */
64
+ propagatedPL?: number
65
+ /** Socket defining the size of the padding increment. */
66
+ plUnit?: number
60
67
  /** Socket displaying text within the item. */
61
68
  text: ReactText | JSX.Element
62
69
  /** Collapse change state */
@@ -2,32 +2,26 @@ import React, { useEffect, useState } from 'react'
2
2
 
3
3
  import { Box } from '../box'
4
4
  import { styled, useStyleConfig, vui } from '../core'
5
- import { cs, isArray, isReactText } from '../utils'
5
+ import { List } from '../list'
6
+ import { cs, isArray, isReactText, vuiColorToRGBA } from '../utils'
6
7
  import { useTreeContext } from './context'
7
8
  import { TreeItemProps } from './tree.types'
8
9
  import TreeIcon from './treeIcon'
9
10
  import TreeText from './treeText'
10
11
 
11
- export const TreeItemBase = styled.divBox`
12
+ /*@formatter:off*/
13
+ export const TreeItemBase = styled.liBox`
12
14
  display: flex;
13
15
  flex-direction: column;
14
- line-height: normal;
15
- outline: none;
16
- align-content: flex-start;
17
- align-items: flex-start;
18
- overflow: visible;
19
- height: auto;
20
-
21
- & [aria-disabled='true'] {
22
- cursor: not-allowed;
23
- user-select: none;
24
- }
16
+ transition-duration: fast;
17
+ width: 100%;
25
18
  `
19
+ /*@formatter:on*/
26
20
 
27
21
  /**
28
22
  * Displays a tree item with text and optional icons. Can be shown as selected.
29
23
  */
30
- export const TreeItem = vui<'div', TreeItemProps>((props, ref) => {
24
+ export const TreeItem = vui<'li', TreeItemProps>((props, ref) => {
31
25
  const mergedProps = { ...useTreeContext(), ...props }
32
26
 
33
27
  const {
@@ -45,18 +39,24 @@ export const TreeItem = vui<'div', TreeItemProps>((props, ref) => {
45
39
  id,
46
40
  items,
47
41
  isActive,
42
+ isFirstLevel,
48
43
  isTruncated,
49
44
  key,
50
45
  onClickTreeItem,
51
46
  onToggle,
47
+ propagatedPL,
48
+ plUnit = 26,
52
49
  text,
53
50
  ...rest
54
51
  } = mergedProps
55
52
  const styles = useStyleConfig('Tree', useTreeContext())
56
- const { activeBg, h, hoverBg, p, px, py, selectedBg, ...itemStyles } = styles.item
53
+ const { activeBg, bg, color, h, hoverBg, hoverColor, p, px, py, selectedBg, ...itemStyles } = styles.item
57
54
 
58
55
  const [collapsedInternal, setIsCollapsedInternal] = useState<boolean>(false)
59
56
 
57
+ const innerBoxPl = propagatedPL || 0
58
+ const innerListPl = innerBoxPl + (plUnit || 0)
59
+
60
60
  useEffect(() => {
61
61
  setIsCollapsedInternal(!!isCollapsed)
62
62
  }, [isCollapsed])
@@ -77,84 +77,111 @@ export const TreeItem = vui<'div', TreeItemProps>((props, ref) => {
77
77
  e.stopPropagation()
78
78
  }
79
79
 
80
- const interactiveProps = !disabled
81
- ? {
82
- cursor: 'pointer',
83
- focusVisibleRing: 2,
84
- hoverBg: 'transparent',
85
- activeBg: 'transparent',
86
- userSelect: 'none'
87
- }
88
- : {}
89
-
90
80
  const hoverTreeItem = (e: Event, type: string) => {
91
81
  const target = e.target as HTMLDivElement
92
82
 
83
+ let parentDiv = undefined
84
+
93
85
  if (target.classList.contains('vui-treeItem-permanent')) {
94
- target.style.backgroundColor = type === 'over' ? '#e2f1ff' : 'transparent'
95
- e.stopPropagation()
86
+ parentDiv = target
96
87
  } else {
97
- e.preventDefault()
98
- const permanent = target
99
- .closest('.vui-treeItem')
100
- ?.getElementsByClassName('vui-treeItem-permanent')[0] as HTMLDivElement
101
-
102
- const collapsible = target
103
- .closest('.vui-treeItem')
104
- ?.getElementsByClassName('vui-treeItem-collapsible')[0] as HTMLDivElement
105
-
106
- const active = target.closest('.vui-treeItem')?.getElementsByClassName('vui-treeItem-active')[0] as HTMLDivElement
88
+ const parentLi = target.closest('.vui-treeItem')
89
+ parentDiv = parentLi?.getElementsByClassName('vui-treeItem-permanent')[0] as HTMLDivElement
90
+ }
107
91
 
108
- permanent ? (permanent.style.backgroundColor = type === 'over' ? '#e2f1ff' : 'transparent') : null
109
- collapsible ? (collapsible.style.backgroundColor = 'transparent') : null
110
- active ? (active.style.backgroundColor = 'hsl(139, 100%, 90%)') : null
92
+ const isDivActive = parentDiv.classList.contains('vui-treeItem-active') ? true : false
93
+
94
+ // translate the list-item style over to the div
95
+ if (parentDiv.classList.contains('vui-treeItem-permanent')) {
96
+ // is it a fist level item?
97
+ if (parentDiv.classList.contains('vui-treeItem-firstLevel')) {
98
+ if (type === 'over') {
99
+ parentDiv.style.backgroundColor = vuiColorToRGBA(styles?.firstLevelItem?.hoverBg || 'transparent')
100
+ }
101
+
102
+ if (type === 'out') {
103
+ parentDiv.style.backgroundColor = isDivActive
104
+ ? vuiColorToRGBA(styles?.firstLevelItem?.activeBg || 'transparent')
105
+ : vuiColorToRGBA(styles?.firstLevelItem?.bg || 'transparent')
106
+ }
107
+ } else {
108
+ // it is NOT first level
109
+ if (type === 'over') {
110
+ parentDiv.style.backgroundColor = vuiColorToRGBA(styles?.item?.hoverBg || 'transparent')
111
+ }
112
+ if (type === 'out') {
113
+ parentDiv.style.backgroundColor = isDivActive
114
+ ? vuiColorToRGBA(styles?.item?.activeBg || 'transparent')
115
+ : vuiColorToRGBA(styles?.item?.bg || 'transparent')
116
+ }
117
+ }
118
+ } else {
119
+ e.preventDefault()
111
120
  }
121
+
122
+ e.stopPropagation()
112
123
  }
113
124
 
114
125
  const isCollapsable = (isArray(children) && children.length > 0) || (isArray(items) && items.length > 0)
115
126
  const isActiveInternal = (!activeItemIndex && isActive) || activeItemIndex === id
116
127
 
128
+ let textMl = items && items?.length > 0 ? 0 : 1.5
129
+ if (!isCollapsable) {
130
+ textMl += 3.8
131
+ }
132
+
133
+ // hoverBg cannot be styled directly from theme, it has to be JS manipulated because of event propagation
117
134
  return (
118
135
  <TreeItemBase
119
- alignItems="start"
120
- className={cs('vui-treeItem', className)}
136
+ className={cs('vui-treeItem', isFirstLevel ? 'vui-treeItem-firstLevel' : '', className)}
137
+ color={isFirstLevel ? styles?.firstLevelItem?.color : color}
121
138
  h={collapsedInternal ? h : isCollapsable ? 'auto' : h}
122
- id={id}
139
+ id={id.toString()}
123
140
  m={0}
124
141
  onClick={!disabled ? (e: Event) => toggle(e) : undefined}
125
142
  onMouseOut={!disabled ? (e: Event) => hoverTreeItem(e, 'out') : undefined}
126
143
  onMouseOver={!disabled ? (e: Event) => hoverTreeItem(e, 'over') : undefined}
127
144
  p={0}
145
+ propagatedPL={propagatedPL}
128
146
  ref={ref}
129
147
  w={1}
130
148
  {...itemStyles}
131
- {...interactiveProps}
149
+ bg={
150
+ isFirstLevel
151
+ ? isActiveInternal
152
+ ? styles?.firstLevelItem?.activeBg
153
+ : styles?.firstLevelItem?.bg
154
+ : isActiveInternal
155
+ ? styles?.item?.activeBg
156
+ : bg
157
+ }
158
+ hoverBg={undefined}
132
159
  {...rest}
133
- hoverBg="transparent"
134
160
  >
135
- <Box flexDirection="column" hoverBg="transparent" m={0} pl={2} pr={0} py={py} w={1}>
161
+ <>
136
162
  <Box
137
- alignItems="center"
138
- bg={isActiveInternal ? 'hsl(139, 100%, 90%)' : 'transparent'}
139
- className={isActiveInternal ? 'vui-treeItem-active' : 'vui-treeItem-permanent'}
140
- flexDirection="row"
141
- hoverBg="transparent"
142
- m={0}
143
- p={0}
144
- w={1}
163
+ centerV
164
+ className={cs(
165
+ 'vui-treeItem-permanent',
166
+ isActiveInternal ? 'vui-treeItem-active' : '',
167
+ isFirstLevel ? 'vui-treeItem-firstLevel' : ''
168
+ )}
169
+ fontWeight={isActiveInternal ? '600' : '500'}
170
+ pl={`${innerBoxPl}px`}
145
171
  >
146
172
  {items && items?.length > 0 && (
147
- <>{collapsedInternal ? <TreeIcon mr={1} name={iconExpand} /> : <TreeIcon mr={1} name={iconCollapse} />}</>
173
+ <>
174
+ {collapsedInternal ? <TreeIcon mx={1.5} name={iconExpand} /> : <TreeIcon mx={1.5} name={iconCollapse} />}
175
+ </>
148
176
  )}
149
- {items?.length === 0 && <TreeIcon mr={1} name="cusDotFullAlt" />}
150
- {isReactText(text) ? <TreeText {...{ isTruncated, text }} /> : text}
177
+ {isReactText(text) ? <TreeText ml={textMl} {...{ isTruncated, text }} /> : text}
151
178
  </Box>
152
179
 
153
180
  {isCollapsable && !collapsedInternal && (
154
- <Box className="vui-treeItem-collapsible" flexDirection="column" hoverBg="transparent" m={0} p={0} w={1}>
181
+ <List w={1}>
155
182
  {children ??
156
183
  (isArray<TreeItemProps>(items)
157
- ? items.map(({ key, ...props }, index) => {
184
+ ? items.map(({ key, propagatedPL, ...props }, index) => {
158
185
  return (
159
186
  <TreeItem
160
187
  activeItemIndex={activeItemIndex}
@@ -162,14 +189,15 @@ export const TreeItem = vui<'div', TreeItemProps>((props, ref) => {
162
189
  iconExpand={iconExpand}
163
190
  key={key ?? index}
164
191
  onClickTreeItem={onClickTreeItem}
192
+ propagatedPL={innerListPl}
165
193
  {...props}
166
194
  />
167
195
  )
168
196
  })
169
197
  : items)}
170
- </Box>
198
+ </List>
171
199
  )}
172
- </Box>
200
+ </>
173
201
  </TreeItemBase>
174
202
  )
175
203
  })
@@ -123,8 +123,10 @@ export function TutorialCard({
123
123
  )}
124
124
  {!!onAction && (
125
125
  <Button mr={6} onClick={onAction} variant="primaryLight">
126
- {actionLabel}
127
- {onAction}
126
+ <>
127
+ {actionLabel}
128
+ {onAction}
129
+ </>
128
130
  </Button>
129
131
  )}
130
132
  </Box>
@@ -1,5 +1,7 @@
1
1
  import { Property } from 'csstype'
2
2
 
3
+ import { colors } from '../theme'
4
+
3
5
  /** Concatenates individual className arguments and returns a single string. */
4
6
  export function cs(...classNames: any[]) {
5
7
  return classNames.filter(Boolean).join(' ')
@@ -12,10 +14,6 @@ export function parseHSL(color: string) {
12
14
  return { h: Number(res?.[0]) || 0, s: Number(res?.[1]) || 0, l: Number(res?.[2]) || 0 }
13
15
  }
14
16
 
15
- /** Builds RGBA string. */
16
- export const buildRGBA = (r: number, g: number, b: number, alpha?: number) =>
17
- alpha !== undefined ? `rgba(${r}, ${g}, ${b}, ${alpha})` : `rgb(${r}, ${g}, ${b})`
18
-
19
17
  /** Converts hex color value to rgb with optional alpha property. */
20
18
  export function hexToRGBA(hex: string, alpha?: number) {
21
19
  let hexStr = hex
@@ -32,7 +30,18 @@ export function hexToRGBA(hex: string, alpha?: number) {
32
30
  const g = parseInt(hexStr.slice(2, 4), 16)
33
31
  const b = parseInt(hexStr.slice(4, 6), 16)
34
32
 
35
- return buildRGBA(r, g, b, alpha)
33
+ return alpha !== undefined ? `rgba(${r}, ${g}, ${b}, ${alpha})` : `rgb(${r}, ${g}, ${b})`
34
+ }
35
+
36
+ export function vuiColorToRGBA(color: string, alpha?: number) {
37
+ if (!color.includes('.')) return 'transparent'
38
+
39
+ const [colorName, shade] = color.split('.')
40
+
41
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
42
+ // @ts-ignore
43
+ const x = parseHSL(colors[colorName][shade])
44
+ return HSLToRGBA(x.h, x.s, x.l, alpha || shade === 'main' ? 1 : parseInt(shade))
36
45
  }
37
46
 
38
47
  /** Converts hsl color value to rgb with optional alpha property. */
@@ -77,7 +86,7 @@ export function HSLToRGBA(h: number, s: number, l: number, alpha?: number) {
77
86
  g = Math.round((g + m) * 255)
78
87
  b = Math.round((b + m) * 255)
79
88
 
80
- return buildRGBA(r, g, b, alpha)
89
+ return alpha !== undefined ? `rgba(${r}, ${g}, ${b}, ${alpha})` : `rgb(${r}, ${g}, ${b})`
81
90
  }
82
91
 
83
92
  /** Styling to add ellipsis for long texts. */