@luxfi/ui 5.5.3 → 5.6.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.
Files changed (244) 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 +702 -0
  16. package/dist/collapsible.js +679 -0
  17. package/dist/color-mode.cjs +96 -0
  18. package/dist/color-mode.js +72 -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 +5779 -0
  34. package/dist/index.js +5619 -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 +630 -0
  40. package/dist/link.js +606 -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 +62 -0
  52. package/dist/provider.js +40 -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 +1044 -0
  68. package/dist/table.js +1013 -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 +270 -65
  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 +125 -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 +326 -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
  125. package/commerce/ui/conf.ts +0 -13
  126. package/commerce/ui/context.tsx +0 -123
  127. package/commerce/ui/store.ts +0 -295
  128. package/components/access-code-input.tsx +0 -71
  129. package/components/analytics.tsx +0 -23
  130. package/components/auth/auth-listener.tsx +0 -29
  131. package/components/auth/auth-token/clear-auth-token.tsx +0 -12
  132. package/components/auth/auth-token/set-auth-token.tsx +0 -16
  133. package/components/auth/common-auth-domains.ts +0 -17
  134. package/components/auth/login-panel.tsx +0 -111
  135. package/components/auth/mobile-login-button.tsx +0 -107
  136. package/components/auth/signup-panel.tsx +0 -113
  137. package/components/back-button.tsx +0 -49
  138. package/components/chat-widget.tsx +0 -85
  139. package/components/commerce/bag-button.tsx +0 -98
  140. package/components/commerce/buy-button.tsx +0 -34
  141. package/components/commerce/checkout-button.tsx +0 -129
  142. package/components/commerce/checkout-panel/cart-accordian.tsx +0 -66
  143. package/components/commerce/checkout-panel/checkout-panel-props.ts +0 -10
  144. package/components/commerce/checkout-panel/desktop-bag-carousel.tsx +0 -36
  145. package/components/commerce/checkout-panel/desktop-cp.tsx +0 -83
  146. package/components/commerce/checkout-panel/index.tsx +0 -126
  147. package/components/commerce/checkout-panel/mobile-cp.tsx +0 -67
  148. package/components/commerce/checkout-panel/policy-links.tsx +0 -29
  149. package/components/commerce/checkout-panel/steps-indicator.tsx +0 -39
  150. package/components/commerce/checkout-panel/thank-you.tsx +0 -18
  151. package/components/commerce/desktop-bag-popup.tsx +0 -78
  152. package/components/commerce/drawer/index.tsx +0 -88
  153. package/components/commerce/drawer/micro.tsx +0 -145
  154. package/components/commerce/drawer/shell.tsx +0 -85
  155. package/components/contact-dialog/contact-form.tsx +0 -116
  156. package/components/contact-dialog/disclaimer.tsx +0 -13
  157. package/components/contact-dialog/index.tsx +0 -64
  158. package/components/copyright.tsx +0 -21
  159. package/components/drawer-margin.tsx +0 -28
  160. package/components/footer.tsx +0 -78
  161. package/components/header/desktop-nav-menu.tsx +0 -204
  162. package/components/header/desktop.tsx +0 -65
  163. package/components/header/index.tsx +0 -50
  164. package/components/header/mobile-bag-drawer.tsx +0 -51
  165. package/components/header/mobile-menu-toggle-button.tsx +0 -35
  166. package/components/header/mobile-nav-menu-ai.tsx +0 -51
  167. package/components/header/mobile-nav-menu-item.tsx +0 -47
  168. package/components/header/mobile-nav-menu.tsx +0 -102
  169. package/components/header/mobile.tsx +0 -170
  170. package/components/header/theme-toggle.tsx +0 -26
  171. package/components/icons/avatar.tsx +0 -11
  172. package/components/icons/bag-icon.tsx +0 -10
  173. package/components/icons/index.ts +0 -6
  174. package/components/icons/left-arrow.tsx +0 -11
  175. package/components/icons/lux-logo.tsx +0 -10
  176. package/components/icons/right-arrow.tsx +0 -10
  177. package/components/icons/social-icon.tsx +0 -35
  178. package/components/icons/social-svg.css +0 -3
  179. package/components/index.ts +0 -26
  180. package/components/logo.tsx +0 -92
  181. package/components/main.tsx +0 -27
  182. package/components/mini-chart/index.tsx +0 -8
  183. package/components/mini-chart/mini-chart-props.ts +0 -44
  184. package/components/mini-chart/mini-chart.tsx +0 -85
  185. package/components/mini-chart/wrapper.tsx +0 -23
  186. package/components/not-found/index.tsx +0 -28
  187. package/components/not-found/not-found-content.mdx +0 -5
  188. package/components/tooltip.tsx +0 -31
  189. package/environment.d.ts +0 -6
  190. package/next/analytics/fpixel.ts +0 -16
  191. package/next/analytics/google-analytics.ts +0 -14
  192. package/next/analytics/index.ts +0 -3
  193. package/next/analytics/pixel-analytics.tsx +0 -55
  194. package/next/font/get-app-router-font-classes.ts +0 -17
  195. package/next/font/load-and-return-lux-next-fonts-on-import.ts +0 -68
  196. package/next/font/local/Druk-Wide-Bold.ttf +0 -0
  197. package/next/font/local/Druk-Wide-Medium.ttf +0 -0
  198. package/next/font/local/InterVariable-Italic.ttf +0 -0
  199. package/next/font/local/InterVariable-Italic.woff2 +0 -0
  200. package/next/font/local/InterVariable.ttf +0 -0
  201. package/next/font/local/InterVariable.woff2 +0 -0
  202. package/next/font/next-font-desc.ts +0 -28
  203. package/next/font/pages-router-font-vars.tsx +0 -18
  204. package/next/head-metadata/from-next/metadata-types.ts +0 -158
  205. package/next/head-metadata/from-next/opengraph-types.ts +0 -267
  206. package/next/head-metadata/from-next/twitter-types.ts +0 -92
  207. package/next/head-metadata/index.tsx +0 -208
  208. package/next/index.ts +0 -2
  209. package/next/middleware/determine-device-mw.ts +0 -29
  210. package/root-layout/WHY_THIS_IS_SEPARATE.txt +0 -2
  211. package/root-layout/index.tsx +0 -112
  212. package/site-def/footer/community.tsx +0 -61
  213. package/site-def/footer/company.ts +0 -37
  214. package/site-def/footer/ecosystem.ts +0 -37
  215. package/site-def/footer/index.tsx +0 -26
  216. package/site-def/footer/legal.ts +0 -28
  217. package/site-def/footer/network.ts +0 -45
  218. package/site-def/footer/svg/warpcast-logo.svg +0 -12
  219. package/site-def/index.ts +0 -4
  220. package/site-def/main-nav.tsx +0 -460
  221. package/style/cart-animation.css +0 -29
  222. package/style/checkout-animation.css +0 -23
  223. package/style/drawer-handle-overrides.css +0 -160
  224. package/style/fonts/COPY_TO_PUBLIC_FOR_NON_NEXT.txt +0 -0
  225. package/style/fonts/Druk-Wide-Bold.ttf +0 -0
  226. package/style/fonts/Druk-Wide-Medium.ttf +0 -0
  227. package/style/fonts/InterVariable-Italic.ttf +0 -0
  228. package/style/fonts/InterVariable-Italic.woff2 +0 -0
  229. package/style/fonts/InterVariable.ttf +0 -0
  230. package/style/fonts/InterVariable.woff2 +0 -0
  231. package/style/lux-colors.css +0 -85
  232. package/style/lux-fonts.css +0 -30
  233. package/style/lux-global-non-next.css +0 -52
  234. package/style/lux-global.css +0 -51
  235. package/tailwind/fontFamily.tailwind.lux.ts +0 -18
  236. package/tailwind/index.ts +0 -2
  237. package/tailwind/lux-tw-fonts.ts +0 -40
  238. package/tailwind/tailwind.config.lux-preset.ts +0 -10
  239. package/tsconfig.json +0 -15
  240. package/types/chatbot-config.ts +0 -7
  241. package/types/chatbot-suggested-question.ts +0 -7
  242. package/types/contact-info.ts +0 -11
  243. package/types/index.ts +0 -4
  244. package/types/site-def.ts +0 -46
@@ -0,0 +1,155 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var esToolkit = require('es-toolkit');
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 React__namespace = /*#__PURE__*/_interopNamespace(React);
29
+
30
+ // src/input-group.tsx
31
+ function cn(...inputs) {
32
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
33
+ }
34
+ function getComponentDisplayName(type) {
35
+ if (typeof type === "string") return void 0;
36
+ if ("displayName" in type) return type.displayName;
37
+ return void 0;
38
+ }
39
+ var InputGroup = React__namespace.forwardRef(
40
+ function InputGroup2(props, ref) {
41
+ const {
42
+ startElement,
43
+ startElementProps,
44
+ endElement,
45
+ endElementProps,
46
+ children,
47
+ startOffset,
48
+ endOffset,
49
+ className,
50
+ ...rest
51
+ } = props;
52
+ const startElementRef = React__namespace.useRef(null);
53
+ const endElementRef = React__namespace.useRef(null);
54
+ const groupRef = React__namespace.useRef(null);
55
+ const [inlinePaddings, setInlinePaddings] = React__namespace.useState();
56
+ const calculateInlinePaddings = React__namespace.useCallback(() => {
57
+ const startWidth = startElementRef.current?.getBoundingClientRect().width ?? 0;
58
+ const endWidth = endElementRef.current?.getBoundingClientRect().width ?? 0;
59
+ setInlinePaddings({
60
+ start: startWidth,
61
+ end: endWidth
62
+ });
63
+ }, []);
64
+ React__namespace.useEffect(() => {
65
+ if (!groupRef.current) return;
66
+ let timeoutId;
67
+ const intersectionObserver = new IntersectionObserver(
68
+ (entries) => {
69
+ const entry = entries[0];
70
+ if (entry && entry.isIntersecting) {
71
+ timeoutId = setTimeout(calculateInlinePaddings, 50);
72
+ }
73
+ },
74
+ { threshold: 0.01 }
75
+ );
76
+ intersectionObserver.observe(groupRef.current);
77
+ return () => {
78
+ intersectionObserver.disconnect();
79
+ if (timeoutId) {
80
+ clearTimeout(timeoutId);
81
+ }
82
+ };
83
+ }, [calculateInlinePaddings]);
84
+ React__namespace.useEffect(() => {
85
+ calculateInlinePaddings();
86
+ const resizeHandler = esToolkit.debounce(calculateInlinePaddings, 300);
87
+ const resizeObserver = new ResizeObserver(resizeHandler);
88
+ if (groupRef.current) {
89
+ resizeObserver.observe(groupRef.current);
90
+ }
91
+ return function cleanup() {
92
+ resizeObserver.disconnect();
93
+ };
94
+ }, [calculateInlinePaddings]);
95
+ const combinedRef = React__namespace.useCallback((node) => {
96
+ groupRef.current = node;
97
+ if (typeof ref === "function") {
98
+ ref(node);
99
+ } else if (ref) {
100
+ ref.current = node;
101
+ }
102
+ }, [ref]);
103
+ const { className: startClassName, ...startRest } = startElementProps ?? {};
104
+ const { className: endClassName, ...endRest } = endElementProps ?? {};
105
+ return /* @__PURE__ */ jsxRuntime.jsxs(
106
+ "div",
107
+ {
108
+ ref: combinedRef,
109
+ className: cn("relative flex w-full items-center", className),
110
+ ...rest,
111
+ children: [
112
+ startElement && /* @__PURE__ */ jsxRuntime.jsx(
113
+ "div",
114
+ {
115
+ ref: startElementRef,
116
+ className: cn(
117
+ "pointer-events-none absolute inset-y-0 left-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
118
+ startClassName
119
+ ),
120
+ ...startRest,
121
+ children: startElement
122
+ }
123
+ ),
124
+ React__namespace.Children.map(children, (child) => {
125
+ if (getComponentDisplayName(child.type) !== "FieldInput") {
126
+ return child;
127
+ }
128
+ return React__namespace.cloneElement(child, {
129
+ ...startElement && { ps: startOffset ?? (inlinePaddings?.start ? `${inlinePaddings.start}px` : void 0) },
130
+ ...endElement && { pe: endOffset ?? (inlinePaddings?.end ? `${inlinePaddings.end}px` : void 0) },
131
+ // hide input value and placeholder for the first render
132
+ value: inlinePaddings ? child.props.value : void 0,
133
+ placeholder: inlinePaddings ? child.props.placeholder : void 0
134
+ });
135
+ }),
136
+ endElement && /* @__PURE__ */ jsxRuntime.jsx(
137
+ "div",
138
+ {
139
+ ref: endElementRef,
140
+ className: cn(
141
+ "pointer-events-none absolute inset-y-0 right-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
142
+ endClassName
143
+ ),
144
+ ...endRest,
145
+ children: endElement
146
+ }
147
+ )
148
+ ]
149
+ }
150
+ );
151
+ }
152
+ );
153
+ InputGroup.displayName = "InputGroup";
154
+
155
+ exports.InputGroup = InputGroup;
@@ -0,0 +1,133 @@
1
+ "use client";
2
+ import { debounce } from 'es-toolkit';
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/input-group.tsx
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ function getComponentDisplayName(type) {
13
+ if (typeof type === "string") return void 0;
14
+ if ("displayName" in type) return type.displayName;
15
+ return void 0;
16
+ }
17
+ var InputGroup = React.forwardRef(
18
+ function InputGroup2(props, ref) {
19
+ const {
20
+ startElement,
21
+ startElementProps,
22
+ endElement,
23
+ endElementProps,
24
+ children,
25
+ startOffset,
26
+ endOffset,
27
+ className,
28
+ ...rest
29
+ } = props;
30
+ const startElementRef = React.useRef(null);
31
+ const endElementRef = React.useRef(null);
32
+ const groupRef = React.useRef(null);
33
+ const [inlinePaddings, setInlinePaddings] = React.useState();
34
+ const calculateInlinePaddings = React.useCallback(() => {
35
+ const startWidth = startElementRef.current?.getBoundingClientRect().width ?? 0;
36
+ const endWidth = endElementRef.current?.getBoundingClientRect().width ?? 0;
37
+ setInlinePaddings({
38
+ start: startWidth,
39
+ end: endWidth
40
+ });
41
+ }, []);
42
+ React.useEffect(() => {
43
+ if (!groupRef.current) return;
44
+ let timeoutId;
45
+ const intersectionObserver = new IntersectionObserver(
46
+ (entries) => {
47
+ const entry = entries[0];
48
+ if (entry && entry.isIntersecting) {
49
+ timeoutId = setTimeout(calculateInlinePaddings, 50);
50
+ }
51
+ },
52
+ { threshold: 0.01 }
53
+ );
54
+ intersectionObserver.observe(groupRef.current);
55
+ return () => {
56
+ intersectionObserver.disconnect();
57
+ if (timeoutId) {
58
+ clearTimeout(timeoutId);
59
+ }
60
+ };
61
+ }, [calculateInlinePaddings]);
62
+ React.useEffect(() => {
63
+ calculateInlinePaddings();
64
+ const resizeHandler = debounce(calculateInlinePaddings, 300);
65
+ const resizeObserver = new ResizeObserver(resizeHandler);
66
+ if (groupRef.current) {
67
+ resizeObserver.observe(groupRef.current);
68
+ }
69
+ return function cleanup() {
70
+ resizeObserver.disconnect();
71
+ };
72
+ }, [calculateInlinePaddings]);
73
+ const combinedRef = React.useCallback((node) => {
74
+ groupRef.current = node;
75
+ if (typeof ref === "function") {
76
+ ref(node);
77
+ } else if (ref) {
78
+ ref.current = node;
79
+ }
80
+ }, [ref]);
81
+ const { className: startClassName, ...startRest } = startElementProps ?? {};
82
+ const { className: endClassName, ...endRest } = endElementProps ?? {};
83
+ return /* @__PURE__ */ jsxs(
84
+ "div",
85
+ {
86
+ ref: combinedRef,
87
+ className: cn("relative flex w-full items-center", className),
88
+ ...rest,
89
+ children: [
90
+ startElement && /* @__PURE__ */ jsx(
91
+ "div",
92
+ {
93
+ ref: startElementRef,
94
+ className: cn(
95
+ "pointer-events-none absolute inset-y-0 left-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
96
+ startClassName
97
+ ),
98
+ ...startRest,
99
+ children: startElement
100
+ }
101
+ ),
102
+ React.Children.map(children, (child) => {
103
+ if (getComponentDisplayName(child.type) !== "FieldInput") {
104
+ return child;
105
+ }
106
+ return React.cloneElement(child, {
107
+ ...startElement && { ps: startOffset ?? (inlinePaddings?.start ? `${inlinePaddings.start}px` : void 0) },
108
+ ...endElement && { pe: endOffset ?? (inlinePaddings?.end ? `${inlinePaddings.end}px` : void 0) },
109
+ // hide input value and placeholder for the first render
110
+ value: inlinePaddings ? child.props.value : void 0,
111
+ placeholder: inlinePaddings ? child.props.placeholder : void 0
112
+ });
113
+ }),
114
+ endElement && /* @__PURE__ */ jsx(
115
+ "div",
116
+ {
117
+ ref: endElementRef,
118
+ className: cn(
119
+ "pointer-events-none absolute inset-y-0 right-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
120
+ endClassName
121
+ ),
122
+ ...endRest,
123
+ children: endElement
124
+ }
125
+ )
126
+ ]
127
+ }
128
+ );
129
+ }
130
+ );
131
+ InputGroup.displayName = "InputGroup";
132
+
133
+ export { InputGroup };
package/dist/input.cjs ADDED
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var classVarianceAuthority = require('class-variance-authority');
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 _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefault(React);
13
+
14
+ // src/input.tsx
15
+ function cn(...inputs) {
16
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
17
+ }
18
+ var inputVariants = classVarianceAuthority.cva(
19
+ [
20
+ "w-full appearance-none outline-none transition-colors",
21
+ "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
22
+ "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
23
+ "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
24
+ "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
25
+ "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
26
+ "disabled:opacity-40 disabled:cursor-not-allowed",
27
+ "read-only:opacity-70",
28
+ "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
29
+ ].join(" "),
30
+ {
31
+ variants: {
32
+ size: {
33
+ xs: "h-6 px-2 text-xs rounded",
34
+ sm: "h-8 px-3 text-sm rounded-md",
35
+ md: "h-10 px-4 text-base rounded-md",
36
+ lg: "h-12 px-4 text-lg rounded-lg",
37
+ "2xl": "h-14 px-4 text-xl rounded-lg"
38
+ },
39
+ variant: {
40
+ outline: "border border-solid",
41
+ filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
42
+ unstyled: "border-0 bg-transparent p-0 h-auto"
43
+ }
44
+ },
45
+ defaultVariants: {
46
+ size: "md",
47
+ variant: "outline"
48
+ }
49
+ }
50
+ );
51
+ var Input = React__default.default.forwardRef(
52
+ ({ size, variant, className, ...rest }, ref) => {
53
+ return /* @__PURE__ */ jsxRuntime.jsx(
54
+ "input",
55
+ {
56
+ ref,
57
+ className: cn(inputVariants({ size, variant }), className),
58
+ ...rest
59
+ }
60
+ );
61
+ }
62
+ );
63
+ Input.displayName = "Input";
64
+
65
+ exports.Input = Input;
package/dist/input.js ADDED
@@ -0,0 +1,59 @@
1
+ "use client";
2
+ import { cva } from 'class-variance-authority';
3
+ import React from 'react';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ // src/input.tsx
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ var inputVariants = cva(
13
+ [
14
+ "w-full appearance-none outline-none transition-colors",
15
+ "bg-[var(--color-input-bg)] text-[var(--color-input-fg)] border-[var(--color-input-border)]",
16
+ "placeholder:text-[var(--color-input-placeholder,theme(colors.gray.400))]",
17
+ "hover:border-[var(--color-input-border-hover,theme(colors.gray.400))]",
18
+ "focus:border-[var(--color-input-border-focus,theme(colors.blue.500))]",
19
+ "focus:placeholder:text-[var(--color-input-placeholder-focus,theme(colors.gray.300))]",
20
+ "disabled:opacity-40 disabled:cursor-not-allowed",
21
+ "read-only:opacity-70",
22
+ "data-[invalid]:border-[var(--color-input-border-invalid,theme(colors.red.500))]"
23
+ ].join(" "),
24
+ {
25
+ variants: {
26
+ size: {
27
+ xs: "h-6 px-2 text-xs rounded",
28
+ sm: "h-8 px-3 text-sm rounded-md",
29
+ md: "h-10 px-4 text-base rounded-md",
30
+ lg: "h-12 px-4 text-lg rounded-lg",
31
+ "2xl": "h-14 px-4 text-xl rounded-lg"
32
+ },
33
+ variant: {
34
+ outline: "border border-solid",
35
+ filled: "border-0 bg-[var(--color-input-filled-bg,theme(colors.gray.100))]",
36
+ unstyled: "border-0 bg-transparent p-0 h-auto"
37
+ }
38
+ },
39
+ defaultVariants: {
40
+ size: "md",
41
+ variant: "outline"
42
+ }
43
+ }
44
+ );
45
+ var Input = React.forwardRef(
46
+ ({ size, variant, className, ...rest }, ref) => {
47
+ return /* @__PURE__ */ jsx(
48
+ "input",
49
+ {
50
+ ref,
51
+ className: cn(inputVariants({ size, variant }), className),
52
+ ...rest
53
+ }
54
+ );
55
+ }
56
+ );
57
+ Input.displayName = "Input";
58
+
59
+ export { Input };