@veracity/vui 2.19.0 → 2.20.0-beta.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 (210) hide show
  1. package/dist/cjs/checkbox/checkbox.d.ts.map +1 -1
  2. package/dist/cjs/checkbox/checkbox.js +7 -4
  3. package/dist/cjs/checkbox/checkbox.js.map +1 -1
  4. package/dist/cjs/checkbox/consts.d.ts +5 -4
  5. package/dist/cjs/checkbox/consts.d.ts.map +1 -1
  6. package/dist/cjs/checkbox/consts.js +5 -4
  7. package/dist/cjs/checkbox/consts.js.map +1 -1
  8. package/dist/cjs/checkbox/theme.d.ts +1 -1
  9. package/dist/cjs/checkbox/theme.js +1 -1
  10. package/dist/cjs/checkbox/theme.js.map +1 -1
  11. package/dist/cjs/index.d.ts +1 -0
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +1 -0
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/input/input.d.ts.map +1 -1
  16. package/dist/cjs/input/input.js +22 -19
  17. package/dist/cjs/input/input.js.map +1 -1
  18. package/dist/cjs/input/input.types.d.ts +2 -0
  19. package/dist/cjs/input/input.types.d.ts.map +1 -1
  20. package/dist/cjs/input/theme.d.ts +12 -0
  21. package/dist/cjs/input/theme.d.ts.map +1 -1
  22. package/dist/cjs/input/theme.js +13 -1
  23. package/dist/cjs/input/theme.js.map +1 -1
  24. package/dist/cjs/label/index.d.ts +4 -0
  25. package/dist/cjs/label/index.d.ts.map +1 -0
  26. package/dist/cjs/label/index.js +25 -0
  27. package/dist/cjs/label/index.js.map +1 -0
  28. package/dist/cjs/label/label.d.ts +6 -0
  29. package/dist/cjs/label/label.d.ts.map +1 -0
  30. package/dist/cjs/label/label.js +41 -0
  31. package/dist/cjs/label/label.js.map +1 -0
  32. package/dist/cjs/label/label.types.d.ts +7 -0
  33. package/dist/cjs/label/label.types.d.ts.map +1 -0
  34. package/dist/cjs/label/label.types.js +3 -0
  35. package/dist/cjs/label/label.types.js.map +1 -0
  36. package/dist/cjs/label/theme.d.ts +23 -0
  37. package/dist/cjs/label/theme.d.ts.map +1 -0
  38. package/dist/cjs/label/theme.js +28 -0
  39. package/dist/cjs/label/theme.js.map +1 -0
  40. package/dist/cjs/list/list.d.ts.map +1 -1
  41. package/dist/cjs/list/list.js +8 -7
  42. package/dist/cjs/list/list.js.map +1 -1
  43. package/dist/cjs/radio/consts.d.ts +5 -4
  44. package/dist/cjs/radio/consts.d.ts.map +1 -1
  45. package/dist/cjs/radio/consts.js +5 -4
  46. package/dist/cjs/radio/consts.js.map +1 -1
  47. package/dist/cjs/radio/radio.d.ts.map +1 -1
  48. package/dist/cjs/radio/radio.js +7 -3
  49. package/dist/cjs/radio/radio.js.map +1 -1
  50. package/dist/cjs/radio/theme.d.ts +1 -1
  51. package/dist/cjs/radio/theme.js +1 -1
  52. package/dist/cjs/radio/theme.js.map +1 -1
  53. package/dist/cjs/select/select.d.ts +11 -6
  54. package/dist/cjs/select/select.d.ts.map +1 -1
  55. package/dist/cjs/select/select.js +9 -2
  56. package/dist/cjs/select/select.js.map +1 -1
  57. package/dist/cjs/select/select.types.d.ts +8 -0
  58. package/dist/cjs/select/select.types.d.ts.map +1 -1
  59. package/dist/cjs/select/selectButton.d.ts.map +1 -1
  60. package/dist/cjs/select/selectButton.js +2 -0
  61. package/dist/cjs/select/selectButton.js.map +1 -1
  62. package/dist/cjs/select/selectGroup.js +1 -1
  63. package/dist/cjs/select/selectGroup.js.map +1 -1
  64. package/dist/cjs/select/selectOption.js +1 -1
  65. package/dist/cjs/select/selectOption.js.map +1 -1
  66. package/dist/cjs/select/theme.d.ts +32 -0
  67. package/dist/cjs/select/theme.d.ts.map +1 -1
  68. package/dist/cjs/select/theme.js +33 -1
  69. package/dist/cjs/select/theme.js.map +1 -1
  70. package/dist/cjs/switch/switchLabel.d.ts.map +1 -1
  71. package/dist/cjs/switch/switchLabel.js +4 -0
  72. package/dist/cjs/switch/switchLabel.js.map +1 -1
  73. package/dist/cjs/switch/theme.d.ts +17 -0
  74. package/dist/cjs/switch/theme.d.ts.map +1 -1
  75. package/dist/cjs/switch/theme.js +18 -0
  76. package/dist/cjs/switch/theme.js.map +1 -1
  77. package/dist/cjs/textarea/textarea.d.ts +1 -1
  78. package/dist/cjs/textarea/textarea.d.ts.map +1 -1
  79. package/dist/cjs/textarea/textarea.js +19 -16
  80. package/dist/cjs/textarea/textarea.js.map +1 -1
  81. package/dist/cjs/textarea/textarea.types.d.ts +2 -0
  82. package/dist/cjs/textarea/textarea.types.d.ts.map +1 -1
  83. package/dist/cjs/textarea/theme.js +1 -1
  84. package/dist/cjs/textarea/theme.js.map +1 -1
  85. package/dist/cjs/theme/components.d.ts +83 -2
  86. package/dist/cjs/theme/components.d.ts.map +1 -1
  87. package/dist/cjs/theme/components.js +56 -54
  88. package/dist/cjs/theme/components.js.map +1 -1
  89. package/dist/cjs/theme/defaultTheme.d.ts +83 -2
  90. package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
  91. package/dist/esm/checkbox/checkbox.d.ts.map +1 -1
  92. package/dist/esm/checkbox/checkbox.js +7 -4
  93. package/dist/esm/checkbox/checkbox.js.map +1 -1
  94. package/dist/esm/checkbox/consts.d.ts +5 -4
  95. package/dist/esm/checkbox/consts.d.ts.map +1 -1
  96. package/dist/esm/checkbox/consts.js +5 -4
  97. package/dist/esm/checkbox/consts.js.map +1 -1
  98. package/dist/esm/checkbox/theme.d.ts +1 -1
  99. package/dist/esm/checkbox/theme.js +1 -1
  100. package/dist/esm/checkbox/theme.js.map +1 -1
  101. package/dist/esm/index.d.ts +1 -0
  102. package/dist/esm/index.d.ts.map +1 -1
  103. package/dist/esm/index.js +1 -0
  104. package/dist/esm/index.js.map +1 -1
  105. package/dist/esm/input/input.d.ts.map +1 -1
  106. package/dist/esm/input/input.js +24 -21
  107. package/dist/esm/input/input.js.map +1 -1
  108. package/dist/esm/input/input.types.d.ts +2 -0
  109. package/dist/esm/input/input.types.d.ts.map +1 -1
  110. package/dist/esm/input/theme.d.ts +12 -0
  111. package/dist/esm/input/theme.d.ts.map +1 -1
  112. package/dist/esm/input/theme.js +13 -1
  113. package/dist/esm/input/theme.js.map +1 -1
  114. package/dist/esm/label/index.d.ts +4 -0
  115. package/dist/esm/label/index.d.ts.map +1 -0
  116. package/dist/esm/label/index.js +4 -0
  117. package/dist/esm/label/index.js.map +1 -0
  118. package/dist/esm/label/label.d.ts +6 -0
  119. package/dist/esm/label/label.d.ts.map +1 -0
  120. package/dist/esm/label/label.js +24 -0
  121. package/dist/esm/label/label.js.map +1 -0
  122. package/dist/esm/label/label.types.d.ts +7 -0
  123. package/dist/esm/label/label.types.d.ts.map +1 -0
  124. package/dist/esm/label/label.types.js +2 -0
  125. package/dist/esm/label/label.types.js.map +1 -0
  126. package/dist/esm/label/theme.d.ts +23 -0
  127. package/dist/esm/label/theme.d.ts.map +1 -0
  128. package/dist/esm/label/theme.js +26 -0
  129. package/dist/esm/label/theme.js.map +1 -0
  130. package/dist/esm/list/list.d.ts.map +1 -1
  131. package/dist/esm/list/list.js +7 -7
  132. package/dist/esm/list/list.js.map +1 -1
  133. package/dist/esm/radio/consts.d.ts +5 -4
  134. package/dist/esm/radio/consts.d.ts.map +1 -1
  135. package/dist/esm/radio/consts.js +5 -4
  136. package/dist/esm/radio/consts.js.map +1 -1
  137. package/dist/esm/radio/radio.d.ts.map +1 -1
  138. package/dist/esm/radio/radio.js +7 -3
  139. package/dist/esm/radio/radio.js.map +1 -1
  140. package/dist/esm/radio/theme.d.ts +1 -1
  141. package/dist/esm/radio/theme.js +1 -1
  142. package/dist/esm/radio/theme.js.map +1 -1
  143. package/dist/esm/select/select.d.ts +11 -6
  144. package/dist/esm/select/select.d.ts.map +1 -1
  145. package/dist/esm/select/select.js +13 -6
  146. package/dist/esm/select/select.js.map +1 -1
  147. package/dist/esm/select/select.types.d.ts +8 -0
  148. package/dist/esm/select/select.types.d.ts.map +1 -1
  149. package/dist/esm/select/selectButton.d.ts.map +1 -1
  150. package/dist/esm/select/selectButton.js +2 -0
  151. package/dist/esm/select/selectButton.js.map +1 -1
  152. package/dist/esm/select/selectGroup.js +1 -1
  153. package/dist/esm/select/selectGroup.js.map +1 -1
  154. package/dist/esm/select/selectOption.js +2 -2
  155. package/dist/esm/select/selectOption.js.map +1 -1
  156. package/dist/esm/select/theme.d.ts +32 -0
  157. package/dist/esm/select/theme.d.ts.map +1 -1
  158. package/dist/esm/select/theme.js +33 -1
  159. package/dist/esm/select/theme.js.map +1 -1
  160. package/dist/esm/switch/switchLabel.d.ts.map +1 -1
  161. package/dist/esm/switch/switchLabel.js +4 -0
  162. package/dist/esm/switch/switchLabel.js.map +1 -1
  163. package/dist/esm/switch/theme.d.ts +17 -0
  164. package/dist/esm/switch/theme.d.ts.map +1 -1
  165. package/dist/esm/switch/theme.js +18 -0
  166. package/dist/esm/switch/theme.js.map +1 -1
  167. package/dist/esm/textarea/textarea.d.ts +1 -1
  168. package/dist/esm/textarea/textarea.d.ts.map +1 -1
  169. package/dist/esm/textarea/textarea.js +22 -19
  170. package/dist/esm/textarea/textarea.js.map +1 -1
  171. package/dist/esm/textarea/textarea.types.d.ts +2 -0
  172. package/dist/esm/textarea/textarea.types.d.ts.map +1 -1
  173. package/dist/esm/textarea/theme.js +1 -1
  174. package/dist/esm/textarea/theme.js.map +1 -1
  175. package/dist/esm/theme/components.d.ts +83 -2
  176. package/dist/esm/theme/components.d.ts.map +1 -1
  177. package/dist/esm/theme/components.js +2 -0
  178. package/dist/esm/theme/components.js.map +1 -1
  179. package/dist/esm/theme/defaultTheme.d.ts +83 -2
  180. package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
  181. package/dist/tsconfig.legacy.tsbuildinfo +1 -1
  182. package/dist/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +1 -1
  184. package/src/checkbox/checkbox.tsx +7 -5
  185. package/src/checkbox/consts.ts +5 -4
  186. package/src/checkbox/theme.ts +1 -1
  187. package/src/index.ts +1 -0
  188. package/src/input/input.tsx +83 -66
  189. package/src/input/input.types.ts +2 -0
  190. package/src/input/theme.ts +13 -1
  191. package/src/label/index.ts +3 -0
  192. package/src/label/label.tsx +31 -0
  193. package/src/label/label.types.ts +8 -0
  194. package/src/label/theme.ts +29 -0
  195. package/src/list/list.tsx +6 -5
  196. package/src/radio/consts.ts +5 -4
  197. package/src/radio/radio.tsx +6 -4
  198. package/src/radio/theme.ts +1 -1
  199. package/src/select/select.tsx +30 -5
  200. package/src/select/select.types.ts +8 -0
  201. package/src/select/selectButton.tsx +2 -0
  202. package/src/select/selectGroup.tsx +1 -1
  203. package/src/select/selectOption.tsx +2 -2
  204. package/src/select/theme.ts +33 -1
  205. package/src/switch/switchLabel.tsx +5 -0
  206. package/src/switch/theme.ts +21 -0
  207. package/src/textarea/textarea.tsx +70 -49
  208. package/src/textarea/textarea.types.ts +2 -0
  209. package/src/textarea/theme.ts +1 -1
  210. package/src/theme/components.ts +2 -0
@@ -5,18 +5,50 @@ const defaultProps = {
5
5
  variant: 'outlined',
6
6
  }
7
7
 
8
- const parts = ['container', 'button', 'content', 'group', 'option']
8
+ const parts = ['container', 'button', 'content', 'group', 'option', 'label']
9
9
 
10
10
  const sizes = {
11
11
  sm: {
12
12
  button: {
13
13
  size: 'sm',
14
14
  },
15
+ group: {
16
+ size: 'sm',
17
+ },
18
+ option: {
19
+ size: 'sm',
20
+ },
21
+ label: {
22
+ fontSize: 'sm',
23
+ },
15
24
  },
16
25
  md: {
17
26
  button: {
18
27
  size: 'md',
19
28
  },
29
+ group: {
30
+ size: 'md',
31
+ },
32
+ option: {
33
+ size: 'md',
34
+ },
35
+ label: {
36
+ fontSize: 'md',
37
+ },
38
+ },
39
+ lg: {
40
+ button: {
41
+ size: 'lg',
42
+ },
43
+ group: {
44
+ size: 'lg',
45
+ },
46
+ option: {
47
+ size: 'lg',
48
+ },
49
+ label: {
50
+ fontSize: 'lg',
51
+ },
20
52
  },
21
53
  }
22
54
 
@@ -10,6 +10,11 @@ export const SwitchLabel = vui<'span', TProps>((props, ref) => {
10
10
  const { className, ...rest } = props
11
11
  const styles = useStyleConfig('Switch', useSwitchContext())
12
12
 
13
+ // <T> has xs but not xl
14
+ if (styles.label.size === 'xl') {
15
+ rest.fontSize = 20
16
+ }
17
+
13
18
  return <T className={cs('vui-switchLabel', className)} display="flex" ref={ref} {...styles.label} {...rest} />
14
19
  })
15
20
 
@@ -11,6 +11,26 @@ const baseStyle = {
11
11
  },
12
12
  }
13
13
 
14
+ function sizeXl() {
15
+ const button = {
16
+ fontSize: 'lg',
17
+ minW: 58,
18
+ thumb: {
19
+ h: 28,
20
+ w: 28,
21
+ },
22
+ track: {
23
+ h: 32,
24
+ },
25
+ }
26
+
27
+ const label = {
28
+ size: 'xl',
29
+ }
30
+
31
+ return { button, label }
32
+ }
33
+
14
34
  function sizeLg() {
15
35
  const button = {
16
36
  fontSize: 'md',
@@ -82,6 +102,7 @@ const sizes = {
82
102
  sm: sizeSm,
83
103
  md: sizeMd,
84
104
  lg: sizeLg,
105
+ xl: sizeXl,
85
106
  }
86
107
 
87
108
  const variants = {
@@ -1,10 +1,12 @@
1
- import { useEffect, useState } from 'react'
1
+ import { useEffect, useId, useState } from 'react'
2
2
 
3
+ import { Label } from '..'
3
4
  import { omitThemingProps, styled, useStyleConfig, vui } from '../core'
4
5
  import { helpTextSize, inputColors } from '../input/consts'
5
6
  import HelpText from '../input/helpText'
7
+ import label from '../label'
6
8
  import T from '../t'
7
- import { ChangeEvent, cs, filterUndefined } from '../utils'
9
+ import { ChangeEvent, cs, filterUndefined, isString } from '../utils'
8
10
  import { getInitialCount } from './helpers'
9
11
  import { TextareaProps } from './textarea.types'
10
12
 
@@ -47,8 +49,9 @@ export const Textarea = vui<'div', TextareaProps>((props, ref) => {
47
49
  defaultValue,
48
50
  disabled,
49
51
  errorText,
50
- id,
52
+ id: idProp,
51
53
  helpText,
54
+ label,
52
55
  maxLength,
53
56
  name,
54
57
  onBlur,
@@ -66,9 +69,12 @@ export const Textarea = vui<'div', TextareaProps>((props, ref) => {
66
69
  ...rest
67
70
  } = omitThemingProps(props)
68
71
 
72
+ const generatedId = useId()
69
73
  const [count, setCount] = useState(getInitialCount(props))
70
74
  const [valueInternal, setValueInternal] = useState(defaultValue)
71
75
 
76
+ const id = idProp || generatedId
77
+
72
78
  const styles = useStyleConfig('Textarea', props)
73
79
 
74
80
  function onChange(e: ChangeEvent<HTMLTextAreaElement>) {
@@ -96,53 +102,68 @@ export const Textarea = vui<'div', TextareaProps>((props, ref) => {
96
102
  }, [value])
97
103
 
98
104
  return (
99
- <TextareaBase className={cs('vui-textarea', className)} ref={ref} {...styles.container} {...aliasedProps} {...rest}>
100
- <TextareaTextarea
101
- className="vui-textareaTextarea"
102
- ref={textareaRef}
103
- {...{
104
- autoFocus,
105
- cols,
106
- defaultValue,
107
- disabled,
108
- id,
109
- maxLength,
110
- name,
111
- onBlur,
112
- onChange,
113
- onFocus,
114
- placeholder,
115
- readOnly,
116
- required,
117
- resize,
118
- rows,
119
- }}
120
- value={valueInternal}
121
- {...styles.textarea}
122
- {...textareaAliasedProps}
123
- {...textareaProps}
124
- />
125
-
126
- {showCount && (
127
- <T
128
- className="vui-textareaCount"
129
- color={maxLength && count > maxLength ? inputColors.error : inputColors.helpText}
130
- position="absolute"
131
- right={0}
132
- size="sm"
133
- top="calc(100% + 1px)"
134
- >
135
- {count} {maxLength ? `/ ${maxLength}` : null}
136
- </T>
137
- )}
138
-
139
- {!!helpText && <HelpText size={helpTextSize['lg']}>{helpText}</HelpText>}
140
- {!!errorText && (
141
- <HelpText isError size={helpTextSize['lg']}>
142
- {errorText}
143
- </HelpText>
105
+ <>
106
+ {isString(label) ? (
107
+ <Label aria-disabled={disabled} className="vui-textareaLabel" htmlFor={id} mb={0.5} {...styles.label}>
108
+ {label}
109
+ </Label>
110
+ ) : (
111
+ label
144
112
  )}
145
- </TextareaBase>
113
+ <TextareaBase
114
+ className={cs('vui-textarea', className)}
115
+ ref={ref}
116
+ {...styles.container}
117
+ {...aliasedProps}
118
+ {...rest}
119
+ >
120
+ <TextareaTextarea
121
+ className="vui-textareaTextarea"
122
+ ref={textareaRef}
123
+ {...{
124
+ autoFocus,
125
+ cols,
126
+ defaultValue,
127
+ disabled,
128
+ id,
129
+ maxLength,
130
+ name,
131
+ onBlur,
132
+ onChange,
133
+ onFocus,
134
+ placeholder,
135
+ readOnly,
136
+ required,
137
+ resize,
138
+ rows,
139
+ }}
140
+ value={valueInternal}
141
+ {...styles.textarea}
142
+ {...textareaAliasedProps}
143
+ {...textareaProps}
144
+ />
145
+
146
+ {showCount && (
147
+ <T
148
+ className="vui-textareaCount"
149
+ color={maxLength && count > maxLength ? inputColors.error : inputColors.helpText}
150
+ position="absolute"
151
+ right={0}
152
+ size="sm"
153
+ top="calc(100% + 1px)"
154
+ >
155
+ {count} {maxLength ? `/ ${maxLength}` : null}
156
+ </T>
157
+ )}
158
+
159
+ {!!helpText && <HelpText size={helpTextSize['lg']}>{helpText}</HelpText>}
160
+ {!!errorText && (
161
+ <HelpText isError size={helpTextSize['lg']}>
162
+ {errorText}
163
+ </HelpText>
164
+ )}
165
+ </TextareaBase>
166
+ </>
146
167
  )
147
168
  })
148
169
 
@@ -24,6 +24,8 @@ export type TextareaProps = SystemProps &
24
24
  helpText?: React.ReactNode | string
25
25
  /** Deprecated. Please use variant="red" instead. @deprecated*/
26
26
  isInvalid?: boolean
27
+ /** The label. */
28
+ label?: string | React.ReactNode
27
29
  /** Passed to the inner input. */
28
30
  maxLength?: number
29
31
  /** Passed to the inner input. */
@@ -14,7 +14,7 @@ const defaultProps = {
14
14
  variant: 'grey',
15
15
  }
16
16
 
17
- const parts = ['container', 'textarea']
17
+ const parts = ['container', 'textarea', 'label']
18
18
 
19
19
  const sizes = {}
20
20
 
@@ -20,6 +20,7 @@ import Heading from '../heading/theme'
20
20
  import Icon from '../icon/theme'
21
21
  import Image from '../image/theme'
22
22
  import Input from '../input/theme'
23
+ import Label from '../label/theme'
23
24
  import Link from '../link/theme'
24
25
  import List from '../list/theme'
25
26
  import Menu from '../menu/theme'
@@ -75,6 +76,7 @@ export default {
75
76
  Icon,
76
77
  Image,
77
78
  Input,
79
+ Label,
78
80
  Link,
79
81
  List,
80
82
  Markdown,