@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.
Files changed (124) hide show
  1. package/dist/accordion.cjs +213 -0
  2. package/dist/accordion.js +186 -0
  3. package/dist/alert.cjs +553 -0
  4. package/dist/alert.js +531 -0
  5. package/dist/avatar.cjs +149 -0
  6. package/dist/avatar.js +125 -0
  7. package/dist/badge.cjs +611 -0
  8. package/dist/badge.js +589 -0
  9. package/dist/button.cjs +689 -0
  10. package/dist/button.js +664 -0
  11. package/dist/checkbox.cjs +265 -0
  12. package/dist/checkbox.js +241 -0
  13. package/dist/close-button.cjs +73 -0
  14. package/dist/close-button.js +51 -0
  15. package/dist/collapsible.cjs +711 -0
  16. package/dist/collapsible.js +685 -0
  17. package/dist/color-mode.cjs +36 -0
  18. package/dist/color-mode.js +32 -0
  19. package/dist/dialog.cjs +279 -0
  20. package/dist/dialog.js +246 -0
  21. package/dist/drawer.cjs +207 -0
  22. package/dist/drawer.js +175 -0
  23. package/dist/empty-state.cjs +93 -0
  24. package/dist/empty-state.js +71 -0
  25. package/dist/field.cjs +183 -0
  26. package/dist/field.js +160 -0
  27. package/dist/heading.cjs +46 -0
  28. package/dist/heading.js +40 -0
  29. package/dist/icon-button.cjs +491 -0
  30. package/dist/icon-button.js +470 -0
  31. package/dist/image.cjs +572 -0
  32. package/dist/image.js +551 -0
  33. package/dist/index.cjs +5749 -0
  34. package/dist/index.js +5586 -0
  35. package/dist/input-group.cjs +155 -0
  36. package/dist/input-group.js +133 -0
  37. package/dist/input.cjs +65 -0
  38. package/dist/input.js +59 -0
  39. package/dist/link.cjs +639 -0
  40. package/dist/link.js +612 -0
  41. package/dist/menu.cjs +305 -0
  42. package/dist/menu.js +269 -0
  43. package/dist/pin-input.cjs +182 -0
  44. package/dist/pin-input.js +160 -0
  45. package/dist/popover.cjs +327 -0
  46. package/dist/popover.js +294 -0
  47. package/dist/progress-circle.cjs +152 -0
  48. package/dist/progress-circle.js +128 -0
  49. package/dist/progress.cjs +117 -0
  50. package/dist/progress.js +94 -0
  51. package/dist/provider.cjs +22 -0
  52. package/dist/provider.js +20 -0
  53. package/dist/radio.cjs +177 -0
  54. package/dist/radio.js +153 -0
  55. package/dist/rating.cjs +80 -0
  56. package/dist/rating.js +58 -0
  57. package/dist/select.cjs +791 -0
  58. package/dist/select.js +757 -0
  59. package/dist/separator.cjs +57 -0
  60. package/dist/separator.js +51 -0
  61. package/dist/skeleton.cjs +370 -0
  62. package/dist/skeleton.js +346 -0
  63. package/dist/slider.cjs +138 -0
  64. package/dist/slider.js +115 -0
  65. package/dist/switch.cjs +163 -0
  66. package/dist/switch.js +140 -0
  67. package/dist/table.cjs +1053 -0
  68. package/dist/table.js +1019 -0
  69. package/dist/tabs.cjs +240 -0
  70. package/dist/tabs.js +213 -0
  71. package/dist/tag.cjs +651 -0
  72. package/dist/tag.js +628 -0
  73. package/dist/textarea.cjs +65 -0
  74. package/dist/textarea.js +59 -0
  75. package/dist/toaster.cjs +99 -0
  76. package/dist/toaster.js +96 -0
  77. package/dist/tooltip.cjs +171 -0
  78. package/dist/tooltip.js +148 -0
  79. package/dist/utils.cjs +11 -0
  80. package/dist/utils.js +9 -0
  81. package/package.json +296 -0
  82. package/src/accordion.tsx +285 -0
  83. package/src/alert.tsx +221 -0
  84. package/src/avatar.tsx +174 -0
  85. package/src/badge.tsx +158 -0
  86. package/src/button.tsx +411 -0
  87. package/src/checkbox.tsx +307 -0
  88. package/src/close-button.tsx +51 -0
  89. package/src/collapsible.tsx +126 -0
  90. package/src/color-mode.tsx +37 -0
  91. package/src/dialog.tsx +356 -0
  92. package/src/drawer.tsx +186 -0
  93. package/src/empty-state.tsx +97 -0
  94. package/src/field.tsx +202 -0
  95. package/src/heading.tsx +55 -0
  96. package/src/icon-button.tsx +192 -0
  97. package/src/image.tsx +280 -0
  98. package/src/index.ts +192 -0
  99. package/src/input-group.tsx +159 -0
  100. package/src/input.tsx +60 -0
  101. package/src/link.tsx +333 -0
  102. package/src/menu.tsx +471 -0
  103. package/src/pin-input.tsx +187 -0
  104. package/src/popover.tsx +400 -0
  105. package/src/progress-circle.tsx +180 -0
  106. package/src/progress.tsx +109 -0
  107. package/src/provider.tsx +12 -0
  108. package/src/radio.tsx +175 -0
  109. package/src/rating.tsx +79 -0
  110. package/src/select.tsx +696 -0
  111. package/src/separator.tsx +59 -0
  112. package/src/skeleton.tsx +302 -0
  113. package/src/slider.tsx +152 -0
  114. package/src/switch.tsx +158 -0
  115. package/src/table.tsx +621 -0
  116. package/src/tabs.tsx +354 -0
  117. package/src/tag.tsx +159 -0
  118. package/src/textarea.tsx +60 -0
  119. package/src/toaster.tsx +117 -0
  120. package/src/tokens.css +438 -0
  121. package/src/tooltip.tsx +184 -0
  122. package/src/utils/cn.ts +7 -0
  123. package/src/utils.ts +6 -0
  124. 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 };