@zentauri-ui/zentauri-components 1.0.0 → 1.1.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.
- package/README.md +28 -23
- package/dist/ui/avatar.d.mts +59 -0
- package/dist/ui/avatar.d.ts +59 -0
- package/dist/ui/avatar.js +221 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/avatar.mjs +211 -0
- package/dist/ui/avatar.mjs.map +1 -0
- package/dist/ui/breadcrumb.d.mts +71 -0
- package/dist/ui/breadcrumb.d.ts +71 -0
- package/dist/ui/breadcrumb.js +174 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/breadcrumb.mjs +161 -0
- package/dist/ui/breadcrumb.mjs.map +1 -0
- package/dist/ui/file-upload.d.mts +32 -0
- package/dist/ui/file-upload.d.ts +32 -0
- package/dist/ui/file-upload.js +142 -0
- package/dist/ui/file-upload.js.map +1 -0
- package/dist/ui/file-upload.mjs +139 -0
- package/dist/ui/file-upload.mjs.map +1 -0
- package/dist/ui/slider.d.mts +83 -0
- package/dist/ui/slider.d.ts +83 -0
- package/dist/ui/slider.js +521 -0
- package/dist/ui/slider.js.map +1 -0
- package/dist/ui/slider.mjs +511 -0
- package/dist/ui/slider.mjs.map +1 -0
- package/dist/ui/stepper.d.mts +64 -0
- package/dist/ui/stepper.d.ts +64 -0
- package/dist/ui/stepper.js +207 -0
- package/dist/ui/stepper.js.map +1 -0
- package/dist/ui/stepper.mjs +198 -0
- package/dist/ui/stepper.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkWZ2GOU2J_js = require('../chunk-WZ2GOU2J.js');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
var fileUploadVariants = classVarianceAuthority.cva(
|
|
10
|
+
"relative flex cursor-pointer flex-col items-center justify-center gap-2 rounded-2xl border border-dashed px-6 py-10 text-center text-sm transition-colors outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950",
|
|
11
|
+
{
|
|
12
|
+
variants: {
|
|
13
|
+
appearance: {
|
|
14
|
+
idle: "border-white/15 bg-white/5 text-slate-300 hover:border-white/25 hover:bg-white/[0.07]",
|
|
15
|
+
active: "border-violet-400/70 bg-violet-500/10 text-white",
|
|
16
|
+
disabled: "cursor-not-allowed opacity-50",
|
|
17
|
+
error: "border-red-400/70 bg-red-500/10 text-red-400 hover:border-red-400/80 hover:bg-red-500/15",
|
|
18
|
+
success: "border-green-400/70 bg-green-500/10 text-green-400 hover:border-green-400/80 hover:bg-green-500/15",
|
|
19
|
+
warning: "border-yellow-400/70 bg-yellow-500/10 text-yellow-400 hover:border-yellow-400/80 hover:bg-yellow-500/15",
|
|
20
|
+
info: "border-blue-400/70 bg-blue-500/10 text-blue-400 hover:border-blue-400/80 hover:bg-blue-500/15",
|
|
21
|
+
neutral: "border-gray-400/70 bg-gray-500/10 text-gray-400 hover:border-gray-400/80 hover:bg-gray-500/15",
|
|
22
|
+
purple: "border-purple-400/70 bg-purple-500/10 text-purple-400 hover:border-purple-400/80 hover:bg-purple-500/15",
|
|
23
|
+
indigo: "border-indigo-400/70 bg-indigo-500/10 text-indigo-400 hover:border-indigo-400/80 hover:bg-indigo-500/15",
|
|
24
|
+
emerald: "border-emerald-400/70 bg-emerald-500/10 text-emerald-400 hover:border-emerald-400/80 hover:bg-emerald-500/15",
|
|
25
|
+
amber: "border-amber-400/70 bg-amber-500/10 text-amber-400 hover:border-amber-400/80 hover:bg-amber-500/15",
|
|
26
|
+
pink: "border-pink-400/70 bg-pink-500/10 text-pink-400 hover:border-pink-400/80 hover:bg-pink-500/15",
|
|
27
|
+
orange: "border-orange-400/70 bg-orange-500/10 text-orange-400 hover:border-orange-400/80 hover:bg-orange-500/15",
|
|
28
|
+
teal: "border-teal-400/70 bg-teal-500/10 text-teal-400 hover:border-teal-400/80 hover:bg-teal-500/15"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
defaultVariants: {
|
|
32
|
+
appearance: "idle"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
function FileUpload({
|
|
37
|
+
className,
|
|
38
|
+
onFiles,
|
|
39
|
+
accept,
|
|
40
|
+
multiple = false,
|
|
41
|
+
disabled = false,
|
|
42
|
+
name,
|
|
43
|
+
children,
|
|
44
|
+
onChange,
|
|
45
|
+
ref,
|
|
46
|
+
appearance = "idle",
|
|
47
|
+
...rest
|
|
48
|
+
}) {
|
|
49
|
+
const inputId = react.useId();
|
|
50
|
+
const [dragOver, setDragOver] = react.useState(false);
|
|
51
|
+
const emitFiles = react.useCallback(
|
|
52
|
+
(fileList) => {
|
|
53
|
+
if (!fileList?.length) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
onFiles?.(Array.from(fileList));
|
|
57
|
+
},
|
|
58
|
+
[onFiles]
|
|
59
|
+
);
|
|
60
|
+
const handleChange = react.useCallback(
|
|
61
|
+
(event) => {
|
|
62
|
+
onChange?.(event);
|
|
63
|
+
emitFiles(event.target.files);
|
|
64
|
+
event.target.value = "";
|
|
65
|
+
},
|
|
66
|
+
[emitFiles, onChange]
|
|
67
|
+
);
|
|
68
|
+
const handleDrop = react.useCallback(
|
|
69
|
+
(event) => {
|
|
70
|
+
event.preventDefault();
|
|
71
|
+
setDragOver(false);
|
|
72
|
+
if (disabled) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
emitFiles(event.dataTransfer.files);
|
|
76
|
+
},
|
|
77
|
+
[disabled, emitFiles]
|
|
78
|
+
);
|
|
79
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
ref,
|
|
83
|
+
"data-slot": "file-upload",
|
|
84
|
+
className: chunkWZ2GOU2J_js.cn(fileUploadVariants({ appearance }), className),
|
|
85
|
+
...rest,
|
|
86
|
+
children: [
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
+
"input",
|
|
89
|
+
{
|
|
90
|
+
id: inputId,
|
|
91
|
+
name,
|
|
92
|
+
type: "file",
|
|
93
|
+
className: "sr-only",
|
|
94
|
+
accept,
|
|
95
|
+
multiple,
|
|
96
|
+
disabled,
|
|
97
|
+
onChange: handleChange,
|
|
98
|
+
"aria-hidden": true,
|
|
99
|
+
tabIndex: -1
|
|
100
|
+
}
|
|
101
|
+
),
|
|
102
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
103
|
+
"label",
|
|
104
|
+
{
|
|
105
|
+
htmlFor: inputId,
|
|
106
|
+
className: chunkWZ2GOU2J_js.cn(
|
|
107
|
+
"flex w-full cursor-pointer flex-col items-center gap-2",
|
|
108
|
+
disabled && "cursor-not-allowed"
|
|
109
|
+
),
|
|
110
|
+
onDragEnter: (e) => {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
if (!disabled) {
|
|
113
|
+
setDragOver(true);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
onDragOver: (e) => {
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
if (!disabled) {
|
|
119
|
+
setDragOver(true);
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
onDragLeave: () => setDragOver(false),
|
|
123
|
+
onDrop: handleDrop,
|
|
124
|
+
children: [
|
|
125
|
+
children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
126
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-semibold text-slate-100", children: "Drop files here" }),
|
|
127
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-slate-400", children: "or click to browse from your device" })
|
|
128
|
+
] }),
|
|
129
|
+
dragOver && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-slate-400", children: "Drop files here" })
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
FileUpload.displayName = "FileUpload";
|
|
138
|
+
|
|
139
|
+
exports.FileUpload = FileUpload;
|
|
140
|
+
exports.fileUploadVariants = fileUploadVariants;
|
|
141
|
+
//# sourceMappingURL=file-upload.js.map
|
|
142
|
+
//# sourceMappingURL=file-upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/file-upload/variants.ts","../../src/ui/file-upload/file-upload.tsx"],"names":["cva","useId","useState","useCallback","jsxs","cn","jsx","Fragment"],"mappings":"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","file":"file-upload.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const fileUploadVariants = cva(\n \"relative flex cursor-pointer flex-col items-center justify-center gap-2 rounded-2xl border border-dashed px-6 py-10 text-center text-sm transition-colors outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n {\n variants: {\n appearance: {\n idle: \"border-white/15 bg-white/5 text-slate-300 hover:border-white/25 hover:bg-white/[0.07]\",\n active: \"border-violet-400/70 bg-violet-500/10 text-white\",\n disabled: \"cursor-not-allowed opacity-50\",\n error: \"border-red-400/70 bg-red-500/10 text-red-400 hover:border-red-400/80 hover:bg-red-500/15\",\n success: \"border-green-400/70 bg-green-500/10 text-green-400 hover:border-green-400/80 hover:bg-green-500/15\",\n warning: \"border-yellow-400/70 bg-yellow-500/10 text-yellow-400 hover:border-yellow-400/80 hover:bg-yellow-500/15\",\n info: \"border-blue-400/70 bg-blue-500/10 text-blue-400 hover:border-blue-400/80 hover:bg-blue-500/15\",\n neutral: \"border-gray-400/70 bg-gray-500/10 text-gray-400 hover:border-gray-400/80 hover:bg-gray-500/15\",\n purple: \"border-purple-400/70 bg-purple-500/10 text-purple-400 hover:border-purple-400/80 hover:bg-purple-500/15\",\n indigo: \"border-indigo-400/70 bg-indigo-500/10 text-indigo-400 hover:border-indigo-400/80 hover:bg-indigo-500/15\",\n emerald: \"border-emerald-400/70 bg-emerald-500/10 text-emerald-400 hover:border-emerald-400/80 hover:bg-emerald-500/15\",\n amber: \"border-amber-400/70 bg-amber-500/10 text-amber-400 hover:border-amber-400/80 hover:bg-amber-500/15\",\n pink: \"border-pink-400/70 bg-pink-500/10 text-pink-400 hover:border-pink-400/80 hover:bg-pink-500/15\",\n orange: \"border-orange-400/70 bg-orange-500/10 text-orange-400 hover:border-orange-400/80 hover:bg-orange-500/15\",\n teal: \"border-teal-400/70 bg-teal-500/10 text-teal-400 hover:border-teal-400/80 hover:bg-teal-500/15\",\n },\n },\n defaultVariants: {\n appearance: \"idle\",\n },\n },\n);\n","\"use client\";\n\nimport { useCallback, useId, useState } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { FileUploadProps } from \"./types\";\nimport { fileUploadVariants } from \"./variants\";\n\nexport function FileUpload({\n className,\n onFiles,\n accept,\n multiple = false,\n disabled = false,\n name,\n children,\n onChange,\n ref,\n appearance = \"idle\",\n ...rest\n}: FileUploadProps & { ref?: React.Ref<HTMLDivElement> }) {\n const inputId = useId();\n const [dragOver, setDragOver] = useState(false);\n\n const emitFiles = useCallback(\n (fileList: FileList | null) => {\n if (!fileList?.length) {\n return;\n }\n onFiles?.(Array.from(fileList));\n },\n [onFiles],\n );\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n emitFiles(event.target.files);\n event.target.value = \"\";\n },\n [emitFiles, onChange],\n );\n\n const handleDrop = useCallback(\n (event: React.DragEvent<HTMLLabelElement>) => {\n event.preventDefault();\n setDragOver(false);\n if (disabled) {\n return;\n }\n emitFiles(event.dataTransfer.files);\n },\n [disabled, emitFiles],\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"file-upload\"\n className={cn(fileUploadVariants({ appearance }), className)}\n {...rest}\n >\n <input\n id={inputId}\n name={name}\n type=\"file\"\n className=\"sr-only\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleChange}\n aria-hidden\n tabIndex={-1}\n />\n <label\n htmlFor={inputId}\n className={cn(\n \"flex w-full cursor-pointer flex-col items-center gap-2\",\n disabled && \"cursor-not-allowed\",\n )}\n onDragEnter={(e) => {\n e.preventDefault();\n if (!disabled) {\n setDragOver(true);\n }\n }}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) {\n setDragOver(true);\n }\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={handleDrop}\n >\n {children ?? (\n <>\n <span className=\"text-base font-semibold text-slate-100\">\n Drop files here\n </span>\n <span className=\"text-xs text-slate-400\">\n or click to browse from your device\n </span>\n </>\n )}\n {\n dragOver && (\n <span className=\"text-xs text-slate-400\">\n Drop files here\n </span>\n )\n }\n </label>\n </div>\n );\n}\n\nFileUpload.displayName = \"FileUpload\";\n"]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from '../chunk-B23TPTVG.mjs';
|
|
3
|
+
import { useId, useState, useCallback } from 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var fileUploadVariants = cva(
|
|
8
|
+
"relative flex cursor-pointer flex-col items-center justify-center gap-2 rounded-2xl border border-dashed px-6 py-10 text-center text-sm transition-colors outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
appearance: {
|
|
12
|
+
idle: "border-white/15 bg-white/5 text-slate-300 hover:border-white/25 hover:bg-white/[0.07]",
|
|
13
|
+
active: "border-violet-400/70 bg-violet-500/10 text-white",
|
|
14
|
+
disabled: "cursor-not-allowed opacity-50",
|
|
15
|
+
error: "border-red-400/70 bg-red-500/10 text-red-400 hover:border-red-400/80 hover:bg-red-500/15",
|
|
16
|
+
success: "border-green-400/70 bg-green-500/10 text-green-400 hover:border-green-400/80 hover:bg-green-500/15",
|
|
17
|
+
warning: "border-yellow-400/70 bg-yellow-500/10 text-yellow-400 hover:border-yellow-400/80 hover:bg-yellow-500/15",
|
|
18
|
+
info: "border-blue-400/70 bg-blue-500/10 text-blue-400 hover:border-blue-400/80 hover:bg-blue-500/15",
|
|
19
|
+
neutral: "border-gray-400/70 bg-gray-500/10 text-gray-400 hover:border-gray-400/80 hover:bg-gray-500/15",
|
|
20
|
+
purple: "border-purple-400/70 bg-purple-500/10 text-purple-400 hover:border-purple-400/80 hover:bg-purple-500/15",
|
|
21
|
+
indigo: "border-indigo-400/70 bg-indigo-500/10 text-indigo-400 hover:border-indigo-400/80 hover:bg-indigo-500/15",
|
|
22
|
+
emerald: "border-emerald-400/70 bg-emerald-500/10 text-emerald-400 hover:border-emerald-400/80 hover:bg-emerald-500/15",
|
|
23
|
+
amber: "border-amber-400/70 bg-amber-500/10 text-amber-400 hover:border-amber-400/80 hover:bg-amber-500/15",
|
|
24
|
+
pink: "border-pink-400/70 bg-pink-500/10 text-pink-400 hover:border-pink-400/80 hover:bg-pink-500/15",
|
|
25
|
+
orange: "border-orange-400/70 bg-orange-500/10 text-orange-400 hover:border-orange-400/80 hover:bg-orange-500/15",
|
|
26
|
+
teal: "border-teal-400/70 bg-teal-500/10 text-teal-400 hover:border-teal-400/80 hover:bg-teal-500/15"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
defaultVariants: {
|
|
30
|
+
appearance: "idle"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
function FileUpload({
|
|
35
|
+
className,
|
|
36
|
+
onFiles,
|
|
37
|
+
accept,
|
|
38
|
+
multiple = false,
|
|
39
|
+
disabled = false,
|
|
40
|
+
name,
|
|
41
|
+
children,
|
|
42
|
+
onChange,
|
|
43
|
+
ref,
|
|
44
|
+
appearance = "idle",
|
|
45
|
+
...rest
|
|
46
|
+
}) {
|
|
47
|
+
const inputId = useId();
|
|
48
|
+
const [dragOver, setDragOver] = useState(false);
|
|
49
|
+
const emitFiles = useCallback(
|
|
50
|
+
(fileList) => {
|
|
51
|
+
if (!fileList?.length) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
onFiles?.(Array.from(fileList));
|
|
55
|
+
},
|
|
56
|
+
[onFiles]
|
|
57
|
+
);
|
|
58
|
+
const handleChange = useCallback(
|
|
59
|
+
(event) => {
|
|
60
|
+
onChange?.(event);
|
|
61
|
+
emitFiles(event.target.files);
|
|
62
|
+
event.target.value = "";
|
|
63
|
+
},
|
|
64
|
+
[emitFiles, onChange]
|
|
65
|
+
);
|
|
66
|
+
const handleDrop = useCallback(
|
|
67
|
+
(event) => {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
setDragOver(false);
|
|
70
|
+
if (disabled) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
emitFiles(event.dataTransfer.files);
|
|
74
|
+
},
|
|
75
|
+
[disabled, emitFiles]
|
|
76
|
+
);
|
|
77
|
+
return /* @__PURE__ */ jsxs(
|
|
78
|
+
"div",
|
|
79
|
+
{
|
|
80
|
+
ref,
|
|
81
|
+
"data-slot": "file-upload",
|
|
82
|
+
className: cn(fileUploadVariants({ appearance }), className),
|
|
83
|
+
...rest,
|
|
84
|
+
children: [
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
"input",
|
|
87
|
+
{
|
|
88
|
+
id: inputId,
|
|
89
|
+
name,
|
|
90
|
+
type: "file",
|
|
91
|
+
className: "sr-only",
|
|
92
|
+
accept,
|
|
93
|
+
multiple,
|
|
94
|
+
disabled,
|
|
95
|
+
onChange: handleChange,
|
|
96
|
+
"aria-hidden": true,
|
|
97
|
+
tabIndex: -1
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ jsxs(
|
|
101
|
+
"label",
|
|
102
|
+
{
|
|
103
|
+
htmlFor: inputId,
|
|
104
|
+
className: cn(
|
|
105
|
+
"flex w-full cursor-pointer flex-col items-center gap-2",
|
|
106
|
+
disabled && "cursor-not-allowed"
|
|
107
|
+
),
|
|
108
|
+
onDragEnter: (e) => {
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
if (!disabled) {
|
|
111
|
+
setDragOver(true);
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
onDragOver: (e) => {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
if (!disabled) {
|
|
117
|
+
setDragOver(true);
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
onDragLeave: () => setDragOver(false),
|
|
121
|
+
onDrop: handleDrop,
|
|
122
|
+
children: [
|
|
123
|
+
children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
124
|
+
/* @__PURE__ */ jsx("span", { className: "text-base font-semibold text-slate-100", children: "Drop files here" }),
|
|
125
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-slate-400", children: "or click to browse from your device" })
|
|
126
|
+
] }),
|
|
127
|
+
dragOver && /* @__PURE__ */ jsx("span", { className: "text-xs text-slate-400", children: "Drop files here" })
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
FileUpload.displayName = "FileUpload";
|
|
136
|
+
|
|
137
|
+
export { FileUpload, fileUploadVariants };
|
|
138
|
+
//# sourceMappingURL=file-upload.mjs.map
|
|
139
|
+
//# sourceMappingURL=file-upload.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/file-upload/variants.ts","../../src/ui/file-upload/file-upload.tsx"],"names":[],"mappings":"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","file":"file-upload.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const fileUploadVariants = cva(\n \"relative flex cursor-pointer flex-col items-center justify-center gap-2 rounded-2xl border border-dashed px-6 py-10 text-center text-sm transition-colors outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n {\n variants: {\n appearance: {\n idle: \"border-white/15 bg-white/5 text-slate-300 hover:border-white/25 hover:bg-white/[0.07]\",\n active: \"border-violet-400/70 bg-violet-500/10 text-white\",\n disabled: \"cursor-not-allowed opacity-50\",\n error: \"border-red-400/70 bg-red-500/10 text-red-400 hover:border-red-400/80 hover:bg-red-500/15\",\n success: \"border-green-400/70 bg-green-500/10 text-green-400 hover:border-green-400/80 hover:bg-green-500/15\",\n warning: \"border-yellow-400/70 bg-yellow-500/10 text-yellow-400 hover:border-yellow-400/80 hover:bg-yellow-500/15\",\n info: \"border-blue-400/70 bg-blue-500/10 text-blue-400 hover:border-blue-400/80 hover:bg-blue-500/15\",\n neutral: \"border-gray-400/70 bg-gray-500/10 text-gray-400 hover:border-gray-400/80 hover:bg-gray-500/15\",\n purple: \"border-purple-400/70 bg-purple-500/10 text-purple-400 hover:border-purple-400/80 hover:bg-purple-500/15\",\n indigo: \"border-indigo-400/70 bg-indigo-500/10 text-indigo-400 hover:border-indigo-400/80 hover:bg-indigo-500/15\",\n emerald: \"border-emerald-400/70 bg-emerald-500/10 text-emerald-400 hover:border-emerald-400/80 hover:bg-emerald-500/15\",\n amber: \"border-amber-400/70 bg-amber-500/10 text-amber-400 hover:border-amber-400/80 hover:bg-amber-500/15\",\n pink: \"border-pink-400/70 bg-pink-500/10 text-pink-400 hover:border-pink-400/80 hover:bg-pink-500/15\",\n orange: \"border-orange-400/70 bg-orange-500/10 text-orange-400 hover:border-orange-400/80 hover:bg-orange-500/15\",\n teal: \"border-teal-400/70 bg-teal-500/10 text-teal-400 hover:border-teal-400/80 hover:bg-teal-500/15\",\n },\n },\n defaultVariants: {\n appearance: \"idle\",\n },\n },\n);\n","\"use client\";\n\nimport { useCallback, useId, useState } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { FileUploadProps } from \"./types\";\nimport { fileUploadVariants } from \"./variants\";\n\nexport function FileUpload({\n className,\n onFiles,\n accept,\n multiple = false,\n disabled = false,\n name,\n children,\n onChange,\n ref,\n appearance = \"idle\",\n ...rest\n}: FileUploadProps & { ref?: React.Ref<HTMLDivElement> }) {\n const inputId = useId();\n const [dragOver, setDragOver] = useState(false);\n\n const emitFiles = useCallback(\n (fileList: FileList | null) => {\n if (!fileList?.length) {\n return;\n }\n onFiles?.(Array.from(fileList));\n },\n [onFiles],\n );\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n emitFiles(event.target.files);\n event.target.value = \"\";\n },\n [emitFiles, onChange],\n );\n\n const handleDrop = useCallback(\n (event: React.DragEvent<HTMLLabelElement>) => {\n event.preventDefault();\n setDragOver(false);\n if (disabled) {\n return;\n }\n emitFiles(event.dataTransfer.files);\n },\n [disabled, emitFiles],\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"file-upload\"\n className={cn(fileUploadVariants({ appearance }), className)}\n {...rest}\n >\n <input\n id={inputId}\n name={name}\n type=\"file\"\n className=\"sr-only\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleChange}\n aria-hidden\n tabIndex={-1}\n />\n <label\n htmlFor={inputId}\n className={cn(\n \"flex w-full cursor-pointer flex-col items-center gap-2\",\n disabled && \"cursor-not-allowed\",\n )}\n onDragEnter={(e) => {\n e.preventDefault();\n if (!disabled) {\n setDragOver(true);\n }\n }}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) {\n setDragOver(true);\n }\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={handleDrop}\n >\n {children ?? (\n <>\n <span className=\"text-base font-semibold text-slate-100\">\n Drop files here\n </span>\n <span className=\"text-xs text-slate-400\">\n or click to browse from your device\n </span>\n </>\n )}\n {\n dragOver && (\n <span className=\"text-xs text-slate-400\">\n Drop files here\n </span>\n )\n }\n </label>\n </div>\n );\n}\n\nFileUpload.displayName = \"FileUpload\";\n"]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ComponentPropsWithoutRef, ReactNode, Ref } from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
|
+
|
|
6
|
+
declare const sliderRootVariants: (props?: ({
|
|
7
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
declare const sliderTrackVariants: (props?: ({
|
|
10
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
11
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
|
+
declare const sliderRangeVariants: (props?: ({
|
|
13
|
+
appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "amber" | "gray" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
14
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
15
|
+
declare const sliderThumbVariants: (props?: ({
|
|
16
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
17
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
18
|
+
|
|
19
|
+
type SliderRootVariantProps = VariantProps<typeof sliderRootVariants>;
|
|
20
|
+
type SliderThumbVariantProps = VariantProps<typeof sliderThumbVariants>;
|
|
21
|
+
type SliderProps = SliderRootVariantProps & {
|
|
22
|
+
min?: number;
|
|
23
|
+
max?: number;
|
|
24
|
+
step?: number;
|
|
25
|
+
value?: number;
|
|
26
|
+
defaultValue?: number;
|
|
27
|
+
onValueChange?: (value: number) => void;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
appearance?: VariantProps<typeof sliderRangeVariants>["appearance"];
|
|
30
|
+
/** Label for the slider group (accessibility). */
|
|
31
|
+
"aria-label"?: string;
|
|
32
|
+
/** Optional visible label id */
|
|
33
|
+
"aria-labelledby"?: string;
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
} & Omit<ComponentPropsWithoutRef<"div">, "children" | "defaultValue">;
|
|
36
|
+
type SliderTrackProps = ComponentPropsWithoutRef<"div"> & VariantProps<typeof sliderTrackVariants>;
|
|
37
|
+
type SliderRangeProps = ComponentPropsWithoutRef<"div"> & VariantProps<typeof sliderRangeVariants>;
|
|
38
|
+
type SliderThumbProps = SliderThumbVariantProps & ComponentPropsWithoutRef<"div">;
|
|
39
|
+
type RangeSliderProps = SliderRootVariantProps & {
|
|
40
|
+
min?: number;
|
|
41
|
+
max?: number;
|
|
42
|
+
step?: number;
|
|
43
|
+
value?: [number, number];
|
|
44
|
+
defaultValue?: [number, number];
|
|
45
|
+
onValueChange?: (value: [number, number]) => void;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
appearance?: VariantProps<typeof sliderRangeVariants>["appearance"];
|
|
48
|
+
"aria-label"?: string;
|
|
49
|
+
"aria-labelledby"?: string;
|
|
50
|
+
} & Omit<ComponentPropsWithoutRef<"div">, "children" | "defaultValue">;
|
|
51
|
+
|
|
52
|
+
declare function Slider({ className, size, min, max, step, value: valueProp, defaultValue, onValueChange, disabled, appearance, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children, ref, ...rest }: SliderProps & {
|
|
53
|
+
ref?: Ref<HTMLDivElement>;
|
|
54
|
+
}): react_jsx_runtime.JSX.Element;
|
|
55
|
+
declare namespace Slider {
|
|
56
|
+
var displayName: string;
|
|
57
|
+
}
|
|
58
|
+
declare function SliderTrack({ className, ref: refProp, ...rest }: SliderTrackProps & {
|
|
59
|
+
ref?: Ref<HTMLDivElement>;
|
|
60
|
+
}): react_jsx_runtime.JSX.Element;
|
|
61
|
+
declare namespace SliderTrack {
|
|
62
|
+
var displayName: string;
|
|
63
|
+
}
|
|
64
|
+
declare function SliderRange({ className, ref, ...rest }: SliderRangeProps & {
|
|
65
|
+
ref?: Ref<HTMLDivElement>;
|
|
66
|
+
}): react_jsx_runtime.JSX.Element;
|
|
67
|
+
declare namespace SliderRange {
|
|
68
|
+
var displayName: string;
|
|
69
|
+
}
|
|
70
|
+
declare function SliderThumb({ className, ref: refProp, ...rest }: SliderThumbProps & {
|
|
71
|
+
ref?: Ref<HTMLDivElement>;
|
|
72
|
+
}): react_jsx_runtime.JSX.Element;
|
|
73
|
+
declare namespace SliderThumb {
|
|
74
|
+
var displayName: string;
|
|
75
|
+
}
|
|
76
|
+
declare function RangeSlider({ className, size, min, max, step, value: valueProp, defaultValue, onValueChange, disabled, appearance, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ref, ...rest }: RangeSliderProps & {
|
|
77
|
+
ref?: Ref<HTMLDivElement>;
|
|
78
|
+
}): react_jsx_runtime.JSX.Element;
|
|
79
|
+
declare namespace RangeSlider {
|
|
80
|
+
var displayName: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export { RangeSlider, type RangeSliderProps, Slider, type SliderProps, SliderRange, type SliderRangeProps, SliderThumb, type SliderThumbProps, SliderTrack, type SliderTrackProps, sliderRangeVariants, sliderRootVariants, sliderThumbVariants, sliderTrackVariants };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ComponentPropsWithoutRef, ReactNode, Ref } from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
|
+
|
|
6
|
+
declare const sliderRootVariants: (props?: ({
|
|
7
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
declare const sliderTrackVariants: (props?: ({
|
|
10
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
11
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
|
+
declare const sliderRangeVariants: (props?: ({
|
|
13
|
+
appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "amber" | "gray" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
14
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
15
|
+
declare const sliderThumbVariants: (props?: ({
|
|
16
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
17
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
18
|
+
|
|
19
|
+
type SliderRootVariantProps = VariantProps<typeof sliderRootVariants>;
|
|
20
|
+
type SliderThumbVariantProps = VariantProps<typeof sliderThumbVariants>;
|
|
21
|
+
type SliderProps = SliderRootVariantProps & {
|
|
22
|
+
min?: number;
|
|
23
|
+
max?: number;
|
|
24
|
+
step?: number;
|
|
25
|
+
value?: number;
|
|
26
|
+
defaultValue?: number;
|
|
27
|
+
onValueChange?: (value: number) => void;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
appearance?: VariantProps<typeof sliderRangeVariants>["appearance"];
|
|
30
|
+
/** Label for the slider group (accessibility). */
|
|
31
|
+
"aria-label"?: string;
|
|
32
|
+
/** Optional visible label id */
|
|
33
|
+
"aria-labelledby"?: string;
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
} & Omit<ComponentPropsWithoutRef<"div">, "children" | "defaultValue">;
|
|
36
|
+
type SliderTrackProps = ComponentPropsWithoutRef<"div"> & VariantProps<typeof sliderTrackVariants>;
|
|
37
|
+
type SliderRangeProps = ComponentPropsWithoutRef<"div"> & VariantProps<typeof sliderRangeVariants>;
|
|
38
|
+
type SliderThumbProps = SliderThumbVariantProps & ComponentPropsWithoutRef<"div">;
|
|
39
|
+
type RangeSliderProps = SliderRootVariantProps & {
|
|
40
|
+
min?: number;
|
|
41
|
+
max?: number;
|
|
42
|
+
step?: number;
|
|
43
|
+
value?: [number, number];
|
|
44
|
+
defaultValue?: [number, number];
|
|
45
|
+
onValueChange?: (value: [number, number]) => void;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
appearance?: VariantProps<typeof sliderRangeVariants>["appearance"];
|
|
48
|
+
"aria-label"?: string;
|
|
49
|
+
"aria-labelledby"?: string;
|
|
50
|
+
} & Omit<ComponentPropsWithoutRef<"div">, "children" | "defaultValue">;
|
|
51
|
+
|
|
52
|
+
declare function Slider({ className, size, min, max, step, value: valueProp, defaultValue, onValueChange, disabled, appearance, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children, ref, ...rest }: SliderProps & {
|
|
53
|
+
ref?: Ref<HTMLDivElement>;
|
|
54
|
+
}): react_jsx_runtime.JSX.Element;
|
|
55
|
+
declare namespace Slider {
|
|
56
|
+
var displayName: string;
|
|
57
|
+
}
|
|
58
|
+
declare function SliderTrack({ className, ref: refProp, ...rest }: SliderTrackProps & {
|
|
59
|
+
ref?: Ref<HTMLDivElement>;
|
|
60
|
+
}): react_jsx_runtime.JSX.Element;
|
|
61
|
+
declare namespace SliderTrack {
|
|
62
|
+
var displayName: string;
|
|
63
|
+
}
|
|
64
|
+
declare function SliderRange({ className, ref, ...rest }: SliderRangeProps & {
|
|
65
|
+
ref?: Ref<HTMLDivElement>;
|
|
66
|
+
}): react_jsx_runtime.JSX.Element;
|
|
67
|
+
declare namespace SliderRange {
|
|
68
|
+
var displayName: string;
|
|
69
|
+
}
|
|
70
|
+
declare function SliderThumb({ className, ref: refProp, ...rest }: SliderThumbProps & {
|
|
71
|
+
ref?: Ref<HTMLDivElement>;
|
|
72
|
+
}): react_jsx_runtime.JSX.Element;
|
|
73
|
+
declare namespace SliderThumb {
|
|
74
|
+
var displayName: string;
|
|
75
|
+
}
|
|
76
|
+
declare function RangeSlider({ className, size, min, max, step, value: valueProp, defaultValue, onValueChange, disabled, appearance, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ref, ...rest }: RangeSliderProps & {
|
|
77
|
+
ref?: Ref<HTMLDivElement>;
|
|
78
|
+
}): react_jsx_runtime.JSX.Element;
|
|
79
|
+
declare namespace RangeSlider {
|
|
80
|
+
var displayName: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export { RangeSlider, type RangeSliderProps, Slider, type SliderProps, SliderRange, type SliderRangeProps, SliderThumb, type SliderThumbProps, SliderTrack, type SliderTrackProps, sliderRangeVariants, sliderRootVariants, sliderThumbVariants, sliderTrackVariants };
|