@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/ai-code.cjs CHANGED
@@ -2,15 +2,18 @@
2
2
  'use strict';
3
3
 
4
4
  var ui = require('@hanzo/ui');
5
- var React10 = require('react');
5
+ var React = require('react');
6
6
  var Editor = require('@monaco-editor/react');
7
7
  var lucideReact = require('lucide-react');
8
8
  var nextThemes = require('next-themes');
9
9
  var sonner = require('sonner');
10
- var gui = require('@hanzo/gui');
10
+ var badge_js = require('./badge.js');
11
+ var button_js = require('./button.js');
12
+ var progress_js = require('./progress.js');
13
+ var resizable_js = require('./resizable.js');
14
+ var separator_js = require('./separator.js');
15
+ var textarea_js = require('./textarea.js');
11
16
  var jsxRuntime = require('react/jsx-runtime');
12
- var usehooks = require('@uidotdev/usehooks');
13
- var ResizablePrimitive = require('react-resizable-panels');
14
17
 
15
18
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
19
 
@@ -32,868 +35,9 @@ function _interopNamespace(e) {
32
35
  return Object.freeze(n);
33
36
  }
34
37
 
35
- var React10__namespace = /*#__PURE__*/_interopNamespace(React10);
38
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
39
  var Editor__default = /*#__PURE__*/_interopDefault(Editor);
37
- var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespace(ResizablePrimitive);
38
40
 
39
- var SKELETON_CLASSES = "lux-skeleton rounded-sm";
40
- var Skeleton = React10__namespace.forwardRef(
41
- function Skeleton2(props, ref) {
42
- const { loading = true, asChild, className, children, style, ...rest } = props;
43
- if (!loading) {
44
- if (asChild && React10__namespace.isValidElement(children)) return children;
45
- return /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { ref, className, style, ...rest, children });
46
- }
47
- return /* @__PURE__ */ jsxRuntime.jsx(
48
- "div",
49
- {
50
- ref,
51
- "data-loading": true,
52
- ...ui.sx(
53
- SKELETON_CLASSES,
54
- asChild || children ? "[&_*]:invisible" : "min-h-5",
55
- className
56
- ),
57
- style,
58
- ...rest,
59
- children
60
- }
61
- );
62
- }
63
- );
64
- React10__namespace.forwardRef(
65
- function SkeletonCircle2(props, ref) {
66
- const { size = 40, loading = true, className, ...rest } = props;
67
- const dimension = typeof size === "number" ? `${size}px` : size;
68
- return /* @__PURE__ */ jsxRuntime.jsx(
69
- Skeleton,
70
- {
71
- ref,
72
- loading,
73
- ...ui.sx("rounded-full shrink-0", className),
74
- style: { width: dimension, height: dimension, ...rest.style },
75
- ...rest
76
- }
77
- );
78
- }
79
- );
80
- React10__namespace.forwardRef(
81
- function SkeletonText2(props, ref) {
82
- const { noOfLines = 3, loading = true, className, ...rest } = props;
83
- 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(
84
- Skeleton,
85
- {
86
- loading,
87
- ...ui.sx(ui.cn("h-4", index === noOfLines - 1 && "max-w-[80%]"))
88
- },
89
- index
90
- )) });
91
- }
92
- );
93
- var ink = (children, Wrap = gui.Text, props = {}) => {
94
- let hasText = false;
95
- React10.Children.forEach(children, (child) => {
96
- if (typeof child === "string" || typeof child === "number") hasText = true;
97
- });
98
- if (!hasText) return children;
99
- return React10.Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? React10.createElement(Wrap, props, child) : child);
100
- };
101
- var TOUCH_PX = 1024;
102
- function useBelow(px) {
103
- const [below, setBelow] = React10__namespace.useState(false);
104
- React10__namespace.useEffect(() => {
105
- const mql = window.matchMedia(`(max-width: ${px - 1}px)`);
106
- const apply = () => setBelow(mql.matches);
107
- apply();
108
- mql.addEventListener("change", apply);
109
- return () => mql.removeEventListener("change", apply);
110
- }, [px]);
111
- return below;
112
- }
113
- var useIsTouch = () => useBelow(TOUCH_PX);
114
- function mapPlacement(p) {
115
- if (!p) return void 0;
116
- return p;
117
- }
118
- var Tooltip = React10__namespace.forwardRef(
119
- function Tooltip2(props, ref) {
120
- const {
121
- showArrow: showArrowProp,
122
- onOpenChange,
123
- variant,
124
- selected,
125
- children,
126
- disabled,
127
- disableOnMobile,
128
- content,
129
- contentProps,
130
- defaultOpen = false,
131
- triggerProps,
132
- closeDelay = 100,
133
- openDelay = 100,
134
- interactive,
135
- positioning
136
- } = props;
137
- const [open, setOpen] = React10__namespace.useState(defaultOpen);
138
- const timeoutRef = React10__namespace.useRef(null);
139
- const isMobile = useIsTouch();
140
- const handleOpenChange = React10__namespace.useCallback((nextOpen) => {
141
- setOpen(nextOpen);
142
- onOpenChange?.({ open: nextOpen });
143
- }, [onOpenChange]);
144
- const handleOpenChangeManual = React10__namespace.useCallback((nextOpen) => {
145
- timeoutRef.current && window.clearTimeout(timeoutRef.current);
146
- timeoutRef.current = window.setTimeout(() => {
147
- setOpen(nextOpen);
148
- onOpenChange?.({ open: nextOpen });
149
- }, nextOpen ? openDelay : closeDelay);
150
- }, [closeDelay, openDelay, onOpenChange]);
151
- const handleClickAway = React10__namespace.useCallback(() => {
152
- if (open) handleOpenChangeManual(false);
153
- }, [open, handleOpenChangeManual]);
154
- const triggerRef = usehooks.useClickAway(handleClickAway);
155
- const handleTriggerClick = React10__namespace.useCallback(() => {
156
- handleOpenChangeManual(!open);
157
- }, [handleOpenChangeManual, open]);
158
- const handleContentClick = React10__namespace.useCallback((event) => {
159
- event.stopPropagation();
160
- if (interactive) {
161
- const closestLink = event.target?.closest("a");
162
- if (closestLink) {
163
- handleOpenChangeManual(false);
164
- }
165
- }
166
- }, [interactive, handleOpenChangeManual]);
167
- React10__namespace.useEffect(() => {
168
- return () => {
169
- if (timeoutRef.current) {
170
- clearTimeout(timeoutRef.current);
171
- }
172
- };
173
- }, []);
174
- if (disabled || disableOnMobile && isMobile) return children;
175
- const defaultShowArrow = variant === "popover" ? false : true;
176
- const showArrow = showArrowProp !== void 0 ? showArrowProp : defaultShowArrow;
177
- const isPopover = variant === "popover";
178
- const placement = mapPlacement(positioning?.placement) ?? "top";
179
- const offset = positioning?.offset?.mainAxis ?? 4;
180
- return /* @__PURE__ */ jsxRuntime.jsx(gui.TooltipGroup, { delay: openDelay, children: /* @__PURE__ */ jsxRuntime.jsxs(
181
- gui.Tooltip,
182
- {
183
- open,
184
- onOpenChange: handleOpenChange,
185
- delay: { open: openDelay, close: closeDelay },
186
- placement,
187
- offset,
188
- unstyled: true,
189
- children: [
190
- /* @__PURE__ */ jsxRuntime.jsx(
191
- gui.Tooltip.Trigger,
192
- {
193
- ref: triggerRef,
194
- asChild: true,
195
- ...isMobile ? { onClick: handleTriggerClick } : {},
196
- ...triggerProps,
197
- children
198
- }
199
- ),
200
- /* @__PURE__ */ jsxRuntime.jsxs(
201
- gui.Tooltip.Content,
202
- {
203
- ref,
204
- unstyled: true,
205
- zIndex: 9999,
206
- overflow: "hidden",
207
- borderRadius: 8,
208
- paddingHorizontal: 12,
209
- paddingVertical: 8,
210
- maxWidth: isPopover ? 384 : 320,
211
- backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)",
212
- transition: "quick",
213
- enterStyle: { opacity: 0, scale: 0.95 },
214
- exitStyle: { opacity: 0, scale: 0.95 },
215
- ...isPopover ? {
216
- borderWidth: 1,
217
- borderColor: "var(--color-border-divider)",
218
- shadowColor: "var(--shadow-popover)"
219
- } : {},
220
- onClick: interactive ? handleContentClick : void 0,
221
- ...selected ? { "data-selected": true } : {},
222
- ...contentProps,
223
- children: [
224
- showArrow && /* @__PURE__ */ jsxRuntime.jsx(
225
- gui.Tooltip.Arrow,
226
- {
227
- unstyled: true,
228
- backgroundColor: isPopover ? "var(--color-popover-bg)" : "var(--color-tooltip-bg)"
229
- }
230
- ),
231
- ink(content, void 0, {
232
- fontSize: 14,
233
- color: isPopover ? "var(--color-text-primary)" : "var(--color-tooltip-fg)"
234
- })
235
- ]
236
- }
237
- )
238
- ]
239
- }
240
- ) });
241
- }
242
- );
243
- function TruncatedTextTooltip({ label, children }) {
244
- return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { content: label, positioning: { placement: "top" }, children });
245
- }
246
- var SIZE = {
247
- sm: { padding: 4, height: 18, minHeight: 18 },
248
- md: { paddingHorizontal: 4, paddingVertical: 2, minHeight: 24 },
249
- lg: { paddingHorizontal: 8, paddingVertical: 4, minHeight: 28 }
250
- };
251
- var SIZE_TEXT = {
252
- sm: { fontSize: 12, fontWeight: "500" },
253
- md: { fontSize: 14, fontWeight: "500" },
254
- lg: { fontSize: 14, fontWeight: "600" }
255
- };
256
- var COLOR_PALETTE = {
257
- gray: { bg: "var(--color-badge-gray-bg)", fg: "var(--color-badge-gray-fg)" },
258
- green: { bg: "var(--color-badge-green-bg)", fg: "var(--color-badge-green-fg)" },
259
- red: { bg: "var(--color-badge-red-bg)", fg: "var(--color-badge-red-fg)" },
260
- purple: { bg: "var(--color-badge-purple-bg)", fg: "var(--color-badge-purple-fg)" },
261
- orange: { bg: "var(--color-badge-orange-bg)", fg: "var(--color-badge-orange-fg)" },
262
- blue: { bg: "var(--color-badge-blue-bg)", fg: "var(--color-badge-blue-fg)" },
263
- yellow: { bg: "var(--color-badge-yellow-bg)", fg: "var(--color-badge-yellow-fg)" },
264
- teal: { bg: "var(--color-badge-teal-bg)", fg: "var(--color-badge-teal-fg)" },
265
- cyan: { bg: "var(--color-badge-cyan-bg)", fg: "var(--color-badge-cyan-fg)" },
266
- pink: { bg: "var(--color-badge-pink-bg)", fg: "var(--color-badge-pink-fg)" },
267
- purple_alt: { bg: "var(--color-badge-purple-alt-bg)", fg: "var(--color-badge-purple-alt-fg)" },
268
- blue_alt: { bg: "var(--color-badge-blue-alt-bg)", fg: "var(--color-badge-blue-alt-fg)" },
269
- bright_gray: { bg: "var(--color-badge-bright-gray-bg)", fg: "var(--color-badge-bright-gray-fg)" },
270
- bright_green: { bg: "var(--color-badge-bright-green-bg)", fg: "var(--color-badge-bright-green-fg)" },
271
- bright_red: { bg: "var(--color-badge-bright-red-bg)", fg: "var(--color-badge-bright-red-fg)" },
272
- bright_blue: { bg: "var(--color-badge-bright-blue-bg)", fg: "var(--color-badge-bright-blue-fg)" },
273
- bright_yellow: { bg: "var(--color-badge-bright-yellow-bg)", fg: "var(--color-badge-bright-yellow-fg)" },
274
- bright_teal: { bg: "var(--color-badge-bright-teal-bg)", fg: "var(--color-badge-bright-teal-fg)" },
275
- bright_cyan: { bg: "var(--color-badge-bright-cyan-bg)", fg: "var(--color-badge-bright-cyan-fg)" },
276
- bright_orange: { bg: "var(--color-badge-bright-orange-bg)", fg: "var(--color-badge-bright-orange-fg)" },
277
- bright_purple: { bg: "var(--color-badge-bright-purple-bg)", fg: "var(--color-badge-bright-purple-fg)" },
278
- bright_pink: { bg: "var(--color-badge-bright-pink-bg)", fg: "var(--color-badge-bright-pink-fg)" }
279
- };
280
- var TONE = {
281
- subtle: (p) => ({ backgroundColor: p.bg, color: p.fg, borderWidth: 0 }),
282
- solid: (p) => ({ backgroundColor: p.fg, color: p.bg, borderWidth: 0 }),
283
- outline: (p) => ({
284
- backgroundColor: "transparent",
285
- color: p.fg,
286
- borderWidth: 1,
287
- borderColor: p.fg
288
- })
289
- };
290
- var Badge = React10__namespace.default.forwardRef(
291
- function Badge2(props, ref) {
292
- const {
293
- loading,
294
- startElement,
295
- children,
296
- truncated = false,
297
- endElement,
298
- variant = "subtle",
299
- size = "md",
300
- colorPalette = "gray",
301
- className,
302
- style: badgeStyle,
303
- ...rest
304
- } = props;
305
- const palette = COLOR_PALETTE[colorPalette];
306
- const tone = TONE[variant](palette);
307
- const child = children ? (
308
- // `ellipsis` is gui Text's own built-in variant for single-line
309
- // truncation — it expands to the same overflow/text-overflow/
310
- // white-space/max-width rule Tailwind's `text-ellipsis` did, but
311
- // through the component's own variants (guaranteed to compile),
312
- // rather than naming each longhand as a separate style prop.
313
- /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { ellipsis: true, ...SIZE_TEXT[size], color: tone.color, children })
314
- ) : null;
315
- const childrenElement = truncated ? /* @__PURE__ */ jsxRuntime.jsx(TruncatedTextTooltip, { label: children, children: child }) : child;
316
- const badgeElement = /* @__PURE__ */ jsxRuntime.jsxs(
317
- gui.XStack,
318
- {
319
- ref,
320
- render: /* @__PURE__ */ jsxRuntime.jsx("span", {}),
321
- display: "inline-flex",
322
- alignItems: "center",
323
- alignSelf: "flex-start",
324
- borderRadius: 2,
325
- gap: 4,
326
- maxWidth: "100%",
327
- userSelect: "text",
328
- ...SIZE[size],
329
- ...tone,
330
- className,
331
- style: badgeStyle,
332
- ...rest,
333
- children: [
334
- startElement,
335
- childrenElement,
336
- endElement
337
- ]
338
- }
339
- );
340
- if (loading) {
341
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading, asChild: true, children: badgeElement });
342
- }
343
- return badgeElement;
344
- }
345
- );
346
- var SpinnerFrame = gui.styled(gui.View, {
347
- name: "ButtonSpinner",
348
- render: /* @__PURE__ */ jsxRuntime.jsx("span", {}),
349
- width: 16,
350
- height: 16,
351
- borderRadius: 1e3,
352
- borderWidth: 2,
353
- borderColor: "currentColor",
354
- borderBottomColor: "transparent",
355
- borderLeftColor: "transparent"
356
- });
357
- function Spinner({ className }) {
358
- return /* @__PURE__ */ jsxRuntime.jsx(
359
- SpinnerFrame,
360
- {
361
- role: "status",
362
- "aria-label": "Loading",
363
- className: [
364
- "animate-spin",
365
- className
366
- ].filter(Boolean).join(" ")
367
- }
368
- );
369
- }
370
- var ButtonFrame = gui.styled(gui.View, {
371
- name: "LuxButton",
372
- render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
373
- role: "button",
374
- tabIndex: 0,
375
- cursor: "pointer",
376
- userSelect: "none",
377
- display: "inline-flex",
378
- alignItems: "center",
379
- justifyContent: "center",
380
- gap: 0,
381
- overflow: "hidden",
382
- borderRadius: 6,
383
- // Whitespace nowrap via className since hanzogui doesn't have a direct token
384
- // Transition via className
385
- variants: {
386
- size: {
387
- "2xs": { paddingHorizontal: 8, height: 20, minWidth: 20, fontSize: 12, borderRadius: 4, gap: 4 },
388
- xs: { paddingHorizontal: 8, height: 24, minWidth: 24, fontSize: 14, borderRadius: 4, gap: 4 },
389
- sm: { paddingHorizontal: 12, height: 32, minWidth: 32, fontSize: 14, borderRadius: 6, gap: 4 },
390
- md: { paddingHorizontal: 12, height: 40, minWidth: 40, fontSize: 16, borderRadius: 6, gap: 8 }
391
- },
392
- disabled: {
393
- true: {
394
- opacity: 0.2,
395
- cursor: "not-allowed",
396
- pointerEvents: "none"
397
- }
398
- }
399
- },
400
- defaultVariants: {
401
- size: "md"
402
- }
403
- });
404
- var VARIANT_CLASSES = {
405
- solid: [
406
- "bg-[var(--color-button-solid-bg)] text-[var(--color-button-solid-text)]",
407
- "hover:bg-[var(--color-hover)]",
408
- "data-[expanded]:bg-[var(--color-hover)]"
409
- ].join(" "),
410
- solid_danger: [
411
- "bg-[var(--color-button-danger-bg)] text-[var(--color-button-danger-fg)]",
412
- "hover:bg-[var(--color-button-danger-bg-hover)]",
413
- "data-[expanded]:bg-[var(--color-button-danger-bg-hover)]"
414
- ].join(" "),
415
- outline: [
416
- "border-2 border-solid bg-transparent",
417
- "text-[var(--color-button-outline-fg)] border-[var(--color-button-outline-fg)]",
418
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]"
419
- ].join(" "),
420
- outline_danger: [
421
- "border-2 border-solid bg-transparent",
422
- "text-[var(--color-button-danger-bg)] border-[var(--color-button-danger-bg)]",
423
- "hover:bg-transparent hover:text-[var(--color-button-danger-bg-hover)] hover:border-[var(--color-button-danger-bg-hover)]"
424
- ].join(" "),
425
- dropdown: [
426
- "border-2 border-solid bg-transparent",
427
- "text-[var(--color-button-dropdown-fg)] border-[var(--color-button-dropdown-border)]",
428
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
429
- "data-[expanded]:bg-transparent data-[expanded]:text-[var(--color-hover)] data-[expanded]:border-[var(--color-hover)]",
430
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
431
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
432
- "data-[selected]:hover:text-[var(--color-hover)] data-[selected]:hover:border-transparent",
433
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
434
- ].join(" "),
435
- header: [
436
- "bg-transparent border-2 border-solid",
437
- "text-[var(--color-button-header-fg)] border-[var(--color-button-header-border)]",
438
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
439
- "data-[selected]:bg-[var(--color-button-header-bg-selected)]",
440
- "data-[selected]:text-[var(--color-button-header-fg-selected)] data-[selected]:border-transparent data-[selected]:border-0",
441
- "data-[selected]:hover:bg-[var(--color-button-header-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
442
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
443
- "data-[selected]:data-[highlighted]:bg-[var(--color-button-header-bg-highlighted)]",
444
- "data-[selected]:data-[highlighted]:text-[var(--color-button-header-fg-highlighted)]",
445
- "data-[selected]:data-[highlighted]:border-transparent data-[selected]:data-[highlighted]:border-0",
446
- "data-[selected]:data-[highlighted]:hover:bg-[var(--color-button-header-bg-highlighted)]",
447
- "data-[selected]:data-[highlighted]:hover:text-[var(--color-hover)]",
448
- "data-[selected]:data-[highlighted]:data-[expanded]:text-[var(--color-hover)]"
449
- ].join(" "),
450
- hero: [
451
- "bg-[var(--color-button-hero-bg)] text-[var(--color-button-hero-fg)]",
452
- "hover:bg-[var(--color-button-hero-bg-hover)] hover:text-[var(--color-button-hero-fg-hover)]",
453
- "data-[selected]:bg-[var(--color-button-hero-bg-selected)] data-[selected]:text-[var(--color-button-hero-fg-selected)]",
454
- "data-[selected]:hover:bg-[var(--color-button-hero-bg-selected)] data-[selected]:hover:text-[var(--color-hover)]",
455
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]"
456
- ].join(" "),
457
- segmented: [
458
- "bg-transparent border-2 border-solid rounded-none",
459
- "text-[var(--color-button-segmented-fg)] border-[var(--color-selected-control-bg)]",
460
- "hover:text-[var(--color-hover)]",
461
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
462
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-selected-control-text)]",
463
- "[&:not(:last-child)]:border-r-0 data-[selected]:[&:not(:last-child)]:border-r-2",
464
- "data-[selected]+*:border-l-0",
465
- "first:rounded-l-md last:rounded-r-md"
466
- ].join(" "),
467
- plain: "bg-transparent text-inherit border-none hover:bg-transparent",
468
- subtle: [
469
- "bg-[var(--color-button-subtle-bg)] text-[var(--color-button-subtle-fg)]",
470
- "hover:bg-[var(--color-button-subtle-bg)] hover:text-[var(--color-hover)]",
471
- "disabled:bg-[var(--color-button-subtle-bg)] disabled:text-[var(--color-button-subtle-fg)]"
472
- ].join(" "),
473
- link: [
474
- "bg-transparent text-[var(--color-link-primary)] border-none font-normal",
475
- "px-0 h-auto",
476
- "hover:bg-transparent hover:text-[var(--color-link-primary-hover)]",
477
- "disabled:text-[var(--color-text-secondary)]"
478
- ].join(" "),
479
- icon_secondary: [
480
- "bg-transparent text-[var(--color-icon-secondary)] border-none",
481
- "hover:text-[var(--color-hover)]",
482
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
483
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
484
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
485
- "data-[expanded]:text-[var(--color-hover)]"
486
- ].join(" "),
487
- icon_background: [
488
- "bg-[var(--color-button-icon-background-bg)] text-[var(--color-icon-secondary)] border-none",
489
- "hover:text-[var(--color-hover)]",
490
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)]",
491
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)] data-[selected]:hover:text-[var(--color-hover)]",
492
- "data-[selected]:data-[expanded]:text-[var(--color-hover)]",
493
- "data-[expanded]:text-[var(--color-hover)]"
494
- ].join(" "),
495
- pagination: [
496
- "border-2 border-solid bg-transparent",
497
- "text-[var(--color-button-pagination-fg)] border-[var(--color-button-pagination-border)]",
498
- "hover:bg-transparent hover:text-[var(--color-hover)] hover:border-[var(--color-hover)]",
499
- "data-[selected]:bg-[var(--color-selected-control-bg)] data-[selected]:text-[var(--color-selected-control-text)] data-[selected]:border-transparent",
500
- "data-[selected]:hover:bg-[var(--color-selected-control-bg)]",
501
- "data-[selected]:hover:text-[var(--color-selected-control-text)] data-[selected]:hover:border-transparent"
502
- ].join(" ")
503
- };
504
- var BASE_CLASSES = "font-semibold whitespace-nowrap transition-colors duration-150";
505
- var SP = 4;
506
- function buildShimStyle(props) {
507
- const s = { ...props.style };
508
- if (props.mt !== void 0) s.marginTop = typeof props.mt === "number" ? `${props.mt * SP}px` : props.mt;
509
- if (props.ml !== void 0) s.marginLeft = typeof props.ml === "number" ? `${props.ml * SP}px` : props.ml;
510
- if (props.mr !== void 0) s.marginRight = typeof props.mr === "number" ? `${props.mr * SP}px` : props.mr;
511
- if (props.px !== void 0) {
512
- const v = typeof props.px === "number" ? `${props.px * SP}px` : props.px;
513
- s.paddingLeft = v;
514
- s.paddingRight = v;
515
- }
516
- if (props.py !== void 0) {
517
- const v = typeof props.py === "number" ? `${props.py * SP}px` : props.py;
518
- s.paddingTop = v;
519
- s.paddingBottom = v;
520
- }
521
- if (props.fontWeight !== void 0) s.fontWeight = props.fontWeight;
522
- if (props.gap !== void 0) s.gap = typeof props.gap === "number" ? `${props.gap * SP}px` : props.gap;
523
- if (props.flexShrink !== void 0) s.flexShrink = props.flexShrink;
524
- if (props.columnGap !== void 0) s.columnGap = typeof props.columnGap === "number" ? `${props.columnGap * SP}px` : props.columnGap;
525
- if (props.gridColumn !== void 0) s.gridColumn = typeof props.gridColumn === "number" ? String(props.gridColumn) : props.gridColumn;
526
- if (props.gridRow) s.gridRow = props.gridRow;
527
- if (props.justifySelf) s.justifySelf = props.justifySelf;
528
- if (props.alignSelf) s.alignSelf = props.alignSelf;
529
- if (props.h) s.height = props.h;
530
- if (props.w) s.width = props.w;
531
- if (props.display) s.display = props.display;
532
- if (props.borderBottomRightRadius !== void 0) s.borderBottomRightRadius = typeof props.borderBottomRightRadius === "number" ? `${props.borderBottomRightRadius}px` : props.borderBottomRightRadius;
533
- if (props.borderTopRightRadius !== void 0) s.borderTopRightRadius = typeof props.borderTopRightRadius === "number" ? `${props.borderTopRightRadius}px` : props.borderTopRightRadius;
534
- return Object.keys(s).length > 0 ? s : void 0;
535
- }
536
- var Button = React10__namespace.forwardRef(
537
- function Button2(props, ref) {
538
- const {
539
- className,
540
- variant = "solid",
541
- size = "md",
542
- asChild = false,
543
- loading = false,
544
- loadingText,
545
- loadingSkeleton = false,
546
- expanded,
547
- selected,
548
- highlighted,
549
- disabled,
550
- children,
551
- style: styleProp,
552
- // Strip Chakra style props
553
- mt,
554
- ml,
555
- mr,
556
- px,
557
- py,
558
- fontWeight,
559
- gap,
560
- flexShrink,
561
- columnGap,
562
- gridColumn,
563
- gridRow,
564
- justifySelf,
565
- alignSelf,
566
- textStyle: _textStyle,
567
- h,
568
- w,
569
- display,
570
- borderBottomRightRadius,
571
- borderTopRightRadius,
572
- ...rest
573
- } = props;
574
- const mergedStyle = buildShimStyle({
575
- style: styleProp,
576
- mt,
577
- ml,
578
- mr,
579
- px,
580
- py,
581
- fontWeight,
582
- gap,
583
- flexShrink,
584
- columnGap,
585
- gridColumn,
586
- gridRow,
587
- justifySelf,
588
- alignSelf,
589
- h,
590
- w,
591
- display,
592
- borderBottomRightRadius,
593
- borderTopRightRadius
594
- });
595
- const dataAttrs = {};
596
- if (expanded) dataAttrs["data-expanded"] = true;
597
- if (selected) dataAttrs["data-selected"] = true;
598
- if (highlighted) dataAttrs["data-highlighted"] = true;
599
- if (loadingSkeleton) dataAttrs["data-loading-skeleton"] = true;
600
- const isDisabled = !loadingSkeleton && (loading || disabled);
601
- const inner = loading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
602
- /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}),
603
- loadingText != null && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: 8 }, children: loadingText })
604
- ] }) : children;
605
- const variantClass = VARIANT_CLASSES[variant] ?? VARIANT_CLASSES.solid;
606
- const combinedClassName = [BASE_CLASSES, variantClass, className].filter(Boolean).join(" ");
607
- const button = /* @__PURE__ */ jsxRuntime.jsx(
608
- ButtonFrame,
609
- {
610
- ref,
611
- size,
612
- disabled: isDisabled || void 0,
613
- asChild: asChild || void 0,
614
- className: combinedClassName,
615
- style: mergedStyle,
616
- ...dataAttrs,
617
- ...rest,
618
- children: inner
619
- }
620
- );
621
- if (loadingSkeleton) {
622
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading: loadingSkeleton, asChild: true, ref, children: button });
623
- }
624
- return button;
625
- }
626
- );
627
- React10__namespace.forwardRef(
628
- function ButtonGroup2(props, ref) {
629
- const { className, ...rest } = props;
630
- return /* @__PURE__ */ jsxRuntime.jsx(
631
- ui.Box,
632
- {
633
- ref,
634
- className: ["inline-flex", className].filter(Boolean).join(" "),
635
- role: "group",
636
- ...rest
637
- }
638
- );
639
- }
640
- );
641
- React10__namespace.forwardRef(
642
- function ButtonGroupRadio2(props, ref) {
643
- const {
644
- children,
645
- onChange,
646
- variant = "segmented",
647
- defaultValue,
648
- loading = false,
649
- equalWidth = false,
650
- className,
651
- ...rest
652
- } = props;
653
- const firstChildValue = React10__namespace.useMemo(() => {
654
- const firstChild = Array.isArray(children) ? children[0] : void 0;
655
- return typeof firstChild?.props.value === "string" ? firstChild.props.value : void 0;
656
- }, [children]);
657
- const [value, setValue] = React10__namespace.useState(defaultValue ?? firstChildValue);
658
- const handleItemClick = React10__namespace.useCallback((event) => {
659
- const v = event.currentTarget.value;
660
- setValue(v);
661
- onChange?.(v);
662
- }, [onChange]);
663
- const clonedChildren = React10__namespace.Children.map(children, (child) => {
664
- return React10__namespace.cloneElement(child, {
665
- onClick: handleItemClick,
666
- selected: value === child.props.value,
667
- variant
668
- });
669
- });
670
- const childrenLength = React10__namespace.Children.count(children);
671
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading, children: /* @__PURE__ */ jsxRuntime.jsx(
672
- ui.Box,
673
- {
674
- ref,
675
- className: [
676
- "inline-flex gap-0",
677
- equalWidth ? "grid" : "",
678
- className
679
- ].filter(Boolean).join(" "),
680
- style: equalWidth ? { gridTemplateColumns: `repeat(${childrenLength}, 1fr)` } : void 0,
681
- role: "group",
682
- ...rest,
683
- children: clonedChildren
684
- }
685
- ) });
686
- }
687
- );
688
- var SIZE2 = {
689
- sm: 4,
690
- md: 8,
691
- lg: 12,
692
- xl: 16
693
- };
694
- function normalizeValue(value, min, max) {
695
- if (value == null) return 0;
696
- if (max <= min) return 0;
697
- return Math.round((value - min) / (max - min) * 100);
698
- }
699
- var Progress = React10__namespace.forwardRef(
700
- function Progress2(props, ref) {
701
- const {
702
- value,
703
- min = 0,
704
- max = 100,
705
- size = "md",
706
- color,
707
- trackProps,
708
- style,
709
- w,
710
- flex,
711
- ...rest
712
- } = props;
713
- const percent = normalizeValue(value, min, max);
714
- const trackStyle = {
715
- ...trackProps?.style,
716
- ...trackProps?.borderStartRadius !== void 0 && {
717
- borderStartStartRadius: trackProps.borderStartRadius,
718
- borderEndStartRadius: trackProps.borderStartRadius
719
- },
720
- ...trackProps?.borderEndRadius !== void 0 && {
721
- borderStartEndRadius: trackProps.borderEndRadius,
722
- borderEndEndRadius: trackProps.borderEndRadius
723
- }
724
- };
725
- const rootStyle = {
726
- position: "relative",
727
- ...style,
728
- ...w !== void 0 && { width: w === "full" ? "100%" : w },
729
- ...flex !== void 0 && { flex }
730
- };
731
- return /* @__PURE__ */ jsxRuntime.jsx(
732
- "div",
733
- {
734
- ref,
735
- style: rootStyle,
736
- ...rest,
737
- children: /* @__PURE__ */ jsxRuntime.jsx(
738
- gui.Progress,
739
- {
740
- value: percent,
741
- max: 100,
742
- unstyled: true,
743
- className: trackProps?.className,
744
- width: "100%",
745
- overflow: "hidden",
746
- borderRadius: 9999,
747
- height: SIZE2[size],
748
- backgroundColor: "var(--color-progress-track)",
749
- style: trackStyle,
750
- children: /* @__PURE__ */ jsxRuntime.jsx(
751
- gui.Progress.Indicator,
752
- {
753
- unstyled: true,
754
- transition: "slow",
755
- height: "100%",
756
- borderRadius: 9999,
757
- backgroundColor: color ? void 0 : "var(--color-progress-indicator)",
758
- style: {
759
- ...color && { backgroundColor: `var(--color-${color.replace(".", "-")}, ${color})` }
760
- }
761
- }
762
- )
763
- }
764
- )
765
- }
766
- );
767
- }
768
- );
769
- var ResizablePanelGroup = ({
770
- className,
771
- ...props
772
- }) => /* @__PURE__ */ jsxRuntime.jsx(
773
- ResizablePrimitive__namespace.PanelGroup,
774
- {
775
- className: ui.cn(
776
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
777
- className
778
- ),
779
- ...props
780
- }
781
- );
782
- var ResizablePanel = ResizablePrimitive__namespace.Panel;
783
- var ResizableHandle = ({
784
- withHandle,
785
- className,
786
- ...props
787
- }) => /* @__PURE__ */ jsxRuntime.jsx(
788
- ResizablePrimitive__namespace.PanelResizeHandle,
789
- {
790
- className: ui.cn(
791
- "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
792
- className
793
- ),
794
- ...props,
795
- children: withHandle && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GripVertical, { style: ui.css("h-2.5 w-2.5") }) })
796
- }
797
- );
798
- var WEIGHT = { xs: 0.5, sm: 1, md: 2, lg: 3 };
799
- var Separator = React10__namespace.default.forwardRef(
800
- function Separator2({ orientation = "horizontal", variant = "solid", size = "sm", ...rest }, ref) {
801
- const vertical = orientation === "vertical";
802
- return /* @__PURE__ */ jsxRuntime.jsx(
803
- gui.Separator,
804
- {
805
- ref,
806
- vertical,
807
- role: "separator",
808
- "aria-orientation": orientation,
809
- borderWidth: 0,
810
- borderStyle: variant,
811
- borderColor: "var(--color-border-divider)",
812
- ...vertical ? { borderLeftWidth: WEIGHT[size], alignSelf: "stretch", height: "auto", width: 0 } : { borderTopWidth: WEIGHT[size], width: "100%" },
813
- ...rest
814
- }
815
- );
816
- }
817
- );
818
- var SIZE3 = {
819
- xs: { height: 24, paddingHorizontal: 8, fontSize: "$1", borderRadius: 4 },
820
- sm: { height: 32, paddingHorizontal: 12, fontSize: "$3", borderRadius: 6 },
821
- md: { height: 40, paddingHorizontal: 16, fontSize: "$5", borderRadius: 6 },
822
- lg: { height: 48, paddingHorizontal: 16, fontSize: "$6", borderRadius: 8 },
823
- "2xl": { height: 56, paddingHorizontal: 16, fontSize: "$7", borderRadius: 8 }
824
- };
825
- var VARIANT = {
826
- outline: { borderWidth: 1, borderStyle: "solid" },
827
- filled: { borderWidth: 0, backgroundColor: "var(--color-input-filled-bg)" },
828
- unstyled: { borderWidth: 0, backgroundColor: "transparent", padding: 0, height: "auto" }
829
- };
830
- var CONTROL = {
831
- width: "100%",
832
- outlineWidth: 0,
833
- backgroundColor: "var(--color-input-bg)",
834
- color: "var(--color-input-fg)",
835
- borderColor: "var(--color-input-border)",
836
- hoverStyle: { borderColor: "var(--color-input-border-hover)" },
837
- focusStyle: { borderColor: "var(--color-input-border-focus)" },
838
- disabledStyle: { opacity: 0.4, cursor: "not-allowed" }
839
- };
840
- var Input = React10__namespace.default.forwardRef(
841
- ({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
842
- const handleChange = React10__namespace.default.useCallback(
843
- (event) => {
844
- onChange?.(event);
845
- onChangeText?.(event.target.value);
846
- },
847
- [onChange, onChangeText]
848
- );
849
- return /* @__PURE__ */ jsxRuntime.jsx(
850
- gui.Input,
851
- {
852
- ref,
853
- unstyled: true,
854
- className: className ? `lux-control ${className}` : "lux-control",
855
- ...CONTROL,
856
- ...SIZE3[size],
857
- ...VARIANT[variant],
858
- ...rest,
859
- onChange: handleChange
860
- }
861
- );
862
- }
863
- );
864
- Input.displayName = "Input";
865
- var SIZE4 = {
866
- xs: { paddingHorizontal: 8, paddingVertical: 4, fontSize: "$1", borderRadius: 4 },
867
- sm: { paddingHorizontal: 12, paddingVertical: 8, fontSize: "$3", borderRadius: 6 },
868
- md: { paddingHorizontal: 16, paddingVertical: 8, fontSize: "$5", borderRadius: 6 },
869
- lg: { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$6", borderRadius: 8 },
870
- "2xl": { paddingHorizontal: 16, paddingVertical: 12, fontSize: "$7", borderRadius: 8 }
871
- };
872
- var Textarea = React10__namespace.default.forwardRef(
873
- ({ size = "md", variant = "outline", className, onChange, onChangeText, ...rest }, ref) => {
874
- const handleChange = React10__namespace.default.useCallback(
875
- (event) => {
876
- onChange?.(event);
877
- onChangeText?.(event.target.value);
878
- },
879
- [onChange, onChangeText]
880
- );
881
- return /* @__PURE__ */ jsxRuntime.jsx(
882
- gui.TextArea,
883
- {
884
- ref,
885
- unstyled: true,
886
- className: className ? `lux-control ${className}` : "lux-control",
887
- ...CONTROL,
888
- ...SIZE4[size],
889
- ...VARIANT[variant],
890
- ...rest,
891
- onChange: handleChange
892
- }
893
- );
894
- }
895
- );
896
- Textarea.displayName = "Textarea";
897
41
  var suggestionVariants = ui.variants(
898
42
  "relative rounded-lg border p-3 transition-colors",
899
43
  {
@@ -932,12 +76,12 @@ var languagePatterns = {
932
76
  ruby: /\.rb$/,
933
77
  swift: /\.swift$/
934
78
  };
935
- var SecurityPanel = React10__namespace.forwardRef(({ issues, onFixIssue, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { ref, className: ui.cn("space-y-2", className), ...props, children: [
79
+ var SecurityPanel = React__namespace.forwardRef(({ issues, onFixIssue, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { ref, className: ui.cn("space-y-2", className), ...props, children: [
936
80
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center gap-2", children: [
937
81
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Shield, { style: ui.css("h-4 w-4") }),
938
82
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: "font-medium", children: "Security Analysis" }),
939
83
  issues.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
940
- Badge,
84
+ badge_js.Badge,
941
85
  {
942
86
  colorPalette: issues.some((i) => i.severity === "critical") ? "red" : "gray",
943
87
  children: [
@@ -962,7 +106,7 @@ var SecurityPanel = React10__namespace.forwardRef(({ issues, onFixIssue, classNa
962
106
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "space-y-1", children: [
963
107
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center gap-2", children: [
964
108
  /* @__PURE__ */ jsxRuntime.jsx(
965
- Badge,
109
+ badge_js.Badge,
966
110
  {
967
111
  colorPalette: issue.severity === "critical" || issue.severity === "high" ? "red" : "gray",
968
112
  ...ui.sx("text-xs"),
@@ -981,7 +125,7 @@ var SecurityPanel = React10__namespace.forwardRef(({ issues, onFixIssue, classNa
981
125
  ] })
982
126
  ] }),
983
127
  onFixIssue && issue.fix && /* @__PURE__ */ jsxRuntime.jsx(
984
- Button,
128
+ button_js.Button,
985
129
  {
986
130
  size: "sm",
987
131
  variant: "outline",
@@ -995,7 +139,7 @@ var SecurityPanel = React10__namespace.forwardRef(({ issues, onFixIssue, classNa
995
139
  )) })
996
140
  ] }));
997
141
  SecurityPanel.displayName = "SecurityPanel";
998
- var SuggestionsPanel = React10__namespace.forwardRef(({ suggestions, onApplySuggestion, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { ref, className: ui.cn("space-y-2", className), ...props, children: [
142
+ var SuggestionsPanel = React__namespace.forwardRef(({ suggestions, onApplySuggestion, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { ref, className: ui.cn("space-y-2", className), ...props, children: [
999
143
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center gap-2", children: [
1000
144
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { style: ui.css("h-4 w-4") }),
1001
145
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: "font-medium", children: "AI Suggestions" })
@@ -1025,7 +169,7 @@ var SuggestionsPanel = React10__namespace.forwardRef(({ suggestions, onApplySugg
1025
169
  ] })
1026
170
  ] }),
1027
171
  onApplySuggestion && /* @__PURE__ */ jsxRuntime.jsx(
1028
- Button,
172
+ button_js.Button,
1029
173
  {
1030
174
  size: "sm",
1031
175
  variant: "outline",
@@ -1042,7 +186,7 @@ var SuggestionsPanel = React10__namespace.forwardRef(({ suggestions, onApplySugg
1042
186
  }) })
1043
187
  ] }));
1044
188
  SuggestionsPanel.displayName = "SuggestionsPanel";
1045
- var ChatPanel = React10__namespace.forwardRef(
189
+ var ChatPanel = React__namespace.forwardRef(
1046
190
  ({
1047
191
  messages,
1048
192
  onSendMessage,
@@ -1051,9 +195,9 @@ var ChatPanel = React10__namespace.forwardRef(
1051
195
  className,
1052
196
  ...props
1053
197
  }, ref) => {
1054
- const [input, setInput] = React10__namespace.useState("");
1055
- const scrollRef = React10__namespace.useRef(null);
1056
- React10__namespace.useEffect(() => {
198
+ const [input, setInput] = React__namespace.useState("");
199
+ const scrollRef = React__namespace.useRef(null);
200
+ React__namespace.useEffect(() => {
1057
201
  if (scrollRef.current) {
1058
202
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
1059
203
  }
@@ -1115,7 +259,7 @@ var ChatPanel = React10__namespace.forwardRef(
1115
259
  ] }) }),
1116
260
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "border-t p-3", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex gap-2", children: [
1117
261
  /* @__PURE__ */ jsxRuntime.jsx(
1118
- Textarea,
262
+ textarea_js.Textarea,
1119
263
  {
1120
264
  value: input,
1121
265
  onChange: (e) => setInput(e.target.value),
@@ -1127,7 +271,7 @@ var ChatPanel = React10__namespace.forwardRef(
1127
271
  }
1128
272
  ),
1129
273
  /* @__PURE__ */ jsxRuntime.jsx(
1130
- Button,
274
+ button_js.Button,
1131
275
  {
1132
276
  size: "icon",
1133
277
  onClick: handleSend,
@@ -1142,7 +286,7 @@ var ChatPanel = React10__namespace.forwardRef(
1142
286
  }
1143
287
  );
1144
288
  ChatPanel.displayName = "ChatPanel";
1145
- var FileTabs = React10__namespace.forwardRef(
289
+ var FileTabs = React__namespace.forwardRef(
1146
290
  ({
1147
291
  files,
1148
292
  activeFile,
@@ -1152,8 +296,8 @@ var FileTabs = React10__namespace.forwardRef(
1152
296
  className,
1153
297
  ...props
1154
298
  }, ref) => {
1155
- const [newFileName, setNewFileName] = React10__namespace.useState("");
1156
- const [isCreating, setIsCreating] = React10__namespace.useState(false);
299
+ const [newFileName, setNewFileName] = React__namespace.useState("");
300
+ const [isCreating, setIsCreating] = React__namespace.useState(false);
1157
301
  const handleCreateFile = () => {
1158
302
  if (newFileName.trim() && onFileCreate) {
1159
303
  onFileCreate(newFileName.trim());
@@ -1173,7 +317,7 @@ var FileTabs = React10__namespace.forwardRef(
1173
317
  children: [
1174
318
  /* @__PURE__ */ jsxRuntime.jsxs(ui.ScrollArea, { ...ui.sx("flex-1"), children: [
1175
319
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "flex items-center gap-1 py-1", children: files.map((file) => /* @__PURE__ */ jsxRuntime.jsxs(
1176
- Button,
320
+ button_js.Button,
1177
321
  {
1178
322
  variant: activeFile === file.name ? "secondary" : "ghost",
1179
323
  size: "sm",
@@ -1183,7 +327,7 @@ var FileTabs = React10__namespace.forwardRef(
1183
327
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileCode, { style: ui.css("h-3 w-3") }),
1184
328
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: "text-xs", children: file.name }),
1185
329
  onFileDelete && files.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
1186
- Button,
330
+ button_js.Button,
1187
331
  {
1188
332
  variant: "ghost",
1189
333
  size: "icon",
@@ -1219,7 +363,7 @@ var FileTabs = React10__namespace.forwardRef(
1219
363
  }
1220
364
  ),
1221
365
  /* @__PURE__ */ jsxRuntime.jsx(
1222
- Button,
366
+ button_js.Button,
1223
367
  {
1224
368
  size: "icon",
1225
369
  ...ui.sx("h-6 w-6"),
@@ -1228,7 +372,7 @@ var FileTabs = React10__namespace.forwardRef(
1228
372
  }
1229
373
  )
1230
374
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(
1231
- Button,
375
+ button_js.Button,
1232
376
  {
1233
377
  variant: "ghost",
1234
378
  size: "icon",
@@ -1243,7 +387,7 @@ var FileTabs = React10__namespace.forwardRef(
1243
387
  }
1244
388
  );
1245
389
  FileTabs.displayName = "FileTabs";
1246
- var AICode = React10__namespace.forwardRef(
390
+ var AICode = React__namespace.forwardRef(
1247
391
  ({
1248
392
  value,
1249
393
  defaultValue = "",
@@ -1281,27 +425,27 @@ var AICode = React10__namespace.forwardRef(
1281
425
  ...props
1282
426
  }, ref) => {
1283
427
  const { theme: systemTheme } = nextThemes.useTheme();
1284
- const [editorValue, setEditorValue] = React10__namespace.useState(value || defaultValue);
1285
- const [currentLanguage, setCurrentLanguage] = React10__namespace.useState(language);
1286
- const [explanations, setExplanations] = React10__namespace.useState([]);
1287
- const [suggestions, setSuggestions] = React10__namespace.useState([]);
1288
- const [securityIssues, setSecurityIssues] = React10__namespace.useState(
428
+ const [editorValue, setEditorValue] = React__namespace.useState(value || defaultValue);
429
+ const [currentLanguage, setCurrentLanguage] = React__namespace.useState(language);
430
+ const [explanations, setExplanations] = React__namespace.useState([]);
431
+ const [suggestions, setSuggestions] = React__namespace.useState([]);
432
+ const [securityIssues, setSecurityIssues] = React__namespace.useState(
1289
433
  []
1290
434
  );
1291
- const [messages, setMessages] = React10__namespace.useState([]);
1292
- const [currentFiles, setCurrentFiles] = React10__namespace.useState(files);
1293
- const [currentActiveFile, setCurrentActiveFile] = React10__namespace.useState(
435
+ const [messages, setMessages] = React__namespace.useState([]);
436
+ const [currentFiles, setCurrentFiles] = React__namespace.useState(files);
437
+ const [currentActiveFile, setCurrentActiveFile] = React__namespace.useState(
1294
438
  activeFile || files[0]?.name
1295
439
  );
1296
- const [showSidePanel, setShowSidePanel] = React10__namespace.useState(true);
1297
- const [sidePanelTab, setSidePanelTab] = React10__namespace.useState("chat");
1298
- const [isProcessing, setIsProcessing] = React10__namespace.useState(false);
1299
- const [progress, setProgress] = React10__namespace.useState(0);
1300
- const editorRef = React10__namespace.useRef(null);
1301
- const currentFile = React10__namespace.useMemo(() => {
440
+ const [showSidePanel, setShowSidePanel] = React__namespace.useState(true);
441
+ const [sidePanelTab, setSidePanelTab] = React__namespace.useState("chat");
442
+ const [isProcessing, setIsProcessing] = React__namespace.useState(false);
443
+ const [progress, setProgress] = React__namespace.useState(0);
444
+ const editorRef = React__namespace.useRef(null);
445
+ const currentFile = React__namespace.useMemo(() => {
1302
446
  return currentFiles.find((f) => f.name === currentActiveFile) || currentFiles[0];
1303
447
  }, [currentFiles, currentActiveFile]);
1304
- React10__namespace.useEffect(() => {
448
+ React__namespace.useEffect(() => {
1305
449
  if (currentFile) {
1306
450
  setEditorValue(currentFile.content);
1307
451
  setCurrentLanguage(
@@ -1309,18 +453,18 @@ var AICode = React10__namespace.forwardRef(
1309
453
  );
1310
454
  }
1311
455
  }, [currentFile]);
1312
- React10__namespace.useEffect(() => {
456
+ React__namespace.useEffect(() => {
1313
457
  if (value !== void 0) {
1314
458
  setEditorValue(value);
1315
459
  }
1316
460
  }, [value]);
1317
- const resolveTheme = React10__namespace.useMemo(() => {
461
+ const resolveTheme = React__namespace.useMemo(() => {
1318
462
  if (themeProp === "auto") {
1319
463
  return systemTheme === "dark" ? "vs-dark" : "light";
1320
464
  }
1321
465
  return themeProp === "dark" ? "vs-dark" : "light";
1322
466
  }, [themeProp, systemTheme]);
1323
- const getLanguageFromFile = React10__namespace.useCallback((fileName) => {
467
+ const getLanguageFromFile = React__namespace.useCallback((fileName) => {
1324
468
  for (const [lang, pattern] of Object.entries(languagePatterns)) {
1325
469
  if (pattern.test(fileName)) {
1326
470
  return lang;
@@ -1328,7 +472,7 @@ var AICode = React10__namespace.forwardRef(
1328
472
  }
1329
473
  return "plaintext";
1330
474
  }, []);
1331
- const handleEditorChange = React10__namespace.useCallback(
475
+ const handleEditorChange = React__namespace.useCallback(
1332
476
  (newValue) => {
1333
477
  const content = newValue || "";
1334
478
  setEditorValue(content);
@@ -1343,7 +487,7 @@ var AICode = React10__namespace.forwardRef(
1343
487
  },
1344
488
  [onChange, multiFileSupport, currentActiveFile]
1345
489
  );
1346
- const handleEditorMount = React10__namespace.useCallback(
490
+ const handleEditorMount = React__namespace.useCallback(
1347
491
  (editor, monaco) => {
1348
492
  editorRef.current = editor;
1349
493
  monaco.languages.registerHoverProvider(currentLanguage, {
@@ -1393,7 +537,7 @@ var AICode = React10__namespace.forwardRef(
1393
537
  },
1394
538
  [currentLanguage, explanations, suggestions]
1395
539
  );
1396
- const handleGenerate = React10__namespace.useCallback(
540
+ const handleGenerate = React__namespace.useCallback(
1397
541
  async (prompt) => {
1398
542
  if (!onGenerate) return;
1399
543
  setIsProcessing(true);
@@ -1446,7 +590,7 @@ var AICode = React10__namespace.forwardRef(
1446
590
  },
1447
591
  [onGenerate, onChange, multiFileSupport, currentActiveFile]
1448
592
  );
1449
- const handleExplain = React10__namespace.useCallback(
593
+ const handleExplain = React__namespace.useCallback(
1450
594
  async (selectedLine) => {
1451
595
  if (!onExplain) return;
1452
596
  setIsProcessing(true);
@@ -1465,7 +609,7 @@ var AICode = React10__namespace.forwardRef(
1465
609
  },
1466
610
  [onExplain, editorValue]
1467
611
  );
1468
- const handleFeatureAction = React10__namespace.useCallback(
612
+ const handleFeatureAction = React__namespace.useCallback(
1469
613
  async (feature) => {
1470
614
  if (isProcessing) return;
1471
615
  setIsProcessing(true);
@@ -1538,7 +682,7 @@ var AICode = React10__namespace.forwardRef(
1538
682
  onChange
1539
683
  ]
1540
684
  );
1541
- const handleSecurityScan = React10__namespace.useCallback(async () => {
685
+ const handleSecurityScan = React__namespace.useCallback(async () => {
1542
686
  if (!onSecurityScan) return;
1543
687
  setIsProcessing(true);
1544
688
  try {
@@ -1554,14 +698,14 @@ var AICode = React10__namespace.forwardRef(
1554
698
  setIsProcessing(false);
1555
699
  }
1556
700
  }, [onSecurityScan, editorValue]);
1557
- const handleFileChange = React10__namespace.useCallback(
701
+ const handleFileChange = React__namespace.useCallback(
1558
702
  (fileName) => {
1559
703
  setCurrentActiveFile(fileName);
1560
704
  onFileChange?.(fileName);
1561
705
  },
1562
706
  [onFileChange]
1563
707
  );
1564
- const handleFileCreate = React10__namespace.useCallback(
708
+ const handleFileCreate = React__namespace.useCallback(
1565
709
  (fileName) => {
1566
710
  const newFile = {
1567
711
  name: fileName,
@@ -1574,7 +718,7 @@ var AICode = React10__namespace.forwardRef(
1574
718
  },
1575
719
  [getLanguageFromFile, onFileCreate]
1576
720
  );
1577
- const handleFileDelete = React10__namespace.useCallback(
721
+ const handleFileDelete = React__namespace.useCallback(
1578
722
  (fileName) => {
1579
723
  if (currentFiles.length <= 1) return;
1580
724
  setCurrentFiles((prev) => prev.filter((f) => f.name !== fileName));
@@ -1602,7 +746,7 @@ var AICode = React10__namespace.forwardRef(
1602
746
  const isActive = feature === "explain" && explanations.length > 0;
1603
747
  return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
1604
748
  /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1605
- Button,
749
+ button_js.Button,
1606
750
  {
1607
751
  variant: isActive ? "secondary" : "ghost",
1608
752
  size: "sm",
@@ -1628,10 +772,10 @@ var AICode = React10__namespace.forwardRef(
1628
772
  ] }) })
1629
773
  ] }, feature);
1630
774
  }),
1631
- /* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "vertical", ...ui.sx("h-4") }),
775
+ /* @__PURE__ */ jsxRuntime.jsx(separator_js.Separator, { orientation: "vertical", ...ui.sx("h-4") }),
1632
776
  /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
1633
777
  /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1634
- Button,
778
+ button_js.Button,
1635
779
  {
1636
780
  variant: "ghost",
1637
781
  size: "sm",
@@ -1651,10 +795,10 @@ var AICode = React10__namespace.forwardRef(
1651
795
  isProcessing && /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center gap-2", children: [
1652
796
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { style: ui.css("h-3 w-3 animate-spin") }),
1653
797
  /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: "text-xs text-muted-foreground", children: "Processing..." }),
1654
- progress > 0 && /* @__PURE__ */ jsxRuntime.jsx(Progress, { value: progress, ...ui.sx("w-16 h-1") })
798
+ progress > 0 && /* @__PURE__ */ jsxRuntime.jsx(progress_js.Progress, { value: progress, ...ui.sx("w-16 h-1") })
1655
799
  ] }),
1656
800
  /* @__PURE__ */ jsxRuntime.jsx(
1657
- Button,
801
+ button_js.Button,
1658
802
  {
1659
803
  variant: "ghost",
1660
804
  size: "sm",
@@ -1664,7 +808,7 @@ var AICode = React10__namespace.forwardRef(
1664
808
  }
1665
809
  ),
1666
810
  /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
1667
- /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "ghost", size: "sm", ...ui.sx("h-8 gap-1"), children: [
811
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(button_js.Button, { variant: "ghost", size: "sm", ...ui.sx("h-8 gap-1"), children: [
1668
812
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { style: ui.css("h-3 w-3") }),
1669
813
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { style: ui.css("h-3 w-3") })
1670
814
  ] }) }),
@@ -1710,8 +854,8 @@ var AICode = React10__namespace.forwardRef(
1710
854
  onFileDelete: currentFiles.length > 1 ? handleFileDelete : void 0
1711
855
  }
1712
856
  ),
1713
- /* @__PURE__ */ jsxRuntime.jsxs(ResizablePanelGroup, { direction: "horizontal", className: "flex-1", children: [
1714
- /* @__PURE__ */ jsxRuntime.jsx(ResizablePanel, { defaultSize: showSidePanel ? 70 : 100, minSize: 30, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
857
+ /* @__PURE__ */ jsxRuntime.jsxs(resizable_js.ResizablePanelGroup, { direction: "horizontal", className: "flex-1", children: [
858
+ /* @__PURE__ */ jsxRuntime.jsx(resizable_js.ResizablePanel, { defaultSize: showSidePanel ? 70 : 100, minSize: 30, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
1715
859
  Editor__default.default,
1716
860
  {
1717
861
  height,
@@ -1751,8 +895,8 @@ var AICode = React10__namespace.forwardRef(
1751
895
  }
1752
896
  ) }) }),
1753
897
  showSidePanel && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1754
- /* @__PURE__ */ jsxRuntime.jsx(ResizableHandle, {}),
1755
- /* @__PURE__ */ jsxRuntime.jsx(ResizablePanel, { defaultSize: 30, minSize: 20, maxSize: 50, children: /* @__PURE__ */ jsxRuntime.jsxs(
898
+ /* @__PURE__ */ jsxRuntime.jsx(resizable_js.ResizableHandle, {}),
899
+ /* @__PURE__ */ jsxRuntime.jsx(resizable_js.ResizablePanel, { defaultSize: 30, minSize: 20, maxSize: 50, children: /* @__PURE__ */ jsxRuntime.jsxs(
1756
900
  ui.Tabs,
1757
901
  {
1758
902
  value: sidePanelTab,
@@ -1767,7 +911,7 @@ var AICode = React10__namespace.forwardRef(
1767
911
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { style: ui.css("h-3 w-3 mr-1") }),
1768
912
  "AI",
1769
913
  suggestions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1770
- Badge,
914
+ badge_js.Badge,
1771
915
  {
1772
916
  colorPalette: "gray",
1773
917
  ...ui.sx("ml-1 h-4 text-xs"),
@@ -1779,7 +923,7 @@ var AICode = React10__namespace.forwardRef(
1779
923
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Shield, { style: ui.css("h-3 w-3 mr-1") }),
1780
924
  "Security",
1781
925
  securityIssues.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1782
- Badge,
926
+ badge_js.Badge,
1783
927
  {
1784
928
  colorPalette: securityIssues.some(
1785
929
  (i) => i.severity === "critical"