@veracity/vui 2.1.0 → 2.2.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 (186) hide show
  1. package/dist/cjs/avatar/theme.d.ts +1 -0
  2. package/dist/cjs/avatar/theme.d.ts.map +1 -1
  3. package/dist/cjs/avatar/theme.js +2 -1
  4. package/dist/cjs/badge/theme.d.ts +1 -0
  5. package/dist/cjs/badge/theme.d.ts.map +1 -1
  6. package/dist/cjs/badge/theme.js +2 -1
  7. package/dist/cjs/button/theme.d.ts +1 -0
  8. package/dist/cjs/button/theme.d.ts.map +1 -1
  9. package/dist/cjs/button/theme.js +2 -1
  10. package/dist/cjs/divider/divider.js +1 -1
  11. package/dist/cjs/dragAndDrop/dragAndDrop.d.ts +1 -1
  12. package/dist/cjs/dragAndDrop/dragAndDrop.d.ts.map +1 -1
  13. package/dist/cjs/dragAndDrop/dragAndDrop.js +3 -3
  14. package/dist/cjs/dragAndDrop/dragAndDrop.types.d.ts +1 -1
  15. package/dist/cjs/dragAndDrop/dragAndDrop.types.d.ts.map +1 -1
  16. package/dist/cjs/dragAndDrop/theme.d.ts +18 -3
  17. package/dist/cjs/dragAndDrop/theme.d.ts.map +1 -1
  18. package/dist/cjs/dragAndDrop/theme.js +23 -3
  19. package/dist/cjs/index.d.ts +1 -0
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +1 -0
  22. package/dist/cjs/input/consts.d.ts +17 -3
  23. package/dist/cjs/input/consts.d.ts.map +1 -1
  24. package/dist/cjs/input/consts.js +27 -13
  25. package/dist/cjs/input/helpText.js +2 -2
  26. package/dist/cjs/input/input.d.ts.map +1 -1
  27. package/dist/cjs/input/input.js +8 -11
  28. package/dist/cjs/input/input.types.d.ts +6 -6
  29. package/dist/cjs/input/input.types.d.ts.map +1 -1
  30. package/dist/cjs/input/inputIcon.d.ts.map +1 -1
  31. package/dist/cjs/input/inputIcon.js +2 -1
  32. package/dist/cjs/input/theme.d.ts +33 -17
  33. package/dist/cjs/input/theme.d.ts.map +1 -1
  34. package/dist/cjs/input/theme.js +32 -22
  35. package/dist/cjs/skeleton/skeleton.types.d.ts +1 -1
  36. package/dist/cjs/skeleton/skeleton.types.d.ts.map +1 -1
  37. package/dist/cjs/skeleton/theme.d.ts +10 -14
  38. package/dist/cjs/skeleton/theme.d.ts.map +1 -1
  39. package/dist/cjs/skeleton/theme.js +10 -21
  40. package/dist/cjs/tag/theme.d.ts +1 -0
  41. package/dist/cjs/tag/theme.d.ts.map +1 -1
  42. package/dist/cjs/tag/theme.js +2 -1
  43. package/dist/cjs/theme/components.d.ts +110 -19
  44. package/dist/cjs/theme/components.d.ts.map +1 -1
  45. package/dist/cjs/theme/components.js +3 -1
  46. package/dist/cjs/theme/defaultTheme.d.ts +110 -19
  47. package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
  48. package/dist/cjs/tooltip/tooltip.js +1 -1
  49. package/dist/cjs/tooltip/tooltipContent.d.ts +1 -1
  50. package/dist/cjs/tooltip/tooltipContent.d.ts.map +1 -1
  51. package/dist/cjs/tooltip/tooltipContent.js +1 -4
  52. package/dist/cjs/tree/context.d.ts +5 -0
  53. package/dist/cjs/tree/context.d.ts.map +1 -0
  54. package/dist/cjs/tree/context.js +7 -0
  55. package/dist/cjs/tree/index.d.ts +8 -0
  56. package/dist/cjs/tree/index.d.ts.map +1 -0
  57. package/dist/cjs/tree/index.js +28 -0
  58. package/dist/cjs/tree/theme.d.ts +59 -0
  59. package/dist/cjs/tree/theme.d.ts.map +1 -0
  60. package/dist/cjs/tree/theme.js +69 -0
  61. package/dist/cjs/tree/tree.d.ts +14 -0
  62. package/dist/cjs/tree/tree.d.ts.map +1 -0
  63. package/dist/cjs/tree/tree.js +116 -0
  64. package/dist/cjs/tree/tree.types.d.ts +58 -0
  65. package/dist/cjs/tree/tree.types.d.ts.map +1 -0
  66. package/dist/cjs/tree/tree.types.js +2 -0
  67. package/dist/cjs/tree/treeIcon.d.ts +5 -0
  68. package/dist/cjs/tree/treeIcon.d.ts.map +1 -0
  69. package/dist/cjs/tree/treeIcon.js +29 -0
  70. package/dist/cjs/tree/treeItem.d.ts +8 -0
  71. package/dist/cjs/tree/treeItem.d.ts.map +1 -0
  72. package/dist/cjs/tree/treeItem.js +131 -0
  73. package/dist/cjs/tree/treeText.d.ts +5 -0
  74. package/dist/cjs/tree/treeText.d.ts.map +1 -0
  75. package/dist/cjs/tree/treeText.js +29 -0
  76. package/dist/cjs/tree/useTreeState.d.ts +9 -0
  77. package/dist/cjs/tree/useTreeState.d.ts.map +1 -0
  78. package/dist/cjs/tree/useTreeState.js +10 -0
  79. package/dist/esm/avatar/theme.d.ts +1 -0
  80. package/dist/esm/avatar/theme.d.ts.map +1 -1
  81. package/dist/esm/avatar/theme.js +2 -1
  82. package/dist/esm/badge/theme.d.ts +1 -0
  83. package/dist/esm/badge/theme.d.ts.map +1 -1
  84. package/dist/esm/badge/theme.js +2 -1
  85. package/dist/esm/button/theme.d.ts +1 -0
  86. package/dist/esm/button/theme.d.ts.map +1 -1
  87. package/dist/esm/button/theme.js +2 -1
  88. package/dist/esm/divider/divider.js +1 -1
  89. package/dist/esm/dragAndDrop/dragAndDrop.d.ts +1 -1
  90. package/dist/esm/dragAndDrop/dragAndDrop.d.ts.map +1 -1
  91. package/dist/esm/dragAndDrop/dragAndDrop.js +3 -3
  92. package/dist/esm/dragAndDrop/dragAndDrop.types.d.ts +1 -1
  93. package/dist/esm/dragAndDrop/dragAndDrop.types.d.ts.map +1 -1
  94. package/dist/esm/dragAndDrop/theme.d.ts +18 -3
  95. package/dist/esm/dragAndDrop/theme.d.ts.map +1 -1
  96. package/dist/esm/dragAndDrop/theme.js +23 -3
  97. package/dist/esm/index.d.ts +1 -0
  98. package/dist/esm/index.d.ts.map +1 -1
  99. package/dist/esm/index.js +1 -0
  100. package/dist/esm/input/consts.d.ts +17 -3
  101. package/dist/esm/input/consts.d.ts.map +1 -1
  102. package/dist/esm/input/consts.js +26 -12
  103. package/dist/esm/input/helpText.js +3 -3
  104. package/dist/esm/input/input.d.ts.map +1 -1
  105. package/dist/esm/input/input.js +6 -9
  106. package/dist/esm/input/input.types.d.ts +6 -6
  107. package/dist/esm/input/input.types.d.ts.map +1 -1
  108. package/dist/esm/input/inputIcon.d.ts.map +1 -1
  109. package/dist/esm/input/inputIcon.js +2 -1
  110. package/dist/esm/input/theme.d.ts +33 -17
  111. package/dist/esm/input/theme.d.ts.map +1 -1
  112. package/dist/esm/input/theme.js +32 -22
  113. package/dist/esm/skeleton/skeleton.types.d.ts +1 -1
  114. package/dist/esm/skeleton/skeleton.types.d.ts.map +1 -1
  115. package/dist/esm/skeleton/theme.d.ts +10 -14
  116. package/dist/esm/skeleton/theme.d.ts.map +1 -1
  117. package/dist/esm/skeleton/theme.js +10 -21
  118. package/dist/esm/tag/theme.d.ts +1 -0
  119. package/dist/esm/tag/theme.d.ts.map +1 -1
  120. package/dist/esm/tag/theme.js +2 -1
  121. package/dist/esm/theme/components.d.ts +110 -19
  122. package/dist/esm/theme/components.d.ts.map +1 -1
  123. package/dist/esm/theme/components.js +3 -1
  124. package/dist/esm/theme/defaultTheme.d.ts +110 -19
  125. package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
  126. package/dist/esm/tooltip/tooltip.js +1 -1
  127. package/dist/esm/tooltip/tooltipContent.d.ts +1 -1
  128. package/dist/esm/tooltip/tooltipContent.d.ts.map +1 -1
  129. package/dist/esm/tooltip/tooltipContent.js +1 -4
  130. package/dist/esm/tree/context.d.ts +5 -0
  131. package/dist/esm/tree/context.d.ts.map +1 -0
  132. package/dist/esm/tree/context.js +3 -0
  133. package/dist/esm/tree/index.d.ts +8 -0
  134. package/dist/esm/tree/index.d.ts.map +1 -0
  135. package/dist/esm/tree/index.js +7 -0
  136. package/dist/esm/tree/theme.d.ts +59 -0
  137. package/dist/esm/tree/theme.d.ts.map +1 -0
  138. package/dist/esm/tree/theme.js +67 -0
  139. package/dist/esm/tree/tree.d.ts +14 -0
  140. package/dist/esm/tree/tree.d.ts.map +1 -0
  141. package/dist/esm/tree/tree.js +74 -0
  142. package/dist/esm/tree/tree.types.d.ts +58 -0
  143. package/dist/esm/tree/tree.types.d.ts.map +1 -0
  144. package/dist/esm/tree/tree.types.js +1 -0
  145. package/dist/esm/tree/treeIcon.d.ts +5 -0
  146. package/dist/esm/tree/treeIcon.d.ts.map +1 -0
  147. package/dist/esm/tree/treeIcon.js +12 -0
  148. package/dist/esm/tree/treeItem.d.ts +8 -0
  149. package/dist/esm/tree/treeItem.d.ts.map +1 -0
  150. package/dist/esm/tree/treeItem.js +91 -0
  151. package/dist/esm/tree/treeText.d.ts +5 -0
  152. package/dist/esm/tree/treeText.d.ts.map +1 -0
  153. package/dist/esm/tree/treeText.js +12 -0
  154. package/dist/esm/tree/useTreeState.d.ts +9 -0
  155. package/dist/esm/tree/useTreeState.d.ts.map +1 -0
  156. package/dist/esm/tree/useTreeState.js +6 -0
  157. package/package.json +1 -1
  158. package/src/avatar/theme.ts +2 -1
  159. package/src/badge/theme.ts +2 -1
  160. package/src/button/theme.ts +2 -1
  161. package/src/divider/divider.tsx +1 -1
  162. package/src/dragAndDrop/dragAndDrop.tsx +3 -3
  163. package/src/dragAndDrop/dragAndDrop.types.ts +1 -1
  164. package/src/dragAndDrop/theme.ts +24 -3
  165. package/src/index.ts +1 -0
  166. package/src/input/consts.ts +27 -12
  167. package/src/input/helpText.tsx +3 -3
  168. package/src/input/input.tsx +5 -14
  169. package/src/input/input.types.ts +6 -6
  170. package/src/input/inputIcon.tsx +2 -1
  171. package/src/input/theme.ts +31 -27
  172. package/src/skeleton/skeleton.types.ts +1 -1
  173. package/src/skeleton/theme.ts +9 -28
  174. package/src/tag/theme.ts +2 -1
  175. package/src/theme/components.ts +3 -1
  176. package/src/tooltip/tooltip.tsx +1 -1
  177. package/src/tooltip/tooltipContent.tsx +17 -21
  178. package/src/tree/context.ts +5 -0
  179. package/src/tree/index.ts +7 -0
  180. package/src/tree/theme.ts +76 -0
  181. package/src/tree/tree.tsx +121 -0
  182. package/src/tree/tree.types.ts +65 -0
  183. package/src/tree/treeIcon.tsx +16 -0
  184. package/src/tree/treeItem.tsx +177 -0
  185. package/src/tree/treeText.tsx +26 -0
  186. package/src/tree/useTreeState.ts +10 -0
@@ -0,0 +1,8 @@
1
+ import { TreeItemProps } from './tree.types';
2
+ export declare const TreeItemBase: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("..").SystemProps, never>;
3
+ /**
4
+ * Displays a tree item with text and optional icons. Can be shown as selected.
5
+ */
6
+ export declare const TreeItem: import("../core").VuiComponent<"div", TreeItemProps>;
7
+ export default TreeItem;
8
+ //# sourceMappingURL=treeItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeItem.d.ts","sourceRoot":"","sources":["../../../src/tree/treeItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAI5C,eAAO,MAAM,YAAY,+HAcxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,sDAiJnB,CAAA;AAEF,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,91 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Box } from '../box';
3
+ import { styled, useStyleConfig, vui } from '../core';
4
+ import { cs, isArray, isReactText } from '../utils';
5
+ import { useTreeContext } from './context';
6
+ import TreeIcon from './treeIcon';
7
+ import TreeText from './treeText';
8
+ export const TreeItemBase = styled.divBox `
9
+ display: flex;
10
+ flex-direction: column;
11
+ line-height: normal;
12
+ outline: none;
13
+ align-content: flex-start;
14
+ align-items: flex-start;
15
+ overflow: visible;
16
+ height: auto;
17
+
18
+ & [aria-disabled='true'] {
19
+ cursor: not-allowed;
20
+ user-select: none;
21
+ }
22
+ `;
23
+ /**
24
+ * Displays a tree item with text and optional icons. Can be shown as selected.
25
+ */
26
+ export const TreeItem = vui((props, ref) => {
27
+ const mergedProps = { ...useTreeContext(), ...props };
28
+ const { activeItemId, activeItemIndex, children, center, centerH, centerV = true, className, iconCollapse = 'falMinus', isCollapsed, disabled, iconExpand = 'falPlus', id, items, isActive, isTruncated, key, onClickTreeItem, onToggle, text, ...rest } = mergedProps;
29
+ const styles = useStyleConfig('Tree', useTreeContext());
30
+ const { activeBg, h, hoverBg, p, px, py, selectedBg, ...itemStyles } = styles.item;
31
+ const [collapsedInternal, setIsCollapsedInternal] = useState(false);
32
+ useEffect(() => {
33
+ setIsCollapsedInternal(!!isCollapsed);
34
+ }, [isCollapsed]);
35
+ const toggle = (e) => {
36
+ if (!disabled) {
37
+ onToggle?.({ id, collapsed: !collapsedInternal });
38
+ setIsCollapsedInternal(!collapsedInternal);
39
+ }
40
+ const target = e.target;
41
+ const active = target?.closest('.vui-tree')?.getElementsByClassName('vui-treeItem-active')[0];
42
+ active ? (active.style.backgroundColor = 'transparent') : null;
43
+ onClickTreeItem?.(id);
44
+ // Avoids triggering parent's onClick
45
+ e.stopPropagation();
46
+ };
47
+ const interactiveProps = !disabled
48
+ ? {
49
+ cursor: 'pointer',
50
+ focusVisibleRing: 2,
51
+ hoverBg: 'transparent',
52
+ activeBg: 'transparent',
53
+ userSelect: 'none'
54
+ }
55
+ : {};
56
+ const hoverTreeItem = (e, type) => {
57
+ const target = e.target;
58
+ if (target.classList.contains('vui-treeItem-permanent')) {
59
+ target.style.backgroundColor = type === 'over' ? '#e2f1ff' : 'transparent';
60
+ e.stopPropagation();
61
+ }
62
+ else {
63
+ e.preventDefault();
64
+ const permanent = target
65
+ .closest('.vui-treeItem')
66
+ ?.getElementsByClassName('vui-treeItem-permanent')[0];
67
+ const collapsible = target
68
+ .closest('.vui-treeItem')
69
+ ?.getElementsByClassName('vui-treeItem-collapsible')[0];
70
+ const active = target.closest('.vui-treeItem')?.getElementsByClassName('vui-treeItem-active')[0];
71
+ permanent ? (permanent.style.backgroundColor = type === 'over' ? '#e2f1ff' : 'transparent') : null;
72
+ collapsible ? (collapsible.style.backgroundColor = 'transparent') : null;
73
+ active ? (active.style.backgroundColor = 'hsl(139, 100%, 90%)') : null;
74
+ }
75
+ };
76
+ const isCollapsable = (isArray(children) && children.length > 0) || (isArray(items) && items.length > 0);
77
+ const isActiveInternal = (!activeItemIndex && isActive) || activeItemIndex === id;
78
+ return (React.createElement(TreeItemBase, { alignItems: "start", className: cs('vui-treeItem', className), h: collapsedInternal ? h : isCollapsable ? 'auto' : h, id: id, m: 0, onClick: !disabled ? (e) => toggle(e) : undefined, onMouseOut: !disabled ? (e) => hoverTreeItem(e, 'out') : undefined, onMouseOver: !disabled ? (e) => hoverTreeItem(e, 'over') : undefined, p: 0, ref: ref, w: 1, ...itemStyles, ...interactiveProps, ...rest, hoverBg: "transparent" },
79
+ React.createElement(Box, { flexDirection: "column", hoverBg: "transparent", m: 0, pl: 2, pr: 0, py: py, w: 1 },
80
+ React.createElement(Box, { alignItems: "center", bg: isActiveInternal ? 'hsl(139, 100%, 90%)' : 'transparent', className: isActiveInternal ? 'vui-treeItem-active' : 'vui-treeItem-permanent', flexDirection: "row", hoverBg: "transparent", m: 0, p: 0, w: 1 },
81
+ items && items?.length > 0 && (React.createElement(React.Fragment, null, collapsedInternal ? React.createElement(TreeIcon, { mr: 1, name: iconExpand }) : React.createElement(TreeIcon, { mr: 1, name: iconCollapse }))),
82
+ items?.length === 0 && React.createElement(TreeIcon, { mr: 1, name: "cusDotFullAlt" }),
83
+ isReactText(text) ? React.createElement(TreeText, { ...{ isTruncated, text } }) : text),
84
+ isCollapsable && !collapsedInternal && (React.createElement(Box, { className: "vui-treeItem-collapsible", flexDirection: "column", hoverBg: "transparent", m: 0, p: 0, w: 1 }, children ??
85
+ (isArray(items)
86
+ ? items.map(({ key, ...props }, index) => {
87
+ return (React.createElement(TreeItem, { activeItemIndex: activeItemIndex, iconCollapse: iconCollapse, iconExpand: iconExpand, key: key ?? index, onClickTreeItem: onClickTreeItem, ...props }));
88
+ })
89
+ : items))))));
90
+ });
91
+ export default TreeItem;
@@ -0,0 +1,5 @@
1
+ import { TProps } from '../t';
2
+ /** Displays text within the TreeItem. */
3
+ export declare const TreeText: import("../core").VuiComponent<"span", TProps>;
4
+ export default TreeText;
5
+ //# sourceMappingURL=treeText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeText.d.ts","sourceRoot":"","sources":["../../../src/tree/treeText.tsx"],"names":[],"mappings":"AAGA,OAAU,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAIhC,yCAAyC;AACzC,eAAO,MAAM,QAAQ,gDAenB,CAAA;AAEF,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { useStyleConfig, vui } from '../core';
3
+ import T from '../t';
4
+ import { cs, ellipsisOverflow } from '../utils';
5
+ import { useTreeContext } from './context';
6
+ /** Displays text within the TreeItem. */
7
+ export const TreeText = vui((props, ref) => {
8
+ const { className, ...rest } = props;
9
+ const styles = useStyleConfig('Tree', useTreeContext());
10
+ return (React.createElement(T, { className: cs('vui-treeText', className), fontSize: "inherit", py: styles.item.py, ref: ref, ...ellipsisOverflow, ...styles.text, ...rest }));
11
+ });
12
+ export default TreeText;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { TreeItemId, TreeItemProps } from './tree.types';
3
+ export declare const useTreeState: (activeItemId?: TreeItemId) => {
4
+ itemsInternal: TreeItemProps[];
5
+ setItemsInternal: import("react").Dispatch<import("react").SetStateAction<TreeItemProps[]>>;
6
+ activeItemIndex: TreeItemId;
7
+ setActiveItemIndex: import("react").Dispatch<import("react").SetStateAction<TreeItemId>>;
8
+ };
9
+ //# sourceMappingURL=useTreeState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTreeState.d.ts","sourceRoot":"","sources":["../../../src/tree/useTreeState.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAExD,eAAO,MAAM,YAAY,kBAAmB,UAAU;;;;;CAKrD,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { useState } from 'react';
2
+ export const useTreeState = (activeItemId) => {
3
+ const [itemsInternal, setItemsInternal] = useState([]);
4
+ const [activeItemIndex, setActiveItemIndex] = useState(activeItemId ?? '');
5
+ return { itemsInternal, setItemsInternal, activeItemIndex, setActiveItemIndex };
6
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veracity/vui",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
5
5
  "module": "./dist/esm/index.js",
6
6
  "main": "./dist/cjs/index.js",
@@ -60,7 +60,8 @@ const baseStyle = {}
60
60
  const defaultProps = {
61
61
  colorScheme: 'blue',
62
62
  size: 'md',
63
- variant: 'subtle'
63
+ variant: 'subtle',
64
+ fontWeight: 'medium'
64
65
  }
65
66
 
66
67
  const sizes = {
@@ -2,7 +2,8 @@ const baseStyle = {}
2
2
 
3
3
  const defaultProps = {
4
4
  size: 'md',
5
- variant: 'subtleSandstone'
5
+ variant: 'subtleSandstone',
6
+ fontWeight: 'medium'
6
7
  }
7
8
 
8
9
  const parts = ['container', 'icon', 'text']
@@ -2,7 +2,8 @@ const baseStyle = {}
2
2
 
3
3
  const defaultProps = {
4
4
  size: 'md',
5
- variant: 'primaryDark'
5
+ variant: 'primaryDark',
6
+ fontWeight: 'medium'
6
7
  }
7
8
 
8
9
  const parts = ['container', 'icon', 'text']
@@ -5,7 +5,7 @@ import { cs, filterUndefined } from '../utils'
5
5
  import { DividerProps } from './divider.types'
6
6
 
7
7
  export const DividerBase = styled.hrBox`
8
- border-color: grey.30;
8
+ border-color: sandstone.90;
9
9
  `
10
10
 
11
11
  /** Visually separates content with a horizontal or vertical line. */
@@ -17,7 +17,7 @@ const DragAndDropBase = styled.labelBox`
17
17
  justify-content: center;
18
18
  `
19
19
 
20
- /** [Beta] Prepares uploading files by selecting or dragging. */
20
+ /** Prepares uploading files by selecting or dragging. */
21
21
  export const DragAndDrop = vui<'label', DragAndDropProps>((props, ref) => {
22
22
  const {
23
23
  accept,
@@ -51,12 +51,12 @@ export const DragAndDrop = vui<'label', DragAndDropProps>((props, ref) => {
51
51
 
52
52
  return (
53
53
  <DragAndDropBase
54
- bg={disabled ? 'grey.20' : 'blue.20'}
55
54
  className={cs('vui-drag-and-drop', className)}
56
55
  cursor={disabled ? 'not-allowed' : 'pointer'}
57
56
  onDragEnter={e => e.preventDefault()}
58
57
  onDragOver={e => e.preventDefault()}
59
58
  onDrop={e => handleDrop(e)}
59
+ opacity={disabled ? 0.5 : 1}
60
60
  p={5}
61
61
  pointerEvents={disabled ? 'none' : 'auto'}
62
62
  ref={ref}
@@ -64,7 +64,7 @@ export const DragAndDrop = vui<'label', DragAndDropProps>((props, ref) => {
64
64
  {...rest}
65
65
  >
66
66
  {children || (
67
- <T color={disabled ? 'grey.50' : 'auto'} display="flex">
67
+ <T display="flex">
68
68
  <Icon mr={1} name={icon} />
69
69
  {text}
70
70
  </T>
@@ -2,7 +2,7 @@ import { BoxProps } from '../box'
2
2
  import { IconProp } from '../icon'
3
3
  import { ThemingProps } from '../theme'
4
4
 
5
- export type DragAndDropProps = BoxProps &
5
+ export type DragAndDropProps = Omit<BoxProps, 'variant'> &
6
6
  ThemingProps<'DragAndDrop'> & {
7
7
  /** A string that defines the file types the file input should accept. This string is a comma-separated list of [unique file type specifiers](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers). */
8
8
  accept?: string
@@ -1,10 +1,31 @@
1
- const baseStyle = {}
1
+ const colors = {
2
+ bg: 'skyBlue.95',
3
+ main: 'seaBlue.28',
4
+ hover: 'skyBlue.90'
5
+ }
2
6
 
3
- const defaultProps = {}
7
+ const baseStyle = {
8
+ borderWidth: 2,
9
+ borderStyle: 'solid',
10
+ borderColor: 'transparent',
11
+ bg: colors.bg,
12
+ color: colors.main,
13
+ hoverBg: colors.hover
14
+ }
15
+
16
+ const defaultProps = {
17
+ variant: 'default'
18
+ }
4
19
 
5
20
  const sizes = {}
6
21
 
7
- const variants = {}
22
+ const variants = {
23
+ default: {},
24
+ outlined: {
25
+ borderColor: colors.main,
26
+ borderStyle: 'dashed'
27
+ }
28
+ }
8
29
 
9
30
  export default {
10
31
  baseStyle,
package/src/index.ts CHANGED
@@ -50,5 +50,6 @@ export * from './tabs'
50
50
  export * from './tag'
51
51
  export * from './textarea'
52
52
  export * from './theme'
53
+ export * from './tree'
53
54
  export * from './tutorial'
54
55
  export * from './utils'
@@ -1,30 +1,45 @@
1
1
  import { InputStateMapping } from './input.types'
2
2
 
3
- export const greyLightColor = 'warmGrey.90'
4
- export const greyColor = 'sandstone.60'
5
- export const redColor = 'energyRed.45'
3
+ export const inputColors = {
4
+ border: 'sandstone.60',
5
+ placeholder: 'sandstone.55',
6
+ inputText: 'sandstone.10',
7
+ helpText: 'sandstone.30',
8
+ icons: 'seaBlue.28',
9
+ disabled: 'sandstone.95',
10
+ focus: 'seaBlue.28',
11
+ error: 'energyRed.45',
12
+ loading: 'seaBlue.70',
13
+ success: 'landGreen.41'
14
+ }
15
+
16
+ export const stateIcons = {
17
+ error: 'falExclamationTriangle',
18
+ loading: 'fadSpinnerThird',
19
+ success: 'falCheck'
20
+ }
6
21
 
7
22
  export const inputStateMapping: InputStateMapping = {
8
23
  error: {
9
- colorScheme: 'red',
24
+ variant: 'red',
10
25
  iconProps: {
11
- color: 'energyRed.45',
12
- icon: 'falExclamationTriangle'
26
+ color: inputColors.error,
27
+ icon: stateIcons.error
13
28
  }
14
29
  },
15
30
  loading: {
16
- colorScheme: 'grey',
31
+ variant: 'grey',
17
32
  iconProps: {
18
33
  animation: 'vui-spin 0.6s linear infinite',
19
- name: 'fadSpinnerThird',
20
- pathFill: ['seaBlue.90', 'seaBlue.28']
34
+ name: stateIcons.loading,
35
+ pathFill: [inputColors.loading, inputColors.icons]
21
36
  }
22
37
  },
23
38
  success: {
24
- colorScheme: 'green',
39
+ variant: 'green',
25
40
  iconProps: {
26
- color: 'landGreen.30',
27
- icon: 'falCheck'
41
+ color: inputColors.success,
42
+ icon: stateIcons.success
28
43
  }
29
44
  }
30
45
  }
@@ -4,7 +4,7 @@ import { useStyleConfig, vui } from '../core'
4
4
  import Icon from '../icon'
5
5
  import P from '../p'
6
6
  import { cs } from '../utils'
7
- import { greyColor, redColor } from './consts'
7
+ import { inputColors } from './consts'
8
8
  import { useInputContext } from './context'
9
9
  import { HelpTextProps } from './input.types'
10
10
 
@@ -15,7 +15,7 @@ export const HelpText = vui<'div', HelpTextProps>((props, ref) => {
15
15
  const mergedProps = { ...inputProps, ...props }
16
16
  const styles = useStyleConfig('Input', mergedProps)
17
17
 
18
- const color = isError ? redColor : greyColor
18
+ const color = isError ? inputColors.error : inputColors.helpText
19
19
 
20
20
  return (
21
21
  <P
@@ -27,7 +27,7 @@ export const HelpText = vui<'div', HelpTextProps>((props, ref) => {
27
27
  {...styles.helpText}
28
28
  {...rest}
29
29
  >
30
- {isError && <Icon mr={1} name="falExclamationTriangle" pathFill={redColor} size="sm" />}
30
+ {isError && <Icon mr={1} name="falExclamationTriangle" pathFill={inputColors.error} size="sm" />}
31
31
  {children}
32
32
  </P>
33
33
  )
@@ -3,7 +3,7 @@ import React, { useEffect, useMemo, useState } from 'react'
3
3
  import { styled, useStyleConfig, vui, VuiComponent } from '../core'
4
4
  import { T } from '../t'
5
5
  import { ChangeEvent, cs, filterUndefined, isString } from '../utils'
6
- import { greyColor, greyLightColor, inputStateMapping, redColor } from './consts'
6
+ import { inputColors, inputStateMapping } from './consts'
7
7
  import { InputProvider } from './context'
8
8
  import { getInitialCount } from './helpers'
9
9
  import HelpText from './helpText'
@@ -40,7 +40,6 @@ export const Input = vui<'div', InputProps>((props, ref) => {
40
40
  autoFocus,
41
41
  children,
42
42
  className,
43
- colorScheme,
44
43
  defaultValue,
45
44
  disabled,
46
45
  errorText,
@@ -50,7 +49,6 @@ export const Input = vui<'div', InputProps>((props, ref) => {
50
49
  input,
51
50
  inputProps,
52
51
  inputRef,
53
- isInvalid,
54
52
  itemLeft,
55
53
  itemRight,
56
54
  helpText,
@@ -80,16 +78,9 @@ export const Input = vui<'div', InputProps>((props, ref) => {
80
78
  const [valueInternal, setValueInternal] = useState(defaultValue || '')
81
79
  const states = { ...inputStateMapping, ...stateMapping }
82
80
 
83
- const computedColorScheme = filterUndefined({
84
- colorScheme: colorScheme ?? (isInvalid ? 'red' : undefined) ?? states[state]?.colorScheme
85
- })
86
-
87
- const styles = useStyleConfig('Input', { ...computedColorScheme, ...props })
81
+ const styles = useStyleConfig('Input', props)
88
82
 
89
- const context = useMemo(
90
- () => filterUndefined({ colorScheme, disabled, size, variant }),
91
- [colorScheme, disabled, size, variant]
92
- )
83
+ const context = useMemo(() => filterUndefined({ disabled, size, variant }), [disabled, size, variant])
93
84
 
94
85
  function onChange(e: ChangeEvent) {
95
86
  setValueInternal(e.target.value)
@@ -99,7 +90,7 @@ export const Input = vui<'div', InputProps>((props, ref) => {
99
90
 
100
91
  const aliasedProps = filterUndefined({
101
92
  'aria-disabled': disabled,
102
- bg: readOnly ? greyLightColor : undefined,
93
+ bg: readOnly ? inputColors.disabled : undefined,
103
94
  focusWithinBorderColor: !readOnly ? 'transparent' : undefined,
104
95
  focusWithinRingColor: readOnly ? 'transparent' : undefined
105
96
  })
@@ -147,7 +138,7 @@ export const Input = vui<'div', InputProps>((props, ref) => {
147
138
  {showCount && (
148
139
  <T
149
140
  className="vui-inputCount"
150
- color={maxLength && count > maxLength ? redColor : greyColor}
141
+ color={maxLength && count > maxLength ? inputColors.error : inputColors.helpText}
151
142
  position="absolute"
152
143
  right={0}
153
144
  size="sm"
@@ -14,7 +14,7 @@ export type InputProps = SystemProps &
14
14
  autoComplete?: string
15
15
  /** Passed to the inner input. */
16
16
  autoFocus?: boolean
17
- /** Available theme colors for this component. @default grey */
17
+ /** Deprecated. Please use variant instead. @deprecated */
18
18
  colorScheme?: 'green' | 'grey' | 'red'
19
19
  /** Passed to the inner input. */
20
20
  defaultValue?: number | string
@@ -32,7 +32,7 @@ export type InputProps = SystemProps &
32
32
  inputProps?: InputInputProps
33
33
  /** Ref passed to the inner input. */
34
34
  inputRef?: React.MutableRefObject<HTMLInputElement | null> | null
35
- /** Styles the input in invalid state. */
35
+ /** Deprecated. Please use variant="red" and/or state="error" instead. @deprecated*/
36
36
  isInvalid?: boolean
37
37
  /** Socket displaying a custom element on the left. */
38
38
  itemLeft?: React.ReactNode
@@ -41,11 +41,11 @@ export type InputProps = SystemProps &
41
41
  /** Socket displaying help text bellow an input. */
42
42
  helpText?: React.ReactNode | string
43
43
  /** Passed to the inner input. */
44
- max?: number | string
44
+ max?: number
45
45
  /** Passed to the inner input. */
46
46
  maxLength?: number
47
47
  /** Passed to the inner input. */
48
- min?: number | string
48
+ min?: number
49
49
  /** Passed to the inner input. */
50
50
  name?: string
51
51
  /** Passed to the inner input. */
@@ -69,7 +69,7 @@ export type InputProps = SystemProps &
69
69
  /** Object definition of styles and content for each state. */
70
70
  stateMapping?: InputStateMapping
71
71
  /** Passed to the inner input. */
72
- step?: number | string
72
+ step?: number
73
73
  /** Passed to the inner input. */
74
74
  type?: InputType
75
75
  /** Passed to the inner input. */
@@ -85,7 +85,7 @@ export type InputState = 'default' | 'error' | 'loading' | 'success'
85
85
  export type InputStateMapping = Record<
86
86
  string,
87
87
  {
88
- colorScheme?: InputProps['colorScheme']
88
+ variant?: InputProps['variant']
89
89
  iconProps: IconProps
90
90
  }
91
91
  >
@@ -3,6 +3,7 @@ import React from 'react'
3
3
  import { useStyleConfig, vui } from '../core'
4
4
  import Icon, { IconProps } from '../icon'
5
5
  import { cs } from '../utils'
6
+ import { inputColors } from './consts'
6
7
  import { useInputContext } from './context'
7
8
 
8
9
  /** Displays an icon within the Input. */
@@ -12,7 +13,7 @@ export const InputIcon = vui<'svg', IconProps>((props, ref) => {
12
13
  const mergedProps = { ...inputProps, ...props }
13
14
  const styles = useStyleConfig('Input', mergedProps)
14
15
 
15
- const color = !mergedProps.disabled ? 'blue.80' : 'grey.50'
16
+ const color = !mergedProps.disabled ? inputColors.icons : inputColors.placeholder
16
17
 
17
18
  return <Icon className={cs('vui-inputIcon', className)} color={color} ref={ref} {...styles.icon} {...rest} />
18
19
  })
@@ -1,37 +1,24 @@
1
- import { Dict } from '../utils'
1
+ import { inputColors } from './consts'
2
2
 
3
- function variantDefault(props: Dict) {
4
- const { colorScheme: c } = props
5
-
6
- const container = {
7
- borderColor: `${c}.80`,
3
+ const baseStyle = {
4
+ container: {
8
5
  focusWithinRing: 2,
9
- focusWithinRingColor: `${c}.80`
10
- }
11
-
12
- if (c === 'grey') {
13
- container.borderColor = `${c}.60`
14
- container.focusWithinRingColor = 'blue.50'
6
+ color: inputColors.inputText
7
+ },
8
+ input: {
9
+ color: { placeholder: inputColors.placeholder }
15
10
  }
16
-
17
- const icon = {}
18
- const input = {}
19
-
20
- return { container, icon, input }
21
11
  }
22
12
 
23
- const baseStyle = {}
24
-
25
13
  const defaultProps = {
26
- colorScheme: 'grey',
27
- size: 'md',
28
- variant: 'default'
14
+ size: 'lg',
15
+ variant: 'grey'
29
16
  }
30
17
 
31
18
  const parts = ['container', 'icon', 'input']
32
19
 
33
20
  const sizes = {
34
- xs: {
21
+ sm: {
35
22
  container: {
36
23
  fontSize: 'sm',
37
24
  h: 24
@@ -41,7 +28,7 @@ const sizes = {
41
28
  },
42
29
  input: {}
43
30
  },
44
- sm: {
31
+ md: {
45
32
  container: {
46
33
  fontSize: 'sm',
47
34
  h: 32
@@ -51,7 +38,7 @@ const sizes = {
51
38
  },
52
39
  input: {}
53
40
  },
54
- md: {
41
+ lg: {
55
42
  container: {
56
43
  fontSize: 'md',
57
44
  h: 40
@@ -61,7 +48,7 @@ const sizes = {
61
48
  },
62
49
  input: {}
63
50
  },
64
- lg: {
51
+ xl: {
65
52
  container: {
66
53
  fontSize: 'lg',
67
54
  h: 48
@@ -74,7 +61,24 @@ const sizes = {
74
61
  }
75
62
 
76
63
  const variants = {
77
- default: variantDefault
64
+ grey: {
65
+ container: {
66
+ borderColor: inputColors.border,
67
+ focusWithinRingColor: inputColors.focus
68
+ }
69
+ },
70
+ green: {
71
+ container: {
72
+ borderColor: inputColors.success,
73
+ focusWithinRingColor: inputColors.success
74
+ }
75
+ },
76
+ red: {
77
+ container: {
78
+ borderColor: inputColors.error,
79
+ focusWithinRingColor: inputColors.error
80
+ }
81
+ }
78
82
  }
79
83
 
80
84
  export default {
@@ -5,7 +5,7 @@ export type SkeletonProps = SystemProps &
5
5
  ThemingProps<'Skeleton'> & {
6
6
  /** Children are disabled for this component. */
7
7
  children?: never
8
- /** Available theme colors for this component. @default blue */
8
+ /** Available theme colors for this component. @deprecated */
9
9
  colorScheme?: 'blue' | 'grey'
10
10
  /** Displays given amount of skeleton elements. */
11
11
  repeat?: number
@@ -1,32 +1,8 @@
1
- import { Dict } from '../utils'
2
-
3
- function variantCircle(props: Dict) {
4
- const { colorScheme: c } = props
5
-
6
- const styles = {
7
- borderRadius: '50%',
8
- bg: `${c}.20`
9
- }
10
-
11
- return styles
12
- }
13
-
14
- function variantRectangle(props: Dict) {
15
- const { colorScheme: c } = props
16
-
17
- const styles = {
18
- borderRadius: 'md',
19
- bg: `${c}.20`,
20
- w: '100%'
21
- }
22
-
23
- return styles
1
+ const baseStyle = {
2
+ bg: 'skyBlue.95'
24
3
  }
25
4
 
26
- const baseStyle = {}
27
-
28
5
  const defaultProps = {
29
- colorScheme: 'blue',
30
6
  size: 'md',
31
7
  variant: 'rect'
32
8
  }
@@ -47,8 +23,13 @@ const sizes = {
47
23
  }
48
24
 
49
25
  const variants = {
50
- circle: variantCircle,
51
- rect: variantRectangle
26
+ circle: {
27
+ borderRadius: '50%'
28
+ },
29
+ rect: {
30
+ borderRadius: 'md',
31
+ w: '100%'
32
+ }
52
33
  }
53
34
 
54
35
  export default {