@luxfi/ui 1.0.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/dist/accordion.cjs +213 -0
- package/dist/accordion.js +186 -0
- package/dist/alert.cjs +553 -0
- package/dist/alert.js +531 -0
- package/dist/avatar.cjs +149 -0
- package/dist/avatar.js +125 -0
- package/dist/badge.cjs +611 -0
- package/dist/badge.js +589 -0
- package/dist/button.cjs +689 -0
- package/dist/button.js +664 -0
- package/dist/checkbox.cjs +265 -0
- package/dist/checkbox.js +241 -0
- package/dist/close-button.cjs +73 -0
- package/dist/close-button.js +51 -0
- package/dist/collapsible.cjs +711 -0
- package/dist/collapsible.js +685 -0
- package/dist/color-mode.cjs +36 -0
- package/dist/color-mode.js +32 -0
- package/dist/dialog.cjs +279 -0
- package/dist/dialog.js +246 -0
- package/dist/drawer.cjs +207 -0
- package/dist/drawer.js +175 -0
- package/dist/empty-state.cjs +93 -0
- package/dist/empty-state.js +71 -0
- package/dist/field.cjs +183 -0
- package/dist/field.js +160 -0
- package/dist/heading.cjs +46 -0
- package/dist/heading.js +40 -0
- package/dist/icon-button.cjs +491 -0
- package/dist/icon-button.js +470 -0
- package/dist/image.cjs +572 -0
- package/dist/image.js +551 -0
- package/dist/index.cjs +5749 -0
- package/dist/index.js +5586 -0
- package/dist/input-group.cjs +155 -0
- package/dist/input-group.js +133 -0
- package/dist/input.cjs +65 -0
- package/dist/input.js +59 -0
- package/dist/link.cjs +639 -0
- package/dist/link.js +612 -0
- package/dist/menu.cjs +305 -0
- package/dist/menu.js +269 -0
- package/dist/pin-input.cjs +182 -0
- package/dist/pin-input.js +160 -0
- package/dist/popover.cjs +327 -0
- package/dist/popover.js +294 -0
- package/dist/progress-circle.cjs +152 -0
- package/dist/progress-circle.js +128 -0
- package/dist/progress.cjs +117 -0
- package/dist/progress.js +94 -0
- package/dist/provider.cjs +22 -0
- package/dist/provider.js +20 -0
- package/dist/radio.cjs +177 -0
- package/dist/radio.js +153 -0
- package/dist/rating.cjs +80 -0
- package/dist/rating.js +58 -0
- package/dist/select.cjs +791 -0
- package/dist/select.js +757 -0
- package/dist/separator.cjs +57 -0
- package/dist/separator.js +51 -0
- package/dist/skeleton.cjs +370 -0
- package/dist/skeleton.js +346 -0
- package/dist/slider.cjs +138 -0
- package/dist/slider.js +115 -0
- package/dist/switch.cjs +163 -0
- package/dist/switch.js +140 -0
- package/dist/table.cjs +1053 -0
- package/dist/table.js +1019 -0
- package/dist/tabs.cjs +240 -0
- package/dist/tabs.js +213 -0
- package/dist/tag.cjs +651 -0
- package/dist/tag.js +628 -0
- package/dist/textarea.cjs +65 -0
- package/dist/textarea.js +59 -0
- package/dist/toaster.cjs +99 -0
- package/dist/toaster.js +96 -0
- package/dist/tooltip.cjs +171 -0
- package/dist/tooltip.js +148 -0
- package/dist/utils.cjs +11 -0
- package/dist/utils.js +9 -0
- package/package.json +296 -0
- package/src/accordion.tsx +285 -0
- package/src/alert.tsx +221 -0
- package/src/avatar.tsx +174 -0
- package/src/badge.tsx +158 -0
- package/src/button.tsx +411 -0
- package/src/checkbox.tsx +307 -0
- package/src/close-button.tsx +51 -0
- package/src/collapsible.tsx +126 -0
- package/src/color-mode.tsx +37 -0
- package/src/dialog.tsx +356 -0
- package/src/drawer.tsx +186 -0
- package/src/empty-state.tsx +97 -0
- package/src/field.tsx +202 -0
- package/src/heading.tsx +55 -0
- package/src/icon-button.tsx +192 -0
- package/src/image.tsx +280 -0
- package/src/index.ts +192 -0
- package/src/input-group.tsx +159 -0
- package/src/input.tsx +60 -0
- package/src/link.tsx +333 -0
- package/src/menu.tsx +471 -0
- package/src/pin-input.tsx +187 -0
- package/src/popover.tsx +400 -0
- package/src/progress-circle.tsx +180 -0
- package/src/progress.tsx +109 -0
- package/src/provider.tsx +12 -0
- package/src/radio.tsx +175 -0
- package/src/rating.tsx +79 -0
- package/src/select.tsx +696 -0
- package/src/separator.tsx +59 -0
- package/src/skeleton.tsx +302 -0
- package/src/slider.tsx +152 -0
- package/src/switch.tsx +158 -0
- package/src/table.tsx +621 -0
- package/src/tabs.tsx +354 -0
- package/src/tag.tsx +159 -0
- package/src/textarea.tsx +60 -0
- package/src/toaster.tsx +117 -0
- package/src/tokens.css +438 -0
- package/src/tooltip.tsx +184 -0
- package/src/utils/cn.ts +7 -0
- package/src/utils.ts +6 -0
- package/tokens.css +438 -0
package/dist/avatar.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as RadixAvatar from '@radix-ui/react-avatar';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var SIZE_CLASSES = {
|
|
12
|
+
xs: "h-6 w-6 text-[10px]",
|
|
13
|
+
sm: "h-8 w-8 text-xs",
|
|
14
|
+
md: "h-10 w-10 text-sm",
|
|
15
|
+
lg: "h-12 w-12 text-base",
|
|
16
|
+
xl: "h-16 w-16 text-lg",
|
|
17
|
+
"2xl": "h-20 w-20 text-xl"
|
|
18
|
+
};
|
|
19
|
+
var VARIANT_CLASSES = {
|
|
20
|
+
solid: "bg-gray-500 text-white",
|
|
21
|
+
subtle: "bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-200",
|
|
22
|
+
outline: "border-2 border-gray-300 bg-transparent text-gray-700 dark:border-gray-600 dark:text-gray-200"
|
|
23
|
+
};
|
|
24
|
+
var DEFAULT_SIZE = "md";
|
|
25
|
+
var DEFAULT_VARIANT = "subtle";
|
|
26
|
+
var AvatarGroupContext = React.createContext({});
|
|
27
|
+
function useAvatarGroupContext() {
|
|
28
|
+
return React.useContext(AvatarGroupContext);
|
|
29
|
+
}
|
|
30
|
+
var Avatar = React.forwardRef(
|
|
31
|
+
function Avatar2(props, ref) {
|
|
32
|
+
const group = useAvatarGroupContext();
|
|
33
|
+
const {
|
|
34
|
+
name,
|
|
35
|
+
src,
|
|
36
|
+
srcSet,
|
|
37
|
+
loading,
|
|
38
|
+
icon,
|
|
39
|
+
fallback,
|
|
40
|
+
children,
|
|
41
|
+
className,
|
|
42
|
+
size: sizeProp,
|
|
43
|
+
variant: variantProp,
|
|
44
|
+
borderless,
|
|
45
|
+
...rest
|
|
46
|
+
} = props;
|
|
47
|
+
const size = sizeProp ?? group.size ?? DEFAULT_SIZE;
|
|
48
|
+
const variant = variantProp ?? group.variant ?? DEFAULT_VARIANT;
|
|
49
|
+
const isBorderless = borderless ?? group.borderless ?? false;
|
|
50
|
+
return /* @__PURE__ */ jsxs(
|
|
51
|
+
RadixAvatar.Root,
|
|
52
|
+
{
|
|
53
|
+
ref,
|
|
54
|
+
className: cn(
|
|
55
|
+
"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full align-middle",
|
|
56
|
+
SIZE_CLASSES[size],
|
|
57
|
+
VARIANT_CLASSES[variant],
|
|
58
|
+
!isBorderless && "ring-2 ring-white dark:ring-gray-900",
|
|
59
|
+
className
|
|
60
|
+
),
|
|
61
|
+
...rest,
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ jsx(AvatarFallback, { name, icon, children: fallback }),
|
|
64
|
+
/* @__PURE__ */ jsx(
|
|
65
|
+
RadixAvatar.Image,
|
|
66
|
+
{
|
|
67
|
+
className: "h-full w-full rounded-[inherit] object-cover",
|
|
68
|
+
src,
|
|
69
|
+
srcSet,
|
|
70
|
+
loading,
|
|
71
|
+
alt: name ?? ""
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
children
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
var AvatarFallback = React.forwardRef(
|
|
81
|
+
function AvatarFallback2(props, ref) {
|
|
82
|
+
const { name, icon, children, className, ...rest } = props;
|
|
83
|
+
return /* @__PURE__ */ jsxs(
|
|
84
|
+
RadixAvatar.Fallback,
|
|
85
|
+
{
|
|
86
|
+
ref,
|
|
87
|
+
className: cn(
|
|
88
|
+
"flex h-full w-full items-center justify-center font-medium",
|
|
89
|
+
className
|
|
90
|
+
),
|
|
91
|
+
...rest,
|
|
92
|
+
children: [
|
|
93
|
+
children,
|
|
94
|
+
name != null && children == null && /* @__PURE__ */ jsx(Fragment, { children: getInitials(name) }),
|
|
95
|
+
name == null && children == null && icon
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
function getInitials(name) {
|
|
102
|
+
const names = name.trim().split(" ");
|
|
103
|
+
const firstName = names[0] != null ? names[0] : "";
|
|
104
|
+
const lastName = names.length > 1 ? names[names.length - 1] : "";
|
|
105
|
+
return firstName && lastName ? `${firstName.charAt(0)}${lastName.charAt(0)}` : firstName.charAt(0);
|
|
106
|
+
}
|
|
107
|
+
var AvatarGroup = React.forwardRef(
|
|
108
|
+
function AvatarGroup2(props, ref) {
|
|
109
|
+
const { size, variant, borderless, className, ...rest } = props;
|
|
110
|
+
const contextValue = React.useMemo(
|
|
111
|
+
() => ({ size, variant, borderless }),
|
|
112
|
+
[size, variant, borderless]
|
|
113
|
+
);
|
|
114
|
+
return /* @__PURE__ */ jsx(AvatarGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
115
|
+
"div",
|
|
116
|
+
{
|
|
117
|
+
ref,
|
|
118
|
+
className: cn("flex -space-x-3", className),
|
|
119
|
+
...rest
|
|
120
|
+
}
|
|
121
|
+
) });
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
export { Avatar, AvatarGroup };
|