@luxfi/ui 5.6.0 → 6.0.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.
- package/README.md +109 -0
- package/package.json +81 -278
- package/dist/accordion.cjs +0 -213
- package/dist/accordion.js +0 -186
- package/dist/alert.cjs +0 -553
- package/dist/alert.js +0 -531
- package/dist/avatar.cjs +0 -149
- package/dist/avatar.js +0 -125
- package/dist/badge.cjs +0 -611
- package/dist/badge.js +0 -589
- package/dist/button.cjs +0 -689
- package/dist/button.js +0 -664
- package/dist/checkbox.cjs +0 -265
- package/dist/checkbox.js +0 -241
- package/dist/close-button.cjs +0 -73
- package/dist/close-button.js +0 -51
- package/dist/collapsible.cjs +0 -702
- package/dist/collapsible.js +0 -679
- package/dist/color-mode.cjs +0 -96
- package/dist/color-mode.js +0 -72
- package/dist/dialog.cjs +0 -279
- package/dist/dialog.js +0 -246
- package/dist/drawer.cjs +0 -207
- package/dist/drawer.js +0 -175
- package/dist/empty-state.cjs +0 -93
- package/dist/empty-state.js +0 -71
- package/dist/field.cjs +0 -183
- package/dist/field.js +0 -160
- package/dist/heading.cjs +0 -46
- package/dist/heading.js +0 -40
- package/dist/icon-button.cjs +0 -491
- package/dist/icon-button.js +0 -470
- package/dist/image.cjs +0 -572
- package/dist/image.js +0 -551
- package/dist/index.cjs +0 -5779
- package/dist/index.js +0 -5619
- package/dist/input-group.cjs +0 -155
- package/dist/input-group.js +0 -133
- package/dist/input.cjs +0 -65
- package/dist/input.js +0 -59
- package/dist/link.cjs +0 -630
- package/dist/link.js +0 -606
- package/dist/menu.cjs +0 -305
- package/dist/menu.js +0 -269
- package/dist/pin-input.cjs +0 -182
- package/dist/pin-input.js +0 -160
- package/dist/popover.cjs +0 -327
- package/dist/popover.js +0 -294
- package/dist/progress-circle.cjs +0 -152
- package/dist/progress-circle.js +0 -128
- package/dist/progress.cjs +0 -117
- package/dist/progress.js +0 -94
- package/dist/provider.cjs +0 -62
- package/dist/provider.js +0 -40
- package/dist/radio.cjs +0 -177
- package/dist/radio.js +0 -153
- package/dist/rating.cjs +0 -80
- package/dist/rating.js +0 -58
- package/dist/select.cjs +0 -791
- package/dist/select.js +0 -757
- package/dist/separator.cjs +0 -57
- package/dist/separator.js +0 -51
- package/dist/skeleton.cjs +0 -370
- package/dist/skeleton.js +0 -346
- package/dist/slider.cjs +0 -138
- package/dist/slider.js +0 -115
- package/dist/switch.cjs +0 -163
- package/dist/switch.js +0 -140
- package/dist/table.cjs +0 -1044
- package/dist/table.js +0 -1013
- package/dist/tabs.cjs +0 -240
- package/dist/tabs.js +0 -213
- package/dist/tag.cjs +0 -651
- package/dist/tag.js +0 -628
- package/dist/textarea.cjs +0 -65
- package/dist/textarea.js +0 -59
- package/dist/toaster.cjs +0 -99
- package/dist/toaster.js +0 -96
- package/dist/tooltip.cjs +0 -171
- package/dist/tooltip.js +0 -148
- package/dist/utils.cjs +0 -11
- package/dist/utils.js +0 -9
- package/src/accordion.tsx +0 -285
- package/src/alert.tsx +0 -221
- package/src/avatar.tsx +0 -174
- package/src/badge.tsx +0 -158
- package/src/button.tsx +0 -411
- package/src/checkbox.tsx +0 -307
- package/src/close-button.tsx +0 -51
- package/src/collapsible.tsx +0 -126
- package/src/color-mode.tsx +0 -125
- package/src/dialog.tsx +0 -356
- package/src/drawer.tsx +0 -186
- package/src/empty-state.tsx +0 -97
- package/src/field.tsx +0 -202
- package/src/heading.tsx +0 -55
- package/src/icon-button.tsx +0 -192
- package/src/image.tsx +0 -280
- package/src/index.ts +0 -192
- package/src/input-group.tsx +0 -159
- package/src/input.tsx +0 -60
- package/src/link.tsx +0 -326
- package/src/menu.tsx +0 -471
- package/src/pin-input.tsx +0 -187
- package/src/popover.tsx +0 -400
- package/src/progress-circle.tsx +0 -180
- package/src/progress.tsx +0 -109
- package/src/provider.tsx +0 -12
- package/src/radio.tsx +0 -175
- package/src/rating.tsx +0 -79
- package/src/select.tsx +0 -696
- package/src/separator.tsx +0 -59
- package/src/skeleton.tsx +0 -302
- package/src/slider.tsx +0 -152
- package/src/switch.tsx +0 -158
- package/src/table.tsx +0 -621
- package/src/tabs.tsx +0 -354
- package/src/tag.tsx +0 -159
- package/src/textarea.tsx +0 -60
- package/src/toaster.tsx +0 -117
- package/src/tokens.css +0 -438
- package/src/tooltip.tsx +0 -184
- package/src/utils/cn.ts +0 -7
- package/src/utils.ts +0 -6
- package/tokens.css +0 -438
package/dist/input-group.cjs
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var esToolkit = require('es-toolkit');
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var clsx = require('clsx');
|
|
7
|
-
var tailwindMerge = require('tailwind-merge');
|
|
8
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
-
|
|
10
|
-
function _interopNamespace(e) {
|
|
11
|
-
if (e && e.__esModule) return e;
|
|
12
|
-
var n = Object.create(null);
|
|
13
|
-
if (e) {
|
|
14
|
-
Object.keys(e).forEach(function (k) {
|
|
15
|
-
if (k !== 'default') {
|
|
16
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () { return e[k]; }
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
n.default = e;
|
|
25
|
-
return Object.freeze(n);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
29
|
-
|
|
30
|
-
// src/input-group.tsx
|
|
31
|
-
function cn(...inputs) {
|
|
32
|
-
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
|
-
}
|
|
34
|
-
function getComponentDisplayName(type) {
|
|
35
|
-
if (typeof type === "string") return void 0;
|
|
36
|
-
if ("displayName" in type) return type.displayName;
|
|
37
|
-
return void 0;
|
|
38
|
-
}
|
|
39
|
-
var InputGroup = React__namespace.forwardRef(
|
|
40
|
-
function InputGroup2(props, ref) {
|
|
41
|
-
const {
|
|
42
|
-
startElement,
|
|
43
|
-
startElementProps,
|
|
44
|
-
endElement,
|
|
45
|
-
endElementProps,
|
|
46
|
-
children,
|
|
47
|
-
startOffset,
|
|
48
|
-
endOffset,
|
|
49
|
-
className,
|
|
50
|
-
...rest
|
|
51
|
-
} = props;
|
|
52
|
-
const startElementRef = React__namespace.useRef(null);
|
|
53
|
-
const endElementRef = React__namespace.useRef(null);
|
|
54
|
-
const groupRef = React__namespace.useRef(null);
|
|
55
|
-
const [inlinePaddings, setInlinePaddings] = React__namespace.useState();
|
|
56
|
-
const calculateInlinePaddings = React__namespace.useCallback(() => {
|
|
57
|
-
const startWidth = startElementRef.current?.getBoundingClientRect().width ?? 0;
|
|
58
|
-
const endWidth = endElementRef.current?.getBoundingClientRect().width ?? 0;
|
|
59
|
-
setInlinePaddings({
|
|
60
|
-
start: startWidth,
|
|
61
|
-
end: endWidth
|
|
62
|
-
});
|
|
63
|
-
}, []);
|
|
64
|
-
React__namespace.useEffect(() => {
|
|
65
|
-
if (!groupRef.current) return;
|
|
66
|
-
let timeoutId;
|
|
67
|
-
const intersectionObserver = new IntersectionObserver(
|
|
68
|
-
(entries) => {
|
|
69
|
-
const entry = entries[0];
|
|
70
|
-
if (entry && entry.isIntersecting) {
|
|
71
|
-
timeoutId = setTimeout(calculateInlinePaddings, 50);
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
{ threshold: 0.01 }
|
|
75
|
-
);
|
|
76
|
-
intersectionObserver.observe(groupRef.current);
|
|
77
|
-
return () => {
|
|
78
|
-
intersectionObserver.disconnect();
|
|
79
|
-
if (timeoutId) {
|
|
80
|
-
clearTimeout(timeoutId);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}, [calculateInlinePaddings]);
|
|
84
|
-
React__namespace.useEffect(() => {
|
|
85
|
-
calculateInlinePaddings();
|
|
86
|
-
const resizeHandler = esToolkit.debounce(calculateInlinePaddings, 300);
|
|
87
|
-
const resizeObserver = new ResizeObserver(resizeHandler);
|
|
88
|
-
if (groupRef.current) {
|
|
89
|
-
resizeObserver.observe(groupRef.current);
|
|
90
|
-
}
|
|
91
|
-
return function cleanup() {
|
|
92
|
-
resizeObserver.disconnect();
|
|
93
|
-
};
|
|
94
|
-
}, [calculateInlinePaddings]);
|
|
95
|
-
const combinedRef = React__namespace.useCallback((node) => {
|
|
96
|
-
groupRef.current = node;
|
|
97
|
-
if (typeof ref === "function") {
|
|
98
|
-
ref(node);
|
|
99
|
-
} else if (ref) {
|
|
100
|
-
ref.current = node;
|
|
101
|
-
}
|
|
102
|
-
}, [ref]);
|
|
103
|
-
const { className: startClassName, ...startRest } = startElementProps ?? {};
|
|
104
|
-
const { className: endClassName, ...endRest } = endElementProps ?? {};
|
|
105
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
106
|
-
"div",
|
|
107
|
-
{
|
|
108
|
-
ref: combinedRef,
|
|
109
|
-
className: cn("relative flex w-full items-center", className),
|
|
110
|
-
...rest,
|
|
111
|
-
children: [
|
|
112
|
-
startElement && /* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
-
"div",
|
|
114
|
-
{
|
|
115
|
-
ref: startElementRef,
|
|
116
|
-
className: cn(
|
|
117
|
-
"pointer-events-none absolute inset-y-0 left-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
|
|
118
|
-
startClassName
|
|
119
|
-
),
|
|
120
|
-
...startRest,
|
|
121
|
-
children: startElement
|
|
122
|
-
}
|
|
123
|
-
),
|
|
124
|
-
React__namespace.Children.map(children, (child) => {
|
|
125
|
-
if (getComponentDisplayName(child.type) !== "FieldInput") {
|
|
126
|
-
return child;
|
|
127
|
-
}
|
|
128
|
-
return React__namespace.cloneElement(child, {
|
|
129
|
-
...startElement && { ps: startOffset ?? (inlinePaddings?.start ? `${inlinePaddings.start}px` : void 0) },
|
|
130
|
-
...endElement && { pe: endOffset ?? (inlinePaddings?.end ? `${inlinePaddings.end}px` : void 0) },
|
|
131
|
-
// hide input value and placeholder for the first render
|
|
132
|
-
value: inlinePaddings ? child.props.value : void 0,
|
|
133
|
-
placeholder: inlinePaddings ? child.props.placeholder : void 0
|
|
134
|
-
});
|
|
135
|
-
}),
|
|
136
|
-
endElement && /* @__PURE__ */ jsxRuntime.jsx(
|
|
137
|
-
"div",
|
|
138
|
-
{
|
|
139
|
-
ref: endElementRef,
|
|
140
|
-
className: cn(
|
|
141
|
-
"pointer-events-none absolute inset-y-0 right-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
|
|
142
|
-
endClassName
|
|
143
|
-
),
|
|
144
|
-
...endRest,
|
|
145
|
-
children: endElement
|
|
146
|
-
}
|
|
147
|
-
)
|
|
148
|
-
]
|
|
149
|
-
}
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
);
|
|
153
|
-
InputGroup.displayName = "InputGroup";
|
|
154
|
-
|
|
155
|
-
exports.InputGroup = InputGroup;
|
package/dist/input-group.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { debounce } from 'es-toolkit';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { clsx } from 'clsx';
|
|
5
|
-
import { twMerge } from 'tailwind-merge';
|
|
6
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
// src/input-group.tsx
|
|
9
|
-
function cn(...inputs) {
|
|
10
|
-
return twMerge(clsx(inputs));
|
|
11
|
-
}
|
|
12
|
-
function getComponentDisplayName(type) {
|
|
13
|
-
if (typeof type === "string") return void 0;
|
|
14
|
-
if ("displayName" in type) return type.displayName;
|
|
15
|
-
return void 0;
|
|
16
|
-
}
|
|
17
|
-
var InputGroup = React.forwardRef(
|
|
18
|
-
function InputGroup2(props, ref) {
|
|
19
|
-
const {
|
|
20
|
-
startElement,
|
|
21
|
-
startElementProps,
|
|
22
|
-
endElement,
|
|
23
|
-
endElementProps,
|
|
24
|
-
children,
|
|
25
|
-
startOffset,
|
|
26
|
-
endOffset,
|
|
27
|
-
className,
|
|
28
|
-
...rest
|
|
29
|
-
} = props;
|
|
30
|
-
const startElementRef = React.useRef(null);
|
|
31
|
-
const endElementRef = React.useRef(null);
|
|
32
|
-
const groupRef = React.useRef(null);
|
|
33
|
-
const [inlinePaddings, setInlinePaddings] = React.useState();
|
|
34
|
-
const calculateInlinePaddings = React.useCallback(() => {
|
|
35
|
-
const startWidth = startElementRef.current?.getBoundingClientRect().width ?? 0;
|
|
36
|
-
const endWidth = endElementRef.current?.getBoundingClientRect().width ?? 0;
|
|
37
|
-
setInlinePaddings({
|
|
38
|
-
start: startWidth,
|
|
39
|
-
end: endWidth
|
|
40
|
-
});
|
|
41
|
-
}, []);
|
|
42
|
-
React.useEffect(() => {
|
|
43
|
-
if (!groupRef.current) return;
|
|
44
|
-
let timeoutId;
|
|
45
|
-
const intersectionObserver = new IntersectionObserver(
|
|
46
|
-
(entries) => {
|
|
47
|
-
const entry = entries[0];
|
|
48
|
-
if (entry && entry.isIntersecting) {
|
|
49
|
-
timeoutId = setTimeout(calculateInlinePaddings, 50);
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
{ threshold: 0.01 }
|
|
53
|
-
);
|
|
54
|
-
intersectionObserver.observe(groupRef.current);
|
|
55
|
-
return () => {
|
|
56
|
-
intersectionObserver.disconnect();
|
|
57
|
-
if (timeoutId) {
|
|
58
|
-
clearTimeout(timeoutId);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
}, [calculateInlinePaddings]);
|
|
62
|
-
React.useEffect(() => {
|
|
63
|
-
calculateInlinePaddings();
|
|
64
|
-
const resizeHandler = debounce(calculateInlinePaddings, 300);
|
|
65
|
-
const resizeObserver = new ResizeObserver(resizeHandler);
|
|
66
|
-
if (groupRef.current) {
|
|
67
|
-
resizeObserver.observe(groupRef.current);
|
|
68
|
-
}
|
|
69
|
-
return function cleanup() {
|
|
70
|
-
resizeObserver.disconnect();
|
|
71
|
-
};
|
|
72
|
-
}, [calculateInlinePaddings]);
|
|
73
|
-
const combinedRef = React.useCallback((node) => {
|
|
74
|
-
groupRef.current = node;
|
|
75
|
-
if (typeof ref === "function") {
|
|
76
|
-
ref(node);
|
|
77
|
-
} else if (ref) {
|
|
78
|
-
ref.current = node;
|
|
79
|
-
}
|
|
80
|
-
}, [ref]);
|
|
81
|
-
const { className: startClassName, ...startRest } = startElementProps ?? {};
|
|
82
|
-
const { className: endClassName, ...endRest } = endElementProps ?? {};
|
|
83
|
-
return /* @__PURE__ */ jsxs(
|
|
84
|
-
"div",
|
|
85
|
-
{
|
|
86
|
-
ref: combinedRef,
|
|
87
|
-
className: cn("relative flex w-full items-center", className),
|
|
88
|
-
...rest,
|
|
89
|
-
children: [
|
|
90
|
-
startElement && /* @__PURE__ */ jsx(
|
|
91
|
-
"div",
|
|
92
|
-
{
|
|
93
|
-
ref: startElementRef,
|
|
94
|
-
className: cn(
|
|
95
|
-
"pointer-events-none absolute inset-y-0 left-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
|
|
96
|
-
startClassName
|
|
97
|
-
),
|
|
98
|
-
...startRest,
|
|
99
|
-
children: startElement
|
|
100
|
-
}
|
|
101
|
-
),
|
|
102
|
-
React.Children.map(children, (child) => {
|
|
103
|
-
if (getComponentDisplayName(child.type) !== "FieldInput") {
|
|
104
|
-
return child;
|
|
105
|
-
}
|
|
106
|
-
return React.cloneElement(child, {
|
|
107
|
-
...startElement && { ps: startOffset ?? (inlinePaddings?.start ? `${inlinePaddings.start}px` : void 0) },
|
|
108
|
-
...endElement && { pe: endOffset ?? (inlinePaddings?.end ? `${inlinePaddings.end}px` : void 0) },
|
|
109
|
-
// hide input value and placeholder for the first render
|
|
110
|
-
value: inlinePaddings ? child.props.value : void 0,
|
|
111
|
-
placeholder: inlinePaddings ? child.props.placeholder : void 0
|
|
112
|
-
});
|
|
113
|
-
}),
|
|
114
|
-
endElement && /* @__PURE__ */ jsx(
|
|
115
|
-
"div",
|
|
116
|
-
{
|
|
117
|
-
ref: endElementRef,
|
|
118
|
-
className: cn(
|
|
119
|
-
"pointer-events-none absolute inset-y-0 right-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
|
|
120
|
-
endClassName
|
|
121
|
-
),
|
|
122
|
-
...endRest,
|
|
123
|
-
children: endElement
|
|
124
|
-
}
|
|
125
|
-
)
|
|
126
|
-
]
|
|
127
|
-
}
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
);
|
|
131
|
-
InputGroup.displayName = "InputGroup";
|
|
132
|
-
|
|
133
|
-
export { InputGroup };
|
package/dist/input.cjs
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var classVarianceAuthority = require('class-variance-authority');
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var clsx = require('clsx');
|
|
7
|
-
var tailwindMerge = require('tailwind-merge');
|
|
8
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
-
|
|
10
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
-
|
|
12
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
13
|
-
|
|
14
|
-
// src/input.tsx
|
|
15
|
-
function cn(...inputs) {
|
|
16
|
-
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
17
|
-
}
|
|
18
|
-
var inputVariants = classVarianceAuthority.cva(
|
|
19
|
-
[
|
|
20
|
-
"w-full appearance-none outline-none transition-colors",
|
|
21
|
-
"bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
|
|
22
|
-
"placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
|
|
23
|
-
"hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
|
|
24
|
-
"focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
|
|
25
|
-
"focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
|
|
26
|
-
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
27
|
-
"read-only:opacity-70",
|
|
28
|
-
"data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
|
|
29
|
-
].join(" "),
|
|
30
|
-
{
|
|
31
|
-
variants: {
|
|
32
|
-
size: {
|
|
33
|
-
xs: "h-6 px-2 text-xs rounded",
|
|
34
|
-
sm: "h-8 px-3 text-sm rounded-md",
|
|
35
|
-
md: "h-10 px-4 text-base rounded-md",
|
|
36
|
-
lg: "h-12 px-4 text-lg rounded-lg",
|
|
37
|
-
"2xl": "h-14 px-4 text-xl rounded-lg"
|
|
38
|
-
},
|
|
39
|
-
variant: {
|
|
40
|
-
outline: "border border-solid",
|
|
41
|
-
filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
|
|
42
|
-
unstyled: "border-0 bg-transparent p-0 h-auto"
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
defaultVariants: {
|
|
46
|
-
size: "md",
|
|
47
|
-
variant: "outline"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
);
|
|
51
|
-
var Input = React__default.default.forwardRef(
|
|
52
|
-
({ size, variant, className, ...rest }, ref) => {
|
|
53
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
-
"input",
|
|
55
|
-
{
|
|
56
|
-
ref,
|
|
57
|
-
className: cn(inputVariants({ size, variant }), className),
|
|
58
|
-
...rest
|
|
59
|
-
}
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
);
|
|
63
|
-
Input.displayName = "Input";
|
|
64
|
-
|
|
65
|
-
exports.Input = Input;
|
package/dist/input.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { cva } from 'class-variance-authority';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { clsx } from 'clsx';
|
|
5
|
-
import { twMerge } from 'tailwind-merge';
|
|
6
|
-
import { jsx } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
// src/input.tsx
|
|
9
|
-
function cn(...inputs) {
|
|
10
|
-
return twMerge(clsx(inputs));
|
|
11
|
-
}
|
|
12
|
-
var inputVariants = cva(
|
|
13
|
-
[
|
|
14
|
-
"w-full appearance-none outline-none transition-colors",
|
|
15
|
-
"bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
|
|
16
|
-
"placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
|
|
17
|
-
"hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
|
|
18
|
-
"focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
|
|
19
|
-
"focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
|
|
20
|
-
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
21
|
-
"read-only:opacity-70",
|
|
22
|
-
"data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
|
|
23
|
-
].join(" "),
|
|
24
|
-
{
|
|
25
|
-
variants: {
|
|
26
|
-
size: {
|
|
27
|
-
xs: "h-6 px-2 text-xs rounded",
|
|
28
|
-
sm: "h-8 px-3 text-sm rounded-md",
|
|
29
|
-
md: "h-10 px-4 text-base rounded-md",
|
|
30
|
-
lg: "h-12 px-4 text-lg rounded-lg",
|
|
31
|
-
"2xl": "h-14 px-4 text-xl rounded-lg"
|
|
32
|
-
},
|
|
33
|
-
variant: {
|
|
34
|
-
outline: "border border-solid",
|
|
35
|
-
filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
|
|
36
|
-
unstyled: "border-0 bg-transparent p-0 h-auto"
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
defaultVariants: {
|
|
40
|
-
size: "md",
|
|
41
|
-
variant: "outline"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
var Input = React.forwardRef(
|
|
46
|
-
({ size, variant, className, ...rest }, ref) => {
|
|
47
|
-
return /* @__PURE__ */ jsx(
|
|
48
|
-
"input",
|
|
49
|
-
{
|
|
50
|
-
ref,
|
|
51
|
-
className: cn(inputVariants({ size, variant }), className),
|
|
52
|
-
...rest
|
|
53
|
-
}
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
);
|
|
57
|
-
Input.displayName = "Input";
|
|
58
|
-
|
|
59
|
-
export { Input };
|