@zentauri-ui/zentauri-components 0.0.93 → 1.1.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 +77 -34
- package/dist/chunk-B23TPTVG.mjs +11 -0
- package/dist/chunk-B23TPTVG.mjs.map +1 -0
- package/dist/{chunk-BZSIXBA7.js → chunk-BITDSQMR.js} +8 -6
- package/dist/chunk-BITDSQMR.js.map +1 -0
- package/dist/{chunk-VJHD7QZH.mjs → chunk-BORK3BJO.mjs} +4 -7
- package/dist/chunk-BORK3BJO.mjs.map +1 -0
- package/dist/chunk-WZ2GOU2J.js +13 -0
- package/dist/chunk-WZ2GOU2J.js.map +1 -0
- package/dist/ui/accordion.d.mts +1 -1
- package/dist/ui/accordion.d.ts +1 -1
- package/dist/ui/accordion.js +80 -61
- package/dist/ui/accordion.js.map +1 -1
- package/dist/ui/accordion.mjs +46 -39
- package/dist/ui/accordion.mjs.map +1 -1
- package/dist/ui/alert.d.mts +1 -1
- package/dist/ui/alert.d.ts +1 -1
- package/dist/ui/alert.js +57 -46
- package/dist/ui/alert.js.map +1 -1
- package/dist/ui/alert.mjs +28 -30
- package/dist/ui/alert.mjs.map +1 -1
- 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/badge.js +20 -25
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/badge.mjs +8 -20
- package/dist/ui/badge.mjs.map +1 -1
- 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/buttons.js +19 -21
- package/dist/ui/buttons.js.map +1 -1
- package/dist/ui/buttons.mjs +8 -18
- package/dist/ui/buttons.mjs.map +1 -1
- package/dist/ui/card.js +59 -54
- package/dist/ui/card.js.map +1 -1
- package/dist/ui/card.mjs +29 -39
- package/dist/ui/card.mjs.map +1 -1
- package/dist/ui/divider.js +39 -35
- package/dist/ui/divider.js.map +1 -1
- package/dist/ui/divider.mjs +18 -23
- package/dist/ui/divider.mjs.map +1 -1
- package/dist/ui/drawer.d.mts +1 -1
- package/dist/ui/drawer.d.ts +1 -1
- package/dist/ui/drawer.js +106 -73
- package/dist/ui/drawer.js.map +1 -1
- package/dist/ui/drawer.mjs +64 -45
- package/dist/ui/drawer.mjs.map +1 -1
- package/dist/ui/dropdown.js +42 -48
- package/dist/ui/dropdown.js.map +1 -1
- package/dist/ui/dropdown.mjs +13 -29
- package/dist/ui/dropdown.mjs.map +1 -1
- package/dist/ui/empty-state.d.mts +3 -3
- package/dist/ui/empty-state.d.ts +3 -3
- package/dist/ui/empty-state.js +83 -59
- package/dist/ui/empty-state.js.map +1 -1
- package/dist/ui/empty-state.mjs +64 -52
- package/dist/ui/empty-state.mjs.map +1 -1
- 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/inputs.js +26 -31
- package/dist/ui/inputs.js.map +1 -1
- package/dist/ui/inputs.mjs +8 -19
- package/dist/ui/inputs.mjs.map +1 -1
- package/dist/ui/modal.d.mts +1 -1
- package/dist/ui/modal.d.ts +1 -1
- package/dist/ui/modal.js +116 -78
- package/dist/ui/modal.js.map +1 -1
- package/dist/ui/modal.mjs +74 -51
- package/dist/ui/modal.mjs.map +1 -1
- package/dist/ui/pagination.js +47 -60
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/pagination.mjs +10 -32
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/progress.js +70 -58
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/progress.mjs +44 -43
- package/dist/ui/progress.mjs.map +1 -1
- package/dist/ui/select.js +73 -81
- package/dist/ui/select.js.map +1 -1
- package/dist/ui/select.mjs +38 -59
- package/dist/ui/select.mjs.map +1 -1
- package/dist/ui/skeleton.js +45 -50
- package/dist/ui/skeleton.js.map +1 -1
- package/dist/ui/skeleton.mjs +8 -25
- package/dist/ui/skeleton.mjs.map +1 -1
- 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/spinner.js +37 -38
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/spinner.mjs +11 -18
- package/dist/ui/spinner.mjs.map +1 -1
- 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/dist/ui/table.js +77 -79
- package/dist/ui/table.js.map +1 -1
- package/dist/ui/table.mjs +43 -60
- package/dist/ui/table.mjs.map +1 -1
- package/dist/ui/tabs.js +75 -75
- package/dist/ui/tabs.js.map +1 -1
- package/dist/ui/tabs.mjs +48 -59
- package/dist/ui/tabs.mjs.map +1 -1
- package/dist/ui/toast.d.mts +2 -2
- package/dist/ui/toast.d.ts +2 -2
- package/dist/ui/toast.js +111 -88
- package/dist/ui/toast.js.map +1 -1
- package/dist/ui/toast.mjs +77 -69
- package/dist/ui/toast.mjs.map +1 -1
- package/dist/ui/toggle.js +26 -28
- package/dist/ui/toggle.js.map +1 -1
- package/dist/ui/toggle.mjs +12 -21
- package/dist/ui/toggle.mjs.map +1 -1
- package/dist/ui/tooltip.js +29 -36
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/tooltip.mjs +8 -23
- package/dist/ui/tooltip.mjs.map +1 -1
- package/package.json +5 -3
- package/dist/chunk-BZSIXBA7.js.map +0 -1
- package/dist/chunk-E5UX537J.js +0 -11
- package/dist/chunk-E5UX537J.js.map +0 -1
- package/dist/chunk-MEWYFWBX.mjs +0 -14
- package/dist/chunk-MEWYFWBX.mjs.map +0 -1
- package/dist/chunk-VJHD7QZH.mjs.map +0 -1
package/dist/ui/empty-state.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
"use
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
2
3
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
var
|
|
4
|
+
var chunkWZ2GOU2J_js = require('../chunk-WZ2GOU2J.js');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var framerMotion = require('framer-motion');
|
|
7
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
9
|
|
|
9
10
|
// src/ui/empty-state/animations.ts
|
|
10
11
|
var emptyStateAnimationPresets = {
|
|
@@ -24,34 +25,34 @@ var emptyStateAnimationPresets = {
|
|
|
24
25
|
transition: { type: "spring", stiffness: 380, damping: 28 }
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
var emptyStateVariants = classVarianceAuthority.cva(
|
|
29
|
+
"flex w-full flex-col items-center text-center",
|
|
30
|
+
{
|
|
31
|
+
variants: {
|
|
32
|
+
size: {
|
|
33
|
+
sm: "gap-2 p-4 text-sm",
|
|
34
|
+
md: "gap-3 p-6 text-sm",
|
|
35
|
+
lg: "gap-4 p-8 text-base"
|
|
36
|
+
},
|
|
37
|
+
appearance: {
|
|
38
|
+
default: "text-slate-50",
|
|
39
|
+
ghost: "text-slate-200",
|
|
40
|
+
card: "rounded-2xl border border-white/10 bg-white/5 p-8 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.35)]"
|
|
41
|
+
},
|
|
42
|
+
align: {
|
|
43
|
+
start: "items-start text-left",
|
|
44
|
+
center: "items-center text-center",
|
|
45
|
+
end: "items-end text-right"
|
|
46
|
+
}
|
|
41
47
|
},
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
defaultVariants: {
|
|
49
|
+
size: "md",
|
|
50
|
+
appearance: "default",
|
|
51
|
+
align: "center"
|
|
46
52
|
}
|
|
47
|
-
},
|
|
48
|
-
defaultVariants: {
|
|
49
|
-
size: "md",
|
|
50
|
-
appearance: "default",
|
|
51
|
-
align: "center"
|
|
52
53
|
}
|
|
53
|
-
|
|
54
|
-
var emptyStateTitleVariants =
|
|
54
|
+
);
|
|
55
|
+
var emptyStateTitleVariants = classVarianceAuthority.cva("font-semibold tracking-tight", {
|
|
55
56
|
variants: {
|
|
56
57
|
size: {
|
|
57
58
|
sm: "text-base",
|
|
@@ -61,7 +62,7 @@ var emptyStateTitleVariants = _classvarianceauthority.cva.call(void 0, "font-sem
|
|
|
61
62
|
},
|
|
62
63
|
defaultVariants: { size: "md" }
|
|
63
64
|
});
|
|
64
|
-
var emptyStateDescriptionVariants =
|
|
65
|
+
var emptyStateDescriptionVariants = classVarianceAuthority.cva("max-w-md text-slate-400", {
|
|
65
66
|
variants: {
|
|
66
67
|
size: {
|
|
67
68
|
sm: "text-xs",
|
|
@@ -71,12 +72,9 @@ var emptyStateDescriptionVariants = _classvarianceauthority.cva.call(void 0, "ma
|
|
|
71
72
|
},
|
|
72
73
|
defaultVariants: { size: "md" }
|
|
73
74
|
});
|
|
74
|
-
|
|
75
|
-
// src/ui/empty-state/empty-state.tsx
|
|
76
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
77
|
-
var EmptyStateSizeContext = _react.createContext.call(void 0, "md");
|
|
75
|
+
var EmptyStateSizeContext = react.createContext("md");
|
|
78
76
|
function useEmptyStateSize() {
|
|
79
|
-
return
|
|
77
|
+
return react.useContext(EmptyStateSizeContext);
|
|
80
78
|
}
|
|
81
79
|
function EmptyState(props) {
|
|
82
80
|
const {
|
|
@@ -90,14 +88,17 @@ function EmptyState(props) {
|
|
|
90
88
|
...rest
|
|
91
89
|
} = props;
|
|
92
90
|
const motionProps = emptyStateAnimationPresets[animation];
|
|
93
|
-
const ctx =
|
|
94
|
-
return /* @__PURE__ */
|
|
95
|
-
|
|
91
|
+
const ctx = react.useMemo(() => size ?? "md", [size]);
|
|
92
|
+
return /* @__PURE__ */ jsxRuntime.jsx(EmptyStateSizeContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
framerMotion.motion.section,
|
|
96
94
|
{
|
|
97
95
|
ref,
|
|
98
96
|
"data-slot": "empty-state",
|
|
99
97
|
"aria-live": "polite",
|
|
100
|
-
className:
|
|
98
|
+
className: chunkWZ2GOU2J_js.cn(
|
|
99
|
+
emptyStateVariants({ size, appearance, align }),
|
|
100
|
+
className
|
|
101
|
+
),
|
|
101
102
|
initial: animation === "none" ? false : void 0,
|
|
102
103
|
...motionProps,
|
|
103
104
|
...rest,
|
|
@@ -106,13 +107,33 @@ function EmptyState(props) {
|
|
|
106
107
|
) });
|
|
107
108
|
}
|
|
108
109
|
EmptyState.displayName = "EmptyState";
|
|
109
|
-
function EmptyStateIcon({
|
|
110
|
-
|
|
110
|
+
function EmptyStateIcon({
|
|
111
|
+
className,
|
|
112
|
+
children
|
|
113
|
+
}) {
|
|
114
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
115
|
+
"div",
|
|
116
|
+
{
|
|
117
|
+
"data-slot": "empty-state-icon",
|
|
118
|
+
className: chunkWZ2GOU2J_js.cn("text-slate-300", className),
|
|
119
|
+
children
|
|
120
|
+
}
|
|
121
|
+
);
|
|
111
122
|
}
|
|
112
123
|
EmptyStateIcon.displayName = "EmptyStateIcon";
|
|
113
|
-
function EmptyStateTitle({
|
|
124
|
+
function EmptyStateTitle({
|
|
125
|
+
className,
|
|
126
|
+
children
|
|
127
|
+
}) {
|
|
114
128
|
const size = useEmptyStateSize();
|
|
115
|
-
return /* @__PURE__ */
|
|
129
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
130
|
+
"h2",
|
|
131
|
+
{
|
|
132
|
+
"data-slot": "empty-state-title",
|
|
133
|
+
className: chunkWZ2GOU2J_js.cn(emptyStateTitleVariants({ size }), className),
|
|
134
|
+
children
|
|
135
|
+
}
|
|
136
|
+
);
|
|
116
137
|
}
|
|
117
138
|
EmptyStateTitle.displayName = "EmptyStateTitle";
|
|
118
139
|
function EmptyStateDescription({
|
|
@@ -120,29 +141,32 @@ function EmptyStateDescription({
|
|
|
120
141
|
children
|
|
121
142
|
}) {
|
|
122
143
|
const size = useEmptyStateSize();
|
|
123
|
-
return /* @__PURE__ */
|
|
144
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
124
145
|
"p",
|
|
125
146
|
{
|
|
126
147
|
"data-slot": "empty-state-description",
|
|
127
|
-
className:
|
|
148
|
+
className: chunkWZ2GOU2J_js.cn(emptyStateDescriptionVariants({ size }), className),
|
|
128
149
|
children
|
|
129
150
|
}
|
|
130
151
|
);
|
|
131
152
|
}
|
|
132
153
|
EmptyStateDescription.displayName = "EmptyStateDescription";
|
|
133
|
-
function EmptyStateAction({
|
|
134
|
-
|
|
154
|
+
function EmptyStateAction({
|
|
155
|
+
className,
|
|
156
|
+
children
|
|
157
|
+
}) {
|
|
158
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "empty-state-action", className: chunkWZ2GOU2J_js.cn("mt-2", className), children });
|
|
135
159
|
}
|
|
136
160
|
EmptyStateAction.displayName = "EmptyStateAction";
|
|
137
161
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
162
|
+
exports.EmptyState = EmptyState;
|
|
163
|
+
exports.EmptyStateAction = EmptyStateAction;
|
|
164
|
+
exports.EmptyStateDescription = EmptyStateDescription;
|
|
165
|
+
exports.EmptyStateIcon = EmptyStateIcon;
|
|
166
|
+
exports.EmptyStateTitle = EmptyStateTitle;
|
|
167
|
+
exports.emptyStateAnimationPresets = emptyStateAnimationPresets;
|
|
168
|
+
exports.emptyStateDescriptionVariants = emptyStateDescriptionVariants;
|
|
169
|
+
exports.emptyStateTitleVariants = emptyStateTitleVariants;
|
|
170
|
+
exports.emptyStateVariants = emptyStateVariants;
|
|
171
|
+
//# sourceMappingURL=empty-state.js.map
|
|
148
172
|
//# sourceMappingURL=empty-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["../../src/ui/empty-state/animations.ts","../../src/ui/empty-state/variants.ts","../../src/ui/empty-state/empty-state.tsx"],"names":["cva","createContext","useContext","useMemo","jsx","motion","cn"],"mappings":"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","file":"empty-state.js","sourcesContent":["import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { EmptyStateAnimation } from \"./types\";\n\ntype EmptyStatePresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\" | \"whileHover\"\n>;\n\nexport type EmptyStateAnimationPresets = Record<\n EmptyStateAnimation,\n EmptyStatePresetMotionProps\n>;\n\nexport const emptyStateAnimationPresets: EmptyStateAnimationPresets = {\n none: {},\n float: {\n whileHover: { y: -4 },\n transition: { type: \"spring\", stiffness: 260, damping: 22 },\n },\n fade: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.25, ease: \"easeOut\" },\n },\n \"slide-up\": {\n initial: { opacity: 0, y: 16 },\n animate: { opacity: 1, y: 0 },\n transition: { type: \"spring\", stiffness: 380, damping: 28 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const emptyStateVariants = cva(\n \"flex w-full flex-col items-center text-center\",\n {\n variants: {\n size: {\n sm: \"gap-2 p-4 text-sm\",\n md: \"gap-3 p-6 text-sm\",\n lg: \"gap-4 p-8 text-base\",\n },\n appearance: {\n default: \"text-slate-50\",\n ghost: \"text-slate-200\",\n card: \"rounded-2xl border border-white/10 bg-white/5 p-8 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.35)]\",\n },\n align: {\n start: \"items-start text-left\",\n center: \"items-center text-center\",\n end: \"items-end text-right\",\n },\n },\n defaultVariants: {\n size: \"md\",\n appearance: \"default\",\n align: \"center\",\n },\n },\n);\n\nexport const emptyStateTitleVariants = cva(\"font-semibold tracking-tight\", {\n variants: {\n size: {\n sm: \"text-base\",\n md: \"text-lg\",\n lg: \"text-xl\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const emptyStateDescriptionVariants = cva(\"max-w-md text-slate-400\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { emptyStateAnimationPresets } from \"./animations\";\nimport type { EmptyStateProps, EmptyStateSectionProps } from \"./types\";\nimport {\n emptyStateDescriptionVariants,\n emptyStateTitleVariants,\n emptyStateVariants,\n} from \"./variants\";\n\ntype EmptyStateSize = NonNullable<EmptyStateProps[\"size\"]>;\n\nconst EmptyStateSizeContext = createContext<EmptyStateSize>(\"md\");\n\nfunction useEmptyStateSize(): EmptyStateSize {\n return useContext(EmptyStateSizeContext);\n}\n\nexport function EmptyState(props: EmptyStateProps) {\n const {\n className,\n size = \"md\",\n appearance,\n align,\n animation = \"none\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = emptyStateAnimationPresets[animation];\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <EmptyStateSizeContext.Provider value={ctx}>\n <motion.section\n ref={ref}\n data-slot=\"empty-state\"\n aria-live=\"polite\"\n className={cn(\n emptyStateVariants({ size, appearance, align }),\n className,\n )}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.section>\n </EmptyStateSizeContext.Provider>\n );\n}\n\nEmptyState.displayName = \"EmptyState\";\n\nexport function EmptyStateIcon({\n className,\n children,\n}: EmptyStateSectionProps) {\n return (\n <div\n data-slot=\"empty-state-icon\"\n className={cn(\"text-slate-300\", className)}\n >\n {children}\n </div>\n );\n}\n\nEmptyStateIcon.displayName = \"EmptyStateIcon\";\n\nexport function EmptyStateTitle({\n className,\n children,\n}: EmptyStateSectionProps) {\n const size = useEmptyStateSize();\n return (\n <h2\n data-slot=\"empty-state-title\"\n className={cn(emptyStateTitleVariants({ size }), className)}\n >\n {children}\n </h2>\n );\n}\n\nEmptyStateTitle.displayName = \"EmptyStateTitle\";\n\nexport function EmptyStateDescription({\n className,\n children,\n}: EmptyStateSectionProps) {\n const size = useEmptyStateSize();\n return (\n <p\n data-slot=\"empty-state-description\"\n className={cn(emptyStateDescriptionVariants({ size }), className)}\n >\n {children}\n </p>\n );\n}\n\nEmptyStateDescription.displayName = \"EmptyStateDescription\";\n\nexport function EmptyStateAction({\n className,\n children,\n}: EmptyStateSectionProps) {\n return (\n <div data-slot=\"empty-state-action\" className={cn(\"mt-2\", className)}>\n {children}\n </div>\n );\n}\n\nEmptyStateAction.displayName = \"EmptyStateAction\";\n"]}
|
package/dist/ui/empty-state.mjs
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
} from
|
|
6
|
-
|
|
7
|
-
// src/ui/empty-state/empty-state.tsx
|
|
8
|
-
import { createContext, useContext, useMemo } from "react";
|
|
9
|
-
import { motion } from "framer-motion";
|
|
2
|
+
import { cn } from '../chunk-B23TPTVG.mjs';
|
|
3
|
+
import { createContext, useMemo, useContext } from 'react';
|
|
4
|
+
import { motion } from 'framer-motion';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
10
7
|
|
|
11
8
|
// src/ui/empty-state/animations.ts
|
|
12
9
|
var emptyStateAnimationPresets = {
|
|
@@ -26,33 +23,33 @@ var emptyStateAnimationPresets = {
|
|
|
26
23
|
transition: { type: "spring", stiffness: 380, damping: 28 }
|
|
27
24
|
}
|
|
28
25
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
var emptyStateVariants = cva(
|
|
27
|
+
"flex w-full flex-col items-center text-center",
|
|
28
|
+
{
|
|
29
|
+
variants: {
|
|
30
|
+
size: {
|
|
31
|
+
sm: "gap-2 p-4 text-sm",
|
|
32
|
+
md: "gap-3 p-6 text-sm",
|
|
33
|
+
lg: "gap-4 p-8 text-base"
|
|
34
|
+
},
|
|
35
|
+
appearance: {
|
|
36
|
+
default: "text-slate-50",
|
|
37
|
+
ghost: "text-slate-200",
|
|
38
|
+
card: "rounded-2xl border border-white/10 bg-white/5 p-8 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.35)]"
|
|
39
|
+
},
|
|
40
|
+
align: {
|
|
41
|
+
start: "items-start text-left",
|
|
42
|
+
center: "items-center text-center",
|
|
43
|
+
end: "items-end text-right"
|
|
44
|
+
}
|
|
43
45
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
defaultVariants: {
|
|
47
|
+
size: "md",
|
|
48
|
+
appearance: "default",
|
|
49
|
+
align: "center"
|
|
48
50
|
}
|
|
49
|
-
},
|
|
50
|
-
defaultVariants: {
|
|
51
|
-
size: "md",
|
|
52
|
-
appearance: "default",
|
|
53
|
-
align: "center"
|
|
54
51
|
}
|
|
55
|
-
|
|
52
|
+
);
|
|
56
53
|
var emptyStateTitleVariants = cva("font-semibold tracking-tight", {
|
|
57
54
|
variants: {
|
|
58
55
|
size: {
|
|
@@ -73,9 +70,6 @@ var emptyStateDescriptionVariants = cva("max-w-md text-slate-400", {
|
|
|
73
70
|
},
|
|
74
71
|
defaultVariants: { size: "md" }
|
|
75
72
|
});
|
|
76
|
-
|
|
77
|
-
// src/ui/empty-state/empty-state.tsx
|
|
78
|
-
import { jsx } from "react/jsx-runtime";
|
|
79
73
|
var EmptyStateSizeContext = createContext("md");
|
|
80
74
|
function useEmptyStateSize() {
|
|
81
75
|
return useContext(EmptyStateSizeContext);
|
|
@@ -99,7 +93,10 @@ function EmptyState(props) {
|
|
|
99
93
|
ref,
|
|
100
94
|
"data-slot": "empty-state",
|
|
101
95
|
"aria-live": "polite",
|
|
102
|
-
className: cn(
|
|
96
|
+
className: cn(
|
|
97
|
+
emptyStateVariants({ size, appearance, align }),
|
|
98
|
+
className
|
|
99
|
+
),
|
|
103
100
|
initial: animation === "none" ? false : void 0,
|
|
104
101
|
...motionProps,
|
|
105
102
|
...rest,
|
|
@@ -108,13 +105,33 @@ function EmptyState(props) {
|
|
|
108
105
|
) });
|
|
109
106
|
}
|
|
110
107
|
EmptyState.displayName = "EmptyState";
|
|
111
|
-
function EmptyStateIcon({
|
|
112
|
-
|
|
108
|
+
function EmptyStateIcon({
|
|
109
|
+
className,
|
|
110
|
+
children
|
|
111
|
+
}) {
|
|
112
|
+
return /* @__PURE__ */ jsx(
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
"data-slot": "empty-state-icon",
|
|
116
|
+
className: cn("text-slate-300", className),
|
|
117
|
+
children
|
|
118
|
+
}
|
|
119
|
+
);
|
|
113
120
|
}
|
|
114
121
|
EmptyStateIcon.displayName = "EmptyStateIcon";
|
|
115
|
-
function EmptyStateTitle({
|
|
122
|
+
function EmptyStateTitle({
|
|
123
|
+
className,
|
|
124
|
+
children
|
|
125
|
+
}) {
|
|
116
126
|
const size = useEmptyStateSize();
|
|
117
|
-
return /* @__PURE__ */ jsx(
|
|
127
|
+
return /* @__PURE__ */ jsx(
|
|
128
|
+
"h2",
|
|
129
|
+
{
|
|
130
|
+
"data-slot": "empty-state-title",
|
|
131
|
+
className: cn(emptyStateTitleVariants({ size }), className),
|
|
132
|
+
children
|
|
133
|
+
}
|
|
134
|
+
);
|
|
118
135
|
}
|
|
119
136
|
EmptyStateTitle.displayName = "EmptyStateTitle";
|
|
120
137
|
function EmptyStateDescription({
|
|
@@ -132,19 +149,14 @@ function EmptyStateDescription({
|
|
|
132
149
|
);
|
|
133
150
|
}
|
|
134
151
|
EmptyStateDescription.displayName = "EmptyStateDescription";
|
|
135
|
-
function EmptyStateAction({
|
|
152
|
+
function EmptyStateAction({
|
|
153
|
+
className,
|
|
154
|
+
children
|
|
155
|
+
}) {
|
|
136
156
|
return /* @__PURE__ */ jsx("div", { "data-slot": "empty-state-action", className: cn("mt-2", className), children });
|
|
137
157
|
}
|
|
138
158
|
EmptyStateAction.displayName = "EmptyStateAction";
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
EmptyStateDescription,
|
|
143
|
-
EmptyStateIcon,
|
|
144
|
-
EmptyStateTitle,
|
|
145
|
-
emptyStateAnimationPresets,
|
|
146
|
-
emptyStateDescriptionVariants,
|
|
147
|
-
emptyStateTitleVariants,
|
|
148
|
-
emptyStateVariants
|
|
149
|
-
};
|
|
159
|
+
|
|
160
|
+
export { EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, emptyStateAnimationPresets, emptyStateDescriptionVariants, emptyStateTitleVariants, emptyStateVariants };
|
|
161
|
+
//# sourceMappingURL=empty-state.mjs.map
|
|
150
162
|
//# sourceMappingURL=empty-state.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/empty-state/
|
|
1
|
+
{"version":3,"sources":["../../src/ui/empty-state/animations.ts","../../src/ui/empty-state/variants.ts","../../src/ui/empty-state/empty-state.tsx"],"names":[],"mappings":"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","file":"empty-state.mjs","sourcesContent":["import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { EmptyStateAnimation } from \"./types\";\n\ntype EmptyStatePresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\" | \"whileHover\"\n>;\n\nexport type EmptyStateAnimationPresets = Record<\n EmptyStateAnimation,\n EmptyStatePresetMotionProps\n>;\n\nexport const emptyStateAnimationPresets: EmptyStateAnimationPresets = {\n none: {},\n float: {\n whileHover: { y: -4 },\n transition: { type: \"spring\", stiffness: 260, damping: 22 },\n },\n fade: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.25, ease: \"easeOut\" },\n },\n \"slide-up\": {\n initial: { opacity: 0, y: 16 },\n animate: { opacity: 1, y: 0 },\n transition: { type: \"spring\", stiffness: 380, damping: 28 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const emptyStateVariants = cva(\n \"flex w-full flex-col items-center text-center\",\n {\n variants: {\n size: {\n sm: \"gap-2 p-4 text-sm\",\n md: \"gap-3 p-6 text-sm\",\n lg: \"gap-4 p-8 text-base\",\n },\n appearance: {\n default: \"text-slate-50\",\n ghost: \"text-slate-200\",\n card: \"rounded-2xl border border-white/10 bg-white/5 p-8 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.35)]\",\n },\n align: {\n start: \"items-start text-left\",\n center: \"items-center text-center\",\n end: \"items-end text-right\",\n },\n },\n defaultVariants: {\n size: \"md\",\n appearance: \"default\",\n align: \"center\",\n },\n },\n);\n\nexport const emptyStateTitleVariants = cva(\"font-semibold tracking-tight\", {\n variants: {\n size: {\n sm: \"text-base\",\n md: \"text-lg\",\n lg: \"text-xl\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const emptyStateDescriptionVariants = cva(\"max-w-md text-slate-400\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { emptyStateAnimationPresets } from \"./animations\";\nimport type { EmptyStateProps, EmptyStateSectionProps } from \"./types\";\nimport {\n emptyStateDescriptionVariants,\n emptyStateTitleVariants,\n emptyStateVariants,\n} from \"./variants\";\n\ntype EmptyStateSize = NonNullable<EmptyStateProps[\"size\"]>;\n\nconst EmptyStateSizeContext = createContext<EmptyStateSize>(\"md\");\n\nfunction useEmptyStateSize(): EmptyStateSize {\n return useContext(EmptyStateSizeContext);\n}\n\nexport function EmptyState(props: EmptyStateProps) {\n const {\n className,\n size = \"md\",\n appearance,\n align,\n animation = \"none\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = emptyStateAnimationPresets[animation];\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <EmptyStateSizeContext.Provider value={ctx}>\n <motion.section\n ref={ref}\n data-slot=\"empty-state\"\n aria-live=\"polite\"\n className={cn(\n emptyStateVariants({ size, appearance, align }),\n className,\n )}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.section>\n </EmptyStateSizeContext.Provider>\n );\n}\n\nEmptyState.displayName = \"EmptyState\";\n\nexport function EmptyStateIcon({\n className,\n children,\n}: EmptyStateSectionProps) {\n return (\n <div\n data-slot=\"empty-state-icon\"\n className={cn(\"text-slate-300\", className)}\n >\n {children}\n </div>\n );\n}\n\nEmptyStateIcon.displayName = \"EmptyStateIcon\";\n\nexport function EmptyStateTitle({\n className,\n children,\n}: EmptyStateSectionProps) {\n const size = useEmptyStateSize();\n return (\n <h2\n data-slot=\"empty-state-title\"\n className={cn(emptyStateTitleVariants({ size }), className)}\n >\n {children}\n </h2>\n );\n}\n\nEmptyStateTitle.displayName = \"EmptyStateTitle\";\n\nexport function EmptyStateDescription({\n className,\n children,\n}: EmptyStateSectionProps) {\n const size = useEmptyStateSize();\n return (\n <p\n data-slot=\"empty-state-description\"\n className={cn(emptyStateDescriptionVariants({ size }), className)}\n >\n {children}\n </p>\n );\n}\n\nEmptyStateDescription.displayName = \"EmptyStateDescription\";\n\nexport function EmptyStateAction({\n className,\n children,\n}: EmptyStateSectionProps) {\n return (\n <div data-slot=\"empty-state-action\" className={cn(\"mt-2\", className)}>\n {children}\n </div>\n );\n}\n\nEmptyStateAction.displayName = \"EmptyStateAction\";\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
import { ComponentPropsWithoutRef, ReactNode, ChangeEvent } from 'react';
|
|
4
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
|
+
|
|
6
|
+
declare const fileUploadVariants: (props?: ({
|
|
7
|
+
appearance?: "idle" | "active" | "disabled" | "error" | "success" | "warning" | "info" | "neutral" | "purple" | "indigo" | "emerald" | "amber" | "pink" | "orange" | "teal" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
|
|
10
|
+
type FileUploadVariantProps = VariantProps<typeof fileUploadVariants>;
|
|
11
|
+
type FileUploadProps = FileUploadVariantProps & Omit<ComponentPropsWithoutRef<"div">, "children" | "onChange"> & {
|
|
12
|
+
/** Called when the user selects or drops files */
|
|
13
|
+
onFiles?: (files: File[]) => void;
|
|
14
|
+
accept?: string;
|
|
15
|
+
multiple?: boolean;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Visually hidden input `name` for forms */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** Optional controlled file list (not enforced; mainly for forms) */
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
22
|
+
appearance?: FileUploadVariantProps["appearance"];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
declare function FileUpload({ className, onFiles, accept, multiple, disabled, name, children, onChange, ref, appearance, ...rest }: FileUploadProps & {
|
|
26
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
27
|
+
}): react_jsx_runtime.JSX.Element;
|
|
28
|
+
declare namespace FileUpload {
|
|
29
|
+
var displayName: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { FileUpload, type FileUploadProps, type FileUploadVariantProps, fileUploadVariants };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
import { ComponentPropsWithoutRef, ReactNode, ChangeEvent } from 'react';
|
|
4
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
|
+
|
|
6
|
+
declare const fileUploadVariants: (props?: ({
|
|
7
|
+
appearance?: "idle" | "active" | "disabled" | "error" | "success" | "warning" | "info" | "neutral" | "purple" | "indigo" | "emerald" | "amber" | "pink" | "orange" | "teal" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
|
|
10
|
+
type FileUploadVariantProps = VariantProps<typeof fileUploadVariants>;
|
|
11
|
+
type FileUploadProps = FileUploadVariantProps & Omit<ComponentPropsWithoutRef<"div">, "children" | "onChange"> & {
|
|
12
|
+
/** Called when the user selects or drops files */
|
|
13
|
+
onFiles?: (files: File[]) => void;
|
|
14
|
+
accept?: string;
|
|
15
|
+
multiple?: boolean;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Visually hidden input `name` for forms */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** Optional controlled file list (not enforced; mainly for forms) */
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
22
|
+
appearance?: FileUploadVariantProps["appearance"];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
declare function FileUpload({ className, onFiles, accept, multiple, disabled, name, children, onChange, ref, appearance, ...rest }: FileUploadProps & {
|
|
26
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
27
|
+
}): react_jsx_runtime.JSX.Element;
|
|
28
|
+
declare namespace FileUpload {
|
|
29
|
+
var displayName: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { FileUpload, type FileUploadProps, type FileUploadVariantProps, fileUploadVariants };
|