@hanzo/ui 5.3.28 → 5.3.30
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/dist/3d/button.js +298 -0
- package/dist/3d/button.mjs +273 -0
- package/dist/3d/card.js +234 -0
- package/dist/3d/card.mjs +207 -0
- package/dist/3d/carousel.js +371 -0
- package/dist/3d/carousel.mjs +344 -0
- package/dist/3d/grid.js +362 -0
- package/dist/3d/grid.mjs +337 -0
- package/dist/3d/index.js +1518 -0
- package/dist/3d/index.mjs +1472 -0
- package/dist/3d/marquee.js +352 -0
- package/dist/3d/marquee.mjs +327 -0
- package/dist/3d/pin.js +46 -0
- package/dist/3d/pin.mjs +24 -0
- package/dist/accordion.js +80 -0
- package/dist/accordion.mjs +55 -0
- package/dist/alert-dialog.js +220 -0
- package/dist/alert-dialog.mjs +187 -0
- package/dist/alert.js +68 -0
- package/dist/alert.mjs +64 -0
- package/dist/animation/animated-background.js +424 -0
- package/dist/animation/animated-background.mjs +418 -0
- package/dist/animation/animated-beam.js +119 -0
- package/dist/animation/animated-beam.mjs +97 -0
- package/dist/animation/animated-cursor.js +275 -0
- package/dist/animation/animated-cursor.mjs +270 -0
- package/dist/animation/animated-icon.js +357 -0
- package/dist/animation/animated-icon.mjs +351 -0
- package/dist/animation/animated-list.js +339 -0
- package/dist/animation/animated-list.mjs +333 -0
- package/dist/animation/animated-number.js +283 -0
- package/dist/animation/animated-number.mjs +277 -0
- package/dist/animation/animated-testimonials.js +97 -0
- package/dist/animation/animated-testimonials.mjs +75 -0
- package/dist/animation/animated-tooltip.js +67 -0
- package/dist/animation/animated-tooltip.mjs +45 -0
- package/dist/animation/apple-cards-carousel.js +308 -0
- package/dist/animation/apple-cards-carousel.mjs +285 -0
- package/dist/animation/apple-hello-effect.js +60 -0
- package/dist/animation/apple-hello-effect.mjs +38 -0
- package/dist/animation/index.js +1952 -0
- package/dist/animation/index.mjs +1921 -0
- package/dist/avatar.js +71 -0
- package/dist/avatar.mjs +47 -0
- package/dist/badge.js +66 -0
- package/dist/badge.mjs +40 -0
- package/dist/blocks/index.js +1665 -0
- package/dist/blocks/index.mjs +1626 -0
- package/dist/breadcrumb.js +107 -0
- package/dist/breadcrumb.mjs +99 -0
- package/dist/calendar.js +189 -0
- package/dist/calendar.mjs +164 -0
- package/dist/carousel.js +278 -0
- package/dist/carousel.mjs +249 -0
- package/dist/checkbox.js +60 -0
- package/dist/checkbox.mjs +35 -0
- package/dist/code/block.js +226 -0
- package/dist/code/block.mjs +203 -0
- package/dist/code/compare.js +446 -0
- package/dist/code/compare.mjs +423 -0
- package/dist/code/diff.js +430 -0
- package/dist/code/diff.mjs +407 -0
- package/dist/code/editor.js +243 -0
- package/dist/code/editor.mjs +218 -0
- package/dist/code/explorer.js +291 -0
- package/dist/code/explorer.mjs +268 -0
- package/dist/code/index.js +2551 -0
- package/dist/code/index.mjs +2510 -0
- package/dist/code/preview.js +400 -0
- package/dist/code/preview.mjs +377 -0
- package/dist/code/snippet.js +274 -0
- package/dist/code/snippet.mjs +250 -0
- package/dist/code/tabs.js +75 -0
- package/dist/code/tabs.mjs +53 -0
- package/dist/code/terminal.js +437 -0
- package/dist/code/terminal.mjs +414 -0
- package/dist/collapsible.js +33 -0
- package/dist/collapsible.mjs +9 -0
- package/dist/command.js +262 -0
- package/dist/command.mjs +232 -0
- package/dist/context-menu.js +207 -0
- package/dist/context-menu.mjs +171 -0
- package/dist/device/index.js +3 -0
- package/dist/device/index.mjs +2 -0
- package/dist/dialog.js +151 -0
- package/dist/dialog.mjs +121 -0
- package/dist/dock/basic.js +174 -0
- package/dist/dock/basic.mjs +151 -0
- package/dist/dock/index.js +628 -0
- package/dist/dock/index.mjs +601 -0
- package/dist/dock/limelight-nav.js +295 -0
- package/dist/dock/limelight-nav.mjs +274 -0
- package/dist/dock/macos.js +141 -0
- package/dist/dock/macos.mjs +118 -0
- package/dist/dock/menu.js +70 -0
- package/dist/dock/menu.mjs +48 -0
- package/dist/dock/message.js +144 -0
- package/dist/dock/message.mjs +122 -0
- package/dist/drawer.js +115 -0
- package/dist/drawer.mjs +103 -0
- package/dist/dropdown-menu.js +202 -0
- package/dist/dropdown-menu.mjs +166 -0
- package/dist/finance/AdvancedChart.js +48 -0
- package/dist/finance/AdvancedChart.mjs +46 -0
- package/dist/finance/CompanyProfile.js +48 -0
- package/dist/finance/CompanyProfile.mjs +46 -0
- package/dist/finance/CryptoScreener.js +45 -0
- package/dist/finance/CryptoScreener.mjs +43 -0
- package/dist/finance/Financials.js +52 -0
- package/dist/finance/Financials.mjs +50 -0
- package/dist/finance/ForexScreener.js +46 -0
- package/dist/finance/ForexScreener.mjs +44 -0
- package/dist/finance/MarketOverview.js +104 -0
- package/dist/finance/MarketOverview.mjs +102 -0
- package/dist/finance/NewsTimeline.js +44 -0
- package/dist/finance/NewsTimeline.mjs +42 -0
- package/dist/finance/OrderEntry.js +131 -0
- package/dist/finance/OrderEntry.mjs +129 -0
- package/dist/finance/OrdersHistory.js +64 -0
- package/dist/finance/OrdersHistory.mjs +62 -0
- package/dist/finance/PositionsList.js +80 -0
- package/dist/finance/PositionsList.mjs +78 -0
- package/dist/finance/StockScreener.js +46 -0
- package/dist/finance/StockScreener.mjs +44 -0
- package/dist/finance/SymbolInfo.js +46 -0
- package/dist/finance/SymbolInfo.mjs +44 -0
- package/dist/finance/TechnicalAnalysis.js +54 -0
- package/dist/finance/TechnicalAnalysis.mjs +52 -0
- package/dist/finance/TickerTape.js +56 -0
- package/dist/finance/TickerTape.mjs +54 -0
- package/dist/finance/TradingPanel.js +191 -0
- package/dist/finance/TradingPanel.mjs +189 -0
- package/dist/finance/index.js +930 -0
- package/dist/finance/index.mjs +914 -0
- package/dist/form/index.js +155 -0
- package/dist/form/index.mjs +125 -0
- package/dist/form.js +172 -0
- package/dist/form.mjs +142 -0
- package/dist/hover-card.js +58 -0
- package/dist/hover-card.mjs +34 -0
- package/dist/index.js +8467 -0
- package/dist/index.mjs +8087 -0
- package/dist/input-otp.js +79 -0
- package/dist/input-otp.mjs +54 -0
- package/dist/lib/utils.js +28 -0
- package/dist/lib/utils.mjs +24 -0
- package/dist/navigation/index.js +98 -0
- package/dist/navigation/index.mjs +79 -0
- package/dist/navigation-menu.js +149 -0
- package/dist/navigation-menu.mjs +116 -0
- package/dist/pattern/grid-pattern.js +333 -0
- package/dist/pattern/grid-pattern.mjs +310 -0
- package/dist/pattern/index.js +333 -0
- package/dist/pattern/index.mjs +310 -0
- package/dist/popover.js +63 -0
- package/dist/popover.mjs +37 -0
- package/dist/primitives/index.js +8467 -0
- package/dist/primitives/index.mjs +8087 -0
- package/dist/primitives-export.js +8467 -0
- package/dist/primitives-export.mjs +8087 -0
- package/dist/progress.js +62 -0
- package/dist/progress.mjs +37 -0
- package/dist/project/gantt.js +65 -0
- package/dist/project/gantt.mjs +43 -0
- package/dist/project/index.js +636 -0
- package/dist/project/index.mjs +611 -0
- package/dist/project/kanban.js +597 -0
- package/dist/project/kanban.mjs +572 -0
- package/dist/project/list.js +35 -0
- package/dist/project/list.mjs +12 -0
- package/dist/radio-group.js +68 -0
- package/dist/radio-group.mjs +45 -0
- package/dist/resizable.js +72 -0
- package/dist/resizable.mjs +48 -0
- package/dist/scroll-area.js +89 -0
- package/dist/scroll-area.mjs +66 -0
- package/dist/select.js +140 -0
- package/dist/select.mjs +111 -0
- package/dist/separator.js +59 -0
- package/dist/separator.mjs +34 -0
- package/dist/sheet.js +148 -0
- package/dist/sheet.mjs +117 -0
- package/dist/skeleton.js +32 -0
- package/dist/skeleton.mjs +27 -0
- package/dist/slider.js +99 -0
- package/dist/slider.mjs +73 -0
- package/dist/sonner.js +34 -0
- package/dist/sonner.mjs +29 -0
- package/dist/switch.js +62 -0
- package/dist/switch.mjs +37 -0
- package/dist/table.js +110 -0
- package/dist/table.mjs +101 -0
- package/dist/tabs.js +82 -0
- package/dist/tabs.mjs +57 -0
- package/dist/tailwind/index.js +2023 -0
- package/dist/tailwind/index.mjs +2011 -0
- package/dist/textarea.js +78 -0
- package/dist/textarea.mjs +56 -0
- package/dist/toggle-group.js +118 -0
- package/dist/toggle-group.mjs +93 -0
- package/dist/toggle.js +71 -0
- package/dist/toggle.mjs +48 -0
- package/dist/tooltip.js +67 -0
- package/dist/tooltip.mjs +40 -0
- package/dist/types/index.js +57 -0
- package/dist/types/index.mjs +51 -0
- package/dist/ui/announcement.js +129 -0
- package/dist/ui/announcement.mjs +107 -0
- package/dist/ui/avatar-group.js +88 -0
- package/dist/ui/avatar-group.mjs +65 -0
- package/dist/ui/banner.js +85 -0
- package/dist/ui/banner.mjs +62 -0
- package/dist/ui/cursor.js +78 -0
- package/dist/ui/cursor.mjs +56 -0
- package/dist/ui/index.js +475 -0
- package/dist/ui/index.mjs +442 -0
- package/dist/ui/marquee.js +74 -0
- package/dist/ui/marquee.mjs +52 -0
- package/dist/ui/pill.js +85 -0
- package/dist/ui/pill.mjs +62 -0
- package/dist/ui/spinner.js +28 -0
- package/dist/ui/spinner.mjs +26 -0
- package/dist/ui/tags.js +101 -0
- package/dist/ui/tags.mjs +79 -0
- package/dist/ui/ticker.js +73 -0
- package/dist/ui/ticker.mjs +51 -0
- package/dist/util/index.js +463 -0
- package/dist/util/index.mjs +404 -0
- package/package.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React2 = require('react');
|
|
5
|
+
var lucideReact = require('lucide-react');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var tailwindMerge = require('tailwind-merge');
|
|
8
|
+
var reactSlot = require('@radix-ui/react-slot');
|
|
9
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
10
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
|
|
12
|
+
function _interopNamespace(e) {
|
|
13
|
+
if (e && e.__esModule) return e;
|
|
14
|
+
var n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
Object.keys(e).forEach(function (k) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
n.default = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
|
|
31
|
+
|
|
32
|
+
var __defProp = Object.defineProperty;
|
|
33
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
34
|
+
function cn(...inputs) {
|
|
35
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
36
|
+
}
|
|
37
|
+
__name(cn, "cn");
|
|
38
|
+
var buttonVariants = classVarianceAuthority.cva(
|
|
39
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
40
|
+
{
|
|
41
|
+
variants: {
|
|
42
|
+
variant: {
|
|
43
|
+
default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
44
|
+
destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
|
45
|
+
outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
|
46
|
+
secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
|
47
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
48
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
49
|
+
// Keep the additional Hanzo variants for backward compatibility
|
|
50
|
+
primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
51
|
+
linkFG: "text-primary underline-offset-4 hover:underline",
|
|
52
|
+
linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"
|
|
53
|
+
},
|
|
54
|
+
size: {
|
|
55
|
+
default: "h-9 px-4 py-2",
|
|
56
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
57
|
+
lg: "h-10 rounded-md px-8",
|
|
58
|
+
icon: "h-9 w-9"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
defaultVariants: {
|
|
62
|
+
variant: "default",
|
|
63
|
+
size: "default"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
var Button = React2__namespace.forwardRef(
|
|
68
|
+
({ className, variant, size, asChild = false, isLoading = false, children, ...props }, ref) => {
|
|
69
|
+
const Comp = asChild ? reactSlot.Slot : "button";
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
71
|
+
Comp,
|
|
72
|
+
{
|
|
73
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
74
|
+
ref,
|
|
75
|
+
...props,
|
|
76
|
+
children: [
|
|
77
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
78
|
+
lucideReact.Loader2,
|
|
79
|
+
{
|
|
80
|
+
className: cn("h-4 w-4 animate-spin", size !== "icon" && "mr-2")
|
|
81
|
+
}
|
|
82
|
+
) : null,
|
|
83
|
+
isLoading && size === "icon" ? null : children
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
Button.displayName = "Button";
|
|
90
|
+
var Announcement = React2__namespace.forwardRef(
|
|
91
|
+
({ className, children, dismissible = true, onDismiss, ...props }, ref) => {
|
|
92
|
+
const [isVisible, setIsVisible] = React2__namespace.useState(true);
|
|
93
|
+
const handleDismiss = /* @__PURE__ */ __name(() => {
|
|
94
|
+
setIsVisible(false);
|
|
95
|
+
onDismiss?.();
|
|
96
|
+
}, "handleDismiss");
|
|
97
|
+
if (!isVisible) return null;
|
|
98
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
99
|
+
"div",
|
|
100
|
+
{
|
|
101
|
+
ref,
|
|
102
|
+
className: cn(
|
|
103
|
+
"relative flex items-center gap-4 rounded-lg border bg-background px-4 py-3 text-sm",
|
|
104
|
+
className
|
|
105
|
+
),
|
|
106
|
+
...props,
|
|
107
|
+
children: [
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children }),
|
|
109
|
+
dismissible && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
110
|
+
Button,
|
|
111
|
+
{
|
|
112
|
+
variant: "ghost",
|
|
113
|
+
size: "icon",
|
|
114
|
+
className: "h-6 w-6",
|
|
115
|
+
onClick: handleDismiss,
|
|
116
|
+
children: [
|
|
117
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Dismiss" })
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
)
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
Announcement.displayName = "Announcement";
|
|
128
|
+
|
|
129
|
+
exports.Announcement = Announcement;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React2 from 'react';
|
|
3
|
+
import { Loader2, X } from 'lucide-react';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
7
|
+
import { cva } from 'class-variance-authority';
|
|
8
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
12
|
+
function cn(...inputs) {
|
|
13
|
+
return twMerge(clsx(inputs));
|
|
14
|
+
}
|
|
15
|
+
__name(cn, "cn");
|
|
16
|
+
var buttonVariants = cva(
|
|
17
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
18
|
+
{
|
|
19
|
+
variants: {
|
|
20
|
+
variant: {
|
|
21
|
+
default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
22
|
+
destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
|
23
|
+
outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
|
24
|
+
secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
|
25
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
26
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
27
|
+
// Keep the additional Hanzo variants for backward compatibility
|
|
28
|
+
primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
29
|
+
linkFG: "text-primary underline-offset-4 hover:underline",
|
|
30
|
+
linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"
|
|
31
|
+
},
|
|
32
|
+
size: {
|
|
33
|
+
default: "h-9 px-4 py-2",
|
|
34
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
35
|
+
lg: "h-10 rounded-md px-8",
|
|
36
|
+
icon: "h-9 w-9"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
defaultVariants: {
|
|
40
|
+
variant: "default",
|
|
41
|
+
size: "default"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
var Button = React2.forwardRef(
|
|
46
|
+
({ className, variant, size, asChild = false, isLoading = false, children, ...props }, ref) => {
|
|
47
|
+
const Comp = asChild ? Slot : "button";
|
|
48
|
+
return /* @__PURE__ */ jsxs(
|
|
49
|
+
Comp,
|
|
50
|
+
{
|
|
51
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
52
|
+
ref,
|
|
53
|
+
...props,
|
|
54
|
+
children: [
|
|
55
|
+
isLoading ? /* @__PURE__ */ jsx(
|
|
56
|
+
Loader2,
|
|
57
|
+
{
|
|
58
|
+
className: cn("h-4 w-4 animate-spin", size !== "icon" && "mr-2")
|
|
59
|
+
}
|
|
60
|
+
) : null,
|
|
61
|
+
isLoading && size === "icon" ? null : children
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
Button.displayName = "Button";
|
|
68
|
+
var Announcement = React2.forwardRef(
|
|
69
|
+
({ className, children, dismissible = true, onDismiss, ...props }, ref) => {
|
|
70
|
+
const [isVisible, setIsVisible] = React2.useState(true);
|
|
71
|
+
const handleDismiss = /* @__PURE__ */ __name(() => {
|
|
72
|
+
setIsVisible(false);
|
|
73
|
+
onDismiss?.();
|
|
74
|
+
}, "handleDismiss");
|
|
75
|
+
if (!isVisible) return null;
|
|
76
|
+
return /* @__PURE__ */ jsxs(
|
|
77
|
+
"div",
|
|
78
|
+
{
|
|
79
|
+
ref,
|
|
80
|
+
className: cn(
|
|
81
|
+
"relative flex items-center gap-4 rounded-lg border bg-background px-4 py-3 text-sm",
|
|
82
|
+
className
|
|
83
|
+
),
|
|
84
|
+
...props,
|
|
85
|
+
children: [
|
|
86
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1", children }),
|
|
87
|
+
dismissible && /* @__PURE__ */ jsxs(
|
|
88
|
+
Button,
|
|
89
|
+
{
|
|
90
|
+
variant: "ghost",
|
|
91
|
+
size: "icon",
|
|
92
|
+
className: "h-6 w-6",
|
|
93
|
+
onClick: handleDismiss,
|
|
94
|
+
children: [
|
|
95
|
+
/* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
|
|
96
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Dismiss" })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
Announcement.displayName = "Announcement";
|
|
106
|
+
|
|
107
|
+
export { Announcement };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var tailwindMerge = require('tailwind-merge');
|
|
7
|
+
var AvatarPrimitive = require('@radix-ui/react-avatar');
|
|
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
|
+
var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
|
|
30
|
+
|
|
31
|
+
var __defProp = Object.defineProperty;
|
|
32
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
33
|
+
function cn(...inputs) {
|
|
34
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
35
|
+
}
|
|
36
|
+
__name(cn, "cn");
|
|
37
|
+
var Avatar = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
38
|
+
AvatarPrimitive__namespace.Root,
|
|
39
|
+
{
|
|
40
|
+
className: cn(
|
|
41
|
+
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
42
|
+
className
|
|
43
|
+
),
|
|
44
|
+
ref,
|
|
45
|
+
...props
|
|
46
|
+
}
|
|
47
|
+
), "Avatar");
|
|
48
|
+
Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
|
|
49
|
+
var AvatarImage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
50
|
+
AvatarPrimitive__namespace.Image,
|
|
51
|
+
{
|
|
52
|
+
className: cn("aspect-square h-full w-full", className),
|
|
53
|
+
ref,
|
|
54
|
+
...props
|
|
55
|
+
}
|
|
56
|
+
), "AvatarImage");
|
|
57
|
+
AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
|
|
58
|
+
var AvatarFallback = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
AvatarPrimitive__namespace.Fallback,
|
|
60
|
+
{
|
|
61
|
+
className: cn(
|
|
62
|
+
"bg-muted flex h-full w-full items-center justify-center rounded-full",
|
|
63
|
+
className
|
|
64
|
+
),
|
|
65
|
+
ref,
|
|
66
|
+
...props
|
|
67
|
+
}
|
|
68
|
+
), "AvatarFallback");
|
|
69
|
+
AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
|
|
70
|
+
var AvatarGroup = React__namespace.forwardRef(
|
|
71
|
+
({ className, items, max = 5, ...props }, ref) => {
|
|
72
|
+
const displayItems = items.slice(0, max);
|
|
73
|
+
const remaining = items.length - max;
|
|
74
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("flex -space-x-4", className), ...props, children: [
|
|
75
|
+
displayItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "border-2 border-background", children: [
|
|
76
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: item.src, alt: item.alt }),
|
|
77
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: item.fallback })
|
|
78
|
+
] }, index)),
|
|
79
|
+
remaining > 0 && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "border-2 border-background", children: /* @__PURE__ */ jsxRuntime.jsxs(AvatarFallback, { children: [
|
|
80
|
+
"+",
|
|
81
|
+
remaining
|
|
82
|
+
] }) })
|
|
83
|
+
] });
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
AvatarGroup.displayName = "AvatarGroup";
|
|
87
|
+
|
|
88
|
+
exports.AvatarGroup = AvatarGroup;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
|
+
function cn(...inputs) {
|
|
11
|
+
return twMerge(clsx(inputs));
|
|
12
|
+
}
|
|
13
|
+
__name(cn, "cn");
|
|
14
|
+
var Avatar = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
|
|
15
|
+
AvatarPrimitive.Root,
|
|
16
|
+
{
|
|
17
|
+
className: cn(
|
|
18
|
+
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
19
|
+
className
|
|
20
|
+
),
|
|
21
|
+
ref,
|
|
22
|
+
...props
|
|
23
|
+
}
|
|
24
|
+
), "Avatar");
|
|
25
|
+
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
26
|
+
var AvatarImage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
|
|
27
|
+
AvatarPrimitive.Image,
|
|
28
|
+
{
|
|
29
|
+
className: cn("aspect-square h-full w-full", className),
|
|
30
|
+
ref,
|
|
31
|
+
...props
|
|
32
|
+
}
|
|
33
|
+
), "AvatarImage");
|
|
34
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
35
|
+
var AvatarFallback = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
|
|
36
|
+
AvatarPrimitive.Fallback,
|
|
37
|
+
{
|
|
38
|
+
className: cn(
|
|
39
|
+
"bg-muted flex h-full w-full items-center justify-center rounded-full",
|
|
40
|
+
className
|
|
41
|
+
),
|
|
42
|
+
ref,
|
|
43
|
+
...props
|
|
44
|
+
}
|
|
45
|
+
), "AvatarFallback");
|
|
46
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
47
|
+
var AvatarGroup = React.forwardRef(
|
|
48
|
+
({ className, items, max = 5, ...props }, ref) => {
|
|
49
|
+
const displayItems = items.slice(0, max);
|
|
50
|
+
const remaining = items.length - max;
|
|
51
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex -space-x-4", className), ...props, children: [
|
|
52
|
+
displayItems.map((item, index) => /* @__PURE__ */ jsxs(Avatar, { className: "border-2 border-background", children: [
|
|
53
|
+
/* @__PURE__ */ jsx(AvatarImage, { src: item.src, alt: item.alt }),
|
|
54
|
+
/* @__PURE__ */ jsx(AvatarFallback, { children: item.fallback })
|
|
55
|
+
] }, index)),
|
|
56
|
+
remaining > 0 && /* @__PURE__ */ jsx(Avatar, { className: "border-2 border-background", children: /* @__PURE__ */ jsxs(AvatarFallback, { children: [
|
|
57
|
+
"+",
|
|
58
|
+
remaining
|
|
59
|
+
] }) })
|
|
60
|
+
] });
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
AvatarGroup.displayName = "AvatarGroup";
|
|
64
|
+
|
|
65
|
+
export { AvatarGroup };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
6
|
+
var lucideReact = require('lucide-react');
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var tailwindMerge = require('tailwind-merge');
|
|
9
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
+
|
|
11
|
+
function _interopNamespace(e) {
|
|
12
|
+
if (e && e.__esModule) return e;
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
30
|
+
|
|
31
|
+
var __defProp = Object.defineProperty;
|
|
32
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
33
|
+
function cn(...inputs) {
|
|
34
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
35
|
+
}
|
|
36
|
+
__name(cn, "cn");
|
|
37
|
+
var bannerVariants = classVarianceAuthority.cva(
|
|
38
|
+
"relative w-full border-b px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
|
|
39
|
+
{
|
|
40
|
+
variants: {
|
|
41
|
+
variant: {
|
|
42
|
+
default: "bg-background text-foreground",
|
|
43
|
+
info: "border-blue-500/50 bg-blue-50 text-blue-900 dark:bg-blue-950 dark:text-blue-100 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400",
|
|
44
|
+
success: "border-green-500/50 bg-green-50 text-green-900 dark:bg-green-950 dark:text-green-100 [&>svg]:text-green-600 dark:[&>svg]:text-green-400",
|
|
45
|
+
warning: "border-yellow-500/50 bg-yellow-50 text-yellow-900 dark:bg-yellow-950 dark:text-yellow-100 [&>svg]:text-yellow-600 dark:[&>svg]:text-yellow-400",
|
|
46
|
+
error: "border-red-500/50 bg-red-50 text-red-900 dark:bg-red-950 dark:text-red-100 [&>svg]:text-red-600 dark:[&>svg]:text-red-400"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
defaultVariants: {
|
|
50
|
+
variant: "default"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
var Banner = React__namespace.forwardRef(
|
|
55
|
+
({ className, variant, onClose, children, ...props }, ref) => {
|
|
56
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
ref,
|
|
60
|
+
role: "alert",
|
|
61
|
+
className: cn(bannerVariants({ variant }), className),
|
|
62
|
+
...props,
|
|
63
|
+
children: [
|
|
64
|
+
children,
|
|
65
|
+
onClose && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
66
|
+
"button",
|
|
67
|
+
{
|
|
68
|
+
type: "button",
|
|
69
|
+
onClick: onClose,
|
|
70
|
+
className: "absolute right-4 top-3 rounded-md p-1 hover:bg-black/5 dark:hover:bg-white/5",
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
Banner.displayName = "Banner";
|
|
83
|
+
|
|
84
|
+
exports.Banner = Banner;
|
|
85
|
+
exports.bannerVariants = bannerVariants;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { X } from 'lucide-react';
|
|
5
|
+
import { clsx } from 'clsx';
|
|
6
|
+
import { twMerge } from 'tailwind-merge';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
|
+
function cn(...inputs) {
|
|
12
|
+
return twMerge(clsx(inputs));
|
|
13
|
+
}
|
|
14
|
+
__name(cn, "cn");
|
|
15
|
+
var bannerVariants = cva(
|
|
16
|
+
"relative w-full border-b px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
|
|
17
|
+
{
|
|
18
|
+
variants: {
|
|
19
|
+
variant: {
|
|
20
|
+
default: "bg-background text-foreground",
|
|
21
|
+
info: "border-blue-500/50 bg-blue-50 text-blue-900 dark:bg-blue-950 dark:text-blue-100 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400",
|
|
22
|
+
success: "border-green-500/50 bg-green-50 text-green-900 dark:bg-green-950 dark:text-green-100 [&>svg]:text-green-600 dark:[&>svg]:text-green-400",
|
|
23
|
+
warning: "border-yellow-500/50 bg-yellow-50 text-yellow-900 dark:bg-yellow-950 dark:text-yellow-100 [&>svg]:text-yellow-600 dark:[&>svg]:text-yellow-400",
|
|
24
|
+
error: "border-red-500/50 bg-red-50 text-red-900 dark:bg-red-950 dark:text-red-100 [&>svg]:text-red-600 dark:[&>svg]:text-red-400"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
variant: "default"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
var Banner = React.forwardRef(
|
|
33
|
+
({ className, variant, onClose, children, ...props }, ref) => {
|
|
34
|
+
return /* @__PURE__ */ jsxs(
|
|
35
|
+
"div",
|
|
36
|
+
{
|
|
37
|
+
ref,
|
|
38
|
+
role: "alert",
|
|
39
|
+
className: cn(bannerVariants({ variant }), className),
|
|
40
|
+
...props,
|
|
41
|
+
children: [
|
|
42
|
+
children,
|
|
43
|
+
onClose && /* @__PURE__ */ jsxs(
|
|
44
|
+
"button",
|
|
45
|
+
{
|
|
46
|
+
type: "button",
|
|
47
|
+
onClick: onClose,
|
|
48
|
+
className: "absolute right-4 top-3 rounded-md p-1 hover:bg-black/5 dark:hover:bg-white/5",
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
|
|
51
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
Banner.displayName = "Banner";
|
|
61
|
+
|
|
62
|
+
export { Banner, bannerVariants };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var tailwindMerge = require('tailwind-merge');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
|
+
|
|
29
|
+
var __defProp = Object.defineProperty;
|
|
30
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
31
|
+
function cn(...inputs) {
|
|
32
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
|
+
}
|
|
34
|
+
__name(cn, "cn");
|
|
35
|
+
var Cursor = React__namespace.forwardRef(
|
|
36
|
+
({ className, children, cursorText, cursorSize = 20, ...props }, ref) => {
|
|
37
|
+
const [position, setPosition] = React__namespace.useState({ x: 0, y: 0 });
|
|
38
|
+
const [isHovered, setIsHovered] = React__namespace.useState(false);
|
|
39
|
+
const handleMouseMove = /* @__PURE__ */ __name((e) => {
|
|
40
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
41
|
+
setPosition({
|
|
42
|
+
x: e.clientX - rect.left,
|
|
43
|
+
y: e.clientY - rect.top
|
|
44
|
+
});
|
|
45
|
+
}, "handleMouseMove");
|
|
46
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
47
|
+
"div",
|
|
48
|
+
{
|
|
49
|
+
ref,
|
|
50
|
+
className: cn("relative cursor-none", className),
|
|
51
|
+
onMouseMove: handleMouseMove,
|
|
52
|
+
onMouseEnter: () => setIsHovered(true),
|
|
53
|
+
onMouseLeave: () => setIsHovered(false),
|
|
54
|
+
...props,
|
|
55
|
+
children: [
|
|
56
|
+
children,
|
|
57
|
+
isHovered && /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
className: "pointer-events-none absolute z-50 flex items-center justify-center rounded-full bg-primary/20 backdrop-blur-sm transition-transform",
|
|
61
|
+
style: {
|
|
62
|
+
left: position.x,
|
|
63
|
+
top: position.y,
|
|
64
|
+
width: cursorSize,
|
|
65
|
+
height: cursorSize,
|
|
66
|
+
transform: "translate(-50%, -50%)"
|
|
67
|
+
},
|
|
68
|
+
children: cursorText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-primary", children: cursorText })
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
Cursor.displayName = "Cursor";
|
|
77
|
+
|
|
78
|
+
exports.Cursor = Cursor;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
function cn(...inputs) {
|
|
10
|
+
return twMerge(clsx(inputs));
|
|
11
|
+
}
|
|
12
|
+
__name(cn, "cn");
|
|
13
|
+
var Cursor = React.forwardRef(
|
|
14
|
+
({ className, children, cursorText, cursorSize = 20, ...props }, ref) => {
|
|
15
|
+
const [position, setPosition] = React.useState({ x: 0, y: 0 });
|
|
16
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
17
|
+
const handleMouseMove = /* @__PURE__ */ __name((e) => {
|
|
18
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
19
|
+
setPosition({
|
|
20
|
+
x: e.clientX - rect.left,
|
|
21
|
+
y: e.clientY - rect.top
|
|
22
|
+
});
|
|
23
|
+
}, "handleMouseMove");
|
|
24
|
+
return /* @__PURE__ */ jsxs(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
ref,
|
|
28
|
+
className: cn("relative cursor-none", className),
|
|
29
|
+
onMouseMove: handleMouseMove,
|
|
30
|
+
onMouseEnter: () => setIsHovered(true),
|
|
31
|
+
onMouseLeave: () => setIsHovered(false),
|
|
32
|
+
...props,
|
|
33
|
+
children: [
|
|
34
|
+
children,
|
|
35
|
+
isHovered && /* @__PURE__ */ jsx(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
className: "pointer-events-none absolute z-50 flex items-center justify-center rounded-full bg-primary/20 backdrop-blur-sm transition-transform",
|
|
39
|
+
style: {
|
|
40
|
+
left: position.x,
|
|
41
|
+
top: position.y,
|
|
42
|
+
width: cursorSize,
|
|
43
|
+
height: cursorSize,
|
|
44
|
+
transform: "translate(-50%, -50%)"
|
|
45
|
+
},
|
|
46
|
+
children: cursorText && /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-primary", children: cursorText })
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
Cursor.displayName = "Cursor";
|
|
55
|
+
|
|
56
|
+
export { Cursor };
|