@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
@@ -0,0 +1,163 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var RadixSwitch = require('@radix-ui/react-switch');
5
+ var React = require('react');
6
+ var clsx = require('clsx');
7
+ var tailwindMerge = require('tailwind-merge');
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 RadixSwitch__namespace = /*#__PURE__*/_interopNamespace(RadixSwitch);
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
+
31
+ // src/switch.tsx
32
+ function cn(...inputs) {
33
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
34
+ }
35
+ var NOOP = () => {
36
+ };
37
+ var SIZE_CLASSES = {
38
+ sm: {
39
+ root: "h-4 w-7",
40
+ thumb: "h-3 w-3 data-[state=checked]:translate-x-3",
41
+ label: "text-xs"
42
+ },
43
+ md: {
44
+ root: "h-5 w-9",
45
+ thumb: "h-4 w-4 data-[state=checked]:translate-x-4",
46
+ label: "text-sm"
47
+ },
48
+ lg: {
49
+ root: "h-6 w-11",
50
+ thumb: "h-5 w-5 data-[state=checked]:translate-x-5",
51
+ label: "text-base"
52
+ }
53
+ };
54
+ var SwitchBase = React__namespace.forwardRef(
55
+ function Switch(props, ref) {
56
+ const {
57
+ inputProps,
58
+ children,
59
+ rootRef,
60
+ labelProps,
61
+ trackLabel,
62
+ thumbLabel,
63
+ checked: checkedProp,
64
+ defaultChecked,
65
+ onCheckedChange,
66
+ onChange,
67
+ disabled = false,
68
+ size = "md",
69
+ direction,
70
+ className,
71
+ ...rest
72
+ } = props;
73
+ const [internalChecked, setInternalChecked] = React__namespace.useState(defaultChecked ?? false);
74
+ const isControlled = checkedProp !== void 0;
75
+ const checkedState = isControlled ? checkedProp : internalChecked;
76
+ const handleCheckedChange = React__namespace.useCallback(
77
+ (nextChecked) => {
78
+ if (!isControlled) {
79
+ setInternalChecked(nextChecked);
80
+ }
81
+ if (onCheckedChange) {
82
+ onCheckedChange({ checked: nextChecked });
83
+ }
84
+ },
85
+ [isControlled, onCheckedChange]
86
+ );
87
+ const sizeClasses = SIZE_CLASSES[size];
88
+ const isRtl = direction === "rtl";
89
+ return /* @__PURE__ */ jsxRuntime.jsxs(
90
+ "label",
91
+ {
92
+ ref: rootRef,
93
+ className: cn(
94
+ "inline-flex items-center cursor-pointer select-none gap-2",
95
+ isRtl && "flex-row-reverse",
96
+ disabled && "opacity-50 cursor-not-allowed",
97
+ className
98
+ ),
99
+ onChange,
100
+ "data-disabled": disabled || void 0,
101
+ ...rest,
102
+ children: [
103
+ /* @__PURE__ */ jsxRuntime.jsxs(
104
+ RadixSwitch__namespace.Root,
105
+ {
106
+ checked: checkedState,
107
+ onCheckedChange: handleCheckedChange,
108
+ disabled,
109
+ className: cn(
110
+ "relative inline-flex shrink-0 items-center rounded-full",
111
+ "bg-gray-300 dark:bg-gray-600",
112
+ "data-[state=checked]:bg-gray-800 dark:bg-white",
113
+ "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500",
114
+ "transition-colors duration-200",
115
+ sizeClasses.root
116
+ ),
117
+ children: [
118
+ trackLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute inset-0 flex items-center justify-center text-[8px] font-bold text-white pointer-events-none", children: checkedState ? trackLabel.on : trackLabel.off }),
119
+ /* @__PURE__ */ jsxRuntime.jsx(
120
+ RadixSwitch__namespace.Thumb,
121
+ {
122
+ className: cn(
123
+ "block rounded-full bg-white shadow-sm",
124
+ "transition-transform duration-200",
125
+ "translate-x-0.5",
126
+ sizeClasses.thumb
127
+ ),
128
+ children: thumbLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center justify-center h-full w-full text-[8px]", children: checkedState ? thumbLabel.on : thumbLabel.off })
129
+ }
130
+ )
131
+ ]
132
+ }
133
+ ),
134
+ /* @__PURE__ */ jsxRuntime.jsx(
135
+ "input",
136
+ {
137
+ ref,
138
+ type: "checkbox",
139
+ className: "sr-only",
140
+ checked: checkedState,
141
+ disabled,
142
+ tabIndex: -1,
143
+ "aria-hidden": true,
144
+ onChange: NOOP,
145
+ ...inputProps
146
+ }
147
+ ),
148
+ children != null && /* @__PURE__ */ jsxRuntime.jsx(
149
+ "span",
150
+ {
151
+ ...labelProps,
152
+ className: cn(sizeClasses.label, labelProps?.className),
153
+ children
154
+ }
155
+ )
156
+ ]
157
+ }
158
+ );
159
+ }
160
+ );
161
+ var Switch2 = SwitchBase;
162
+
163
+ exports.Switch = Switch2;
package/dist/switch.js ADDED
@@ -0,0 +1,140 @@
1
+ "use client";
2
+ import * as RadixSwitch from '@radix-ui/react-switch';
3
+ import * as React from 'react';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ // src/switch.tsx
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ var NOOP = () => {
13
+ };
14
+ var SIZE_CLASSES = {
15
+ sm: {
16
+ root: "h-4 w-7",
17
+ thumb: "h-3 w-3 data-[state=checked]:translate-x-3",
18
+ label: "text-xs"
19
+ },
20
+ md: {
21
+ root: "h-5 w-9",
22
+ thumb: "h-4 w-4 data-[state=checked]:translate-x-4",
23
+ label: "text-sm"
24
+ },
25
+ lg: {
26
+ root: "h-6 w-11",
27
+ thumb: "h-5 w-5 data-[state=checked]:translate-x-5",
28
+ label: "text-base"
29
+ }
30
+ };
31
+ var SwitchBase = React.forwardRef(
32
+ function Switch(props, ref) {
33
+ const {
34
+ inputProps,
35
+ children,
36
+ rootRef,
37
+ labelProps,
38
+ trackLabel,
39
+ thumbLabel,
40
+ checked: checkedProp,
41
+ defaultChecked,
42
+ onCheckedChange,
43
+ onChange,
44
+ disabled = false,
45
+ size = "md",
46
+ direction,
47
+ className,
48
+ ...rest
49
+ } = props;
50
+ const [internalChecked, setInternalChecked] = React.useState(defaultChecked ?? false);
51
+ const isControlled = checkedProp !== void 0;
52
+ const checkedState = isControlled ? checkedProp : internalChecked;
53
+ const handleCheckedChange = React.useCallback(
54
+ (nextChecked) => {
55
+ if (!isControlled) {
56
+ setInternalChecked(nextChecked);
57
+ }
58
+ if (onCheckedChange) {
59
+ onCheckedChange({ checked: nextChecked });
60
+ }
61
+ },
62
+ [isControlled, onCheckedChange]
63
+ );
64
+ const sizeClasses = SIZE_CLASSES[size];
65
+ const isRtl = direction === "rtl";
66
+ return /* @__PURE__ */ jsxs(
67
+ "label",
68
+ {
69
+ ref: rootRef,
70
+ className: cn(
71
+ "inline-flex items-center cursor-pointer select-none gap-2",
72
+ isRtl && "flex-row-reverse",
73
+ disabled && "opacity-50 cursor-not-allowed",
74
+ className
75
+ ),
76
+ onChange,
77
+ "data-disabled": disabled || void 0,
78
+ ...rest,
79
+ children: [
80
+ /* @__PURE__ */ jsxs(
81
+ RadixSwitch.Root,
82
+ {
83
+ checked: checkedState,
84
+ onCheckedChange: handleCheckedChange,
85
+ disabled,
86
+ className: cn(
87
+ "relative inline-flex shrink-0 items-center rounded-full",
88
+ "bg-gray-300 dark:bg-gray-600",
89
+ "data-[state=checked]:bg-gray-800 dark:bg-white",
90
+ "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500",
91
+ "transition-colors duration-200",
92
+ sizeClasses.root
93
+ ),
94
+ children: [
95
+ trackLabel && /* @__PURE__ */ jsx("span", { className: "absolute inset-0 flex items-center justify-center text-[8px] font-bold text-white pointer-events-none", children: checkedState ? trackLabel.on : trackLabel.off }),
96
+ /* @__PURE__ */ jsx(
97
+ RadixSwitch.Thumb,
98
+ {
99
+ className: cn(
100
+ "block rounded-full bg-white shadow-sm",
101
+ "transition-transform duration-200",
102
+ "translate-x-0.5",
103
+ sizeClasses.thumb
104
+ ),
105
+ children: thumbLabel && /* @__PURE__ */ jsx("span", { className: "flex items-center justify-center h-full w-full text-[8px]", children: checkedState ? thumbLabel.on : thumbLabel.off })
106
+ }
107
+ )
108
+ ]
109
+ }
110
+ ),
111
+ /* @__PURE__ */ jsx(
112
+ "input",
113
+ {
114
+ ref,
115
+ type: "checkbox",
116
+ className: "sr-only",
117
+ checked: checkedState,
118
+ disabled,
119
+ tabIndex: -1,
120
+ "aria-hidden": true,
121
+ onChange: NOOP,
122
+ ...inputProps
123
+ }
124
+ ),
125
+ children != null && /* @__PURE__ */ jsx(
126
+ "span",
127
+ {
128
+ ...labelProps,
129
+ className: cn(sizeClasses.label, labelProps?.className),
130
+ children
131
+ }
132
+ )
133
+ ]
134
+ }
135
+ );
136
+ }
137
+ );
138
+ var Switch2 = SwitchBase;
139
+
140
+ export { Switch2 as Switch };