@luxfi/ui 8.2.7 → 8.2.8

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 (240) hide show
  1. package/dist/3d-model-viewer.cjs +25 -421
  2. package/dist/3d-model-viewer.js +20 -416
  3. package/dist/accordion.cjs +3 -10
  4. package/dist/accordion.js +2 -10
  5. package/dist/advanced-navigation-bar.cjs +5 -401
  6. package/dist/advanced-navigation-bar.js +5 -401
  7. package/dist/ai-agents.cjs +45 -890
  8. package/dist/ai-agents.js +8 -834
  9. package/dist/ai-assistant.cjs +13 -740
  10. package/dist/ai-assistant.js +10 -738
  11. package/dist/ai-chat.cjs +24 -770
  12. package/dist/ai-chat.js +18 -765
  13. package/dist/ai-code.cjs +67 -923
  14. package/dist/ai-code.js +49 -905
  15. package/dist/ai-playground.cjs +25 -801
  16. package/dist/ai-playground.js +18 -795
  17. package/dist/ai-tools.cjs +22 -767
  18. package/dist/ai-tools.js +15 -761
  19. package/dist/ai-vision.cjs +41 -993
  20. package/dist/ai-vision.js +30 -983
  21. package/dist/ai-voice-settings.cjs +35 -1006
  22. package/dist/ai-voice-settings.js +32 -1004
  23. package/dist/ai-voice.cjs +51 -1024
  24. package/dist/ai-voice.js +9 -963
  25. package/dist/alert.cjs +11 -129
  26. package/dist/alert.js +8 -127
  27. package/dist/announcement.cjs +6 -402
  28. package/dist/announcement.js +6 -402
  29. package/dist/app-switcher-navigation-bar.cjs +5 -401
  30. package/dist/app-switcher-navigation-bar.js +5 -401
  31. package/dist/apple-cards-carousel.cjs +84 -480
  32. package/dist/apple-cards-carousel.js +19 -415
  33. package/dist/auth.cjs +10 -387
  34. package/dist/auth.js +7 -385
  35. package/dist/avatar.cjs +2 -9
  36. package/dist/avatar.js +2 -10
  37. package/dist/badge.cjs +8 -228
  38. package/dist/badge.js +5 -210
  39. package/dist/button.cjs +14 -67
  40. package/dist/button.js +12 -65
  41. package/dist/chrome.cjs +29 -493
  42. package/dist/chrome.js +9 -474
  43. package/dist/code-block.cjs +16 -664
  44. package/dist/code-block.js +13 -662
  45. package/dist/code-compare.cjs +28 -1302
  46. package/dist/code-compare.js +18 -1293
  47. package/dist/code-diff.cjs +21 -669
  48. package/dist/code-diff.js +17 -666
  49. package/dist/code-editor.cjs +13 -409
  50. package/dist/code-editor.js +12 -408
  51. package/dist/code-explorer.cjs +14 -456
  52. package/dist/code-explorer.js +13 -456
  53. package/dist/code-preview.cjs +31 -983
  54. package/dist/code-preview.js +23 -976
  55. package/dist/code-snippet.cjs +19 -667
  56. package/dist/code-snippet.js +14 -663
  57. package/dist/code-terminal.cjs +24 -485
  58. package/dist/code-terminal.js +19 -481
  59. package/dist/collapsible.cjs +13 -347
  60. package/dist/collapsible.js +11 -330
  61. package/dist/color-picker.cjs +8 -450
  62. package/dist/color-picker.js +7 -450
  63. package/dist/combobox.cjs +6 -402
  64. package/dist/combobox.js +6 -402
  65. package/dist/communication-navigation-bar.cjs +7 -403
  66. package/dist/communication-navigation-bar.js +5 -401
  67. package/dist/dashboard-navigation-bar.cjs +6 -402
  68. package/dist/dashboard-navigation-bar.js +5 -401
  69. package/dist/dialog-stack.cjs +5 -401
  70. package/dist/dialog-stack.js +5 -401
  71. package/dist/dialog.cjs +13 -70
  72. package/dist/dialog.js +13 -70
  73. package/dist/drawer.cjs +23 -99
  74. package/dist/drawer.js +19 -96
  75. package/dist/e-commerce-navigation-bar.cjs +7 -403
  76. package/dist/e-commerce-navigation-bar.js +5 -401
  77. package/dist/editor.cjs +9 -405
  78. package/dist/editor.js +6 -402
  79. package/dist/iam.cjs +2 -123
  80. package/dist/iam.js +1 -122
  81. package/dist/icon-button.cjs +2 -56
  82. package/dist/icon-button.js +1 -55
  83. package/dist/identity.cjs +28 -242
  84. package/dist/identity.js +20 -235
  85. package/dist/image-crop.cjs +10 -406
  86. package/dist/image-crop.js +7 -403
  87. package/dist/image.cjs +14 -83
  88. package/dist/image.js +13 -67
  89. package/dist/index.cjs +1868 -38770
  90. package/dist/index.js +174 -38320
  91. package/dist/input-group.cjs +3 -10
  92. package/dist/input-group.js +2 -10
  93. package/dist/item.cjs +2 -27
  94. package/dist/item.js +1 -22
  95. package/dist/kanban.cjs +25 -751
  96. package/dist/kanban.js +15 -742
  97. package/dist/limelight-nav.cjs +10 -452
  98. package/dist/limelight-nav.js +9 -452
  99. package/dist/link.cjs +11 -80
  100. package/dist/link.js +6 -60
  101. package/dist/lux.config.cjs +14 -32
  102. package/dist/lux.config.js +3 -26
  103. package/dist/menu.cjs +5 -13
  104. package/dist/menu.js +1 -9
  105. package/dist/message-dock.cjs +5 -401
  106. package/dist/message-dock.js +5 -401
  107. package/dist/mini-calendar.cjs +7 -403
  108. package/dist/mini-calendar.js +6 -402
  109. package/dist/music-player.cjs +30 -528
  110. package/dist/music-player.js +22 -520
  111. package/dist/next.cjs +8 -89
  112. package/dist/next.js +3 -86
  113. package/dist/popover.cjs +17 -74
  114. package/dist/popover.js +16 -73
  115. package/dist/progress-circle.cjs +3 -10
  116. package/dist/progress-circle.js +2 -10
  117. package/dist/provider.cjs +7 -176
  118. package/dist/provider.js +4 -174
  119. package/dist/select.cjs +36 -89
  120. package/dist/select.js +35 -88
  121. package/dist/sidebar.cjs +22 -493
  122. package/dist/sidebar.js +17 -489
  123. package/dist/site/commerce/ui/context.cjs +9 -214
  124. package/dist/site/commerce/ui/context.js +6 -215
  125. package/dist/site/components/analytics.cjs +2 -42
  126. package/dist/site/components/analytics.js +1 -37
  127. package/dist/site/components/auth/callback.cjs +2 -8
  128. package/dist/site/components/auth/callback.js +1 -7
  129. package/dist/site/components/auth/login-panel.cjs +15 -74
  130. package/dist/site/components/auth/login-panel.js +12 -73
  131. package/dist/site/components/auth/login.cjs +2 -6
  132. package/dist/site/components/auth/login.js +1 -5
  133. package/dist/site/components/auth/widget.cjs +2 -6
  134. package/dist/site/components/auth/widget.js +1 -5
  135. package/dist/site/components/commerce/bag-button.cjs +2 -3
  136. package/dist/site/components/commerce/bag-button.js +2 -3
  137. package/dist/site/components/commerce/buy-button.cjs +2 -11
  138. package/dist/site/components/commerce/buy-button.js +1 -10
  139. package/dist/site/components/commerce/checkout-button.cjs +2 -3
  140. package/dist/site/components/commerce/checkout-button.js +2 -3
  141. package/dist/site/components/commerce/checkout-panel/desktop-cp.cjs +15 -173
  142. package/dist/site/components/commerce/checkout-panel/desktop-cp.js +14 -174
  143. package/dist/site/components/commerce/checkout-panel/index.cjs +9 -400
  144. package/dist/site/components/commerce/checkout-panel/index.js +10 -403
  145. package/dist/site/components/commerce/checkout-panel/mobile-cp.cjs +15 -236
  146. package/dist/site/components/commerce/checkout-panel/mobile-cp.js +13 -237
  147. package/dist/site/components/commerce/desktop-bag-popup.cjs +7 -8
  148. package/dist/site/components/commerce/desktop-bag-popup.js +3 -8
  149. package/dist/site/components/commerce/drawer/index.cjs +15 -289
  150. package/dist/site/components/commerce/drawer/index.js +10 -290
  151. package/dist/site/components/commerce/drawer/micro.cjs +8 -115
  152. package/dist/site/components/commerce/drawer/micro.js +4 -115
  153. package/dist/site/components/commerce/drawer/shell.cjs +2 -10
  154. package/dist/site/components/commerce/drawer/shell.js +2 -10
  155. package/dist/site/components/contact-dialog/index.cjs +6 -69
  156. package/dist/site/components/contact-dialog/index.js +7 -71
  157. package/dist/site/components/drawer-margin.cjs +2 -10
  158. package/dist/site/components/drawer-margin.js +2 -10
  159. package/dist/site/components/footer.cjs +11 -81
  160. package/dist/site/components/footer.js +8 -80
  161. package/dist/site/components/header/desktop.cjs +18 -374
  162. package/dist/site/components/header/desktop.js +12 -355
  163. package/dist/site/components/header/index.cjs +9 -674
  164. package/dist/site/components/header/index.js +8 -657
  165. package/dist/site/components/header/mobile-bag-drawer.cjs +6 -71
  166. package/dist/site/components/header/mobile-bag-drawer.js +5 -74
  167. package/dist/site/components/header/mobile-nav-menu-ai.cjs +25 -28
  168. package/dist/site/components/header/mobile-nav-menu-ai.js +24 -27
  169. package/dist/site/components/header/mobile-nav-menu-item.cjs +6 -60
  170. package/dist/site/components/header/mobile-nav-menu-item.js +6 -61
  171. package/dist/site/components/header/mobile-nav-menu.cjs +7 -110
  172. package/dist/site/components/header/mobile-nav-menu.js +7 -112
  173. package/dist/site/components/header/mobile.cjs +48 -330
  174. package/dist/site/components/header/mobile.js +42 -330
  175. package/dist/site/components/icons/index.cjs +34 -35
  176. package/dist/site/components/icons/index.js +5 -33
  177. package/dist/site/components/index.cjs +118 -1961
  178. package/dist/site/components/index.js +23 -1951
  179. package/dist/site/components/mini-chart/index.cjs +7 -90
  180. package/dist/site/components/mini-chart/index.js +1 -92
  181. package/dist/site/components/mini-chart/wrapper.cjs +7 -76
  182. package/dist/site/components/mini-chart/wrapper.js +4 -77
  183. package/dist/site/components/not-found/index.cjs +9 -819
  184. package/dist/site/components/not-found/index.js +8 -802
  185. package/dist/site/components/security/index.cjs +9 -819
  186. package/dist/site/components/security/index.js +8 -802
  187. package/dist/site/next/analytics/index.cjs +16 -49
  188. package/dist/site/next/analytics/index.js +3 -49
  189. package/dist/site/next/analytics/pixel-analytics.cjs +23 -8
  190. package/dist/site/next/analytics/pixel-analytics.js +4 -8
  191. package/dist/site/next/index.cjs +13 -140
  192. package/dist/site/next/index.js +2 -140
  193. package/dist/site/root-layout/index.cjs +12 -1435
  194. package/dist/site/root-layout/index.css +0 -133
  195. package/dist/site/root-layout/index.js +12 -1416
  196. package/dist/site/site-def/footer/community.cjs +11 -27
  197. package/dist/site/site-def/footer/community.js +2 -18
  198. package/dist/site/site-def/footer/index.cjs +38 -218
  199. package/dist/site/site-def/footer/index.js +14 -215
  200. package/dist/site/site-def/index.cjs +28 -620
  201. package/dist/site/site-def/index.js +3 -624
  202. package/dist/table.cjs +20 -338
  203. package/dist/table.js +19 -338
  204. package/dist/tabs.cjs +3 -10
  205. package/dist/tabs.js +1 -9
  206. package/dist/tag.cjs +9 -270
  207. package/dist/tag.js +6 -268
  208. package/dist/tags.cjs +6 -314
  209. package/dist/tags.js +5 -314
  210. package/dist/textarea.cjs +4 -50
  211. package/dist/textarea.js +3 -49
  212. package/dist/tooltip.cjs +15 -34
  213. package/dist/tooltip.js +13 -33
  214. package/dist/vite.cjs +3 -82
  215. package/dist/vite.js +1 -80
  216. package/package.json +1 -1
  217. package/dist/index.css +0 -132
  218. package/dist/site/components/auth/login-panel.css +0 -4
  219. package/dist/site/components/commerce/bag-button.css +0 -4
  220. package/dist/site/components/commerce/checkout-button.css +0 -4
  221. package/dist/site/components/commerce/checkout-panel/desktop-cp.css +0 -132
  222. package/dist/site/components/commerce/checkout-panel/index.css +0 -132
  223. package/dist/site/components/commerce/checkout-panel/mobile-cp.css +0 -132
  224. package/dist/site/components/commerce/desktop-bag-popup.css +0 -4
  225. package/dist/site/components/commerce/drawer/index.css +0 -132
  226. package/dist/site/components/commerce/drawer/micro.css +0 -4
  227. package/dist/site/components/header/desktop.css +0 -4
  228. package/dist/site/components/header/index.css +0 -132
  229. package/dist/site/components/header/mobile-bag-drawer.css +0 -4
  230. package/dist/site/components/header/mobile-nav-menu-ai.css +0 -132
  231. package/dist/site/components/header/mobile-nav-menu-item.css +0 -132
  232. package/dist/site/components/header/mobile-nav-menu.css +0 -132
  233. package/dist/site/components/header/mobile.css +0 -132
  234. package/dist/site/components/icons/index.css +0 -4
  235. package/dist/site/components/index.css +0 -132
  236. package/dist/site/components/not-found/index.css +0 -132
  237. package/dist/site/components/security/index.css +0 -132
  238. package/dist/site/site-def/footer/community.css +0 -4
  239. package/dist/site/site-def/footer/index.css +0 -4
  240. package/dist/site/site-def/index.css +0 -4
package/dist/kanban.cjs CHANGED
@@ -3,14 +3,16 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var React3 = require('react');
6
+ var React = require('react');
7
7
  var ui = require('@hanzo/ui');
8
8
  var core = require('@dnd-kit/core');
9
9
  var sortable = require('@dnd-kit/sortable');
10
10
  var lucideReact = require('lucide-react');
11
- var gui = require('@hanzo/gui');
11
+ var badge_js = require('./badge.js');
12
+ var button_js = require('./button.js');
13
+ var input_js = require('./input.js');
14
+ var textarea_js = require('./textarea.js');
12
15
  var jsxRuntime = require('react/jsx-runtime');
13
- var usehooks = require('@uidotdev/usehooks');
14
16
 
15
17
  function _interopNamespace(e) {
16
18
  if (e && e.__esModule) return e;
@@ -30,7 +32,7 @@ function _interopNamespace(e) {
30
32
  return Object.freeze(n);
31
33
  }
32
34
 
33
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
35
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
36
 
35
37
  var CSS = /* @__PURE__ */ Object.freeze({
36
38
  Translate: {
@@ -76,734 +78,6 @@ var CSS = /* @__PURE__ */ Object.freeze({
76
78
  }
77
79
  }
78
80
  });
79
- var SKELETON_CLASSES = "lux-skeleton rounded-sm";
80
- var Skeleton = React3__namespace.forwardRef(
81
- function Skeleton2(props, ref) {
82
- const { loading = true, asChild, className, children, style, ...rest } = props;
83
- if (!loading) {
84
- if (asChild && React3__namespace.isValidElement(children)) return children;
85
- return /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { ref, className, style, ...rest, children });
86
- }
87
- return /* @__PURE__ */ jsxRuntime.jsx(
88
- "div",
89
- {
90
- ref,
91
- "data-loading": true,
92
- ...ui.sx(
93
- SKELETON_CLASSES,
94
- asChild || children ? "[&_*]:invisible" : "min-h-5",
95
- className
96
- ),
97
- style,
98
- ...rest,
99
- children
100
- }
101
- );
102
- }
103
- );
104
- React3__namespace.forwardRef(
105
- function SkeletonCircle2(props, ref) {
106
- const { size = 40, loading = true, className, ...rest } = props;
107
- const dimension = typeof size === "number" ? `${size}px` : size;
108
- return /* @__PURE__ */ jsxRuntime.jsx(
109
- Skeleton,
110
- {
111
- ref,
112
- loading,
113
- ...ui.sx("rounded-full shrink-0", className),
114
- style: { width: dimension, height: dimension, ...rest.style },
115
- ...rest
116
- }
117
- );
118
- }
119
- );
120
- React3__namespace.forwardRef(
121
- function SkeletonText2(props, ref) {
122
- const { noOfLines = 3, loading = true, className, ...rest } = props;
123
- return /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { ref, className: ui.cn("flex w-full flex-col gap-2", className), ...rest, children: Array.from({ length: noOfLines }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
124
- Skeleton,
125
- {
126
- loading,
127
- ...ui.sx(ui.cn("h-4", index === noOfLines - 1 && "max-w-[80%]"))
128
- },
129
- index
130
- )) });
131
- }
132
- );
133
- var ink = (children, Wrap = gui.Text, props = {}) => {
134
- let hasText = false;
135
- React3.Children.forEach(children, (child) => {
136
- if (typeof child === "string" || typeof child === "number") hasText = true;
137
- });
138
- if (!hasText) return children;
139
- return React3.Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? React3.createElement(Wrap, props, child) : child);
140
- };
141
- var TOUCH_PX = 1024;
142
- function useBelow(px) {
143
- const [below, setBelow] = React3__namespace.useState(false);
144
- React3__namespace.useEffect(() => {
145
- const mql = window.matchMedia(`(max-width: ${px - 1}px)`);
146
- const apply = () => setBelow(mql.matches);
147
- apply();
148
- mql.addEventListener("change", apply);
149
- return () => mql.removeEventListener("change", apply);
150
- }, [px]);
151
- return below;
152
- }
153
- var useIsTouch = () => useBelow(TOUCH_PX);
154
- function mapPlacement(p) {
155
- if (!p) return void 0;
156
- return p;
157
- }
158
- var Tooltip = React3__namespace.forwardRef(
159
- function Tooltip2(props, ref) {
160
- const {
161
- showArrow: showArrowProp,
162
- onOpenChange,
163
- variant,
164
- selected,
165
- children,
166
- disabled,
167
- disableOnMobile,
168
- content,
169
- contentProps,
170
- defaultOpen = false,
171
- triggerProps,
172
- closeDelay = 100,
173
- openDelay = 100,
174
- interactive,
175
- positioning
176
- } = props;
177
- const [open, setOpen] = React3__namespace.useState(defaultOpen);
178
- const timeoutRef = React3__namespace.useRef(null);
179
- const isMobile = useIsTouch();
180
- const handleOpenChange = React3__namespace.useCallback((nextOpen) => {
181
- setOpen(nextOpen);
182
- onOpenChange?.({ open: nextOpen });
183
- }, [onOpenChange]);
184
- const handleOpenChangeManual = React3__namespace.useCallback((nextOpen) => {
185
- timeoutRef.current && window.clearTimeout(timeoutRef.current);
186
- timeoutRef.current = window.setTimeout(() => {
187
- setOpen(nextOpen);
188
- onOpenChange?.({ open: nextOpen });
189
- }, nextOpen ? openDelay : closeDelay);
190
- }, [closeDelay, openDelay, onOpenChange]);
191
- const handleClickAway = React3__namespace.useCallback(() => {
192
- if (open) handleOpenChangeManual(false);
193
- }, [open, handleOpenChangeManual]);
194
- const triggerRef = usehooks.useClickAway(handleClickAway);
195
- const handleTriggerClick = React3__namespace.useCallback(() => {
196
- handleOpenChangeManual(!open);
197
- }, [handleOpenChangeManual, open]);
198
- const handleContentClick = React3__namespace.useCallback((event) => {
199
- event.stopPropagation();
200
- if (interactive) {
201
- const closestLink = event.target?.closest("a");
202
- if (closestLink) {
203
- handleOpenChangeManual(false);
204
- }
205
- }
206
- }, [interactive, handleOpenChangeManual]);
207
- React3__namespace.useEffect(() => {
208
- return () => {
209
- if (timeoutRef.current) {
210
- clearTimeout(timeoutRef.current);
211
- }
212
- };
213
- }, []);
214
- if (disabled || disableOnMobile && isMobile) return children;
215
- const defaultShowArrow = variant === "popover" ? false : true;
216
- const showArrow = showArrowProp !== void 0 ? showArrowProp : defaultShowArrow;
217
- const isPopover = variant === "popover";
218
- const placement = mapPlacement(positioning?.placement) ?? "top";
219
- const offset = positioning?.offset?.mainAxis ?? 4;
220
- return /* @__PURE__ */ jsxRuntime.jsx(gui.TooltipGroup, { delay: openDelay, children: /* @__PURE__ */ jsxRuntime.jsxs(
221
- gui.Tooltip,
222
- {
223
- open,
224
- onOpenChange: handleOpenChange,
225
- delay: { open: openDelay, close: closeDelay },
226
- placement,
227
- offset,
228
- unstyled: true,
229
- children: [
230
- /* @__PURE__ */ jsxRuntime.jsx(
231
- gui.Tooltip.Trigger,
232
- {
233
- ref: triggerRef,
234
- asChild: true,
235
- ...isMobile ? { onClick: handleTriggerClick } : {},
236
- ...triggerProps,
237
- children
238
- }
239
- ),
240
- /* @__PURE__ */ jsxRuntime.jsxs(
241
- gui.Tooltip.Content,
242
- {
243
- ref,
244
- unstyled: true,
245
- zIndex: 9999,
246
- overflow: "hidden",
247
- borderRadius: 8,
248
- paddingHorizontal: 12,
249
- paddingVertical: 8,
250
- maxWidth: isPopover ? 384 : 320,
251
- backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)",
252
- transition: "quick",
253
- enterStyle: { opacity: 0, scale: 0.95 },
254
- exitStyle: { opacity: 0, scale: 0.95 },
255
- ...isPopover ? {
256
- borderWidth: 1,
257
- borderColor: "var(--color-border-divider)",
258
- shadowColor: "var(--shadow-popover)"
259
- } : {},
260
- onClick: interactive ? handleContentClick : void 0,
261
- ...selected ? { "data-selected": true } : {},
262
- ...contentProps,
263
- children: [
264
- showArrow && /* @__PURE__ */ jsxRuntime.jsx(
265
- gui.Tooltip.Arrow,
266
- {
267
- unstyled: true,
268
- backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)"
269
- }
270
- ),
271
- ink(content, void 0, {
272
- fontSize: 14,
273
- color: isPopover ? "var(--color-text-primary)" : "var(--color-tooltip-fg)"
274
- })
275
- ]
276
- }
277
- )
278
- ]
279
- }
280
- ) });
281
- }
282
- );
283
- function TruncatedTextTooltip({ label, children }) {
284
- return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
285
- }
286
- var SIZE = {
287
- sm: { padding: 4, height: 18, minHeight: 18 },
288
- md: { paddingHorizontal: 4, paddingVertical: 2, minHeight: 24 },
289
- lg: { paddingHorizontal: 8, paddingVertical: 4, minHeight: 28 }
290
- };
291
- var SIZE_TEXT = {
292
- sm: { fontSize: 12, fontWeight: "500" },
293
- md: { fontSize: 14, fontWeight: "500" },
294
- lg: { fontSize: 14, fontWeight: "600" }
295
- };
296
- var COLOR_PALETTE = {
297
- gray: { bg: "var(--color-badge-gray-bg)", fg: "var(--color-badge-gray-fg)" },
298
- green: { bg: "var(--color-badge-green-bg)", fg: "var(--color-badge-green-fg)" },
299
- red: { bg: "var(--color-badge-red-bg)", fg: "var(--color-badge-red-fg)" },
300
- purple: { bg: "var(--color-badge-purple-bg)", fg: "var(--color-badge-purple-fg)" },
301
- orange: { bg: "var(--color-badge-orange-bg)", fg: "var(--color-badge-orange-fg)" },
302
- blue: { bg: "var(--color-badge-blue-bg)", fg: "var(--color-badge-blue-fg)" },
303
- yellow: { bg: "var(--color-badge-yellow-bg)", fg: "var(--color-badge-yellow-fg)" },
304
- teal: { bg: "var(--color-badge-teal-bg)", fg: "var(--color-badge-teal-fg)" },
305
- cyan: { bg: "var(--color-badge-cyan-bg)", fg: "var(--color-badge-cyan-fg)" },
306
- pink: { bg: "var(--color-badge-pink-bg)", fg: "var(--color-badge-pink-fg)" },
307
- purple_alt: { bg: "var(--color-badge-purple-alt-bg)", fg: "var(--color-badge-purple-alt-fg)" },
308
- blue_alt: { bg: "var(--color-badge-blue-alt-bg)", fg: "var(--color-badge-blue-alt-fg)" },
309
- bright_gray: { bg: "var(--color-badge-bright-gray-bg)", fg: "var(--color-badge-bright-gray-fg)" },
310
- bright_green: { bg: "var(--color-badge-bright-green-bg)", fg: "var(--color-badge-bright-green-fg)" },
311
- bright_red: { bg: "var(--color-badge-bright-red-bg)", fg: "var(--color-badge-bright-red-fg)" },
312
- bright_blue: { bg: "var(--color-badge-bright-blue-bg)", fg: "var(--color-badge-bright-blue-fg)" },
313
- bright_yellow: { bg: "var(--color-badge-bright-yellow-bg)", fg: "var(--color-badge-bright-yellow-fg)" },
314
- bright_teal: { bg: "var(--color-badge-bright-teal-bg)", fg: "var(--color-badge-bright-teal-fg)" },
315
- bright_cyan: { bg: "var(--color-badge-bright-cyan-bg)", fg: "var(--color-badge-bright-cyan-fg)" },
316
- bright_orange: { bg: "var(--color-badge-bright-orange-bg)", fg: "var(--color-badge-bright-orange-fg)" },
317
- bright_purple: { bg: "var(--color-badge-bright-purple-bg)", fg: "var(--color-badge-bright-purple-fg)" },
318
- bright_pink: { bg: "var(--color-badge-bright-pink-bg)", fg: "var(--color-badge-bright-pink-fg)" }
319
- };
320
- var TONE = {
321
- subtle: (p) => ({ backgroundColor: p.bg, color: p.fg, borderWidth: 0 }),
322
- solid: (p) => ({ backgroundColor: p.fg, color: p.bg, borderWidth: 0 }),
323
- outline: (p) => ({
324
- backgroundColor: "transparent",
325
- color: p.fg,
326
- borderWidth: 1,
327
- borderColor: p.fg
328
- })
329
- };
330
- var Badge = React3__namespace.default.forwardRef(
331
- function Badge2(props, ref) {
332
- const {
333
- loading,
334
- startElement,
335
- children,
336
- truncated = false,
337
- endElement,
338
- variant = "subtle",
339
- size = "md",
340
- colorPalette = "gray",
341
- className,
342
- style: badgeStyle,
343
- ...rest
344
- } = props;
345
- const palette = COLOR_PALETTE[colorPalette];
346
- const tone = TONE[variant](palette);
347
- const child = children ? (
348
- // `ellipsis` is gui Text's own built-in variant for single-line
349
- // truncation — it expands to the same overflow/text-overflow/
350
- // white-space/max-width rule Tailwind's `text-ellipsis` did, but
351
- // through the component's own variants (guaranteed to compile),
352
- // rather than naming each longhand as a separate style prop.
353
- /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { ellipsis: true, ...SIZE_TEXT[size], color: tone.color, children })
354
- ) : null;
355
- const childrenElement = truncated ? /* @__PURE__ */ jsxRuntime.jsx(TruncatedTextTooltip, { label: children, children: child }) : child;
356
- const badgeElement = /* @__PURE__ */ jsxRuntime.jsxs(
357
- gui.XStack,
358
- {
359
- ref,
360
- render: /* @__PURE__ */ jsxRuntime.jsx("span", {}),
361
- display: "inline-flex",
362
- alignItems: "center",
363
- alignSelf: "flex-start",
364
- borderRadius: 2,
365
- gap: 4,
366
- maxWidth: "100%",
367
- userSelect: "text",
368
- ...SIZE[size],
369
- ...tone,
370
- className,
371
- style: badgeStyle,
372
- ...rest,
373
- children: [
374
- startElement,
375
- childrenElement,
376
- endElement
377
- ]
378
- }
379
- );
380
- if (loading) {
381
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading, asChild: true, children: badgeElement });
382
- }
383
- return badgeElement;
384
- }
385
- );
386
- var SpinnerFrame = gui.styled(gui.View, {
387
- name: "ButtonSpinner",
388
- render: /* @__PURE__ */ jsxRuntime.jsx("span", {}),
389
- width: 16,
390
- height: 16,
391
- borderRadius: 1e3,
392
- borderWidth: 2,
393
- borderColor: "currentColor",
394
- borderBottomColor: "transparent",
395
- borderLeftColor: "transparent"
396
- });
397
- function Spinner({ className }) {
398
- return /* @__PURE__ */ jsxRuntime.jsx(
399
- SpinnerFrame,
400
- {
401
- role: "status",
402
- "aria-label": "Loading",
403
- className: [
404
- "animate-spin",
405
- className
406
- ].filter(Boolean).join(" ")
407
- }
408
- );
409
- }
410
- var ButtonFrame = gui.styled(gui.View, {
411
- name: "LuxButton",
412
- render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
413
- role: "button",
414
- tabIndex: 0,
415
- cursor: "pointer",
416
- userSelect: "none",
417
- display: "inline-flex",
418
- alignItems: "center",
419
- justifyContent: "center",
420
- gap: 0,
421
- overflow: "hidden",
422
- borderRadius: 6,
423
- // Whitespace nowrap via className since hanzogui doesn't have a direct token
424
- // Transition via className
425
- variants: {
426
- size: {
427
- "2xs": { paddingHorizontal: 8, height: 20, minWidth: 20, fontSize: 12, borderRadius: 4, gap: 4 },
428
- xs: { paddingHorizontal: 8, height: 24, minWidth: 24, fontSize: 14, borderRadius: 4, gap: 4 },
429
- sm: { paddingHorizontal: 12, height: 32, minWidth: 32, fontSize: 14, borderRadius: 6, gap: 4 },
430
- md: { paddingHorizontal: 12, height: 40, minWidth: 40, fontSize: 16, borderRadius: 6, gap: 8 }
431
- },
432
- disabled: {
433
- true: {
434
- opacity: 0.2,
435
- cursor: "not-allowed",
436
- pointerEvents: "none"
437
- }
438
- }
439
- },
440
- defaultVariants: {
441
- size: "md"
442
- }
443
- });
444
- var VARIANT_CLASSES = {
445
- solid: [
446
- "bg-[var(--color-button-solid-bg)] text-[var(--color-button-solid-text)]",
447
- "hover:bg-[var(--color-hover)]",
448
- "data-[expanded]:bg-[var(--color-hover)]"
449
- ].join(" "),
450
- solid_danger: [
451
- "bg-[var(--color-button-danger-bg)] text-[var(--color-button-danger-fg)]",
452
- "hover:bg-[var(--color-button-danger-bg-hover)]",
453
- "data-[expanded]:bg-[var(--color-button-danger-bg-hover)]"
454
- ].join(" "),
455
- outline: [
456
- "border-2 border-solid bg-transparent",
457
- "text-[var(--color-button-outline-fg)] border-[var(--color-button-outline-fg)]",
458
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]"
459
- ].join(" "),
460
- outline_danger: [
461
- "border-2 border-solid bg-transparent",
462
- "text-[var(--color-button-danger-bg)] border-[var(--color-button-danger-bg)]",
463
- "hover:bg-transparent hover:text-[var(--color-button-danger-bg-hover)] hover:border-[var(--color-button-danger-bg-hover)]"
464
- ].join(" "),
465
- dropdown: [
466
- "border-2 border-solid bg-transparent",
467
- "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
468
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
469
- "data-[expanded]:bg-transparent data-[expanded]:text-[var(--color-hover)] data-[expanded]:border-[var(--color-hover)]",
470
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
471
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
472
- "data-[selected]:hover:text-[var(--color-hover)] data-[selected]:hover:border-transparent",
473
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
474
- ].join(" "),
475
- header: [
476
- "bg-transparent border-2 border-solid",
477
- "text-[var(--color-button-header-fg)] border-[var(--color-button-header-border)]",
478
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
479
- "data-[selected]:bg-[var(--color-button-header-bg-selected)]",
480
- "data-[selected]:text-[var(--color-button-header-fg-selected)] data-[selected]:border-transparent data-[selected]:border-0",
481
- "data-[selected]:hover:bg-[var(--color-button-header-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
482
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
483
- "data-[selected]:data-[highlighted]:bg-[var(--color-button-header-bg-highlighted)]",
484
- "data-[selected]:data-[highlighted]:text-[var(--color-button-header-fg-highlighted)]",
485
- "data-[selected]:data-[highlighted]:border-transparent data-[selected]:data-[highlighted]:border-0",
486
- "data-[selected]:data-[highlighted]:hover:bg-[var(--color-button-header-bg-highlighted)]",
487
- "data-[selected]:data-[highlighted]:hover:text-[var(--color-hover)]",
488
- "data-[selected]:data-[highlighted]:data-[expanded]:text-[var(--color-hover)]"
489
- ].join(" "),
490
- hero: [
491
- "bg-[var(--color-button-hero-bg)] text-[var(--color-button-hero-fg)]",
492
- "hover:bg-[var(--color-button-hero-bg-hover)] hover:text-[var(--color-button-hero-fg-hover)]",
493
- "data-[selected]:bg-[var(--color-button-hero-bg-selected)] data-[selected]:text-[var(--color-button-hero-fg-selected)]",
494
- "data-[selected]:hover:bg-[var(--color-button-hero-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
495
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
496
- ].join(" "),
497
- segmented: [
498
- "bg-transparent border-2 border-solid rounded-none",
499
- "text-[var(--color-button-segmented-fg)] border-[var(--color-selected-control-bg)]",
500
- "hover:text-[var(--color-hover)]",
501
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
502
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-selected-control-text)]",
503
- "[&:not(:last-child)]:border-r-0 data-[selected]:[&:not(:last-child)]:border-r-2",
504
- "data-[selected]+*:border-l-0",
505
- "first:rounded-l-md last:rounded-r-md"
506
- ].join(" "),
507
- plain: "bg-transparent text-inherit border-none hover:bg-transparent",
508
- subtle: [
509
- "bg-[var(--color-button-subtle-bg)] text-[var(--color-button-subtle-fg)]",
510
- "hover:bg-[var(--color-button-subtle-bg)] hover:text-[var(--color-hover)]",
511
- "disabled:bg-[var(--color-button-subtle-bg)] disabled:text-[var(--color-button-subtle-fg)]"
512
- ].join(" "),
513
- link: [
514
- "bg-transparent text-[var(--color-link-primary)] border-none font-normal",
515
- "px-0 h-auto",
516
- "hover:bg-transparent hover:text-[var(--color-link-primary-hover)]",
517
- "disabled:text-[var(--color-text-secondary)]"
518
- ].join(" "),
519
- icon_secondary: [
520
- "bg-transparent text-[var(--color-icon-secondary)] border-none",
521
- "hover:text-[var(--color-hover)]",
522
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
523
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
524
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
525
- "data-[expanded]:text-[var(--color-hover)]"
526
- ].join(" "),
527
- icon_background: [
528
- "bg-[var(--color-button-icon-background-bg)] text-[var(--color-icon-secondary)] border-none",
529
- "hover:text-[var(--color-hover)]",
530
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
531
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
532
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
533
- "data-[expanded]:text-[var(--color-hover)]"
534
- ].join(" "),
535
- pagination: [
536
- "border-2 border-solid bg-transparent",
537
- "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
538
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
539
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
540
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
541
- "data-[selected]:hover:text-[var(--color-selected-control-text)] data-[selected]:hover:border-transparent"
542
- ].join(" ")
543
- };
544
- var BASE_CLASSES = "font-semibold whitespace-nowrap transition-colors duration-150";
545
- var SP = 4;
546
- function buildShimStyle(props) {
547
- const s = { ...props.style };
548
- if (props.mt !== void 0) s.marginTop = typeof props.mt === "number" ? `${props.mt * SP}px` : props.mt;
549
- if (props.ml !== void 0) s.marginLeft = typeof props.ml === "number" ? `${props.ml * SP}px` : props.ml;
550
- if (props.mr !== void 0) s.marginRight = typeof props.mr === "number" ? `${props.mr * SP}px` : props.mr;
551
- if (props.px !== void 0) {
552
- const v = typeof props.px === "number" ? `${props.px * SP}px` : props.px;
553
- s.paddingLeft = v;
554
- s.paddingRight = v;
555
- }
556
- if (props.py !== void 0) {
557
- const v = typeof props.py === "number" ? `${props.py * SP}px` : props.py;
558
- s.paddingTop = v;
559
- s.paddingBottom = v;
560
- }
561
- if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
562
- if (props.gap !== void 0) s.gap = typeof props.gap === "number" ? `${props.gap * SP}px` : props.gap;
563
- if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
564
- if (props.columnGap !== void 0) s.columnGap = typeof props.columnGap === "number" ? `${props.columnGap * SP}px` : props.columnGap;
565
- if (props.gridColumn !== void 0) s.gridColumn = typeof props.gridColumn === "number" ? String(props.gridColumn) : props.gridColumn;
566
- if (props.gridRow) s.gridRow = props.gridRow;
567
- if (props.justifySelf) s.justifySelf = props.justifySelf;
568
- if (props.alignSelf) s.alignSelf = props.alignSelf;
569
- if (props.h) s.height = props.h;
570
- if (props.w) s.width = props.w;
571
- if (props.display) s.display = props.display;
572
- if (props.borderBottomRightRadius !== void 0) s.borderBottomRightRadius = typeof props.borderBottomRightRadius === "number" ? `${props.borderBottomRightRadius}px` : props.borderBottomRightRadius;
573
- if (props.borderTopRightRadius !== void 0) s.borderTopRightRadius = typeof props.borderTopRightRadius === "number" ? `${props.borderTopRightRadius}px` : props.borderTopRightRadius;
574
- return Object.keys(s).length > 0 ? s : void 0;
575
- }
576
- var Button = React3__namespace.forwardRef(
577
- function Button2(props, ref) {
578
- const {
579
- className,
580
- variant = "solid",
581
- size = "md",
582
- asChild = false,
583
- loading = false,
584
- loadingText,
585
- loadingSkeleton = false,
586
- expanded,
587
- selected,
588
- highlighted,
589
- disabled,
590
- children,
591
- style: styleProp,
592
- // Strip Chakra style props
593
- mt,
594
- ml,
595
- mr,
596
- px,
597
- py,
598
- fontWeight,
599
- gap,
600
- flexShrink,
601
- columnGap,
602
- gridColumn,
603
- gridRow,
604
- justifySelf,
605
- alignSelf,
606
- textStyle: _textStyle,
607
- h,
608
- w,
609
- display,
610
- borderBottomRightRadius,
611
- borderTopRightRadius,
612
- ...rest
613
- } = props;
614
- const mergedStyle = buildShimStyle({
615
- style: styleProp,
616
- mt,
617
- ml,
618
- mr,
619
- px,
620
- py,
621
- fontWeight,
622
- gap,
623
- flexShrink,
624
- columnGap,
625
- gridColumn,
626
- gridRow,
627
- justifySelf,
628
- alignSelf,
629
- h,
630
- w,
631
- display,
632
- borderBottomRightRadius,
633
- borderTopRightRadius
634
- });
635
- const dataAttrs = {};
636
- if (expanded) dataAttrs["data-expanded"] = true;
637
- if (selected) dataAttrs["data-selected"] = true;
638
- if (highlighted) dataAttrs["data-highlighted"] = true;
639
- if (loadingSkeleton) dataAttrs["data-loading-skeleton"] = true;
640
- const isDisabled = !loadingSkeleton && (loading || disabled);
641
- const inner = loading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
642
- /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}),
643
- loadingText != null && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: 8 }, children: loadingText })
644
- ] }) : children;
645
- const variantClass = VARIANT_CLASSES[variant] ?? VARIANT_CLASSES.solid;
646
- const combinedClassName = [BASE_CLASSES, variantClass, className].filter(Boolean).join(" ");
647
- const button = /* @__PURE__ */ jsxRuntime.jsx(
648
- ButtonFrame,
649
- {
650
- ref,
651
- size,
652
- disabled: isDisabled || void 0,
653
- asChild: asChild || void 0,
654
- className: combinedClassName,
655
- style: mergedStyle,
656
- ...dataAttrs,
657
- ...rest,
658
- children: inner
659
- }
660
- );
661
- if (loadingSkeleton) {
662
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading: loadingSkeleton, asChild: true, ref, children: button });
663
- }
664
- return button;
665
- }
666
- );
667
- React3__namespace.forwardRef(
668
- function ButtonGroup2(props, ref) {
669
- const { className, ...rest } = props;
670
- return /* @__PURE__ */ jsxRuntime.jsx(
671
- ui.Box,
672
- {
673
- ref,
674
- className: ["inline-flex", className].filter(Boolean).join(" "),
675
- role: "group",
676
- ...rest
677
- }
678
- );
679
- }
680
- );
681
- React3__namespace.forwardRef(
682
- function ButtonGroupRadio2(props, ref) {
683
- const {
684
- children,
685
- onChange,
686
- variant = "segmented",
687
- defaultValue,
688
- loading = false,
689
- equalWidth = false,
690
- className,
691
- ...rest
692
- } = props;
693
- const firstChildValue = React3__namespace.useMemo(() => {
694
- const firstChild = Array.isArray(children) ? children[0] : void 0;
695
- return typeof firstChild?.props.value === "string" ? firstChild.props.value : void 0;
696
- }, [children]);
697
- const [value, setValue] = React3__namespace.useState(defaultValue ?? firstChildValue);
698
- const handleItemClick = React3__namespace.useCallback((event) => {
699
- const v = event.currentTarget.value;
700
- setValue(v);
701
- onChange?.(v);
702
- }, [onChange]);
703
- const clonedChildren = React3__namespace.Children.map(children, (child) => {
704
- return React3__namespace.cloneElement(child, {
705
- onClick: handleItemClick,
706
- selected: value === child.props.value,
707
- variant
708
- });
709
- });
710
- const childrenLength = React3__namespace.Children.count(children);
711
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading, children: /* @__PURE__ */ jsxRuntime.jsx(
712
- ui.Box,
713
- {
714
- ref,
715
- className: [
716
- "inline-flex gap-0",
717
- equalWidth ? "grid" : "",
718
- className
719
- ].filter(Boolean).join(" "),
720
- style: equalWidth ? { gridTemplateColumns: `repeat(${childrenLength}, 1fr)` } : void 0,
721
- role: "group",
722
- ...rest,
723
- children: clonedChildren
724
- }
725
- ) });
726
- }
727
- );
728
- var SIZE2 = {
729
- xs: { height: 24, paddingHorizontal: 8, fontSize: "$1", borderRadius: 4 },
730
- sm: { height: 32, paddingHorizontal: 12, fontSize: "$3", borderRadius: 6 },
731
- md: { height: 40, paddingHorizontal: 16, fontSize: "$5", borderRadius: 6 },
732
- lg: { height: 48, paddingHorizontal: 16, fontSize: "$6", borderRadius: 8 },
733
- "2xl": { height: 56, paddingHorizontal: 16, fontSize: "$7", borderRadius: 8 }
734
- };
735
- var VARIANT = {
736
- outline: { borderWidth: 1, borderStyle: "solid" },
737
- filled: { borderWidth: 0, backgroundColor: "var(--color-input-filled-bg)" },
738
- unstyled: { borderWidth: 0, backgroundColor: "transparent", padding: 0, height: "auto" }
739
- };
740
- var CONTROL = {
741
- width: "100%",
742
- outlineWidth: 0,
743
- backgroundColor: "var(--color-input-bg)",
744
- color: "var(--color-input-fg)",
745
- borderColor: "var(--color-input-border)",
746
- hoverStyle: { borderColor: "var(--color-input-border-hover)" },
747
- focusStyle: { borderColor: "var(--color-input-border-focus)" },
748
- disabledStyle: { opacity: 0.4, cursor: "not-allowed" }
749
- };
750
- var Input = React3__namespace.default.forwardRef(
751
- ({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
752
- const handleChange = React3__namespace.default.useCallback(
753
- (event) => {
754
- onChange?.(event);
755
- onChangeText?.(event.target.value);
756
- },
757
- [onChange, onChangeText]
758
- );
759
- return /* @__PURE__ */ jsxRuntime.jsx(
760
- gui.Input,
761
- {
762
- ref,
763
- unstyled: true,
764
- className: className ? `lux-control ${className}` : "lux-control",
765
- ...CONTROL,
766
- ...SIZE2[size],
767
- ...VARIANT[variant],
768
- ...rest,
769
- onChange: handleChange
770
- }
771
- );
772
- }
773
- );
774
- Input.displayName = "Input";
775
- var SIZE3 = {
776
- xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: "$1", borderRadius: 4 },
777
- sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: "$3", borderRadius: 6 },
778
- md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: "$5", borderRadius: 6 },
779
- lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$6", borderRadius: 8 },
780
- "2xl": { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$7", borderRadius: 8 }
781
- };
782
- var Textarea = React3__namespace.default.forwardRef(
783
- ({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
784
- const handleChange = React3__namespace.default.useCallback(
785
- (event) => {
786
- onChange?.(event);
787
- onChangeText?.(event.target.value);
788
- },
789
- [onChange, onChangeText]
790
- );
791
- return /* @__PURE__ */ jsxRuntime.jsx(
792
- gui.TextArea,
793
- {
794
- ref,
795
- unstyled: true,
796
- className: className ? `lux-control ${className}` : "lux-control",
797
- ...CONTROL,
798
- ...SIZE3[size],
799
- ...VARIANT[variant],
800
- ...rest,
801
- onChange: handleChange
802
- }
803
- );
804
- }
805
- );
806
- Textarea.displayName = "Textarea";
807
81
  var priorityVariants = ui.variants(
808
82
  "inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-semibold",
809
83
  {
@@ -861,7 +135,7 @@ function KanbanCardComponent({
861
135
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "h4", className: "font-medium text-sm leading-tight mb-2 break-words", children: card.title }),
862
136
  card.description && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "p", className: "text-xs text-muted-foreground line-clamp-2 mb-2", children: card.description }),
863
137
  card.labels && card.labels.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "flex flex-wrap gap-1 mb-2", children: card.labels.map((label) => /* @__PURE__ */ jsxRuntime.jsx(
864
- Badge,
138
+ badge_js.Badge,
865
139
  {
866
140
  variant: "outline",
867
141
  className: "text-xs h-5",
@@ -898,7 +172,7 @@ function KanbanCardComponent({
898
172
  ] }),
899
173
  /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
900
174
  /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
901
- Button,
175
+ button_js.Button,
902
176
  {
903
177
  variant: "ghost",
904
178
  size: "icon",
@@ -944,13 +218,13 @@ function KanbanColumnComponent({
944
218
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center justify-between mb-4", children: [
945
219
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center gap-2", children: [
946
220
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "h3", className: "font-semibold text-sm", children: column.title }),
947
- /* @__PURE__ */ jsxRuntime.jsxs(Badge, { colorPalette: "gray", ...ui.sx("text-xs"), children: [
221
+ /* @__PURE__ */ jsxRuntime.jsxs(badge_js.Badge, { colorPalette: "gray", ...ui.sx("text-xs"), children: [
948
222
  column.cards.length,
949
223
  column.limit && `/${column.limit}`
950
224
  ] })
951
225
  ] }),
952
226
  /* @__PURE__ */ jsxRuntime.jsx(
953
- Button,
227
+ button_js.Button,
954
228
  {
955
229
  variant: "ghost",
956
230
  size: "icon",
@@ -987,7 +261,7 @@ function CardFormDialog({
987
261
  onSave,
988
262
  labels
989
263
  }) {
990
- const [formData, setFormData] = React3__namespace.useState({
264
+ const [formData, setFormData] = React__namespace.useState({
991
265
  title: card?.title || "",
992
266
  description: card?.description || "",
993
267
  priority: card?.priority || "low",
@@ -1006,7 +280,7 @@ function CardFormDialog({
1006
280
  });
1007
281
  onOpenChange(false);
1008
282
  };
1009
- React3__namespace.useEffect(() => {
283
+ React__namespace.useEffect(() => {
1010
284
  if (card) {
1011
285
  setFormData({
1012
286
  title: card.title,
@@ -1036,7 +310,7 @@ function CardFormDialog({
1036
310
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1037
311
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "title", children: "Title *" }),
1038
312
  /* @__PURE__ */ jsxRuntime.jsx(
1039
- Input,
313
+ input_js.Input,
1040
314
  {
1041
315
  id: "title",
1042
316
  value: formData.title,
@@ -1049,7 +323,7 @@ function CardFormDialog({
1049
323
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1050
324
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "description", children: "Description" }),
1051
325
  /* @__PURE__ */ jsxRuntime.jsx(
1052
- Textarea,
326
+ textarea_js.Textarea,
1053
327
  {
1054
328
  id: "description",
1055
329
  value: formData.description,
@@ -1085,7 +359,7 @@ function CardFormDialog({
1085
359
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1086
360
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "assignee", children: "Assignee" }),
1087
361
  /* @__PURE__ */ jsxRuntime.jsx(
1088
- Input,
362
+ input_js.Input,
1089
363
  {
1090
364
  id: "assignee",
1091
365
  value: formData.assignee,
@@ -1098,7 +372,7 @@ function CardFormDialog({
1098
372
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1099
373
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "dueDate", children: "Due Date" }),
1100
374
  /* @__PURE__ */ jsxRuntime.jsx(
1101
- Input,
375
+ input_js.Input,
1102
376
  {
1103
377
  id: "dueDate",
1104
378
  type: "date",
@@ -1109,7 +383,7 @@ function CardFormDialog({
1109
383
  ] }),
1110
384
  /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogFooter, { children: [
1111
385
  /* @__PURE__ */ jsxRuntime.jsx(
1112
- Button,
386
+ button_js.Button,
1113
387
  {
1114
388
  type: "button",
1115
389
  variant: "outline",
@@ -1117,7 +391,7 @@ function CardFormDialog({
1117
391
  children: "Cancel"
1118
392
  }
1119
393
  ),
1120
- /* @__PURE__ */ jsxRuntime.jsxs(Button, { type: "submit", children: [
394
+ /* @__PURE__ */ jsxRuntime.jsxs(button_js.Button, { type: "submit", children: [
1121
395
  card ? "Update" : "Create",
1122
396
  " Card"
1123
397
  ] })
@@ -1130,13 +404,13 @@ function KanbanBoard({
1130
404
  onUpdateBoard,
1131
405
  className
1132
406
  }) {
1133
- const [activeCard, setActiveCard] = React3__namespace.useState(null);
1134
- const [searchQuery, setSearchQuery] = React3__namespace.useState("");
1135
- const [cardFormOpen, setCardFormOpen] = React3__namespace.useState(false);
1136
- const [editingCard, setEditingCard] = React3__namespace.useState(
407
+ const [activeCard, setActiveCard] = React__namespace.useState(null);
408
+ const [searchQuery, setSearchQuery] = React__namespace.useState("");
409
+ const [cardFormOpen, setCardFormOpen] = React__namespace.useState(false);
410
+ const [editingCard, setEditingCard] = React__namespace.useState(
1137
411
  void 0
1138
412
  );
1139
- const [activeColumnId, setActiveColumnId] = React3__namespace.useState("");
413
+ const [activeColumnId, setActiveColumnId] = React__namespace.useState("");
1140
414
  const sensors = core.useSensors(
1141
415
  core.useSensor(core.PointerSensor, {
1142
416
  activationConstraint: {
@@ -1144,7 +418,7 @@ function KanbanBoard({
1144
418
  }
1145
419
  })
1146
420
  );
1147
- const filteredBoard = React3__namespace.useMemo(() => {
421
+ const filteredBoard = React__namespace.useMemo(() => {
1148
422
  if (!searchQuery.trim()) return board;
1149
423
  const filtered = {
1150
424
  ...board,
@@ -1294,7 +568,7 @@ function KanbanBoard({
1294
568
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "flex items-center gap-3", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "relative", children: [
1295
569
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { style: ui.css("absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground") }),
1296
570
  /* @__PURE__ */ jsxRuntime.jsx(
1297
- Input,
571
+ input_js.Input,
1298
572
  {
1299
573
  placeholder: "Search cards...",
1300
574
  value: searchQuery,