-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTextarea.js
More file actions
66 lines (65 loc) · 2.02 KB
/
Copy pathTextarea.js
File metadata and controls
66 lines (65 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import React from 'react';
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* Textarea — multi-line text field with optional mono label.
*/
function Textarea({
label,
hint,
value,
placeholder,
rows = 4,
disabled = false,
onChange,
style,
...rest
}) {
const [focused, setFocused] = React.useState(false);
return /*#__PURE__*/React.createElement("label", {
style: {
display: 'flex',
flexDirection: 'column',
gap: 6,
...style
}
}, label && /*#__PURE__*/React.createElement("span", {
style: {
fontFamily: 'var(--font-mono)',
fontSize: 11,
fontWeight: 500,
letterSpacing: 'var(--tracking-wide)',
textTransform: 'uppercase',
color: 'var(--text-muted)'
}
}, label), /*#__PURE__*/React.createElement("textarea", _extends({
value: value,
rows: rows,
placeholder: placeholder,
disabled: disabled,
onChange: onChange,
onFocus: () => setFocused(true),
onBlur: () => setFocused(false),
style: {
padding: '10px 12px',
fontFamily: 'var(--font-sans)',
fontSize: 14,
lineHeight: 1.5,
letterSpacing: 'var(--tracking-tight)',
color: 'var(--text-strong)',
background: 'var(--surface-card)',
border: `1px solid ${focused ? 'var(--ink-900)' : 'var(--border-hairline)'}`,
borderRadius: 'var(--radius)',
outline: 'none',
resize: 'vertical',
transition: 'border-color var(--dur) var(--ease)'
}
}, rest)), hint && /*#__PURE__*/React.createElement("span", {
style: {
fontSize: 12,
letterSpacing: 'var(--tracking-tight)',
color: 'var(--text-muted)'
}
}, hint));
}
export default Textarea;
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Textarea.jsx", error: String((e && e.message) || e) }); }