@noya-app/noya-designsystem 0.1.9 → 0.1.11

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.
package/dist/index.js CHANGED
@@ -6,8 +6,8 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
9
+ for (var name3 in all)
10
+ __defProp(target, name3, { get: all[name3], enumerable: true });
11
11
  };
12
12
  var __copyProps = (to, from, except, desc) => {
13
13
  if (from && typeof from === "object" || typeof from === "function") {
@@ -33,6 +33,7 @@ __export(src_exports, {
33
33
  ActivityIndicator: () => ActivityIndicator,
34
34
  ArrayController: () => ArrayController,
35
35
  Avatar: () => Avatar,
36
+ AvatarStack: () => AvatarStack,
36
37
  Body: () => Body,
37
38
  Button: () => Button,
38
39
  ButtonElement: () => ButtonElement,
@@ -51,6 +52,8 @@ __export(src_exports, {
51
52
  DropdownMenu: () => DropdownMenu,
52
53
  FillInputField: () => FillInputField,
53
54
  FillPreviewBackground: () => FillPreviewBackground,
55
+ FloatingWindow: () => FloatingWindow,
56
+ FloatingWindowProvider: () => FloatingWindowProvider,
54
57
  FullscreenDialog: () => FullscreenDialog,
55
58
  GlobalInputBlurProvider: () => GlobalInputBlurProvider,
56
59
  GradientPicker: () => GradientPicker,
@@ -108,9 +111,11 @@ __export(src_exports, {
108
111
  sketchColorToHex: () => sketchColorToHex,
109
112
  sketchColorToRgba: () => sketchColorToRgba,
110
113
  sketchColorToRgbaString: () => sketchColorToRgbaString,
114
+ useCurrentFloatingWindowInternal: () => useCurrentFloatingWindowInternal,
111
115
  useDesignSystemConfiguration: () => useDesignSystemConfiguration,
112
116
  useDesignSystemTheme: () => useDesignSystemTheme,
113
117
  useDialogContainsElement: () => useDialogContainsElement,
118
+ useFloatingWindowManager: () => useFloatingWindowManager,
114
119
  useGlobalInputBlur: () => useGlobalInputBlur,
115
120
  useGlobalInputBlurListener: () => useGlobalInputBlurListener,
116
121
  useGlobalInputBlurTrigger: () => useGlobalInputBlurTrigger,
@@ -155,9 +160,94 @@ var ActivityIndicator = (0, import_react.memo)(function ActivityIndicator2({
155
160
 
156
161
  // src/components/Avatar.tsx
157
162
  var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"));
158
- var import_react2 = __toESM(require("react"));
163
+ var import_react4 = __toESM(require("react"));
164
+ var import_styled_components3 = __toESM(require("styled-components"));
165
+
166
+ // src/components/Stack.tsx
167
+ var import_react3 = __toESM(require("react"));
159
168
  var import_styled_components2 = __toESM(require("styled-components"));
160
- var AvatarRoot = (0, import_styled_components2.default)(AvatarPrimitive.Root)(({ theme, size: size2, overflow }) => ({
169
+
170
+ // src/utils/breakpoints.ts
171
+ function mergeBreakpoints(breakpoints, transform) {
172
+ const breakpointMap = Array.isArray(breakpoints) ? breakpoints.reduce(
173
+ (result, item) => {
174
+ const [key, value] = item;
175
+ result[key] = result[key] ? { ...result[key], ...value } : value;
176
+ return result;
177
+ },
178
+ {}
179
+ ) : breakpoints;
180
+ const breakpointList = Object.entries(breakpointMap);
181
+ const transformedList = breakpointList.sort((a, b) => Number(b[0]) - Number(a[0])).map(([width, value]) => [
182
+ `@media screen and (max-width: ${width}px)`,
183
+ transform?.(value) ?? value
184
+ ]);
185
+ return Object.fromEntries(transformedList);
186
+ }
187
+
188
+ // src/utils/withSeparatorElements.ts
189
+ var import_react2 = require("react");
190
+ function createKey(key) {
191
+ return `s-${key}`;
192
+ }
193
+ function withSeparatorElements(elements2, separator) {
194
+ const childrenArray = import_react2.Children.toArray(elements2);
195
+ for (let i = childrenArray.length - 1; i > 0; i--) {
196
+ let sep = typeof separator === "function" ? separator() : (0, import_react2.isValidElement)(separator) ? (0, import_react2.cloneElement)(separator, { key: createKey(i) }) : separator;
197
+ if ((0, import_react2.isValidElement)(sep) && sep.key == null) {
198
+ sep = (0, import_react2.cloneElement)(sep, { key: createKey(i) });
199
+ }
200
+ if (!sep || typeof sep === "boolean")
201
+ continue;
202
+ childrenArray.splice(i, 0, sep);
203
+ }
204
+ return childrenArray;
205
+ }
206
+
207
+ // src/components/Stack.tsx
208
+ var Element = import_styled_components2.default.div(({ styleProps, breakpoints }) => ({
209
+ ...styleProps,
210
+ ...mergeBreakpoints(breakpoints || [])
211
+ }));
212
+ var StackBase = (0, import_react3.forwardRef)(function StackBase2({ id, as, children, separator, breakpoints, tabIndex, href, ...rest }, forwardedRef) {
213
+ const elements2 = separator ? withSeparatorElements(import_react3.Children.toArray(children), separator) : children;
214
+ const styleProps = {
215
+ display: "flex",
216
+ position: "relative",
217
+ alignItems: "stretch",
218
+ ...rest
219
+ };
220
+ return /* @__PURE__ */ import_react3.default.createElement(
221
+ Element,
222
+ {
223
+ ref: forwardedRef,
224
+ id,
225
+ as,
226
+ styleProps,
227
+ breakpoints,
228
+ tabIndex,
229
+ ...href && { href }
230
+ },
231
+ elements2
232
+ );
233
+ });
234
+ var VerticalStack = (0, import_react3.memo)(
235
+ (0, import_react3.forwardRef)(function VStack(props, forwardedRef) {
236
+ return /* @__PURE__ */ import_react3.default.createElement(StackBase, { ...props, flexDirection: "column", ref: forwardedRef });
237
+ })
238
+ );
239
+ var HorizontalStack = (0, import_react3.memo)(
240
+ (0, import_react3.forwardRef)(function HStack(props, forwardedRef) {
241
+ return /* @__PURE__ */ import_react3.default.createElement(StackBase, { ...props, flexDirection: "row", ref: forwardedRef });
242
+ })
243
+ );
244
+ var Stack = {
245
+ V: VerticalStack,
246
+ H: HorizontalStack
247
+ };
248
+
249
+ // src/components/Avatar.tsx
250
+ var AvatarRoot = (0, import_styled_components3.default)(AvatarPrimitive.Root)(({ theme, size: size2, overflow }) => ({
161
251
  display: "inline-flex",
162
252
  alignItems: "center",
163
253
  justifyContent: "center",
@@ -168,17 +258,23 @@ var AvatarRoot = (0, import_styled_components2.default)(AvatarPrimitive.Root)(({
168
258
  height: size2,
169
259
  borderRadius: "100%",
170
260
  backgroundColor: theme.colors.secondaryLight,
261
+ outline: `1px solid ${theme.colors.secondary}`,
262
+ outlineOffset: "-1px",
171
263
  ...overflow && {
172
264
  margin: `-${overflow}px`
265
+ },
266
+ "&:hover": {
267
+ boxShadow: `0 0 0 2px ${theme.colors.sidebar.background}`,
268
+ opacity: 0.9
173
269
  }
174
270
  }));
175
- var AvatarImage = (0, import_styled_components2.default)(AvatarPrimitive.Image)({
271
+ var AvatarImage = (0, import_styled_components3.default)(AvatarPrimitive.Image)({
176
272
  width: "100%",
177
273
  height: "100%",
178
274
  objectFit: "cover",
179
275
  borderRadius: "inherit"
180
276
  });
181
- var AvatarFallback = (0, import_styled_components2.default)(AvatarPrimitive.Fallback)(({ theme, size: size2 }) => ({
277
+ var AvatarFallback = (0, import_styled_components3.default)(AvatarPrimitive.Fallback)(({ theme, size: size2 }) => ({
182
278
  fontSize: "0.8rem",
183
279
  fontWeight: 500,
184
280
  width: "100%",
@@ -189,25 +285,47 @@ var AvatarFallback = (0, import_styled_components2.default)(AvatarPrimitive.Fall
189
285
  color: "white",
190
286
  lineHeight: `${size2}px`
191
287
  }));
192
- function Avatar({
288
+ var Avatar = (0, import_react4.forwardRef)(function Avatar2({
193
289
  image,
194
- name,
290
+ name: name3,
195
291
  fallback,
196
292
  size: size2 = 19,
197
- overflow = 0
293
+ overflow = 0,
294
+ ...props
295
+ }, forwardedRef) {
296
+ return /* @__PURE__ */ import_react4.default.createElement(AvatarRoot, { ref: forwardedRef, size: size2, overflow, ...props }, /* @__PURE__ */ import_react4.default.createElement(AvatarImage, { src: image, alt: name3 }), /* @__PURE__ */ import_react4.default.createElement(AvatarFallback, { size: size2 }, fallback));
297
+ });
298
+ var AvatarStackItemWrapper = import_styled_components3.default.div(({ size: size2, theme }) => ({
299
+ position: "relative",
300
+ width: size2,
301
+ height: size2,
302
+ marginLeft: "-8px",
303
+ outline: `2px solid ${theme.colors.sidebar.background}`,
304
+ borderRadius: "50%"
305
+ }));
306
+ function AvatarStack({
307
+ size: size2 = 19,
308
+ children
198
309
  }) {
199
- return /* @__PURE__ */ import_react2.default.createElement(AvatarRoot, { size: size2, overflow }, /* @__PURE__ */ import_react2.default.createElement(AvatarImage, { src: image, alt: name }), /* @__PURE__ */ import_react2.default.createElement(AvatarFallback, { size: size2 }, fallback));
310
+ const childrenArray = import_react4.default.Children.toArray(children).map((child) => {
311
+ return import_react4.default.cloneElement(child, { size: size2 });
312
+ });
313
+ return /* @__PURE__ */ import_react4.default.createElement(Stack.H, null, childrenArray.map((child, index) => {
314
+ if (index === 0)
315
+ return child;
316
+ return /* @__PURE__ */ import_react4.default.createElement(AvatarStackItemWrapper, { size: size2, key: index }, child);
317
+ }));
200
318
  }
201
319
 
202
320
  // src/components/Button.tsx
203
- var import_react4 = __toESM(require("react"));
204
- var import_styled_components4 = __toESM(require("styled-components"));
321
+ var import_react6 = __toESM(require("react"));
322
+ var import_styled_components5 = __toESM(require("styled-components"));
205
323
 
206
324
  // src/components/Tooltip.tsx
207
325
  var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
208
- var import_react3 = __toESM(require("react"));
209
- var import_styled_components3 = __toESM(require("styled-components"));
210
- var Content2 = (0, import_styled_components3.default)(TooltipPrimitive.Content)(({ theme }) => ({
326
+ var import_react5 = __toESM(require("react"));
327
+ var import_styled_components4 = __toESM(require("styled-components"));
328
+ var Content2 = (0, import_styled_components4.default)(TooltipPrimitive.Content)(({ theme }) => ({
211
329
  ...theme.textStyles.small,
212
330
  color: theme.colors.text,
213
331
  borderRadius: 3,
@@ -216,8 +334,8 @@ var Content2 = (0, import_styled_components3.default)(TooltipPrimitive.Content)(
216
334
  boxShadow: "0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)",
217
335
  border: `1px solid ${theme.colors.dividerStrong}`
218
336
  }));
219
- var Tooltip = (0, import_react3.memo)(function Tooltip2({ children, content }) {
220
- return /* @__PURE__ */ import_react3.default.createElement(TooltipPrimitive.Provider, null, /* @__PURE__ */ import_react3.default.createElement(TooltipPrimitive.Root, null, /* @__PURE__ */ import_react3.default.createElement(TooltipPrimitive.Trigger, { asChild: true }, children), /* @__PURE__ */ import_react3.default.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ import_react3.default.createElement(
337
+ var Tooltip = (0, import_react5.memo)(function Tooltip2({ children, content }) {
338
+ return /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Provider, null, /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Root, null, /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Trigger, { asChild: true }, children), /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(
221
339
  Content2,
222
340
  {
223
341
  side: "bottom",
@@ -230,95 +348,105 @@ var Tooltip = (0, import_react3.memo)(function Tooltip2({ children, content }) {
230
348
  });
231
349
 
232
350
  // src/components/Button.tsx
233
- var ButtonElement = import_styled_components4.default.button(({ theme, active, disabled, variant, size: size2, flex }) => ({
234
- ...size2 === "large" ? theme.textStyles.heading4 : theme.textStyles.small,
235
- textDecoration: "none",
236
- lineHeight: "1",
237
- flex: flex ?? "0 0 auto",
238
- position: "relative",
239
- border: "0",
240
- outline: "none",
241
- WebkitAppRegion: "no-drag",
242
- userSelect: "none",
243
- minWidth: variant === "normal" ? "31px" : void 0,
244
- textAlign: "left",
245
- borderRadius: "4px",
246
- paddingTop: variant === "none" ? "0px" : "4px",
247
- paddingRight: variant === "none" ? "0px" : variant === "thin" ? "1px" : "8px",
248
- paddingBottom: variant === "none" ? "0px" : "4px",
249
- paddingLeft: variant === "none" ? "0px" : variant === "thin" ? "1px" : "8px",
250
- ...size2 === "large" && {
251
- paddingTop: "12px",
252
- paddingRight: "16px",
253
- paddingBottom: "12px",
254
- paddingLeft: "16px"
255
- },
256
- background: active ? theme.colors.primary : variant === "primaryGradient" ? `linear-gradient(90deg, ${theme.colors.primary}, ${theme.colors.primaryLight})` : variant === "none" || variant === "thin" ? "transparent" : theme.colors.inputBackground,
257
- color: active ? "white" : theme.colors.text,
258
- opacity: disabled ? 0.25 : 1,
259
- "&:focus": {
260
- boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors.primary}`
261
- },
262
- "&:hover": {
263
- background: variant === "primaryGradient" || active ? theme.colors.primaryLight : theme.colors.inputBackgroundLight
264
- },
265
- "&:active": {
266
- background: variant === "primaryGradient" ? theme.colors.primary : theme.colors.activeBackground
267
- },
268
- ...variant === "primary" && {
269
- background: theme.colors.primary,
270
- color: "white",
271
- "&:hover": {
272
- background: theme.colors.primaryLight
351
+ var ButtonElement = import_styled_components5.default.button(
352
+ ({
353
+ theme,
354
+ active,
355
+ disabled,
356
+ variant,
357
+ size: size2,
358
+ flex,
359
+ defaultBackground = theme.colors.inputBackground
360
+ }) => ({
361
+ ...size2 === "large" ? theme.textStyles.heading4 : theme.textStyles.button,
362
+ textDecoration: "none",
363
+ lineHeight: "1",
364
+ flex: flex ?? "0 0 auto",
365
+ position: "relative",
366
+ border: "0",
367
+ outline: "none",
368
+ WebkitAppRegion: "no-drag",
369
+ userSelect: "none",
370
+ minWidth: variant === "normal" ? "31px" : void 0,
371
+ textAlign: "left",
372
+ borderRadius: "4px",
373
+ paddingTop: variant === "none" ? "0px" : "4px",
374
+ paddingRight: variant === "none" ? "0px" : variant === "thin" ? "1px" : "8px",
375
+ paddingBottom: variant === "none" ? "0px" : "4px",
376
+ paddingLeft: variant === "none" ? "0px" : variant === "thin" ? "1px" : "8px",
377
+ ...size2 === "large" && {
378
+ paddingTop: "12px",
379
+ paddingRight: "16px",
380
+ paddingBottom: "12px",
381
+ paddingLeft: "16px"
273
382
  },
274
- "&:active": {
275
- background: theme.colors.primary
276
- }
277
- },
278
- ...variant === "secondary" && {
279
- background: theme.colors.secondary,
280
- color: "white",
281
- "&:hover": {
282
- background: theme.colors.secondaryLight
383
+ background: active ? theme.colors.primary : variant === "primaryGradient" ? `linear-gradient(90deg, ${theme.colors.primary}, ${theme.colors.primaryLight})` : variant === "none" || variant === "thin" ? "transparent" : defaultBackground,
384
+ color: active ? "white" : theme.colors.text,
385
+ opacity: disabled ? 0.25 : 1,
386
+ "&:focus": {
387
+ boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors.primary}`
283
388
  },
284
- "&:active": {
285
- background: theme.colors.secondary
286
- }
287
- },
288
- ...variant === "secondaryBright" && {
289
- background: "#0ab557",
290
- color: "white",
291
389
  "&:hover": {
292
- opacity: 0.8
390
+ background: variant === "primaryGradient" || active ? theme.colors.primaryLight : theme.colors.inputBackgroundLight
293
391
  },
294
392
  "&:active": {
295
- opacity: 0.9
296
- }
297
- },
298
- ...variant === "white" && {
299
- background: "white",
300
- "&:hover": {
301
- opacity: 0.8
393
+ background: variant === "primaryGradient" || active ? theme.colors.primary : theme.colors.activeBackground
302
394
  },
303
- "&:active": {
304
- opacity: 0.9
395
+ ...variant === "primary" && {
396
+ background: theme.colors.primary,
397
+ color: "white",
398
+ "&:hover": {
399
+ background: theme.colors.primaryLight
400
+ },
401
+ "&:active": {
402
+ background: theme.colors.primary
403
+ }
404
+ },
405
+ ...variant === "secondary" && {
406
+ background: theme.colors.secondary,
407
+ color: "white",
408
+ "&:hover": {
409
+ background: theme.colors.secondaryLight
410
+ },
411
+ "&:active": {
412
+ background: theme.colors.secondary
413
+ }
414
+ },
415
+ ...variant === "secondaryBright" && {
416
+ background: "#0ab557",
417
+ color: "white",
418
+ "&:hover": {
419
+ opacity: 0.8
420
+ },
421
+ "&:active": {
422
+ opacity: 0.9
423
+ }
424
+ },
425
+ ...variant === "white" && {
426
+ background: "white",
427
+ "&:hover": {
428
+ opacity: 0.8
429
+ },
430
+ "&:active": {
431
+ opacity: 0.9
432
+ }
433
+ },
434
+ ...variant === "floating" && {
435
+ background: "white",
436
+ color: theme.colors.text,
437
+ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.1)",
438
+ fontSize: "12px",
439
+ padding: "0px 4px"
440
+ },
441
+ display: "flex",
442
+ alignItems: "center",
443
+ justifyContent: "center",
444
+ "& *": {
445
+ pointerEvents: "none"
305
446
  }
306
- },
307
- ...variant === "floating" && {
308
- background: "white",
309
- color: theme.colors.text,
310
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.1)",
311
- fontSize: "12px",
312
- padding: "0px 4px"
313
- },
314
- display: "flex",
315
- alignItems: "center",
316
- justifyContent: "center",
317
- "& *": {
318
- pointerEvents: "none"
319
- }
320
- }));
321
- var ButtonContent = import_styled_components4.default.span(({ theme }) => ({
447
+ })
448
+ );
449
+ var ButtonContent = import_styled_components5.default.span(({ theme }) => ({
322
450
  // Line height of small text - maybe figure out better way to ensure
323
451
  // icons don't have a smaller height
324
452
  minHeight: "19px",
@@ -329,7 +457,7 @@ var ButtonContent = import_styled_components4.default.span(({ theme }) => ({
329
457
  // Helps with alignment with the default small text
330
458
  lineHeight: "15px"
331
459
  }));
332
- var Button = (0, import_react4.forwardRef)(function Button2({
460
+ var Button = (0, import_react6.forwardRef)(function Button2({
333
461
  id,
334
462
  className,
335
463
  style: style3,
@@ -341,12 +469,13 @@ var Button = (0, import_react4.forwardRef)(function Button2({
341
469
  variant = "normal",
342
470
  size: size2 = "normal",
343
471
  contentStyle,
472
+ defaultBackground,
344
473
  onClick,
345
474
  children,
346
475
  ...rest
347
476
  // Propagate any other props so this component works as a Slot
348
477
  }, forwardedRef) {
349
- const buttonElement = /* @__PURE__ */ import_react4.default.createElement(
478
+ const buttonElement = /* @__PURE__ */ import_react6.default.createElement(
350
479
  ButtonElement,
351
480
  {
352
481
  ref: forwardedRef,
@@ -359,47 +488,48 @@ var Button = (0, import_react4.forwardRef)(function Button2({
359
488
  disabled,
360
489
  variant,
361
490
  size: size2,
491
+ defaultBackground,
362
492
  onClick,
363
- onDoubleClick: (0, import_react4.useCallback)((event) => {
493
+ onDoubleClick: (0, import_react6.useCallback)((event) => {
364
494
  event.stopPropagation();
365
495
  }, []),
366
496
  ...rest
367
497
  },
368
- /* @__PURE__ */ import_react4.default.createElement(ButtonContent, { style: contentStyle }, children)
498
+ /* @__PURE__ */ import_react6.default.createElement(ButtonContent, { style: contentStyle }, children)
369
499
  );
370
- return tooltip ? /* @__PURE__ */ import_react4.default.createElement(Tooltip, { content: tooltip }, buttonElement) : buttonElement;
500
+ return tooltip ? /* @__PURE__ */ import_react6.default.createElement(Tooltip, { content: tooltip }, buttonElement) : buttonElement;
371
501
  });
372
502
 
373
503
  // src/components/Chip.tsx
374
504
  var import_noya_icons3 = require("@noya-app/noya-icons");
375
- var import_react34 = __toESM(require("react"));
505
+ var import_react35 = __toESM(require("react"));
376
506
  var import_styled_components16 = __toESM(require("styled-components"));
377
507
 
378
508
  // src/contexts/DesignSystemConfiguration.tsx
379
- var import_react33 = __toESM(require("react"));
509
+ var import_react34 = __toESM(require("react"));
380
510
  var import_styled_components15 = require("styled-components");
381
511
 
382
512
  // src/components/Toast.tsx
383
513
  var ToastPrimitive = __toESM(require("@radix-ui/react-toast"));
384
- var import_react6 = __toESM(require("react"));
385
- var import_styled_components6 = __toESM(require("styled-components"));
514
+ var import_react8 = __toESM(require("react"));
515
+ var import_styled_components7 = __toESM(require("styled-components"));
386
516
 
387
517
  // src/components/IconButton.tsx
388
518
  var Icons = __toESM(require("@noya-app/noya-icons"));
389
- var import_react5 = __toESM(require("react"));
390
- var import_styled_components5 = require("styled-components");
391
- var IconButton = (0, import_react5.memo)(
392
- (0, import_react5.forwardRef)(function IconButton2({ selected, iconName, color, size: size2, contentStyle, ...props }, forwardedRef) {
393
- const { icon: iconColor, iconSelected: iconSelectedColor } = (0, import_styled_components5.useTheme)().colors;
519
+ var import_react7 = __toESM(require("react"));
520
+ var import_styled_components6 = require("styled-components");
521
+ var IconButton = (0, import_react7.memo)(
522
+ (0, import_react7.forwardRef)(function IconButton2({ selected, iconName, color, size: size2, contentStyle, ...props }, forwardedRef) {
523
+ const { icon: iconColor, iconSelected: iconSelectedColor } = (0, import_styled_components6.useTheme)().colors;
394
524
  const Icon = Icons[iconName];
395
- const style3 = (0, import_react5.useMemo)(() => {
525
+ const style3 = (0, import_react7.useMemo)(() => {
396
526
  return {
397
527
  padding: "0 2px",
398
528
  ...size2 && { minHeight: size2 },
399
529
  ...contentStyle
400
530
  };
401
531
  }, [contentStyle, size2]);
402
- return /* @__PURE__ */ import_react5.default.createElement(Button, { ref: forwardedRef, ...props, variant: "none", contentStyle: style3 }, /* @__PURE__ */ import_react5.default.createElement(
532
+ return /* @__PURE__ */ import_react7.default.createElement(Button, { ref: forwardedRef, ...props, variant: "none", contentStyle: style3 }, /* @__PURE__ */ import_react7.default.createElement(
403
533
  Icon,
404
534
  {
405
535
  color: color ?? (selected ? iconSelectedColor : iconColor),
@@ -410,7 +540,7 @@ var IconButton = (0, import_react5.memo)(
410
540
  );
411
541
 
412
542
  // src/components/Toast.tsx
413
- var ToastViewport = (0, import_styled_components6.default)(ToastPrimitive.Viewport)({
543
+ var ToastViewport = (0, import_styled_components7.default)(ToastPrimitive.Viewport)({
414
544
  position: "fixed",
415
545
  bottom: 0,
416
546
  right: 0,
@@ -425,7 +555,7 @@ var ToastViewport = (0, import_styled_components6.default)(ToastPrimitive.Viewpo
425
555
  zIndex: 2147483647,
426
556
  outline: "none"
427
557
  });
428
- var ToastRoot = (0, import_styled_components6.default)(ToastPrimitive.Root)(({ theme }) => ({
558
+ var ToastRoot = (0, import_styled_components7.default)(ToastPrimitive.Root)(({ theme }) => ({
429
559
  borderRadius: 4,
430
560
  fontSize: 14,
431
561
  backgroundColor: theme.colors.popover.background,
@@ -438,19 +568,19 @@ var ToastRoot = (0, import_styled_components6.default)(ToastPrimitive.Root)(({ t
438
568
  columnGap: 10,
439
569
  alignItems: "center"
440
570
  }));
441
- var ToastTitle = (0, import_styled_components6.default)(ToastPrimitive.Title)(({ theme }) => ({
571
+ var ToastTitle = (0, import_styled_components7.default)(ToastPrimitive.Title)(({ theme }) => ({
442
572
  gridArea: "title",
443
573
  marginBottom: 5,
444
574
  ...theme.textStyles.label,
445
575
  fontWeight: "bold",
446
576
  color: theme.colors.text
447
577
  }));
448
- var ToastDescription = (0, import_styled_components6.default)(ToastPrimitive.Description)(({ theme }) => ({
578
+ var ToastDescription = (0, import_styled_components7.default)(ToastPrimitive.Description)(({ theme }) => ({
449
579
  gridArea: "description",
450
580
  ...theme.textStyles.small,
451
581
  color: theme.colors.textMuted
452
582
  }));
453
- var ToastAction = (0, import_styled_components6.default)(ToastPrimitive.Action)({
583
+ var ToastAction = (0, import_styled_components7.default)(ToastPrimitive.Action)({
454
584
  gridArea: "action"
455
585
  });
456
586
  var Toast = ({
@@ -459,9 +589,9 @@ var Toast = ({
459
589
  children,
460
590
  ...props
461
591
  }) => {
462
- return /* @__PURE__ */ import_react6.default.createElement(ToastRoot, { ...props }, title && /* @__PURE__ */ import_react6.default.createElement(ToastTitle, null, title), /* @__PURE__ */ import_react6.default.createElement(ToastDescription, null, content), children && /* @__PURE__ */ import_react6.default.createElement(ToastAction, { asChild: true, altText: "" }, children), /* @__PURE__ */ import_react6.default.createElement(ToastPrimitive.Close, { "aria-label": "Close", asChild: true }, /* @__PURE__ */ import_react6.default.createElement(IconButton, { iconName: "Cross1Icon" })));
592
+ return /* @__PURE__ */ import_react8.default.createElement(ToastRoot, { ...props }, title && /* @__PURE__ */ import_react8.default.createElement(ToastTitle, null, title), /* @__PURE__ */ import_react8.default.createElement(ToastDescription, null, content), children && /* @__PURE__ */ import_react8.default.createElement(ToastAction, { asChild: true, altText: "" }, children), /* @__PURE__ */ import_react8.default.createElement(ToastPrimitive.Close, { "aria-label": "Close", asChild: true }, /* @__PURE__ */ import_react8.default.createElement(IconButton, { iconName: "Cross1Icon" })));
463
593
  };
464
- var ToastProvider = ({ children }) => /* @__PURE__ */ import_react6.default.createElement(ToastPrimitive.Provider, null, children, /* @__PURE__ */ import_react6.default.createElement(ToastViewport, null));
594
+ var ToastProvider = ({ children }) => /* @__PURE__ */ import_react8.default.createElement(ToastPrimitive.Provider, null, children, /* @__PURE__ */ import_react8.default.createElement(ToastViewport, null));
465
595
 
466
596
  // src/contexts/DialogContext.tsx
467
597
  var import_react32 = __toESM(require("react"));
@@ -469,16 +599,16 @@ var import_styled_components14 = __toESM(require("styled-components"));
469
599
 
470
600
  // src/components/Dialog.tsx
471
601
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"));
472
- var import_react7 = __toESM(require("react"));
473
- var import_styled_components8 = __toESM(require("styled-components"));
602
+ var import_react9 = __toESM(require("react"));
603
+ var import_styled_components9 = __toESM(require("styled-components"));
474
604
 
475
605
  // src/components/Spacer.tsx
476
- var import_styled_components7 = __toESM(require("styled-components"));
477
- var SpacerVertical = import_styled_components7.default.span(({ size: size2, inline }) => ({
606
+ var import_styled_components8 = __toESM(require("styled-components"));
607
+ var SpacerVertical = import_styled_components8.default.span(({ size: size2, inline }) => ({
478
608
  display: inline ? "inline-block" : "block",
479
609
  ...size2 === void 0 ? { flex: 1 } : { minHeight: size2 }
480
610
  }));
481
- var SpacerHorizontal = import_styled_components7.default.span(({ size: size2, inline }) => ({
611
+ var SpacerHorizontal = import_styled_components8.default.span(({ size: size2, inline }) => ({
482
612
  display: inline ? "inline-block" : "block",
483
613
  ...size2 === void 0 ? { flex: 1 } : { minWidth: size2 }
484
614
  }));
@@ -489,12 +619,12 @@ var Spacer;
489
619
  })(Spacer || (Spacer = {}));
490
620
 
491
621
  // src/components/Dialog.tsx
492
- var StyledOverlay = (0, import_styled_components8.default)(DialogPrimitive.Overlay)({
622
+ var StyledOverlay = (0, import_styled_components9.default)(DialogPrimitive.Overlay)({
493
623
  backgroundColor: "rgba(0,0,0,0.5)",
494
624
  position: "fixed",
495
625
  inset: 0
496
626
  });
497
- var StyledContent = (0, import_styled_components8.default)(DialogPrimitive.Content)(({ theme }) => ({
627
+ var StyledContent = (0, import_styled_components9.default)(DialogPrimitive.Content)(({ theme }) => ({
498
628
  boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
499
629
  position: "fixed",
500
630
  top: "50%",
@@ -513,17 +643,17 @@ var StyledContent = (0, import_styled_components8.default)(DialogPrimitive.Conte
513
643
  pointerEvents: "all",
514
644
  zIndex: 1e3
515
645
  }));
516
- var StyledTitle = (0, import_styled_components8.default)(DialogPrimitive.Title)(({ theme }) => ({
646
+ var StyledTitle = (0, import_styled_components9.default)(DialogPrimitive.Title)(({ theme }) => ({
517
647
  margin: 0,
518
648
  ...theme.textStyles.body,
519
649
  color: theme.colors.text
520
650
  }));
521
- var StyledDescription = (0, import_styled_components8.default)(DialogPrimitive.Description)(({ theme }) => ({
651
+ var StyledDescription = (0, import_styled_components9.default)(DialogPrimitive.Description)(({ theme }) => ({
522
652
  margin: 0,
523
653
  ...theme.textStyles.small,
524
654
  color: theme.colors.textMuted
525
655
  }));
526
- var CloseButtonContainer = import_styled_components8.default.div(({ theme }) => ({
656
+ var CloseButtonContainer = import_styled_components9.default.div(({ theme }) => ({
527
657
  position: "absolute",
528
658
  top: theme.sizes.dialog.padding,
529
659
  right: theme.sizes.dialog.padding,
@@ -534,7 +664,7 @@ var CloseButtonContainer = import_styled_components8.default.div(({ theme }) =>
534
664
  // boxShadow: `0 0 2px rgba(0, 0, 0, 0.2)`,
535
665
  border: `1px solid rgba(128,128,128,0.2)`
536
666
  }));
537
- var Dialog = (0, import_react7.forwardRef)(function Dialog2({
667
+ var Dialog = (0, import_react9.forwardRef)(function Dialog2({
538
668
  children,
539
669
  title,
540
670
  description,
@@ -544,15 +674,15 @@ var Dialog = (0, import_react7.forwardRef)(function Dialog2({
544
674
  onOpenAutoFocus,
545
675
  closeOnInteractOutside = true
546
676
  }, forwardedRef) {
547
- const contentRef = (0, import_react7.useRef)(null);
548
- (0, import_react7.useImperativeHandle)(forwardedRef, () => ({
677
+ const contentRef = (0, import_react9.useRef)(null);
678
+ (0, import_react9.useImperativeHandle)(forwardedRef, () => ({
549
679
  containsElement(element) {
550
680
  if (!contentRef.current)
551
681
  return false;
552
682
  return contentRef.current.contains(element);
553
683
  }
554
684
  }));
555
- return /* @__PURE__ */ import_react7.default.createElement(DialogPrimitive.Root, { open, onOpenChange }, /* @__PURE__ */ import_react7.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react7.default.createElement(
685
+ return /* @__PURE__ */ import_react9.default.createElement(DialogPrimitive.Root, { open, onOpenChange }, /* @__PURE__ */ import_react9.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react9.default.createElement(
556
686
  StyledContent,
557
687
  {
558
688
  ref: contentRef,
@@ -567,14 +697,14 @@ var Dialog = (0, import_react7.forwardRef)(function Dialog2({
567
697
  }
568
698
  }
569
699
  },
570
- /* @__PURE__ */ import_react7.default.createElement(CloseButtonContainer, null, /* @__PURE__ */ import_react7.default.createElement(DialogPrimitive.Close, { asChild: true }, /* @__PURE__ */ import_react7.default.createElement(IconButton, { iconName: "Cross1Icon" }))),
571
- title && /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement(StyledTitle, null, title), /* @__PURE__ */ import_react7.default.createElement(Spacer.Vertical, { size: description ? 10 : 20 })),
572
- description && /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement(Spacer.Vertical, { size: 10 }), /* @__PURE__ */ import_react7.default.createElement(StyledDescription, null, description), /* @__PURE__ */ import_react7.default.createElement(Spacer.Vertical, { size: 20 })),
700
+ /* @__PURE__ */ import_react9.default.createElement(CloseButtonContainer, null, /* @__PURE__ */ import_react9.default.createElement(DialogPrimitive.Close, { asChild: true }, /* @__PURE__ */ import_react9.default.createElement(IconButton, { iconName: "Cross1Icon" }))),
701
+ title && /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(StyledTitle, null, title), /* @__PURE__ */ import_react9.default.createElement(Spacer.Vertical, { size: description ? 10 : 20 })),
702
+ description && /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(Spacer.Vertical, { size: 10 }), /* @__PURE__ */ import_react9.default.createElement(StyledDescription, null, description), /* @__PURE__ */ import_react9.default.createElement(Spacer.Vertical, { size: 20 })),
573
703
  children
574
704
  ));
575
705
  });
576
- var FullscreenDialog = (0, import_react7.forwardRef)(function FullscreenDialog2({ style: style3, ...rest }, forwardedRef) {
577
- return /* @__PURE__ */ import_react7.default.createElement(
706
+ var FullscreenDialog = (0, import_react9.forwardRef)(function FullscreenDialog2({ style: style3, ...rest }, forwardedRef) {
707
+ return /* @__PURE__ */ import_react9.default.createElement(
578
708
  Dialog,
579
709
  {
580
710
  ref: forwardedRef,
@@ -601,13 +731,13 @@ var import_noya_icons2 = require("@noya-app/noya-icons");
601
731
  var import_noya_utils5 = require("@noya-app/noya-utils");
602
732
 
603
733
  // ../noya-react-utils/src/components/AutoSizer.tsx
604
- var import_react8 = __toESM(require("react"));
734
+ var import_react10 = __toESM(require("react"));
605
735
 
606
736
  // ../noya-react-utils/src/hooks/useSize.ts
607
- var React8 = __toESM(require("react"));
737
+ var React9 = __toESM(require("react"));
608
738
  function useSize(refToObserve, dimensions = "both") {
609
- const [size2, setSize] = React8.useState(void 0);
610
- React8.useEffect(() => {
739
+ const [size2, setSize] = React9.useState(void 0);
740
+ React9.useEffect(() => {
611
741
  if (refToObserve.current) {
612
742
  const elementToObserve = refToObserve.current;
613
743
  const resizeObserver = new ResizeObserver((entries) => {
@@ -654,37 +784,37 @@ var style = {
654
784
  flex: "1 0 0",
655
785
  flexDirection: "column"
656
786
  };
657
- var AutoSizer = (0, import_react8.memo)(function AutoSizer2({
787
+ var AutoSizer = (0, import_react10.memo)(function AutoSizer2({
658
788
  children,
659
789
  className
660
790
  }) {
661
- const containerRef = (0, import_react8.useRef)(null);
791
+ const containerRef = (0, import_react10.useRef)(null);
662
792
  const containerSize = useSize(containerRef);
663
- return /* @__PURE__ */ import_react8.default.createElement("div", { ref: containerRef, style, className }, containerSize && containerSize.width > 0 && containerSize.height > 0 && children(containerSize));
793
+ return /* @__PURE__ */ import_react10.default.createElement("div", { ref: containerRef, style, className }, containerSize && containerSize.width > 0 && containerSize.height > 0 && children(containerSize));
664
794
  });
665
- var SingleDimensionAutoSizer = (0, import_react8.memo)(function SingleDimensionAutoSizer2({
795
+ var SingleDimensionAutoSizer = (0, import_react10.memo)(function SingleDimensionAutoSizer2({
666
796
  children,
667
797
  dimension,
668
798
  className
669
799
  }) {
670
- const containerRef = (0, import_react8.useRef)(null);
800
+ const containerRef = (0, import_react10.useRef)(null);
671
801
  const containerSize = useSize(containerRef, dimension);
672
- return /* @__PURE__ */ import_react8.default.createElement("div", { ref: containerRef, style, className }, containerSize && containerSize[dimension] > 0 && children(containerSize[dimension]));
802
+ return /* @__PURE__ */ import_react10.default.createElement("div", { ref: containerRef, style, className }, containerSize && containerSize[dimension] > 0 && children(containerSize[dimension]));
673
803
  });
674
804
 
675
805
  // ../noya-react-utils/src/components/FileDropTarget.tsx
676
- var import_react10 = __toESM(require("react"));
806
+ var import_react12 = __toESM(require("react"));
677
807
 
678
808
  // ../noya-react-utils/src/hooks/useFileDropTarget.ts
679
- var import_react9 = require("react");
809
+ var import_react11 = require("react");
680
810
  function useFileDropTarget(dropEvent) {
681
- const [isDropTargetActive, setIsDropTargetActive] = (0, import_react9.useState)(false);
682
- const handleDragEvent = (0, import_react9.useCallback)((event, on) => {
811
+ const [isDropTargetActive, setIsDropTargetActive] = (0, import_react11.useState)(false);
812
+ const handleDragEvent = (0, import_react11.useCallback)((event, on) => {
683
813
  if (on !== void 0)
684
814
  setIsDropTargetActive(on);
685
815
  event.preventDefault();
686
816
  }, []);
687
- const handleDropEvent = (0, import_react9.useCallback)(
817
+ const handleDropEvent = (0, import_react11.useCallback)(
688
818
  (event) => {
689
819
  dropEvent(event);
690
820
  setIsDropTargetActive(false);
@@ -707,12 +837,12 @@ function isSupportedFile(file, supportedFileTypes) {
707
837
  return supportedFileTypes.includes(file.type) || file.type === "" && file.name.endsWith(".sketch");
708
838
  }
709
839
  var style2 = { display: "flex", flex: 1 };
710
- var FileDropTarget = (0, import_react10.memo)(function FileDropTarget2({
840
+ var FileDropTarget = (0, import_react12.memo)(function FileDropTarget2({
711
841
  children,
712
842
  onDropFiles,
713
843
  supportedFileTypes
714
844
  }) {
715
- const handleFile = (0, import_react10.useCallback)(
845
+ const handleFile = (0, import_react12.useCallback)(
716
846
  (event) => {
717
847
  event.preventDefault();
718
848
  const offsetPoint = {
@@ -745,51 +875,51 @@ var FileDropTarget = (0, import_react10.memo)(function FileDropTarget2({
745
875
  [onDropFiles, supportedFileTypes]
746
876
  );
747
877
  const { dropTargetProps, isDropTargetActive } = useFileDropTarget(handleFile);
748
- return /* @__PURE__ */ import_react10.default.createElement("div", { style: style2, ...dropTargetProps }, typeof children === "function" ? children(isDropTargetActive) : children);
878
+ return /* @__PURE__ */ import_react12.default.createElement("div", { style: style2, ...dropTargetProps }, typeof children === "function" ? children(isDropTargetActive) : children);
749
879
  });
750
880
 
751
881
  // ../noya-react-utils/src/hooks/useDeepArray.ts
752
882
  var import_noya_utils = require("@noya-app/noya-utils");
753
- var import_react11 = require("react");
883
+ var import_react13 = require("react");
754
884
 
755
885
  // ../noya-react-utils/src/hooks/useDeepState.ts
756
886
  var import_noya_utils2 = require("@noya-app/noya-utils");
757
- var import_react12 = require("react");
887
+ var import_react14 = require("react");
758
888
 
759
889
  // ../noya-react-utils/src/hooks/useFetch.ts
760
- var import_react13 = require("react");
890
+ var import_react15 = require("react");
761
891
 
762
892
  // ../noya-react-utils/src/hooks/useIsMounted.ts
763
- var import_react14 = require("react");
893
+ var import_react16 = require("react");
764
894
 
765
895
  // ../noya-react-utils/src/hooks/useLateReference.ts
766
- var import_react15 = require("react");
896
+ var import_react17 = require("react");
767
897
 
768
898
  // ../noya-react-utils/src/hooks/useLazyValue.ts
769
- var import_react16 = require("react");
899
+ var import_react18 = require("react");
770
900
 
771
901
  // ../noya-react-utils/src/hooks/useMutableState.ts
772
- var import_react17 = require("react");
902
+ var import_react19 = require("react");
773
903
 
774
904
  // ../noya-react-utils/src/hooks/usePersistentState.ts
775
- var import_react18 = require("react");
905
+ var import_react20 = require("react");
776
906
 
777
907
  // ../noya-react-utils/src/hooks/usePixelRatio.ts
778
- var import_react19 = require("react");
908
+ var import_react21 = require("react");
779
909
 
780
910
  // ../noya-react-utils/src/hooks/useShallowArray.ts
781
911
  var import_noya_utils3 = require("@noya-app/noya-utils");
782
- var import_react20 = require("react");
912
+ var import_react22 = require("react");
783
913
 
784
914
  // ../noya-react-utils/src/hooks/useStableCallback.ts
785
- var import_react21 = require("react");
915
+ var import_react23 = require("react");
786
916
 
787
917
  // ../noya-react-utils/src/hooks/useSystemColorScheme.ts
788
- var import_react22 = require("react");
918
+ var import_react24 = require("react");
789
919
 
790
920
  // ../noya-react-utils/src/hooks/useUrlHashParameters.ts
791
921
  var import_noya_utils4 = require("@noya-app/noya-utils");
792
- var import_react23 = require("react");
922
+ var import_react25 = require("react");
793
923
 
794
924
  // ../emitter/src/index.ts
795
925
  var Emitter = class {
@@ -911,34 +1041,13 @@ function handleNudge(e) {
911
1041
  var import_noya_icons = require("@noya-app/noya-icons");
912
1042
  var import_noya_keymap2 = require("@noya-app/noya-keymap");
913
1043
  var RadixDropdownMenu = __toESM(require("@radix-ui/react-dropdown-menu"));
914
- var import_react26 = __toESM(require("react"));
915
- var import_styled_components10 = __toESM(require("styled-components"));
1044
+ var import_react27 = __toESM(require("react"));
1045
+ var import_styled_components11 = __toESM(require("styled-components"));
916
1046
 
917
1047
  // src/components/internal/Menu.tsx
918
1048
  var import_noya_keymap = require("@noya-app/noya-keymap");
919
- var import_react25 = __toESM(require("react"));
920
- var import_styled_components9 = __toESM(require("styled-components"));
921
-
922
- // src/utils/withSeparatorElements.ts
923
- var import_react24 = require("react");
924
- function createKey(key) {
925
- return `s-${key}`;
926
- }
927
- function withSeparatorElements(elements2, separator) {
928
- const childrenArray = import_react24.Children.toArray(elements2);
929
- for (let i = childrenArray.length - 1; i > 0; i--) {
930
- let sep = typeof separator === "function" ? separator() : (0, import_react24.isValidElement)(separator) ? (0, import_react24.cloneElement)(separator, { key: createKey(i) }) : separator;
931
- if ((0, import_react24.isValidElement)(sep) && sep.key == null) {
932
- sep = (0, import_react24.cloneElement)(sep, { key: createKey(i) });
933
- }
934
- if (!sep || typeof sep === "boolean")
935
- continue;
936
- childrenArray.splice(i, 0, sep);
937
- }
938
- return childrenArray;
939
- }
940
-
941
- // src/components/internal/Menu.tsx
1049
+ var import_react26 = __toESM(require("react"));
1050
+ var import_styled_components10 = __toESM(require("styled-components"));
942
1051
  var SEPARATOR_ITEM = "separator";
943
1052
  var CHECKBOX_WIDTH = 15;
944
1053
  var CHECKBOX_RIGHT_INSET = 3;
@@ -946,20 +1055,18 @@ var styles = {
946
1055
  separatorStyle: ({ theme }) => ({
947
1056
  height: "1px",
948
1057
  backgroundColor: theme.colors.divider,
949
- margin: "4px 8px"
1058
+ margin: "4px -4px"
950
1059
  }),
951
1060
  itemStyle: ({
952
1061
  theme,
953
1062
  disabled
954
1063
  }) => ({
955
- ...theme.textStyles.small,
956
- fontWeight: 500,
957
- fontSize: "0.8rem",
1064
+ ...theme.textStyles.button,
958
1065
  flex: "0 0 auto",
959
1066
  userSelect: "none",
960
1067
  cursor: "pointer",
961
1068
  borderRadius: "3px",
962
- padding: "4px 8px",
1069
+ padding: "6px 8px",
963
1070
  ...disabled && {
964
1071
  color: theme.colors.textDisabled
965
1072
  },
@@ -1016,7 +1123,7 @@ function getKeyboardShortcutsForMenuItems(menuItems, onSelect) {
1016
1123
  menuItems.flatMap(getKeyboardShortcuts).map(([key, value]) => [key, () => onSelect(value)])
1017
1124
  );
1018
1125
  }
1019
- var ShortcutElement = import_styled_components9.default.kbd(
1126
+ var ShortcutElement = import_styled_components10.default.kbd(
1020
1127
  ({
1021
1128
  theme,
1022
1129
  fixedWidth
@@ -1029,12 +1136,12 @@ var ShortcutElement = import_styled_components9.default.kbd(
1029
1136
  }
1030
1137
  })
1031
1138
  );
1032
- var KeyboardShortcut = (0, import_react25.memo)(function KeyboardShortcut2({
1139
+ var KeyboardShortcut = (0, import_react26.memo)(function KeyboardShortcut2({
1033
1140
  shortcut
1034
1141
  }) {
1035
1142
  const platform = useDesignSystemConfiguration().platform;
1036
1143
  const { keys, separator } = (0, import_noya_keymap.getShortcutDisplayParts)(shortcut, platform);
1037
- const keyElements = keys.map((key) => /* @__PURE__ */ import_react25.default.createElement(
1144
+ const keyElements = keys.map((key) => /* @__PURE__ */ import_react26.default.createElement(
1038
1145
  ShortcutElement,
1039
1146
  {
1040
1147
  key,
@@ -1042,24 +1149,24 @@ var KeyboardShortcut = (0, import_react25.memo)(function KeyboardShortcut2({
1042
1149
  },
1043
1150
  key
1044
1151
  ));
1045
- return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, separator ? withSeparatorElements(
1152
+ return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, separator ? withSeparatorElements(
1046
1153
  keyElements,
1047
- /* @__PURE__ */ import_react25.default.createElement(ShortcutElement, null, separator)
1154
+ /* @__PURE__ */ import_react26.default.createElement(ShortcutElement, null, separator)
1048
1155
  ) : keyElements);
1049
1156
  });
1050
1157
 
1051
1158
  // src/components/DropdownMenu.tsx
1052
- var SeparatorElement = (0, import_styled_components10.default)(RadixDropdownMenu.Separator)(
1159
+ var SeparatorElement = (0, import_styled_components11.default)(RadixDropdownMenu.Separator)(
1053
1160
  styles.separatorStyle
1054
1161
  );
1055
- var ItemElement = (0, import_styled_components10.default)(RadixDropdownMenu.Item)(styles.itemStyle);
1056
- var CheckboxItemElement = (0, import_styled_components10.default)(RadixDropdownMenu.CheckboxItem)(
1162
+ var ItemElement = (0, import_styled_components11.default)(RadixDropdownMenu.Item)(styles.itemStyle);
1163
+ var CheckboxItemElement = (0, import_styled_components11.default)(RadixDropdownMenu.CheckboxItem)(
1057
1164
  styles.itemStyle
1058
1165
  );
1059
- var StyledItemIndicator = (0, import_styled_components10.default)(RadixDropdownMenu.ItemIndicator)(
1166
+ var StyledItemIndicator = (0, import_styled_components11.default)(RadixDropdownMenu.ItemIndicator)(
1060
1167
  styles.itemIndicatorStyle
1061
1168
  );
1062
- var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
1169
+ var DropdownMenuItem = (0, import_react27.memo)(function ContextMenuItem({
1063
1170
  value,
1064
1171
  children,
1065
1172
  onSelect,
@@ -1070,34 +1177,43 @@ var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
1070
1177
  items,
1071
1178
  shortcut
1072
1179
  }) {
1073
- const handleSelectItem = (0, import_react26.useCallback)(() => {
1180
+ const handleSelectItem = (0, import_react27.useCallback)(() => {
1074
1181
  if (!value)
1075
1182
  return;
1076
1183
  onSelect(value);
1077
1184
  }, [onSelect, value]);
1078
1185
  if (checked) {
1079
- return /* @__PURE__ */ import_react26.default.createElement(
1186
+ return /* @__PURE__ */ import_react27.default.createElement(
1080
1187
  CheckboxItemElement,
1081
1188
  {
1082
1189
  checked,
1083
1190
  disabled,
1084
1191
  onSelect: handleSelectItem
1085
1192
  },
1086
- /* @__PURE__ */ import_react26.default.createElement(StyledItemIndicator, null, /* @__PURE__ */ import_react26.default.createElement(import_noya_icons.CheckIcon, null)),
1087
- icon && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, icon, /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, { size: 8 })),
1193
+ /* @__PURE__ */ import_react27.default.createElement(StyledItemIndicator, null, /* @__PURE__ */ import_react27.default.createElement(import_noya_icons.CheckIcon, null)),
1194
+ icon && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, icon, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 8 })),
1088
1195
  children
1089
1196
  );
1090
1197
  }
1091
- const element = /* @__PURE__ */ import_react26.default.createElement(ItemElement, { disabled, onSelect: handleSelectItem }, indented && /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }), icon && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, icon, /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, { size: 8 })), children, shortcut && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, { size: 24 }), /* @__PURE__ */ import_react26.default.createElement(KeyboardShortcut, { shortcut })), items && items.length > 0 && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react26.default.createElement(Spacer.Horizontal, { size: 16 }), /* @__PURE__ */ import_react26.default.createElement(import_noya_icons.ChevronRightIcon, null)));
1198
+ const element = /* @__PURE__ */ import_react27.default.createElement(ItemElement, { disabled, onSelect: handleSelectItem }, indented && /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }), icon && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, icon, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 8 })), children, shortcut && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 24 }), /* @__PURE__ */ import_react27.default.createElement(KeyboardShortcut, { shortcut })), items && items.length > 0 && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 16 }), /* @__PURE__ */ import_react27.default.createElement(import_noya_icons.ChevronRightIcon, null)));
1092
1199
  if (items && items.length > 0) {
1093
- return /* @__PURE__ */ import_react26.default.createElement(DropdownMenuRoot, { isNested: true, items, onSelect }, element);
1200
+ return /* @__PURE__ */ import_react27.default.createElement(
1201
+ DropdownMenuRoot,
1202
+ {
1203
+ isNested: true,
1204
+ items,
1205
+ onSelect,
1206
+ alignOffset: -5
1207
+ },
1208
+ element
1209
+ );
1094
1210
  } else {
1095
1211
  return element;
1096
1212
  }
1097
1213
  });
1098
- var Content5 = (0, import_styled_components10.default)(RadixDropdownMenu.Content)(styles.contentStyle);
1099
- var SubContent2 = (0, import_styled_components10.default)(RadixDropdownMenu.SubContent)(styles.contentStyle);
1100
- var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2({
1214
+ var Content5 = (0, import_styled_components11.default)(RadixDropdownMenu.Content)(styles.contentStyle);
1215
+ var SubContent2 = (0, import_styled_components11.default)(RadixDropdownMenu.SubContent)(styles.contentStyle);
1216
+ var DropdownMenuRoot = (0, import_react27.forwardRef)(function DropdownMenuRoot2({
1101
1217
  items,
1102
1218
  children,
1103
1219
  onSelect,
@@ -1105,12 +1221,17 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1105
1221
  shouldBindKeyboardShortcuts,
1106
1222
  onOpenChange,
1107
1223
  open,
1108
- onCloseAutoFocus
1224
+ onCloseAutoFocus,
1225
+ side,
1226
+ sideOffset = 4,
1227
+ align,
1228
+ alignOffset,
1229
+ collisionPadding = 8
1109
1230
  }, forwardedRef) {
1110
1231
  const hasCheckedItem = items.some(
1111
1232
  (item) => item !== SEPARATOR_ITEM && item.checked
1112
1233
  );
1113
- const keymap = (0, import_react26.useMemo)(
1234
+ const keymap = (0, import_react27.useMemo)(
1114
1235
  () => isNested || shouldBindKeyboardShortcuts === false ? {} : getKeyboardShortcutsForMenuItems(items, onSelect),
1115
1236
  [isNested, items, onSelect, shouldBindKeyboardShortcuts]
1116
1237
  );
@@ -1118,17 +1239,20 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1118
1239
  const RootComponent = isNested ? RadixDropdownMenu.Sub : RadixDropdownMenu.Root;
1119
1240
  const TriggerComponent = isNested ? RadixDropdownMenu.SubTrigger : RadixDropdownMenu.Trigger;
1120
1241
  const ContentComponent = isNested ? SubContent2 : Content5;
1121
- const contentStyle = (0, import_react26.useMemo)(() => ({ zIndex: 1e3 }), []);
1122
- return /* @__PURE__ */ import_react26.default.createElement(RootComponent, { onOpenChange, open }, /* @__PURE__ */ import_react26.default.createElement(TriggerComponent, { ref: forwardedRef, asChild: true }, children), /* @__PURE__ */ import_react26.default.createElement(RadixDropdownMenu.Portal, null, /* @__PURE__ */ import_react26.default.createElement(
1242
+ const contentStyle = (0, import_react27.useMemo)(() => ({ zIndex: 1e3 }), []);
1243
+ return /* @__PURE__ */ import_react27.default.createElement(RootComponent, { onOpenChange, open }, /* @__PURE__ */ import_react27.default.createElement(TriggerComponent, { ref: forwardedRef, asChild: true }, children), /* @__PURE__ */ import_react27.default.createElement(RadixDropdownMenu.Portal, null, /* @__PURE__ */ import_react27.default.createElement(
1123
1244
  ContentComponent,
1124
1245
  {
1125
- sideOffset: 4,
1246
+ side,
1247
+ sideOffset,
1248
+ align,
1249
+ alignOffset,
1126
1250
  style: contentStyle,
1127
- collisionPadding: 8,
1251
+ collisionPadding,
1128
1252
  ...{ onCloseAutoFocus }
1129
1253
  },
1130
1254
  items.map(
1131
- (item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */ import_react26.default.createElement(SeparatorElement, { key: index }) : /* @__PURE__ */ import_react26.default.createElement(
1255
+ (item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */ import_react27.default.createElement(SeparatorElement, { key: index }) : /* @__PURE__ */ import_react27.default.createElement(
1132
1256
  DropdownMenuItem,
1133
1257
  {
1134
1258
  key: item.value ?? index,
@@ -1146,14 +1270,14 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1146
1270
  )
1147
1271
  )));
1148
1272
  });
1149
- var DropdownMenu = (0, import_react26.memo)(DropdownMenuRoot);
1273
+ var DropdownMenu = (0, import_react27.memo)(DropdownMenuRoot);
1150
1274
 
1151
1275
  // src/components/internal/TextInput.tsx
1152
1276
  var import_react_compose_refs = require("@radix-ui/react-compose-refs");
1153
- var import_react28 = __toESM(require("react"));
1277
+ var import_react29 = __toESM(require("react"));
1154
1278
 
1155
1279
  // src/contexts/GlobalInputBlurContext.tsx
1156
- var import_react27 = require("react");
1280
+ var import_react28 = require("react");
1157
1281
  var defaultValue = /* @__PURE__ */ (() => {
1158
1282
  const listeners = [];
1159
1283
  const value = {
@@ -1174,14 +1298,14 @@ var defaultValue = /* @__PURE__ */ (() => {
1174
1298
  };
1175
1299
  return value;
1176
1300
  })();
1177
- var GlobalInputBlurContext = (0, import_react27.createContext)(defaultValue);
1301
+ var GlobalInputBlurContext = (0, import_react28.createContext)(defaultValue);
1178
1302
  var GlobalInputBlurProvider = GlobalInputBlurContext.Provider;
1179
1303
  var useGlobalInputBlur = () => {
1180
- return (0, import_react27.useContext)(GlobalInputBlurContext);
1304
+ return (0, import_react28.useContext)(GlobalInputBlurContext);
1181
1305
  };
1182
1306
  function useGlobalInputBlurListener(f) {
1183
1307
  const context = useGlobalInputBlur();
1184
- (0, import_react27.useEffect)(() => {
1308
+ (0, import_react28.useEffect)(() => {
1185
1309
  context.addListener(f);
1186
1310
  return () => {
1187
1311
  context.removeListener(f);
@@ -1193,8 +1317,8 @@ function useGlobalInputBlurTrigger() {
1193
1317
  }
1194
1318
 
1195
1319
  // src/components/internal/TextInput.tsx
1196
- var ReadOnlyTextInput = (0, import_react28.forwardRef)(function ReadOnlyTextInput2({ onKeyDown, onFocusChange, value, ...rest }, forwardedRef) {
1197
- return /* @__PURE__ */ import_react28.default.createElement(
1320
+ var ReadOnlyTextInput = (0, import_react29.forwardRef)(function ReadOnlyTextInput2({ onKeyDown, onFocusChange, value, ...rest }, forwardedRef) {
1321
+ return /* @__PURE__ */ import_react29.default.createElement(
1198
1322
  "input",
1199
1323
  {
1200
1324
  ref: forwardedRef,
@@ -1205,7 +1329,7 @@ var ReadOnlyTextInput = (0, import_react28.forwardRef)(function ReadOnlyTextInpu
1205
1329
  }
1206
1330
  );
1207
1331
  });
1208
- var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledTextInput2({
1332
+ var ControlledTextInput = (0, import_react29.forwardRef)(function ControlledTextInput2({
1209
1333
  onKeyDown,
1210
1334
  value,
1211
1335
  onChange,
@@ -1214,28 +1338,28 @@ var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledText
1214
1338
  onFocusCapture,
1215
1339
  ...rest
1216
1340
  }, forwardedRef) {
1217
- const handleBlur = (0, import_react28.useCallback)(
1341
+ const handleBlur = (0, import_react29.useCallback)(
1218
1342
  (event) => {
1219
1343
  onBlur?.(event);
1220
1344
  onFocusChange?.(false);
1221
1345
  },
1222
1346
  [onBlur, onFocusChange]
1223
1347
  );
1224
- const handleFocusCapture = (0, import_react28.useCallback)(
1348
+ const handleFocusCapture = (0, import_react29.useCallback)(
1225
1349
  (event) => {
1226
1350
  onFocusCapture?.(event);
1227
1351
  onFocusChange?.(true);
1228
1352
  },
1229
1353
  [onFocusCapture, onFocusChange]
1230
1354
  );
1231
- return /* @__PURE__ */ import_react28.default.createElement(
1355
+ return /* @__PURE__ */ import_react29.default.createElement(
1232
1356
  "input",
1233
1357
  {
1234
1358
  ref: forwardedRef,
1235
1359
  ...rest,
1236
1360
  value,
1237
1361
  onKeyDown,
1238
- onChange: (0, import_react28.useCallback)(
1362
+ onChange: (0, import_react29.useCallback)(
1239
1363
  (event) => onChange(event.target.value),
1240
1364
  [onChange]
1241
1365
  ),
@@ -1244,7 +1368,7 @@ var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledText
1244
1368
  }
1245
1369
  );
1246
1370
  });
1247
- var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTextInput2({
1371
+ var SubmittableTextInput = (0, import_react29.forwardRef)(function SubmittableTextInput2({
1248
1372
  onKeyDown,
1249
1373
  value,
1250
1374
  onSubmit,
@@ -1255,16 +1379,16 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1255
1379
  submitAutomaticallyAfterDelay,
1256
1380
  ...rest
1257
1381
  }, forwardedRef) {
1258
- const ref = import_react28.default.useRef(null);
1259
- const latestValue = (0, import_react28.useRef)(value);
1382
+ const ref = import_react29.default.useRef(null);
1383
+ const latestValue = (0, import_react29.useRef)(value);
1260
1384
  latestValue.current = value;
1261
- const userDidEdit = (0, import_react28.useRef)(false);
1262
- const isSubmitTriggeredByEscapeKey = (0, import_react28.useRef)(false);
1263
- const [internalValue, setInternalValue] = (0, import_react28.useState)("");
1264
- (0, import_react28.useLayoutEffect)(() => {
1385
+ const userDidEdit = (0, import_react29.useRef)(false);
1386
+ const isSubmitTriggeredByEscapeKey = (0, import_react29.useRef)(false);
1387
+ const [internalValue, setInternalValue] = (0, import_react29.useState)("");
1388
+ (0, import_react29.useLayoutEffect)(() => {
1265
1389
  setInternalValue(value);
1266
1390
  }, [value]);
1267
- const handleSubmit = (0, import_react28.useCallback)(() => {
1391
+ const handleSubmit = (0, import_react29.useCallback)(() => {
1268
1392
  const submissionValue = isSubmitTriggeredByEscapeKey.current ? value : internalValue;
1269
1393
  isSubmitTriggeredByEscapeKey.current = false;
1270
1394
  if (submissionValue === value && !allowSubmittingWithSameValue)
@@ -1274,13 +1398,13 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1274
1398
  setInternalValue(latestValue.current);
1275
1399
  }, [allowSubmittingWithSameValue, value, internalValue, onSubmit]);
1276
1400
  useGlobalInputBlurListener(
1277
- (0, import_react28.useCallback)(() => {
1401
+ (0, import_react29.useCallback)(() => {
1278
1402
  if (ref.current !== document.activeElement)
1279
1403
  return;
1280
1404
  handleSubmit();
1281
1405
  }, [handleSubmit])
1282
1406
  );
1283
- const handleKeyDown = (0, import_react28.useCallback)(
1407
+ const handleKeyDown = (0, import_react29.useCallback)(
1284
1408
  (event) => {
1285
1409
  if (event.key === "Enter") {
1286
1410
  handleSubmit();
@@ -1295,14 +1419,14 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1295
1419
  },
1296
1420
  [onKeyDown, handleSubmit]
1297
1421
  );
1298
- const handleChange = (0, import_react28.useCallback)(
1422
+ const handleChange = (0, import_react29.useCallback)(
1299
1423
  (event) => {
1300
1424
  userDidEdit.current = true;
1301
1425
  setInternalValue(event.target.value);
1302
1426
  },
1303
1427
  []
1304
1428
  );
1305
- const handleBlur = (0, import_react28.useCallback)(
1429
+ const handleBlur = (0, import_react29.useCallback)(
1306
1430
  (event) => {
1307
1431
  onBlur?.(event);
1308
1432
  onFocusChange?.(false);
@@ -1310,19 +1434,19 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1310
1434
  },
1311
1435
  [onBlur, onFocusChange, handleSubmit]
1312
1436
  );
1313
- const handleFocusCapture = (0, import_react28.useCallback)(
1437
+ const handleFocusCapture = (0, import_react29.useCallback)(
1314
1438
  (event) => {
1315
1439
  onFocusCapture?.(event);
1316
1440
  onFocusChange?.(true);
1317
1441
  },
1318
1442
  [onFocusCapture, onFocusChange]
1319
1443
  );
1320
- const autoSubmitTimeoutRef = (0, import_react28.useRef)(
1444
+ const autoSubmitTimeoutRef = (0, import_react29.useRef)(
1321
1445
  null
1322
1446
  );
1323
- const latestHandleSubmit = (0, import_react28.useRef)(handleSubmit);
1447
+ const latestHandleSubmit = (0, import_react29.useRef)(handleSubmit);
1324
1448
  latestHandleSubmit.current = handleSubmit;
1325
- (0, import_react28.useEffect)(() => {
1449
+ (0, import_react29.useEffect)(() => {
1326
1450
  if (submitAutomaticallyAfterDelay) {
1327
1451
  if (autoSubmitTimeoutRef.current) {
1328
1452
  clearTimeout(autoSubmitTimeoutRef.current);
@@ -1339,7 +1463,7 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1339
1463
  }
1340
1464
  };
1341
1465
  }, [internalValue, submitAutomaticallyAfterDelay]);
1342
- return /* @__PURE__ */ import_react28.default.createElement(
1466
+ return /* @__PURE__ */ import_react29.default.createElement(
1343
1467
  "input",
1344
1468
  {
1345
1469
  ref: (0, import_react_compose_refs.composeRefs)(ref, forwardedRef),
@@ -1352,13 +1476,13 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1352
1476
  }
1353
1477
  );
1354
1478
  });
1355
- var TextInput_default = (0, import_react28.forwardRef)(function TextInput(props, forwardedRef) {
1479
+ var TextInput_default = (0, import_react29.forwardRef)(function TextInput(props, forwardedRef) {
1356
1480
  const commonProps = {
1357
- onPointerDown: (0, import_react28.useCallback)(
1481
+ onPointerDown: (0, import_react29.useCallback)(
1358
1482
  (event) => event.stopPropagation(),
1359
1483
  []
1360
1484
  ),
1361
- onClick: (0, import_react28.useCallback)(
1485
+ onClick: (0, import_react29.useCallback)(
1362
1486
  (event) => event.stopPropagation(),
1363
1487
  []
1364
1488
  ),
@@ -1371,19 +1495,19 @@ var TextInput_default = (0, import_react28.forwardRef)(function TextInput(props,
1371
1495
  ...props
1372
1496
  };
1373
1497
  if ("readOnly" in commonProps) {
1374
- return /* @__PURE__ */ import_react28.default.createElement(ReadOnlyTextInput, { ref: forwardedRef, ...commonProps, readOnly: true });
1498
+ return /* @__PURE__ */ import_react29.default.createElement(ReadOnlyTextInput, { ref: forwardedRef, ...commonProps, readOnly: true });
1375
1499
  } else if ("onChange" in commonProps) {
1376
- return /* @__PURE__ */ import_react28.default.createElement(ControlledTextInput, { ref: forwardedRef, ...commonProps });
1500
+ return /* @__PURE__ */ import_react29.default.createElement(ControlledTextInput, { ref: forwardedRef, ...commonProps });
1377
1501
  } else {
1378
- return /* @__PURE__ */ import_react28.default.createElement(SubmittableTextInput, { ref: forwardedRef, ...commonProps });
1502
+ return /* @__PURE__ */ import_react29.default.createElement(SubmittableTextInput, { ref: forwardedRef, ...commonProps });
1379
1503
  }
1380
1504
  });
1381
1505
 
1382
1506
  // src/components/Popover.tsx
1383
1507
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"));
1384
- var import_react29 = __toESM(require("react"));
1385
- var import_styled_components11 = __toESM(require("styled-components"));
1386
- var ContentElement = (0, import_styled_components11.default)(PopoverPrimitive.Content)(({ theme, variant }) => ({
1508
+ var import_react30 = __toESM(require("react"));
1509
+ var import_styled_components12 = __toESM(require("styled-components"));
1510
+ var ContentElement = (0, import_styled_components12.default)(PopoverPrimitive.Content)(({ theme, variant }) => ({
1387
1511
  borderRadius: 4,
1388
1512
  fontSize: 14,
1389
1513
  backgroundColor: theme.colors.popover.background,
@@ -1395,10 +1519,10 @@ var ContentElement = (0, import_styled_components11.default)(PopoverPrimitive.Co
1395
1519
  ...variant === "normal" && { width: "240px" },
1396
1520
  zIndex: 1e3
1397
1521
  }));
1398
- var ArrowElement = (0, import_styled_components11.default)(PopoverPrimitive.Arrow)(({ theme }) => ({
1522
+ var ArrowElement = (0, import_styled_components12.default)(PopoverPrimitive.Arrow)(({ theme }) => ({
1399
1523
  fill: theme.colors.popover.background
1400
1524
  }));
1401
- var PopoverClose = (0, import_styled_components11.default)(PopoverPrimitive.Close)(({ theme }) => ({
1525
+ var PopoverClose = (0, import_styled_components12.default)(PopoverPrimitive.Close)(({ theme }) => ({
1402
1526
  all: "unset",
1403
1527
  fontFamily: "inherit",
1404
1528
  borderRadius: "100%",
@@ -1428,7 +1552,7 @@ function Popover({
1428
1552
  onFocusOutside,
1429
1553
  onClickClose
1430
1554
  }) {
1431
- return /* @__PURE__ */ import_react29.default.createElement(PopoverPrimitive.Root, { open, onOpenChange }, /* @__PURE__ */ import_react29.default.createElement(PopoverPrimitive.Trigger, { asChild: true }, trigger), /* @__PURE__ */ import_react29.default.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ import_react29.default.createElement(
1555
+ return /* @__PURE__ */ import_react30.default.createElement(PopoverPrimitive.Root, { open, onOpenChange }, /* @__PURE__ */ import_react30.default.createElement(PopoverPrimitive.Trigger, { asChild: true }, trigger), /* @__PURE__ */ import_react30.default.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ import_react30.default.createElement(
1432
1556
  ContentElement,
1433
1557
  {
1434
1558
  variant,
@@ -1449,75 +1573,11 @@ function Popover({
1449
1573
  }
1450
1574
  },
1451
1575
  children,
1452
- showArrow && /* @__PURE__ */ import_react29.default.createElement(ArrowElement, null),
1453
- closable && /* @__PURE__ */ import_react29.default.createElement(PopoverClose, null, /* @__PURE__ */ import_react29.default.createElement(IconButton, { iconName: "Cross2Icon", onClick: onClickClose }))
1576
+ showArrow && /* @__PURE__ */ import_react30.default.createElement(ArrowElement, null),
1577
+ closable && /* @__PURE__ */ import_react30.default.createElement(PopoverClose, null, /* @__PURE__ */ import_react30.default.createElement(IconButton, { iconName: "Cross2Icon", onClick: onClickClose }))
1454
1578
  )));
1455
1579
  }
1456
1580
 
1457
- // src/components/Stack.tsx
1458
- var import_react30 = __toESM(require("react"));
1459
- var import_styled_components12 = __toESM(require("styled-components"));
1460
-
1461
- // src/utils/breakpoints.ts
1462
- function mergeBreakpoints(breakpoints, transform) {
1463
- const breakpointMap = Array.isArray(breakpoints) ? breakpoints.reduce(
1464
- (result, item) => {
1465
- const [key, value] = item;
1466
- result[key] = result[key] ? { ...result[key], ...value } : value;
1467
- return result;
1468
- },
1469
- {}
1470
- ) : breakpoints;
1471
- const breakpointList = Object.entries(breakpointMap);
1472
- const transformedList = breakpointList.sort((a, b) => Number(b[0]) - Number(a[0])).map(([width, value]) => [
1473
- `@media screen and (max-width: ${width}px)`,
1474
- transform?.(value) ?? value
1475
- ]);
1476
- return Object.fromEntries(transformedList);
1477
- }
1478
-
1479
- // src/components/Stack.tsx
1480
- var Element = import_styled_components12.default.div(({ styleProps, breakpoints }) => ({
1481
- ...styleProps,
1482
- ...mergeBreakpoints(breakpoints || [])
1483
- }));
1484
- var StackBase = (0, import_react30.forwardRef)(function StackBase2({ id, as, children, separator, breakpoints, tabIndex, href, ...rest }, forwardedRef) {
1485
- const elements2 = separator ? withSeparatorElements(import_react30.Children.toArray(children), separator) : children;
1486
- const styleProps = {
1487
- display: "flex",
1488
- position: "relative",
1489
- alignItems: "stretch",
1490
- ...rest
1491
- };
1492
- return /* @__PURE__ */ import_react30.default.createElement(
1493
- Element,
1494
- {
1495
- ref: forwardedRef,
1496
- id,
1497
- as,
1498
- styleProps,
1499
- breakpoints,
1500
- tabIndex,
1501
- ...href && { href }
1502
- },
1503
- elements2
1504
- );
1505
- });
1506
- var VerticalStack = (0, import_react30.memo)(
1507
- (0, import_react30.forwardRef)(function VStack(props, forwardedRef) {
1508
- return /* @__PURE__ */ import_react30.default.createElement(StackBase, { ...props, flexDirection: "column", ref: forwardedRef });
1509
- })
1510
- );
1511
- var HorizontalStack = (0, import_react30.memo)(
1512
- (0, import_react30.forwardRef)(function HStack(props, forwardedRef) {
1513
- return /* @__PURE__ */ import_react30.default.createElement(StackBase, { ...props, flexDirection: "row", ref: forwardedRef });
1514
- })
1515
- );
1516
- var Stack = {
1517
- V: VerticalStack,
1518
- H: HorizontalStack
1519
- };
1520
-
1521
1581
  // src/components/InputField.tsx
1522
1582
  var InputFieldContext = (0, import_react31.createContext)({
1523
1583
  labelPosition: "end",
@@ -2053,20 +2113,68 @@ function useDialogContainsElement() {
2053
2113
  return useDialog().containsElement;
2054
2114
  }
2055
2115
 
2116
+ // src/contexts/FloatingWindowContext.tsx
2117
+ var import_noya_utils6 = require("@noya-app/noya-utils");
2118
+ var import_react33 = __toESM(require("react"));
2119
+ var import_react_dom = require("react-dom");
2120
+ var FloatingWindowContext = (0, import_react33.createContext)(void 0);
2121
+ var CurrentWindowContext = (0, import_react33.createContext)(void 0);
2122
+ var FloatingWindowProvider = ({
2123
+ children
2124
+ }) => {
2125
+ const [windows, setWindows] = (0, import_react33.useState)({});
2126
+ const contextValue = (0, import_react33.useMemo)(() => {
2127
+ const createWindow = (element) => {
2128
+ const id = (0, import_noya_utils6.uuid)();
2129
+ setWindows((windows2) => ({
2130
+ ...windows2,
2131
+ [id]: /* @__PURE__ */ import_react33.default.createElement(CurrentWindowContext.Provider, { value: { id } }, element)
2132
+ }));
2133
+ return id;
2134
+ };
2135
+ const closeWindow = (id) => {
2136
+ setWindows((windows2) => {
2137
+ const { [id]: _, ...rest } = windows2;
2138
+ return rest;
2139
+ });
2140
+ };
2141
+ return { createWindow, closeWindow };
2142
+ }, []);
2143
+ return /* @__PURE__ */ import_react33.default.createElement(FloatingWindowContext.Provider, { value: contextValue }, children, Object.entries(windows).map(
2144
+ ([id, element]) => (0, import_react_dom.createPortal)(element, document.body, id)
2145
+ ));
2146
+ };
2147
+ var useFloatingWindowManager = () => {
2148
+ const context = (0, import_react33.useContext)(FloatingWindowContext);
2149
+ if (!context) {
2150
+ throw new Error(
2151
+ "useFloatingWindow must be used within a FloatingWindowProvider"
2152
+ );
2153
+ }
2154
+ return context;
2155
+ };
2156
+ var useCurrentFloatingWindowInternal = () => {
2157
+ const context = (0, import_react33.useContext)(CurrentWindowContext);
2158
+ if (!context) {
2159
+ throw new Error("useCurrentWindow must be used within a FloatingWindow");
2160
+ }
2161
+ return context;
2162
+ };
2163
+
2056
2164
  // src/contexts/DesignSystemConfiguration.tsx
2057
- var DesignSystemConfigurationContext = (0, import_react33.createContext)(void 0);
2058
- var DesignSystemConfigurationProvider = (0, import_react33.memo)(
2165
+ var DesignSystemConfigurationContext = (0, import_react34.createContext)(void 0);
2166
+ var DesignSystemConfigurationProvider = (0, import_react34.memo)(
2059
2167
  function DesignSystemConfigurationProvider2({
2060
2168
  children,
2061
2169
  theme,
2062
2170
  platform
2063
2171
  }) {
2064
- const contextValue = (0, import_react33.useMemo)(() => ({ platform }), [platform]);
2065
- return /* @__PURE__ */ import_react33.default.createElement(DesignSystemConfigurationContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react33.default.createElement(import_styled_components15.ThemeProvider, { theme }, /* @__PURE__ */ import_react33.default.createElement(DialogProvider, null, /* @__PURE__ */ import_react33.default.createElement(ToastProvider, null, children))));
2172
+ const contextValue = (0, import_react34.useMemo)(() => ({ platform }), [platform]);
2173
+ return /* @__PURE__ */ import_react34.default.createElement(DesignSystemConfigurationContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react34.default.createElement(import_styled_components15.ThemeProvider, { theme }, /* @__PURE__ */ import_react34.default.createElement(FloatingWindowProvider, null, /* @__PURE__ */ import_react34.default.createElement(DialogProvider, null, /* @__PURE__ */ import_react34.default.createElement(ToastProvider, null, children)))));
2066
2174
  }
2067
2175
  );
2068
2176
  function useDesignSystemConfiguration() {
2069
- const value = (0, import_react33.useContext)(DesignSystemConfigurationContext);
2177
+ const value = (0, import_react34.useContext)(DesignSystemConfigurationContext);
2070
2178
  if (!value) {
2071
2179
  throw new Error("Missing DesignSystemConfigurationProvider");
2072
2180
  }
@@ -2077,7 +2185,7 @@ function useDesignSystemTheme() {
2077
2185
  }
2078
2186
 
2079
2187
  // src/hooks/useHover.ts
2080
- var React19 = __toESM(require("react"));
2188
+ var React20 = __toESM(require("react"));
2081
2189
  var globalIgnoreEmulatedMouseEvents = false;
2082
2190
  var hoverCount = 0;
2083
2191
  function setGlobalIgnoreEmulatedMouseEvents() {
@@ -2107,13 +2215,13 @@ function setupGlobalTouchEvents() {
2107
2215
  }
2108
2216
  function useHover(props = {}) {
2109
2217
  const { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;
2110
- const [isHovered, setHovered] = React19.useState(false);
2111
- const state = React19.useRef({
2218
+ const [isHovered, setHovered] = React20.useState(false);
2219
+ const state = React20.useRef({
2112
2220
  isHovered: false,
2113
2221
  ignoreEmulatedMouseEvents: false
2114
2222
  }).current;
2115
- React19.useEffect(setupGlobalTouchEvents, []);
2116
- const hoverProps = React19.useMemo(
2223
+ React20.useEffect(setupGlobalTouchEvents, []);
2224
+ const hoverProps = React20.useMemo(
2117
2225
  function getHoverProps() {
2118
2226
  function triggerHoverStart(event, pointerType) {
2119
2227
  if (isDisabled || pointerType === "touch" || state.isHovered) {
@@ -2254,7 +2362,7 @@ var AddElement = (0, import_styled_components16.default)(import_noya_icons3.Plus
2254
2362
  opacity: 0.85
2255
2363
  }
2256
2364
  }));
2257
- var Chip = (0, import_react34.memo)(function Chip2({
2365
+ var Chip = (0, import_react35.memo)(function Chip2({
2258
2366
  colorScheme,
2259
2367
  children,
2260
2368
  deletable,
@@ -2275,7 +2383,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2275
2383
  });
2276
2384
  const handleClick = !children && !deletable && addable ? onAdd : onClick;
2277
2385
  const color = colorScheme === "primary" ? theme.colors.primary : colorScheme === "secondary" ? theme.colors.secondary : theme.colors.text;
2278
- return /* @__PURE__ */ import_react34.default.createElement(
2386
+ return /* @__PURE__ */ import_react35.default.createElement(
2279
2387
  ChipElement,
2280
2388
  {
2281
2389
  variant,
@@ -2287,7 +2395,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2287
2395
  isInteractive: !!handleClick,
2288
2396
  tabIndex
2289
2397
  },
2290
- addable && /* @__PURE__ */ import_react34.default.createElement(
2398
+ addable && /* @__PURE__ */ import_react35.default.createElement(
2291
2399
  AddElement,
2292
2400
  {
2293
2401
  size: size2,
@@ -2300,7 +2408,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2300
2408
  }
2301
2409
  ),
2302
2410
  children,
2303
- deletable && /* @__PURE__ */ import_react34.default.createElement(
2411
+ deletable && /* @__PURE__ */ import_react35.default.createElement(
2304
2412
  DeleteElement,
2305
2413
  {
2306
2414
  size: size2,
@@ -2319,7 +2427,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2319
2427
  var import_noya_icons4 = require("@noya-app/noya-icons");
2320
2428
  var import_noya_keymap3 = require("@noya-app/noya-keymap");
2321
2429
  var RadixContextMenu = __toESM(require("@radix-ui/react-context-menu"));
2322
- var import_react35 = __toESM(require("react"));
2430
+ var import_react36 = __toESM(require("react"));
2323
2431
  var import_styled_components17 = __toESM(require("styled-components"));
2324
2432
  var SeparatorElement2 = (0, import_styled_components17.default)(RadixContextMenu.Separator)(
2325
2433
  styles.separatorStyle
@@ -2331,7 +2439,7 @@ var CheckboxItemElement2 = (0, import_styled_components17.default)(RadixContextM
2331
2439
  var StyledItemIndicator2 = (0, import_styled_components17.default)(RadixContextMenu.ItemIndicator)(
2332
2440
  styles.itemIndicatorStyle
2333
2441
  );
2334
- var ContextMenuItem2 = (0, import_react35.memo)(function ContextMenuItem3({
2442
+ var ContextMenuItem2 = (0, import_react36.memo)(function ContextMenuItem3({
2335
2443
  value,
2336
2444
  children,
2337
2445
  onSelect,
@@ -2342,42 +2450,42 @@ var ContextMenuItem2 = (0, import_react35.memo)(function ContextMenuItem3({
2342
2450
  items,
2343
2451
  shortcut
2344
2452
  }) {
2345
- const handlePointerDown = (0, import_react35.useCallback)(
2453
+ const handlePointerDown = (0, import_react36.useCallback)(
2346
2454
  (event) => event.stopPropagation(),
2347
2455
  []
2348
2456
  );
2349
- const handleSelectItem = (0, import_react35.useCallback)(() => {
2457
+ const handleSelectItem = (0, import_react36.useCallback)(() => {
2350
2458
  if (!value)
2351
2459
  return;
2352
2460
  onSelect(value);
2353
2461
  }, [onSelect, value]);
2354
2462
  if (checked) {
2355
- return /* @__PURE__ */ import_react35.default.createElement(
2463
+ return /* @__PURE__ */ import_react36.default.createElement(
2356
2464
  CheckboxItemElement2,
2357
2465
  {
2358
2466
  checked,
2359
2467
  disabled,
2360
2468
  onSelect: handleSelectItem
2361
2469
  },
2362
- /* @__PURE__ */ import_react35.default.createElement(StyledItemIndicator2, null, /* @__PURE__ */ import_react35.default.createElement(import_noya_icons4.CheckIcon, null)),
2470
+ /* @__PURE__ */ import_react36.default.createElement(StyledItemIndicator2, null, /* @__PURE__ */ import_react36.default.createElement(import_noya_icons4.CheckIcon, null)),
2363
2471
  children
2364
2472
  );
2365
2473
  }
2366
- const element = /* @__PURE__ */ import_react35.default.createElement(
2474
+ const element = /* @__PURE__ */ import_react36.default.createElement(
2367
2475
  ItemElement2,
2368
2476
  {
2369
2477
  disabled,
2370
2478
  onSelect: handleSelectItem,
2371
2479
  onPointerDown: handlePointerDown
2372
2480
  },
2373
- indented && /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }),
2374
- icon && /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, icon, /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, { size: 8 })),
2481
+ indented && /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }),
2482
+ icon && /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, icon, /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: 8 })),
2375
2483
  children,
2376
- shortcut && /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, { size: 24 }), /* @__PURE__ */ import_react35.default.createElement(KeyboardShortcut, { shortcut })),
2377
- items && items.length > 0 && /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, { size: 16 }), /* @__PURE__ */ import_react35.default.createElement(import_noya_icons4.ChevronRightIcon, null))
2484
+ shortcut && /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: 24 }), /* @__PURE__ */ import_react36.default.createElement(KeyboardShortcut, { shortcut })),
2485
+ items && items.length > 0 && /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: 16 }), /* @__PURE__ */ import_react36.default.createElement(import_noya_icons4.ChevronRightIcon, null))
2378
2486
  );
2379
2487
  if (items && items.length > 0) {
2380
- return /* @__PURE__ */ import_react35.default.createElement(ContextMenuRoot, { isNested: true, items, onSelect }, element);
2488
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuRoot, { isNested: true, items, onSelect }, element);
2381
2489
  } else {
2382
2490
  return element;
2383
2491
  }
@@ -2395,19 +2503,19 @@ function ContextMenuRoot({
2395
2503
  const hasCheckedItem = items.some(
2396
2504
  (item) => item !== SEPARATOR_ITEM && item.checked
2397
2505
  );
2398
- const keymap = (0, import_react35.useMemo)(
2506
+ const keymap = (0, import_react36.useMemo)(
2399
2507
  () => isNested || shouldBindKeyboardShortcuts === false ? {} : getKeyboardShortcutsForMenuItems(items, onSelect),
2400
2508
  [isNested, items, onSelect, shouldBindKeyboardShortcuts]
2401
2509
  );
2402
2510
  (0, import_noya_keymap3.useKeyboardShortcuts)(keymap);
2403
- const onPointerDown = (0, import_react35.useCallback)((event) => {
2511
+ const onPointerDown = (0, import_react36.useCallback)((event) => {
2404
2512
  event.preventDefault();
2405
2513
  }, []);
2406
2514
  const RootComponent = isNested ? RadixContextMenu.Sub : RadixContextMenu.Root;
2407
2515
  const TriggerComponent = isNested ? RadixContextMenu.SubTrigger : RadixContextMenu.Trigger;
2408
2516
  const ContentComponent = isNested ? SubContent4 : Content8;
2409
- return /* @__PURE__ */ import_react35.default.createElement(RootComponent, { onOpenChange }, /* @__PURE__ */ import_react35.default.createElement(TriggerComponent, { asChild: true, onPointerDown }, children), /* @__PURE__ */ import_react35.default.createElement(RadixContextMenu.Portal, null, /* @__PURE__ */ import_react35.default.createElement(ContentComponent, null, items.map(
2410
- (item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */ import_react35.default.createElement(SeparatorElement2, { key: index }) : /* @__PURE__ */ import_react35.default.createElement(
2517
+ return /* @__PURE__ */ import_react36.default.createElement(RootComponent, { onOpenChange }, /* @__PURE__ */ import_react36.default.createElement(TriggerComponent, { asChild: true, onPointerDown }, children), /* @__PURE__ */ import_react36.default.createElement(RadixContextMenu.Portal, null, /* @__PURE__ */ import_react36.default.createElement(ContentComponent, null, items.map(
2518
+ (item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */ import_react36.default.createElement(SeparatorElement2, { key: index }) : /* @__PURE__ */ import_react36.default.createElement(
2411
2519
  ContextMenuItem2,
2412
2520
  {
2413
2521
  key: item.value ?? index,
@@ -2424,26 +2532,26 @@ function ContextMenuRoot({
2424
2532
  )
2425
2533
  ))));
2426
2534
  }
2427
- var ContextMenu = (0, import_react35.memo)(ContextMenuRoot);
2535
+ var ContextMenu = (0, import_react36.memo)(ContextMenuRoot);
2428
2536
 
2429
2537
  // src/components/Divider.tsx
2430
- var import_react36 = __toESM(require("react"));
2538
+ var import_react37 = __toESM(require("react"));
2431
2539
  var import_styled_components18 = __toESM(require("styled-components"));
2432
2540
  var DividerContainer = import_styled_components18.default.div(({ theme, variant = "normal", orientation, overflow = 0 }) => ({
2433
2541
  ...orientation === "horizontal" ? { height: "1px", minHeight: "1px", margin: `0px -${overflow}px` } : { width: "1px", minWidth: "1px", margin: `-${overflow}px 0px` },
2434
2542
  background: variant === "strong" ? theme.colors.dividerStrong : variant === "subtle" ? theme.colors.dividerSubtle : theme.colors.divider,
2435
2543
  alignSelf: "stretch"
2436
2544
  }));
2437
- var Divider = (0, import_react36.memo)(function Divider2(props) {
2438
- return /* @__PURE__ */ import_react36.default.createElement(DividerContainer, { orientation: "horizontal", ...props });
2545
+ var Divider = (0, import_react37.memo)(function Divider2(props) {
2546
+ return /* @__PURE__ */ import_react37.default.createElement(DividerContainer, { orientation: "horizontal", ...props });
2439
2547
  });
2440
- var DividerVertical = (0, import_react36.memo)(function DividerVertical2(props) {
2441
- return /* @__PURE__ */ import_react36.default.createElement(DividerContainer, { orientation: "vertical", ...props });
2548
+ var DividerVertical = (0, import_react37.memo)(function DividerVertical2(props) {
2549
+ return /* @__PURE__ */ import_react37.default.createElement(DividerContainer, { orientation: "vertical", ...props });
2442
2550
  });
2443
2551
 
2444
2552
  // src/components/DraggableMenuButton.tsx
2445
2553
  var import_noya_icons5 = require("@noya-app/noya-icons");
2446
- var import_react37 = __toESM(require("react"));
2554
+ var import_react38 = __toESM(require("react"));
2447
2555
  var import_styled_components19 = __toESM(require("styled-components"));
2448
2556
  var DotButtonElement = import_styled_components19.default.div(({ theme }) => ({
2449
2557
  cursor: "pointer",
@@ -2463,15 +2571,15 @@ var TriggerElement = import_styled_components19.default.div({
2463
2571
  pointerEvents: "none",
2464
2572
  height: "15px"
2465
2573
  });
2466
- var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2({
2574
+ var DraggableMenuButton = (0, import_react38.memo)(function DraggableMenuButton2({
2467
2575
  items,
2468
2576
  onSelect,
2469
2577
  isVisible = true
2470
2578
  }) {
2471
2579
  const color = useDesignSystemTheme().colors.icon;
2472
- const [open, setOpen] = (0, import_react37.useState)(false);
2473
- const [downPosition, setDownPosition] = import_react37.default.useState(null);
2474
- const handlePointerDownCapture = (0, import_react37.useCallback)(
2580
+ const [open, setOpen] = (0, import_react38.useState)(false);
2581
+ const [downPosition, setDownPosition] = import_react38.default.useState(null);
2582
+ const handlePointerDownCapture = (0, import_react38.useCallback)(
2475
2583
  (event) => {
2476
2584
  if (open) {
2477
2585
  setDownPosition(null);
@@ -2484,7 +2592,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2484
2592
  },
2485
2593
  [open]
2486
2594
  );
2487
- const handlePointerUp = (0, import_react37.useCallback)(
2595
+ const handlePointerUp = (0, import_react38.useCallback)(
2488
2596
  (event) => {
2489
2597
  if (open || !downPosition) {
2490
2598
  setDownPosition(null);
@@ -2500,14 +2608,14 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2500
2608
  },
2501
2609
  [downPosition, open]
2502
2610
  );
2503
- const handleOpenChange = (0, import_react37.useCallback)(
2611
+ const handleOpenChange = (0, import_react38.useCallback)(
2504
2612
  (isOpen) => {
2505
2613
  if (!isOpen)
2506
2614
  setOpen(false);
2507
2615
  },
2508
2616
  [setOpen]
2509
2617
  );
2510
- return /* @__PURE__ */ import_react37.default.createElement(
2618
+ return /* @__PURE__ */ import_react38.default.createElement(
2511
2619
  DotButtonElement,
2512
2620
  {
2513
2621
  onPointerDownCapture: handlePointerDownCapture,
@@ -2517,7 +2625,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2517
2625
  event.preventDefault();
2518
2626
  }
2519
2627
  },
2520
- items && onSelect ? /* @__PURE__ */ import_react37.default.createElement(
2628
+ items && onSelect ? /* @__PURE__ */ import_react38.default.createElement(
2521
2629
  DropdownMenu,
2522
2630
  {
2523
2631
  open,
@@ -2526,13 +2634,13 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2526
2634
  onSelect,
2527
2635
  shouldBindKeyboardShortcuts: false
2528
2636
  },
2529
- /* @__PURE__ */ import_react37.default.createElement(TriggerElement, null, /* @__PURE__ */ import_react37.default.createElement(
2637
+ /* @__PURE__ */ import_react38.default.createElement(TriggerElement, null, /* @__PURE__ */ import_react38.default.createElement(
2530
2638
  import_noya_icons5.DragHandleDots2Icon,
2531
2639
  {
2532
2640
  color: isVisible || open ? color : "transparent"
2533
2641
  }
2534
2642
  ))
2535
- ) : /* @__PURE__ */ import_react37.default.createElement(
2643
+ ) : /* @__PURE__ */ import_react38.default.createElement(
2536
2644
  import_noya_icons5.DragHandleDots2Icon,
2537
2645
  {
2538
2646
  color: isVisible || open ? color : "transparent"
@@ -2542,7 +2650,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2542
2650
  });
2543
2651
 
2544
2652
  // src/components/FillInputField.tsx
2545
- var import_react41 = __toESM(require("react"));
2653
+ var import_react42 = __toESM(require("react"));
2546
2654
  var import_styled_components21 = __toESM(require("styled-components"));
2547
2655
 
2548
2656
  // ../noya-file-format/src/types.ts
@@ -2868,26 +2976,26 @@ var ClassValue = /* @__PURE__ */ ((ClassValue2) => {
2868
2976
  })(ClassValue || {});
2869
2977
 
2870
2978
  // src/components/FillPreviewBackground.tsx
2871
- var import_react40 = __toESM(require("react"));
2979
+ var import_react41 = __toESM(require("react"));
2872
2980
  var import_styled_components20 = __toESM(require("styled-components"));
2873
2981
 
2874
2982
  // src/contexts/ImageDataContext.tsx
2875
- var import_react38 = __toESM(require("react"));
2876
- var ImageDataContext = (0, import_react38.createContext)(
2983
+ var import_react39 = __toESM(require("react"));
2984
+ var ImageDataContext = (0, import_react39.createContext)(
2877
2985
  void 0
2878
2986
  );
2879
- var ImageDataProvider = (0, import_react38.memo)(function ImageDataProvider2({
2987
+ var ImageDataProvider = (0, import_react39.memo)(function ImageDataProvider2({
2880
2988
  children,
2881
2989
  getImageData
2882
2990
  }) {
2883
- const contextValue = (0, import_react38.useMemo)(
2991
+ const contextValue = (0, import_react39.useMemo)(
2884
2992
  () => ({ getImageData: getImageData ?? (() => void 0) }),
2885
2993
  [getImageData]
2886
2994
  );
2887
- return /* @__PURE__ */ import_react38.default.createElement(ImageDataContext.Provider, { value: contextValue }, children);
2995
+ return /* @__PURE__ */ import_react39.default.createElement(ImageDataContext.Provider, { value: contextValue }, children);
2888
2996
  });
2889
2997
  function useImageData(ref) {
2890
- const value = (0, import_react38.useContext)(ImageDataContext);
2998
+ const value = (0, import_react39.useContext)(ImageDataContext);
2891
2999
  if (!value) {
2892
3000
  throw new Error("Missing ImageDataProvider");
2893
3001
  }
@@ -2895,15 +3003,15 @@ function useImageData(ref) {
2895
3003
  }
2896
3004
 
2897
3005
  // src/hooks/useObjectURL.ts
2898
- var import_react39 = require("react");
3006
+ var import_react40 = require("react");
2899
3007
  function useObjectURL(object) {
2900
- const objectURL = (0, import_react39.useMemo)(() => {
3008
+ const objectURL = (0, import_react40.useMemo)(() => {
2901
3009
  if (object instanceof Blob)
2902
3010
  return URL.createObjectURL(object);
2903
3011
  const bytes = object instanceof Uint8Array ? object : object !== void 0 ? new Uint8Array(object) : new Uint8Array();
2904
3012
  return URL.createObjectURL(new Blob([bytes]));
2905
3013
  }, [object]);
2906
- (0, import_react39.useLayoutEffect)(() => {
3014
+ (0, import_react40.useLayoutEffect)(() => {
2907
3015
  return () => URL.revokeObjectURL(objectURL);
2908
3016
  }, [objectURL]);
2909
3017
  return objectURL;
@@ -2959,9 +3067,9 @@ var Background = import_styled_components20.default.span(({ background }) => ({
2959
3067
  position: "absolute",
2960
3068
  inset: 0
2961
3069
  }));
2962
- var HorizontalDotsBackground = (0, import_react40.memo)(function HorizontalDotsBackground2() {
3070
+ var HorizontalDotsBackground = (0, import_react41.memo)(function HorizontalDotsBackground2() {
2963
3071
  const { inputBackground, placeholderDots } = (0, import_styled_components20.useTheme)().colors;
2964
- const background = (0, import_react40.useMemo)(
3072
+ const background = (0, import_react41.useMemo)(
2965
3073
  () => [
2966
3074
  `center url("data:image/svg+xml;utf8,${dotsHorizontalSvg(
2967
3075
  placeholderDots
@@ -2970,7 +3078,7 @@ var HorizontalDotsBackground = (0, import_react40.memo)(function HorizontalDotsB
2970
3078
  ].join(","),
2971
3079
  [inputBackground, placeholderDots]
2972
3080
  );
2973
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3081
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
2974
3082
  });
2975
3083
  function getPatternSizeAndPosition(fillType, tileScale) {
2976
3084
  switch (fillType) {
@@ -2984,7 +3092,7 @@ function getPatternSizeAndPosition(fillType, tileScale) {
2984
3092
  return "center / 100% 100%";
2985
3093
  }
2986
3094
  }
2987
- var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewBackground2({
3095
+ var PatternPreviewBackground = (0, import_react41.memo)(function PatternPreviewBackground2({
2988
3096
  fillType,
2989
3097
  tileScale,
2990
3098
  imageRef
@@ -2992,7 +3100,7 @@ var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewB
2992
3100
  const image = useImageData(imageRef);
2993
3101
  const url = useObjectURL(image);
2994
3102
  const size2 = getPatternSizeAndPosition(fillType, tileScale);
2995
- const background = (0, import_react40.useMemo)(
3103
+ const background = (0, import_react41.useMemo)(
2996
3104
  () => [
2997
3105
  size2,
2998
3106
  `url(${url})`,
@@ -3000,37 +3108,37 @@ var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewB
3000
3108
  ].join(" "),
3001
3109
  [fillType, size2, url]
3002
3110
  );
3003
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3111
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
3004
3112
  });
3005
- var ColorPreviewBackground = (0, import_react40.memo)(function ColorPreviewBackground2({
3113
+ var ColorPreviewBackground = (0, import_react41.memo)(function ColorPreviewBackground2({
3006
3114
  color
3007
3115
  }) {
3008
- const background = (0, import_react40.useMemo)(() => sketchColorToRgbaString(color), [color]);
3009
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3116
+ const background = (0, import_react41.useMemo)(() => sketchColorToRgbaString(color), [color]);
3117
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
3010
3118
  });
3011
- var GradientPreviewBackground = (0, import_react40.memo)(function GradientPreviewBackground2({
3119
+ var GradientPreviewBackground = (0, import_react41.memo)(function GradientPreviewBackground2({
3012
3120
  gradient
3013
3121
  }) {
3014
- const background = (0, import_react40.useMemo)(
3122
+ const background = (0, import_react41.useMemo)(
3015
3123
  () => getGradientBackground(gradient.stops, gradient.gradientType, 180),
3016
3124
  [gradient.gradientType, gradient.stops]
3017
3125
  );
3018
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3126
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
3019
3127
  });
3020
- var FillPreviewBackground = (0, import_react40.memo)(function FillPreviewBackground2({
3128
+ var FillPreviewBackground = (0, import_react41.memo)(function FillPreviewBackground2({
3021
3129
  value
3022
3130
  }) {
3023
3131
  if (!value)
3024
- return /* @__PURE__ */ import_react40.default.createElement(HorizontalDotsBackground, null);
3132
+ return /* @__PURE__ */ import_react41.default.createElement(HorizontalDotsBackground, null);
3025
3133
  switch (value._class) {
3026
3134
  case "color":
3027
- return /* @__PURE__ */ import_react40.default.createElement(ColorPreviewBackground, { color: value });
3135
+ return /* @__PURE__ */ import_react41.default.createElement(ColorPreviewBackground, { color: value });
3028
3136
  case "gradient":
3029
- return /* @__PURE__ */ import_react40.default.createElement(GradientPreviewBackground, { gradient: value });
3137
+ return /* @__PURE__ */ import_react41.default.createElement(GradientPreviewBackground, { gradient: value });
3030
3138
  case "pattern":
3031
3139
  if (!value.image)
3032
3140
  return null;
3033
- return /* @__PURE__ */ import_react40.default.createElement(
3141
+ return /* @__PURE__ */ import_react41.default.createElement(
3034
3142
  PatternPreviewBackground,
3035
3143
  {
3036
3144
  fillType: value.patternFillType,
@@ -3060,16 +3168,285 @@ var Container = import_styled_components21.default.button(
3060
3168
  flex
3061
3169
  })
3062
3170
  );
3063
- var FillInputField = (0, import_react41.memo)(
3064
- (0, import_react41.forwardRef)(function FillInputField2({ id, value, ...rest }, ref) {
3065
- return /* @__PURE__ */ import_react41.default.createElement(Container, { ref, id, ...rest }, /* @__PURE__ */ import_react41.default.createElement(FillPreviewBackground, { value }));
3171
+ var FillInputField = (0, import_react42.memo)(
3172
+ (0, import_react42.forwardRef)(function FillInputField2({ id, value, ...rest }, ref) {
3173
+ return /* @__PURE__ */ import_react42.default.createElement(Container, { ref, id, ...rest }, /* @__PURE__ */ import_react42.default.createElement(FillPreviewBackground, { value }));
3066
3174
  })
3067
3175
  );
3068
3176
 
3177
+ // src/components/FloatingWindow.tsx
3178
+ var import_react43 = __toESM(require("react"));
3179
+ var styles2 = {
3180
+ noSelect: {
3181
+ userSelect: "none",
3182
+ WebkitUserSelect: "none",
3183
+ MozUserSelect: "none",
3184
+ msUserSelect: "none"
3185
+ },
3186
+ windowWrapper: {
3187
+ position: "absolute",
3188
+ backgroundColor: "white",
3189
+ borderRadius: "4px",
3190
+ boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
3191
+ overflow: "hidden"
3192
+ // backdropFilter: "blur(10px)",
3193
+ },
3194
+ toolbar: {
3195
+ display: "flex",
3196
+ alignItems: "center",
3197
+ padding: "8px 12px",
3198
+ cursor: "move",
3199
+ userSelect: "none",
3200
+ minHeight: "43px"
3201
+ },
3202
+ closeButton: {
3203
+ background: "none",
3204
+ border: "none",
3205
+ fontSize: "16px",
3206
+ cursor: "pointer"
3207
+ },
3208
+ content: {
3209
+ padding: "12px",
3210
+ height: "calc(100% - 44px)",
3211
+ // Adjust based on toolbar height
3212
+ overflow: "auto",
3213
+ display: "flex",
3214
+ flexDirection: "column"
3215
+ },
3216
+ resizeHandle: {
3217
+ position: "absolute"
3218
+ }
3219
+ };
3220
+ var resizeHandlePositions = {
3221
+ top: { top: "0", left: "0", right: "0", height: "5px", cursor: "ns-resize" },
3222
+ right: {
3223
+ top: "0",
3224
+ right: "0",
3225
+ bottom: "0",
3226
+ width: "5px",
3227
+ cursor: "ew-resize"
3228
+ },
3229
+ bottom: {
3230
+ bottom: "0",
3231
+ left: "0",
3232
+ right: "0",
3233
+ height: "5px",
3234
+ cursor: "ns-resize"
3235
+ },
3236
+ left: { top: "0", left: "0", bottom: "0", width: "5px", cursor: "ew-resize" },
3237
+ topLeft: {
3238
+ top: "0",
3239
+ left: "0",
3240
+ width: "10px",
3241
+ height: "10px",
3242
+ cursor: "nwse-resize"
3243
+ },
3244
+ topRight: {
3245
+ top: "0",
3246
+ right: "0",
3247
+ width: "10px",
3248
+ height: "10px",
3249
+ cursor: "nesw-resize"
3250
+ },
3251
+ bottomLeft: {
3252
+ bottom: "0",
3253
+ left: "0",
3254
+ width: "10px",
3255
+ height: "10px",
3256
+ cursor: "nesw-resize"
3257
+ },
3258
+ bottomRight: {
3259
+ bottom: "0",
3260
+ right: "0",
3261
+ width: "10px",
3262
+ height: "10px",
3263
+ cursor: "nwse-resize"
3264
+ }
3265
+ };
3266
+ function defaultRenderToolbar({
3267
+ title,
3268
+ toolbarContent,
3269
+ onClose
3270
+ }) {
3271
+ return /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, /* @__PURE__ */ import_react43.default.createElement(Small, { flex: "1", fontWeight: "500", color: "text" }, title), toolbarContent, /* @__PURE__ */ import_react43.default.createElement(
3272
+ IconButton,
3273
+ {
3274
+ iconName: "Cross3Icon",
3275
+ onClick: onClose,
3276
+ style: {
3277
+ marginLeft: "6px",
3278
+ marginRight: "-6px"
3279
+ }
3280
+ }
3281
+ ));
3282
+ }
3283
+ var FloatingWindow = ({
3284
+ title,
3285
+ onClose,
3286
+ children,
3287
+ initialWidth = 300,
3288
+ initialHeight = 200,
3289
+ initialX = 100,
3290
+ initialY = 100,
3291
+ minWidth = 200,
3292
+ minHeight = 100,
3293
+ toolbarContent,
3294
+ renderToolbar = defaultRenderToolbar
3295
+ }) => {
3296
+ const [position, setPosition] = (0, import_react43.useState)({ x: initialX, y: initialY });
3297
+ const [size2, setSize] = (0, import_react43.useState)({
3298
+ width: initialWidth,
3299
+ height: initialHeight
3300
+ });
3301
+ const [isDragging, setIsDragging] = (0, import_react43.useState)(false);
3302
+ const [isResizing, setIsResizing] = (0, import_react43.useState)(false);
3303
+ const [dragOffset, setDragOffset] = (0, import_react43.useState)({ x: 0, y: 0 });
3304
+ const [resizeDirection, setResizeDirection] = (0, import_react43.useState)(null);
3305
+ const wrapperRef = (0, import_react43.useRef)(null);
3306
+ const toggleGlobalTextSelection = (disable) => {
3307
+ if (disable) {
3308
+ document.body.style.userSelect = "none";
3309
+ } else {
3310
+ document.body.style.userSelect = "";
3311
+ }
3312
+ };
3313
+ const handleMouseDown = (0, import_react43.useCallback)((e) => {
3314
+ if (!wrapperRef.current)
3315
+ return;
3316
+ const rect = wrapperRef.current.getBoundingClientRect();
3317
+ setDragOffset({
3318
+ x: e.clientX - rect.left,
3319
+ y: e.clientY - rect.top
3320
+ });
3321
+ setIsDragging(true);
3322
+ }, []);
3323
+ const handleResizeStart = (0, import_react43.useCallback)(
3324
+ (direction) => (e) => {
3325
+ e.stopPropagation();
3326
+ setIsResizing(true);
3327
+ setResizeDirection(direction);
3328
+ toggleGlobalTextSelection(true);
3329
+ },
3330
+ []
3331
+ );
3332
+ const handleMouseMove = (0, import_react43.useCallback)(
3333
+ (e) => {
3334
+ if (isDragging) {
3335
+ setPosition({
3336
+ x: e.clientX - dragOffset.x,
3337
+ y: e.clientY - dragOffset.y
3338
+ });
3339
+ } else if (isResizing && resizeDirection) {
3340
+ const rect = wrapperRef.current.getBoundingClientRect();
3341
+ let newWidth = size2.width;
3342
+ let newHeight = size2.height;
3343
+ let newX = position.x;
3344
+ let newY = position.y;
3345
+ if (/right/i.test(resizeDirection)) {
3346
+ newWidth = Math.max(e.clientX - rect.left, minWidth);
3347
+ }
3348
+ if (/bottom/i.test(resizeDirection)) {
3349
+ newHeight = Math.max(e.clientY - rect.top, minHeight);
3350
+ }
3351
+ if (/left/i.test(resizeDirection)) {
3352
+ const potentialWidth = rect.right - e.clientX;
3353
+ if (potentialWidth <= minWidth) {
3354
+ newWidth = minWidth;
3355
+ newX = rect.right - minWidth;
3356
+ } else {
3357
+ newWidth = potentialWidth;
3358
+ newX = e.clientX;
3359
+ }
3360
+ }
3361
+ if (/top/i.test(resizeDirection)) {
3362
+ const potentialHeight = rect.bottom - e.clientY;
3363
+ if (potentialHeight <= minHeight) {
3364
+ newHeight = minHeight;
3365
+ newY = rect.bottom - minHeight;
3366
+ } else {
3367
+ newHeight = potentialHeight;
3368
+ newY = e.clientY;
3369
+ }
3370
+ }
3371
+ setSize({ width: newWidth, height: newHeight });
3372
+ setPosition({ x: newX, y: newY });
3373
+ }
3374
+ },
3375
+ [
3376
+ isDragging,
3377
+ isResizing,
3378
+ dragOffset,
3379
+ resizeDirection,
3380
+ size2,
3381
+ position,
3382
+ minWidth,
3383
+ minHeight
3384
+ ]
3385
+ );
3386
+ const handleMouseUp = (0, import_react43.useCallback)((e) => {
3387
+ setIsDragging(false);
3388
+ setIsResizing(false);
3389
+ setResizeDirection(null);
3390
+ toggleGlobalTextSelection(false);
3391
+ }, []);
3392
+ import_react43.default.useEffect(() => {
3393
+ document.addEventListener("mousemove", handleMouseMove);
3394
+ document.addEventListener("mouseup", handleMouseUp);
3395
+ return () => {
3396
+ document.removeEventListener("mousemove", handleMouseMove);
3397
+ document.removeEventListener("mouseup", handleMouseUp);
3398
+ };
3399
+ }, [handleMouseMove, handleMouseUp]);
3400
+ const theme = useDesignSystemTheme();
3401
+ const floatingWindowManager = useFloatingWindowManager();
3402
+ const currentFloatingWindow = useCurrentFloatingWindowInternal();
3403
+ const handleClose = (0, import_react43.useCallback)(() => {
3404
+ if (onClose)
3405
+ onClose();
3406
+ floatingWindowManager.closeWindow(currentFloatingWindow.id);
3407
+ }, [currentFloatingWindow.id, floatingWindowManager, onClose]);
3408
+ return /* @__PURE__ */ import_react43.default.createElement(
3409
+ "div",
3410
+ {
3411
+ ref: wrapperRef,
3412
+ style: {
3413
+ ...styles2.windowWrapper,
3414
+ top: position.y,
3415
+ left: position.x,
3416
+ width: size2.width,
3417
+ height: size2.height,
3418
+ outline: `1px solid ${theme.colors.divider}`,
3419
+ backgroundColor: theme.colors.canvas.background
3420
+ }
3421
+ },
3422
+ /* @__PURE__ */ import_react43.default.createElement(
3423
+ "div",
3424
+ {
3425
+ style: {
3426
+ ...styles2.toolbar,
3427
+ backgroundColor: theme.colors.sidebar.background
3428
+ },
3429
+ onMouseDown: handleMouseDown
3430
+ },
3431
+ renderToolbar({ title, toolbarContent, onClose: handleClose })
3432
+ ),
3433
+ /* @__PURE__ */ import_react43.default.createElement(Divider, null),
3434
+ /* @__PURE__ */ import_react43.default.createElement("div", { style: styles2.content }, children),
3435
+ Object.entries(resizeHandlePositions).map(([direction, style3]) => /* @__PURE__ */ import_react43.default.createElement(
3436
+ "div",
3437
+ {
3438
+ key: direction,
3439
+ style: { ...styles2.resizeHandle, ...style3 },
3440
+ onMouseDown: handleResizeStart(direction)
3441
+ }
3442
+ ))
3443
+ );
3444
+ };
3445
+
3069
3446
  // src/components/GradientPicker.tsx
3070
3447
  var import_noya_colorpicker2 = require("@noya-app/noya-colorpicker");
3071
- var import_react42 = __toESM(require("react"));
3072
- var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3448
+ var import_react44 = __toESM(require("react"));
3449
+ var GradientPicker = (0, import_react44.memo)(function GradientPicker2({
3073
3450
  value,
3074
3451
  selectedStop,
3075
3452
  onChangeColor,
@@ -3078,7 +3455,7 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3078
3455
  onDelete,
3079
3456
  onSelectStop
3080
3457
  }) {
3081
- const colorModel = (0, import_react42.useMemo)(
3458
+ const colorModel = (0, import_react44.useMemo)(
3082
3459
  () => ({
3083
3460
  defaultColor: { r: 0, g: 0, b: 0, a: 1 },
3084
3461
  toHsva: import_noya_colorpicker2.rgbaToHsva,
@@ -3087,30 +3464,30 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3087
3464
  }),
3088
3465
  []
3089
3466
  );
3090
- const rgbaColor = (0, import_react42.useMemo)(
3467
+ const rgbaColor = (0, import_react44.useMemo)(
3091
3468
  () => sketchColorToRgba(value[selectedStop].color),
3092
3469
  [value, selectedStop]
3093
3470
  );
3094
- const handleChangeColor = (0, import_react42.useCallback)(
3471
+ const handleChangeColor = (0, import_react44.useCallback)(
3095
3472
  (value2) => {
3096
3473
  onChangeColor(rgbaToSketchColor(value2));
3097
3474
  },
3098
3475
  [onChangeColor]
3099
3476
  );
3100
- const handleAddGradientStop = (0, import_react42.useCallback)(
3477
+ const handleAddGradientStop = (0, import_react44.useCallback)(
3101
3478
  (value2, position) => {
3102
3479
  onAdd(rgbaToSketchColor(value2), position);
3103
3480
  },
3104
3481
  [onAdd]
3105
3482
  );
3106
- return /* @__PURE__ */ import_react42.default.createElement(
3483
+ return /* @__PURE__ */ import_react44.default.createElement(
3107
3484
  import_noya_colorpicker2.ColorPicker,
3108
3485
  {
3109
3486
  onChange: handleChangeColor,
3110
3487
  colorModel,
3111
3488
  color: rgbaColor
3112
3489
  },
3113
- /* @__PURE__ */ import_react42.default.createElement(
3490
+ /* @__PURE__ */ import_react44.default.createElement(
3114
3491
  import_noya_colorpicker2.Gradient,
3115
3492
  {
3116
3493
  gradients: value,
@@ -3121,12 +3498,12 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3121
3498
  onDelete
3122
3499
  }
3123
3500
  ),
3124
- /* @__PURE__ */ import_react42.default.createElement(Spacer.Vertical, { size: 10 }),
3125
- /* @__PURE__ */ import_react42.default.createElement(import_noya_colorpicker2.Saturation, null),
3126
- /* @__PURE__ */ import_react42.default.createElement(Spacer.Vertical, { size: 12 }),
3127
- /* @__PURE__ */ import_react42.default.createElement(import_noya_colorpicker2.Hue, null),
3128
- /* @__PURE__ */ import_react42.default.createElement(Spacer.Vertical, { size: 5 }),
3129
- /* @__PURE__ */ import_react42.default.createElement(import_noya_colorpicker2.Alpha, null)
3501
+ /* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 10 }),
3502
+ /* @__PURE__ */ import_react44.default.createElement(import_noya_colorpicker2.Saturation, null),
3503
+ /* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 12 }),
3504
+ /* @__PURE__ */ import_react44.default.createElement(import_noya_colorpicker2.Hue, null),
3505
+ /* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 5 }),
3506
+ /* @__PURE__ */ import_react44.default.createElement(import_noya_colorpicker2.Alpha, null)
3130
3507
  );
3131
3508
  });
3132
3509
 
@@ -3158,12 +3535,12 @@ var Grid = import_styled_components22.default.div((props) => ({
3158
3535
  }));
3159
3536
 
3160
3537
  // src/components/GridView.tsx
3161
- var import_react44 = __toESM(require("react"));
3538
+ var import_react46 = __toESM(require("react"));
3162
3539
  var import_styled_components24 = __toESM(require("styled-components"));
3163
3540
 
3164
3541
  // src/components/ScrollArea.tsx
3165
3542
  var RadixScrollArea = __toESM(require("@radix-ui/react-scroll-area"));
3166
- var import_react43 = __toESM(require("react"));
3543
+ var import_react45 = __toESM(require("react"));
3167
3544
  var import_styled_components23 = __toESM(require("styled-components"));
3168
3545
  var SCROLLBAR_SIZE = 10;
3169
3546
  var StyledViewport = (0, import_styled_components23.default)(RadixScrollArea.Viewport)({
@@ -3191,18 +3568,18 @@ var Container2 = import_styled_components23.default.div({
3191
3568
  flex: "1 1 0px",
3192
3569
  minHeight: 0
3193
3570
  });
3194
- var ScrollArea = (0, import_react43.memo)(function ScrollArea2({ children }) {
3195
- const [scrollElementRef, setScrollElementRef] = (0, import_react43.useState)(null);
3196
- return /* @__PURE__ */ import_react43.default.createElement(Container2, null, /* @__PURE__ */ import_react43.default.createElement(RadixScrollArea.Root, { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react43.default.createElement(
3571
+ var ScrollArea = (0, import_react45.memo)(function ScrollArea2({ children }) {
3572
+ const [scrollElementRef, setScrollElementRef] = (0, import_react45.useState)(null);
3573
+ return /* @__PURE__ */ import_react45.default.createElement(Container2, null, /* @__PURE__ */ import_react45.default.createElement(RadixScrollArea.Root, { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react45.default.createElement(
3197
3574
  StyledViewport,
3198
3575
  {
3199
- ref: (0, import_react43.useCallback)(
3576
+ ref: (0, import_react45.useCallback)(
3200
3577
  (ref) => setScrollElementRef(ref),
3201
3578
  []
3202
3579
  )
3203
3580
  },
3204
3581
  typeof children === "function" ? scrollElementRef ? children(scrollElementRef) : null : children
3205
- ), /* @__PURE__ */ import_react43.default.createElement(StyledScrollbar, { orientation: "vertical", className: "scroll-component" }, /* @__PURE__ */ import_react43.default.createElement(StyledThumb, { className: "scroll-component" }))));
3582
+ ), /* @__PURE__ */ import_react45.default.createElement(StyledScrollbar, { orientation: "vertical", className: "scroll-component" }, /* @__PURE__ */ import_react45.default.createElement(StyledThumb, { className: "scroll-component" }))));
3206
3583
  });
3207
3584
 
3208
3585
  // src/components/GridView.tsx
@@ -3382,7 +3759,7 @@ var Shimmer = import_styled_components24.default.div`
3382
3759
  align-items: end;
3383
3760
  padding: 4px;
3384
3761
  `;
3385
- var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3762
+ var GridViewItem = (0, import_react46.forwardRef)(function GridViewItem2({
3386
3763
  id,
3387
3764
  title,
3388
3765
  subtitle,
@@ -3398,15 +3775,15 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3398
3775
  onContextMenu,
3399
3776
  style: style3
3400
3777
  }, forwardedRef) {
3401
- const [hovered, setHovered] = import_react44.default.useState(false);
3778
+ const [hovered, setHovered] = import_react46.default.useState(false);
3402
3779
  const { hoverProps } = useHover({
3403
3780
  onHoverChange: (isHovering) => {
3404
3781
  onHoverChange?.(isHovering);
3405
3782
  setHovered(isHovering);
3406
3783
  }
3407
3784
  });
3408
- const { textPosition, bordered, disabled } = (0, import_react44.useContext)(GridViewContext);
3409
- const handleClick = (0, import_react44.useCallback)(
3785
+ const { textPosition, bordered, disabled } = (0, import_react46.useContext)(GridViewContext);
3786
+ const handleClick = (0, import_react46.useCallback)(
3410
3787
  (event) => {
3411
3788
  event.stopPropagation();
3412
3789
  event.preventDefault();
@@ -3415,7 +3792,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3415
3792
  },
3416
3793
  [onClick, onPress]
3417
3794
  );
3418
- const handleKeyDown = (0, import_react44.useCallback)(
3795
+ const handleKeyDown = (0, import_react46.useCallback)(
3419
3796
  (event) => {
3420
3797
  if (event.key === "Enter" || event.key === " ") {
3421
3798
  event.stopPropagation();
@@ -3427,7 +3804,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3427
3804
  },
3428
3805
  [onPress]
3429
3806
  );
3430
- let element = /* @__PURE__ */ import_react44.default.createElement(
3807
+ let element = /* @__PURE__ */ import_react46.default.createElement(
3431
3808
  ItemContainer,
3432
3809
  {
3433
3810
  id,
@@ -3436,7 +3813,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3436
3813
  tabIndex: disabled ? void 0 : 0,
3437
3814
  onKeyDown: handleKeyDown
3438
3815
  },
3439
- /* @__PURE__ */ import_react44.default.createElement(
3816
+ /* @__PURE__ */ import_react46.default.createElement(
3440
3817
  ContentContainer,
3441
3818
  {
3442
3819
  disabled,
@@ -3450,25 +3827,25 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3450
3827
  },
3451
3828
  children
3452
3829
  ),
3453
- textPosition === "below" && /* @__PURE__ */ import_react44.default.createElement(import_react44.default.Fragment, null, /* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 8 }), /* @__PURE__ */ import_react44.default.createElement(ItemTitle, { showBackground: false }, title || " "), /* @__PURE__ */ import_react44.default.createElement(ItemDescription, { showBackground: false }, subtitle || " ")),
3454
- textPosition === "overlay" && hovered && (title || subtitle) && /* @__PURE__ */ import_react44.default.createElement(TextOverlay, null, title && /* @__PURE__ */ import_react44.default.createElement(ItemTitle, { showBackground: true }, title), subtitle && /* @__PURE__ */ import_react44.default.createElement(ItemDescription, { showBackground: true }, subtitle)),
3455
- loading && /* @__PURE__ */ import_react44.default.createElement(Shimmer, null, /* @__PURE__ */ import_react44.default.createElement(ActivityIndicator, { opacity: 0.5, size: 13 }))
3830
+ textPosition === "below" && /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, /* @__PURE__ */ import_react46.default.createElement(Spacer.Vertical, { size: 8 }), /* @__PURE__ */ import_react46.default.createElement(ItemTitle, { showBackground: false }, title || " "), /* @__PURE__ */ import_react46.default.createElement(ItemDescription, { showBackground: false }, subtitle || " ")),
3831
+ textPosition === "overlay" && hovered && (title || subtitle) && /* @__PURE__ */ import_react46.default.createElement(TextOverlay, null, title && /* @__PURE__ */ import_react46.default.createElement(ItemTitle, { showBackground: true }, title), subtitle && /* @__PURE__ */ import_react46.default.createElement(ItemDescription, { showBackground: true }, subtitle)),
3832
+ loading && /* @__PURE__ */ import_react46.default.createElement(Shimmer, null, /* @__PURE__ */ import_react46.default.createElement(ActivityIndicator, { opacity: 0.5, size: 13 }))
3456
3833
  );
3457
3834
  if (menuItems && onSelectMenuItem) {
3458
- element = /* @__PURE__ */ import_react44.default.createElement(ContextMenu, { items: menuItems, onSelect: onSelectMenuItem }, element);
3835
+ element = /* @__PURE__ */ import_react46.default.createElement(ContextMenu, { items: menuItems, onSelect: onSelectMenuItem }, element);
3459
3836
  }
3460
3837
  if (textPosition === "toolip") {
3461
- element = /* @__PURE__ */ import_react44.default.createElement(
3838
+ element = /* @__PURE__ */ import_react46.default.createElement(
3462
3839
  Tooltip,
3463
3840
  {
3464
- content: /* @__PURE__ */ import_react44.default.createElement(Stack.V, { gap: 2 }, /* @__PURE__ */ import_react44.default.createElement(ItemTitle, { showBackground: false }, title), /* @__PURE__ */ import_react44.default.createElement(ItemDescription, { showBackground: false }, subtitle))
3841
+ content: /* @__PURE__ */ import_react46.default.createElement(Stack.V, { gap: 2 }, /* @__PURE__ */ import_react46.default.createElement(ItemTitle, { showBackground: false }, title), /* @__PURE__ */ import_react46.default.createElement(ItemDescription, { showBackground: false }, subtitle))
3465
3842
  },
3466
3843
  element
3467
3844
  );
3468
3845
  }
3469
3846
  return element;
3470
3847
  });
3471
- var GridViewContext = (0, import_react44.createContext)({
3848
+ var GridViewContext = (0, import_react46.createContext)({
3472
3849
  size: "small",
3473
3850
  textPosition: "below",
3474
3851
  bordered: false,
@@ -3483,7 +3860,7 @@ function GridViewRoot({
3483
3860
  bordered = false,
3484
3861
  disabled = false
3485
3862
  }) {
3486
- const handleClick = (0, import_react44.useCallback)(
3863
+ const handleClick = (0, import_react46.useCallback)(
3487
3864
  (event) => {
3488
3865
  event.stopPropagation();
3489
3866
  event.preventDefault();
@@ -3491,7 +3868,7 @@ function GridViewRoot({
3491
3868
  },
3492
3869
  [onClick]
3493
3870
  );
3494
- const contextValue = (0, import_react44.useMemo)(
3871
+ const contextValue = (0, import_react46.useMemo)(
3495
3872
  () => ({
3496
3873
  size: size2,
3497
3874
  textPosition,
@@ -3500,33 +3877,33 @@ function GridViewRoot({
3500
3877
  }),
3501
3878
  [bordered, disabled, size2, textPosition]
3502
3879
  );
3503
- return /* @__PURE__ */ import_react44.default.createElement(GridViewContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react44.default.createElement(Container3, { onClick: handleClick, scrollable }, scrollable ? /* @__PURE__ */ import_react44.default.createElement(ScrollArea, null, children) : children));
3880
+ return /* @__PURE__ */ import_react46.default.createElement(GridViewContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react46.default.createElement(Container3, { onClick: handleClick, scrollable }, scrollable ? /* @__PURE__ */ import_react46.default.createElement(ScrollArea, null, children) : children));
3504
3881
  }
3505
3882
  function GridViewSection({
3506
3883
  children,
3507
3884
  padding = "20px"
3508
3885
  }) {
3509
- const { size: size2 } = (0, import_react44.useContext)(GridViewContext);
3510
- return /* @__PURE__ */ import_react44.default.createElement(Grid2, { size: size2, padding }, children);
3886
+ const { size: size2 } = (0, import_react46.useContext)(GridViewContext);
3887
+ return /* @__PURE__ */ import_react46.default.createElement(Grid2, { size: size2, padding }, children);
3511
3888
  }
3512
3889
  function GridViewSectionHeader({ title }) {
3513
3890
  const grouped = title.split("/");
3514
- return /* @__PURE__ */ import_react44.default.createElement(SectionHeaderContainer, null, /* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 24 }), withSeparatorElements(
3515
- grouped.map((title2, index) => /* @__PURE__ */ import_react44.default.createElement(SectionTitle, { last: index === grouped.length - 1 }, title2)),
3516
- /* @__PURE__ */ import_react44.default.createElement(SectionTitle, null, " / ")
3891
+ return /* @__PURE__ */ import_react46.default.createElement(SectionHeaderContainer, null, /* @__PURE__ */ import_react46.default.createElement(Spacer.Vertical, { size: 24 }), withSeparatorElements(
3892
+ grouped.map((title2, index) => /* @__PURE__ */ import_react46.default.createElement(SectionTitle, { last: index === grouped.length - 1 }, title2)),
3893
+ /* @__PURE__ */ import_react46.default.createElement(SectionTitle, null, " / ")
3517
3894
  ));
3518
3895
  }
3519
3896
  var GridView;
3520
3897
  ((GridView2) => {
3521
- GridView2.Root = (0, import_react44.memo)(GridViewRoot);
3522
- GridView2.Item = (0, import_react44.memo)(GridViewItem);
3523
- GridView2.Section = (0, import_react44.memo)(GridViewSection);
3524
- GridView2.SectionHeader = (0, import_react44.memo)(GridViewSectionHeader);
3898
+ GridView2.Root = (0, import_react46.memo)(GridViewRoot);
3899
+ GridView2.Item = (0, import_react46.memo)(GridViewItem);
3900
+ GridView2.Section = (0, import_react46.memo)(GridViewSection);
3901
+ GridView2.SectionHeader = (0, import_react46.memo)(GridViewSectionHeader);
3525
3902
  })(GridView || (GridView = {}));
3526
3903
 
3527
3904
  // src/components/InputFieldWithCompletions.tsx
3528
- var import_noya_utils8 = require("@noya-app/noya-utils");
3529
- var import_react48 = __toESM(require("react"));
3905
+ var import_noya_utils9 = require("@noya-app/noya-utils");
3906
+ var import_react50 = __toESM(require("react"));
3530
3907
  var import_styled_components27 = __toESM(require("styled-components"));
3531
3908
 
3532
3909
  // src/utils/fuzzyScorer.ts
@@ -3601,15 +3978,15 @@ function mergeRanges(ranges) {
3601
3978
  }
3602
3979
 
3603
3980
  // src/components/ListView.tsx
3604
- var import_noya_utils7 = require("@noya-app/noya-utils");
3981
+ var import_noya_utils8 = require("@noya-app/noya-utils");
3605
3982
  var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
3606
- var import_react46 = __toESM(require("react"));
3983
+ var import_react48 = __toESM(require("react"));
3607
3984
  var import_react_virtualized = require("react-virtualized");
3608
3985
  var import_react_window = require("react-window");
3609
3986
  var import_styled_components25 = __toESM(require("styled-components"));
3610
3987
 
3611
3988
  // src/hooks/mergeEventHandlers.ts
3612
- var import_noya_utils6 = require("@noya-app/noya-utils");
3989
+ var import_noya_utils7 = require("@noya-app/noya-utils");
3613
3990
  var import_primitive = require("@radix-ui/primitive");
3614
3991
  function composeAllEventHandlers(...handlers) {
3615
3992
  const [first, ...rest] = handlers;
@@ -3619,7 +3996,7 @@ function composeAllEventHandlers(...handlers) {
3619
3996
  );
3620
3997
  }
3621
3998
  function mergeEventHandlers(...handlerMaps) {
3622
- const eventNames = (0, import_noya_utils6.unique)(handlerMaps.map(Object.keys).flat());
3999
+ const eventNames = (0, import_noya_utils7.unique)(handlerMaps.map(Object.keys).flat());
3623
4000
  return Object.fromEntries(
3624
4001
  eventNames.map((eventName) => {
3625
4002
  const handlers = handlerMaps.flatMap((handlerMap) => {
@@ -3634,8 +4011,8 @@ function mergeEventHandlers(...handlerMaps) {
3634
4011
  // src/components/Sortable.tsx
3635
4012
  var import_core = require("@dnd-kit/core");
3636
4013
  var import_sortable = require("@dnd-kit/sortable");
3637
- var import_react45 = __toESM(require("react"));
3638
- var import_react_dom = require("react-dom");
4014
+ var import_react47 = __toESM(require("react"));
4015
+ var import_react_dom2 = require("react-dom");
3639
4016
  var normalizeListDestinationIndex = (index, position) => {
3640
4017
  return position === "above" ? index : index + 1;
3641
4018
  };
@@ -3648,7 +4025,7 @@ var defaultAcceptsDrop = (sourceIndex, destinationIndex, position) => {
3648
4025
  }
3649
4026
  return true;
3650
4027
  };
3651
- var SortableItemContext = (0, import_react45.createContext)({
4028
+ var SortableItemContext = (0, import_react47.createContext)({
3652
4029
  keys: [],
3653
4030
  position: { x: 0, y: 0 },
3654
4031
  acceptsDrop: defaultAcceptsDrop,
@@ -3670,7 +4047,7 @@ function SortableItem({
3670
4047
  disabled,
3671
4048
  children
3672
4049
  }) {
3673
- const { keys, position, acceptsDrop, setActivatorEvent, axis } = (0, import_react45.useContext)(SortableItemContext);
4050
+ const { keys, position, acceptsDrop, setActivatorEvent, axis } = (0, import_react47.useContext)(SortableItemContext);
3674
4051
  const sortable = (0, import_sortable.useSortable)({ id, disabled });
3675
4052
  const {
3676
4053
  active,
@@ -3690,7 +4067,7 @@ function SortableItem({
3690
4067
  const eventY = activatorEvent?.clientY ?? 0;
3691
4068
  const offsetLeft = eventX + position.x;
3692
4069
  const offsetTop = eventY + position.y;
3693
- const ref = (0, import_react45.useCallback)((node) => setNodeRef(node), [setNodeRef]);
4070
+ const ref = (0, import_react47.useCallback)((node) => setNodeRef(node), [setNodeRef]);
3694
4071
  return children({
3695
4072
  ref,
3696
4073
  ...attributes,
@@ -3721,22 +4098,22 @@ function SortableRoot({
3721
4098
  }
3722
4099
  })
3723
4100
  );
3724
- const [activeIndex, setActiveIndex] = (0, import_react45.useState)();
3725
- const activatorEvent = (0, import_react45.useRef)(null);
3726
- const setActivatorEvent = (0, import_react45.useCallback)((event) => {
4101
+ const [activeIndex, setActiveIndex] = (0, import_react47.useState)();
4102
+ const activatorEvent = (0, import_react47.useRef)(null);
4103
+ const setActivatorEvent = (0, import_react47.useCallback)((event) => {
3727
4104
  activatorEvent.current = event;
3728
4105
  }, []);
3729
- const [position, setPosition] = (0, import_react45.useState)({ x: 0, y: 0 });
3730
- const handleDragStart = (0, import_react45.useCallback)(
4106
+ const [position, setPosition] = (0, import_react47.useState)({ x: 0, y: 0 });
4107
+ const handleDragStart = (0, import_react47.useCallback)(
3731
4108
  (event) => {
3732
4109
  setActiveIndex(keys.indexOf(event.active.id));
3733
4110
  },
3734
4111
  [keys]
3735
4112
  );
3736
- const handleDragMove = (0, import_react45.useCallback)((event) => {
4113
+ const handleDragMove = (0, import_react47.useCallback)((event) => {
3737
4114
  setPosition({ ...event.delta });
3738
4115
  }, []);
3739
- const handleDragEnd = (0, import_react45.useCallback)(
4116
+ const handleDragEnd = (0, import_react47.useCallback)(
3740
4117
  (event) => {
3741
4118
  const { active, over } = event;
3742
4119
  setActiveIndex(void 0);
@@ -3763,10 +4140,10 @@ function SortableRoot({
3763
4140
  },
3764
4141
  [acceptsDrop, axis, keys, onMoveItem, position.x, position.y]
3765
4142
  );
3766
- return /* @__PURE__ */ import_react45.default.createElement(
4143
+ return /* @__PURE__ */ import_react47.default.createElement(
3767
4144
  SortableItemContext.Provider,
3768
4145
  {
3769
- value: (0, import_react45.useMemo)(
4146
+ value: (0, import_react47.useMemo)(
3770
4147
  () => ({
3771
4148
  keys,
3772
4149
  acceptsDrop,
@@ -3777,7 +4154,7 @@ function SortableRoot({
3777
4154
  [acceptsDrop, axis, keys, position, setActivatorEvent]
3778
4155
  )
3779
4156
  },
3780
- /* @__PURE__ */ import_react45.default.createElement(
4157
+ /* @__PURE__ */ import_react47.default.createElement(
3781
4158
  import_core.DndContext,
3782
4159
  {
3783
4160
  sensors,
@@ -3786,9 +4163,9 @@ function SortableRoot({
3786
4163
  onDragMove: handleDragMove,
3787
4164
  onDragEnd: handleDragEnd
3788
4165
  },
3789
- /* @__PURE__ */ import_react45.default.createElement(import_sortable.SortableContext, { items: keys, strategy: import_sortable.verticalListSortingStrategy }, children),
3790
- renderOverlay && (0, import_react_dom.createPortal)(
3791
- /* @__PURE__ */ import_react45.default.createElement(import_core.DragOverlay, { dropAnimation: null }, activeIndex !== void 0 && activeIndex >= 0 && renderOverlay(activeIndex)),
4166
+ /* @__PURE__ */ import_react47.default.createElement(import_sortable.SortableContext, { items: keys, strategy: import_sortable.verticalListSortingStrategy }, children),
4167
+ renderOverlay && (0, import_react_dom2.createPortal)(
4168
+ /* @__PURE__ */ import_react47.default.createElement(import_core.DragOverlay, { dropAnimation: null }, activeIndex !== void 0 && activeIndex >= 0 && renderOverlay(activeIndex)),
3792
4169
  document.body
3793
4170
  )
3794
4171
  )
@@ -3796,17 +4173,17 @@ function SortableRoot({
3796
4173
  }
3797
4174
  var Sortable;
3798
4175
  ((Sortable2) => {
3799
- Sortable2.Item = (0, import_react45.memo)(SortableItem);
3800
- Sortable2.Root = (0, import_react45.memo)(SortableRoot);
4176
+ Sortable2.Item = (0, import_react47.memo)(SortableItem);
4177
+ Sortable2.Root = (0, import_react47.memo)(SortableRoot);
3801
4178
  })(Sortable || (Sortable = {}));
3802
4179
 
3803
4180
  // src/components/ListView.tsx
3804
4181
  var ROW_HEIGHT = 31;
3805
4182
  var SECTION_HEADER_LABEL_HEIGHT = 27;
3806
- var DraggingContext = (0, import_react46.createContext)({
4183
+ var DraggingContext = (0, import_react48.createContext)({
3807
4184
  indentation: 12
3808
4185
  });
3809
- var ListRowContext = (0, import_react46.createContext)({
4186
+ var ListRowContext = (0, import_react48.createContext)({
3810
4187
  marginType: "none",
3811
4188
  selectedPosition: "only",
3812
4189
  sortable: false,
@@ -3836,8 +4213,8 @@ function ListViewEditableRowTitle({
3836
4213
  autoFocus,
3837
4214
  placeholder
3838
4215
  }) {
3839
- const inputRef = (0, import_react46.useRef)(null);
3840
- (0, import_react46.useLayoutEffect)(() => {
4216
+ const inputRef = (0, import_react48.useRef)(null);
4217
+ (0, import_react48.useLayoutEffect)(() => {
3841
4218
  const element = inputRef.current;
3842
4219
  if (!element || !autoFocus)
3843
4220
  return;
@@ -3846,7 +4223,7 @@ function ListViewEditableRowTitle({
3846
4223
  element.select();
3847
4224
  }, 0);
3848
4225
  }, [autoFocus]);
3849
- return /* @__PURE__ */ import_react46.default.createElement(
4226
+ return /* @__PURE__ */ import_react48.default.createElement(
3850
4227
  ListViewEditableRowTitleElement,
3851
4228
  {
3852
4229
  ref: inputRef,
@@ -3968,7 +4345,7 @@ var ListViewDragIndicatorElement = import_styled_components25.default.div(({ the
3968
4345
  boxShadow: "0 0 2px rgba(0,0,0,0.5)"
3969
4346
  }
3970
4347
  }));
3971
- var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4348
+ var ListViewRow = (0, import_react48.forwardRef)(function ListViewRow2({
3972
4349
  id,
3973
4350
  tabIndex = 0,
3974
4351
  gap,
@@ -4001,12 +4378,12 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4001
4378
  divider,
4002
4379
  gap: listGap,
4003
4380
  colorScheme
4004
- } = (0, import_react46.useContext)(ListRowContext);
4381
+ } = (0, import_react48.useContext)(ListRowContext);
4005
4382
  const { hoverProps } = useHover({
4006
4383
  onHoverChange
4007
4384
  });
4008
- const { indentation, isDragging } = (0, import_react46.useContext)(DraggingContext);
4009
- const handlePress = (0, import_react46.useCallback)(
4385
+ const { indentation, isDragging } = (0, import_react48.useContext)(DraggingContext);
4386
+ const handlePress = (0, import_react48.useCallback)(
4010
4387
  (event) => {
4011
4388
  event.preventDefault();
4012
4389
  if (event.button !== 0)
@@ -4015,14 +4392,14 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4015
4392
  },
4016
4393
  [onPress]
4017
4394
  );
4018
- const handleDoubleClick = (0, import_react46.useCallback)(
4395
+ const handleDoubleClick = (0, import_react48.useCallback)(
4019
4396
  (event) => {
4020
4397
  event.stopPropagation();
4021
4398
  onDoubleClick?.();
4022
4399
  },
4023
4400
  [onDoubleClick]
4024
4401
  );
4025
- const mergedStyle = (0, import_react46.useMemo)(() => {
4402
+ const mergedStyle = (0, import_react48.useMemo)(() => {
4026
4403
  return isDragging ? {
4027
4404
  // TODO: Where do these offsets actually come from?
4028
4405
  transform: `translate3d(-36px, -6px, 0)`,
@@ -4034,7 +4411,7 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4034
4411
  relativeDropPosition,
4035
4412
  ...renderProps
4036
4413
  }, ref) => {
4037
- const element = /* @__PURE__ */ import_react46.default.createElement(
4414
+ const element = /* @__PURE__ */ import_react48.default.createElement(
4038
4415
  RowContainer,
4039
4416
  {
4040
4417
  ref,
@@ -4065,7 +4442,7 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4065
4442
  ),
4066
4443
  tabIndex
4067
4444
  },
4068
- relativeDropPosition && /* @__PURE__ */ import_react46.default.createElement(
4445
+ relativeDropPosition && /* @__PURE__ */ import_react48.default.createElement(
4069
4446
  ListViewDragIndicatorElement,
4070
4447
  {
4071
4448
  colorScheme,
@@ -4074,11 +4451,11 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4074
4451
  gap: listGap
4075
4452
  }
4076
4453
  ),
4077
- depth > 0 && /* @__PURE__ */ import_react46.default.createElement(Spacer.Horizontal, { size: depth * indentation }),
4454
+ depth > 0 && /* @__PURE__ */ import_react48.default.createElement(Spacer.Horizontal, { size: depth * indentation }),
4078
4455
  children
4079
4456
  );
4080
4457
  if (menuItems && onSelectMenuItem) {
4081
- return /* @__PURE__ */ import_react46.default.createElement(
4458
+ return /* @__PURE__ */ import_react48.default.createElement(
4082
4459
  ContextMenu,
4083
4460
  {
4084
4461
  items: menuItems,
@@ -4091,21 +4468,21 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4091
4468
  return element;
4092
4469
  };
4093
4470
  if (sortable && id) {
4094
- return /* @__PURE__ */ import_react46.default.createElement(Sortable.Item, { id, disabled: overrideSortable === false }, ({ ref: sortableRef, ...sortableProps }) => renderContent(sortableProps, (0, import_react_compose_refs2.composeRefs)(sortableRef, forwardedRef)));
4471
+ return /* @__PURE__ */ import_react48.default.createElement(Sortable.Item, { id, disabled: overrideSortable === false }, ({ ref: sortableRef, ...sortableProps }) => renderContent(sortableProps, (0, import_react_compose_refs2.composeRefs)(sortableRef, forwardedRef)));
4095
4472
  }
4096
4473
  return renderContent({}, forwardedRef);
4097
4474
  });
4098
- var RenderItemContext = (0, import_react46.createContext)(
4475
+ var RenderItemContext = (0, import_react48.createContext)(
4099
4476
  () => null
4100
4477
  );
4101
- var VirtualizedListRow = (0, import_react46.memo)(function VirtualizedListRow2({
4478
+ var VirtualizedListRow = (0, import_react48.memo)(function VirtualizedListRow2({
4102
4479
  index,
4103
4480
  style: style3
4104
4481
  }) {
4105
- const renderItem = (0, import_react46.useContext)(RenderItemContext);
4106
- return /* @__PURE__ */ import_react46.default.createElement("div", { key: index, style: style3 }, renderItem(index));
4482
+ const renderItem = (0, import_react48.useContext)(RenderItemContext);
4483
+ return /* @__PURE__ */ import_react48.default.createElement("div", { key: index, style: style3 }, renderItem(index));
4107
4484
  });
4108
- var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedListInner2({
4485
+ var VirtualizedListInner = (0, import_react48.forwardRef)(function VirtualizedListInner2({
4109
4486
  size: size2,
4110
4487
  scrollElement,
4111
4488
  items,
@@ -4113,20 +4490,20 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
4113
4490
  keyExtractor,
4114
4491
  renderItem
4115
4492
  }, ref) {
4116
- const listRef = (0, import_react46.useRef)(null);
4117
- (0, import_react46.useImperativeHandle)(ref, () => ({
4493
+ const listRef = (0, import_react48.useRef)(null);
4494
+ (0, import_react48.useImperativeHandle)(ref, () => ({
4118
4495
  scrollToIndex(index) {
4119
4496
  listRef.current?.scrollToItem(index);
4120
4497
  }
4121
4498
  }));
4122
- (0, import_react46.useLayoutEffect)(() => {
4499
+ (0, import_react48.useLayoutEffect)(() => {
4123
4500
  listRef.current?.resetAfterIndex(0);
4124
4501
  }, [
4125
4502
  // When items change, we need to re-render the virtualized list,
4126
4503
  // since it doesn't currently support row height changes
4127
4504
  items
4128
4505
  ]);
4129
- const listStyle = (0, import_react46.useMemo)(
4506
+ const listStyle = (0, import_react48.useMemo)(
4130
4507
  () => ({
4131
4508
  overflowX: "initial",
4132
4509
  overflowY: "initial",
@@ -4134,18 +4511,18 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
4134
4511
  }),
4135
4512
  []
4136
4513
  );
4137
- return /* @__PURE__ */ import_react46.default.createElement(RenderItemContext.Provider, { value: renderItem }, /* @__PURE__ */ import_react46.default.createElement(
4514
+ return /* @__PURE__ */ import_react48.default.createElement(RenderItemContext.Provider, { value: renderItem }, /* @__PURE__ */ import_react48.default.createElement(
4138
4515
  import_react_virtualized.WindowScroller,
4139
4516
  {
4140
4517
  scrollElement,
4141
- style: (0, import_react46.useMemo)(() => ({ flex: "1 1 auto" }), [])
4518
+ style: (0, import_react48.useMemo)(() => ({ flex: "1 1 auto" }), [])
4142
4519
  },
4143
- (0, import_react46.useCallback)(
4520
+ (0, import_react48.useCallback)(
4144
4521
  ({
4145
4522
  registerChild,
4146
4523
  onChildScroll,
4147
4524
  scrollTop
4148
- }) => /* @__PURE__ */ import_react46.default.createElement("div", { ref: registerChild }, /* @__PURE__ */ import_react46.default.createElement(
4525
+ }) => /* @__PURE__ */ import_react48.default.createElement("div", { ref: registerChild }, /* @__PURE__ */ import_react48.default.createElement(
4149
4526
  import_react_window.VariableSizeList,
4150
4527
  {
4151
4528
  ref: listRef,
@@ -4175,7 +4552,7 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
4175
4552
  )
4176
4553
  ));
4177
4554
  });
4178
- var VirtualizedList = (0, import_react46.memo)(
4555
+ var VirtualizedList = (0, import_react48.memo)(
4179
4556
  VirtualizedListInner
4180
4557
  );
4181
4558
  var RootContainer2 = import_styled_components25.default.div(({ theme, scrollable, gap }) => ({
@@ -4186,7 +4563,7 @@ var RootContainer2 = import_styled_components25.default.div(({ theme, scrollable
4186
4563
  color: theme.colors.textMuted,
4187
4564
  gap
4188
4565
  }));
4189
- var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInner2({
4566
+ var ListViewRootInner = (0, import_react48.forwardRef)(function ListViewRootInner2({
4190
4567
  onPress,
4191
4568
  scrollable = false,
4192
4569
  expandable = true,
@@ -4205,7 +4582,7 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4205
4582
  colorScheme = "primary",
4206
4583
  gap = 0
4207
4584
  }, forwardedRef) {
4208
- const handleClick = (0, import_react46.useCallback)(
4585
+ const handleClick = (0, import_react48.useCallback)(
4209
4586
  (event) => {
4210
4587
  if (event.target instanceof HTMLElement && event.target.classList.contains("scroll-component"))
4211
4588
  return;
@@ -4215,19 +4592,19 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4215
4592
  },
4216
4593
  [onPress]
4217
4594
  );
4218
- const renderChild = (0, import_react46.useCallback)(
4595
+ const renderChild = (0, import_react48.useCallback)(
4219
4596
  (index) => renderItem(data[index], index, { isDragging: false }),
4220
4597
  [data, renderItem]
4221
4598
  );
4222
- const getItemContextValue = (0, import_react46.useCallback)(
4599
+ const getItemContextValue = (0, import_react48.useCallback)(
4223
4600
  (i) => {
4224
4601
  const current = renderChild(i);
4225
- if (!(0, import_react46.isValidElement)(current))
4602
+ if (!(0, import_react48.isValidElement)(current))
4226
4603
  return;
4227
4604
  const prevChild = i - 1 >= 0 && renderChild(i - 1);
4228
4605
  const nextChild = i + 1 < data.length && renderChild(i + 1);
4229
- const next = (0, import_react46.isValidElement)(nextChild) ? nextChild : void 0;
4230
- const prev = (0, import_react46.isValidElement)(prevChild) ? prevChild : void 0;
4606
+ const next = (0, import_react48.isValidElement)(nextChild) ? nextChild : void 0;
4607
+ const prev = (0, import_react48.isValidElement)(prevChild) ? prevChild : void 0;
4231
4608
  const hasMarginTop = !prev;
4232
4609
  const hasMarginBottom = !next || current.props.isSectionHeader || next && next.props.isSectionHeader;
4233
4610
  let marginType;
@@ -4279,26 +4656,26 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4279
4656
  gap
4280
4657
  ]
4281
4658
  );
4282
- const draggingContextOverlayValue = (0, import_react46.useMemo)(
4659
+ const draggingContextOverlayValue = (0, import_react48.useMemo)(
4283
4660
  () => ({ indentation, isDragging: true }),
4284
4661
  [indentation]
4285
4662
  );
4286
- const renderOverlay = (0, import_react46.useCallback)(
4287
- (index) => /* @__PURE__ */ import_react46.default.createElement("div", { style: { opacity: 0.25 } }, /* @__PURE__ */ import_react46.default.createElement(DraggingContext.Provider, { value: draggingContextOverlayValue }, renderItem(data[index], index, { isDragging: true }))),
4663
+ const renderOverlay = (0, import_react48.useCallback)(
4664
+ (index) => /* @__PURE__ */ import_react48.default.createElement("div", { style: { opacity: 0.25 } }, /* @__PURE__ */ import_react48.default.createElement(DraggingContext.Provider, { value: draggingContextOverlayValue }, renderItem(data[index], index, { isDragging: true }))),
4288
4665
  [draggingContextOverlayValue, renderItem, data]
4289
4666
  );
4290
- const renderWrappedChild = (0, import_react46.useCallback)(
4667
+ const renderWrappedChild = (0, import_react48.useCallback)(
4291
4668
  (index) => {
4292
4669
  const contextValue = getItemContextValue(index);
4293
4670
  const current = renderChild(index);
4294
- if (!contextValue || !(0, import_react46.isValidElement)(current))
4671
+ if (!contextValue || !(0, import_react48.isValidElement)(current))
4295
4672
  return null;
4296
- return /* @__PURE__ */ import_react46.default.createElement(ListRowContext.Provider, { key: current.key, value: contextValue }, current);
4673
+ return /* @__PURE__ */ import_react48.default.createElement(ListRowContext.Provider, { key: current.key, value: contextValue }, current);
4297
4674
  },
4298
4675
  [getItemContextValue, renderChild]
4299
4676
  );
4300
- const ids = (0, import_react46.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
4301
- const withSortable = (children) => sortable ? /* @__PURE__ */ import_react46.default.createElement(
4677
+ const ids = (0, import_react48.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
4678
+ const withSortable = (children) => sortable ? /* @__PURE__ */ import_react48.default.createElement(
4302
4679
  Sortable.Root,
4303
4680
  {
4304
4681
  onMoveItem,
@@ -4308,8 +4685,8 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4308
4685
  },
4309
4686
  children
4310
4687
  ) : children;
4311
- const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react46.default.createElement(ScrollArea, null, children) : children(null);
4312
- const getItemHeight = (0, import_react46.useCallback)(
4688
+ const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react48.default.createElement(ScrollArea, null, children) : children(null);
4689
+ const getItemHeight = (0, import_react48.useCallback)(
4313
4690
  (index) => {
4314
4691
  const child = getItemContextValue(index);
4315
4692
  const margin = child?.marginType ? getPositionMargin(child.marginType) : { top: 0, bottom: 0 };
@@ -4318,12 +4695,12 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4318
4695
  },
4319
4696
  [getItemContextValue, variant]
4320
4697
  );
4321
- const getKey = (0, import_react46.useCallback)(
4698
+ const getKey = (0, import_react48.useCallback)(
4322
4699
  (index) => keyExtractor(data[index], index),
4323
4700
  [data, keyExtractor]
4324
4701
  );
4325
- const draggingContextValue = (0, import_react46.useMemo)(() => ({ indentation }), [indentation]);
4326
- return /* @__PURE__ */ import_react46.default.createElement(DraggingContext.Provider, { value: draggingContextValue }, /* @__PURE__ */ import_react46.default.createElement(
4702
+ const draggingContextValue = (0, import_react48.useMemo)(() => ({ indentation }), [indentation]);
4703
+ return /* @__PURE__ */ import_react48.default.createElement(DraggingContext.Provider, { value: draggingContextValue }, /* @__PURE__ */ import_react48.default.createElement(
4327
4704
  RootContainer2,
4328
4705
  {
4329
4706
  ...{
@@ -4334,7 +4711,7 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4334
4711
  },
4335
4712
  withScrollable(
4336
4713
  (scrollElementRef) => withSortable(
4337
- virtualized ? /* @__PURE__ */ import_react46.default.createElement(
4714
+ virtualized ? /* @__PURE__ */ import_react48.default.createElement(
4338
4715
  VirtualizedList,
4339
4716
  {
4340
4717
  ref: forwardedRef,
@@ -4345,47 +4722,47 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4345
4722
  keyExtractor: getKey,
4346
4723
  renderItem: renderWrappedChild
4347
4724
  }
4348
- ) : (0, import_noya_utils7.range)(0, data.length).map(renderWrappedChild)
4725
+ ) : (0, import_noya_utils8.range)(0, data.length).map(renderWrappedChild)
4349
4726
  )
4350
4727
  )
4351
4728
  ));
4352
4729
  });
4353
- var ListViewRoot = (0, import_react46.memo)(ListViewRootInner);
4354
- var ChildrenListViewInner = (0, import_react46.forwardRef)(function ChildrenListViewInner2({ children, ...rest }, forwardedRef) {
4355
- const items = (0, import_react46.useMemo)(
4356
- () => import_react46.Children.toArray(children).flatMap(
4357
- (child) => (0, import_react46.isValidElement)(child) ? [child] : []
4730
+ var ListViewRoot = (0, import_react48.memo)(ListViewRootInner);
4731
+ var ChildrenListViewInner = (0, import_react48.forwardRef)(function ChildrenListViewInner2({ children, ...rest }, forwardedRef) {
4732
+ const items = (0, import_react48.useMemo)(
4733
+ () => import_react48.Children.toArray(children).flatMap(
4734
+ (child) => (0, import_react48.isValidElement)(child) ? [child] : []
4358
4735
  ),
4359
4736
  [children]
4360
4737
  );
4361
- return /* @__PURE__ */ import_react46.default.createElement(
4738
+ return /* @__PURE__ */ import_react48.default.createElement(
4362
4739
  ListViewRoot,
4363
4740
  {
4364
4741
  ref: forwardedRef,
4365
4742
  ...rest,
4366
4743
  data: items,
4367
- keyExtractor: (0, import_react46.useCallback)(
4744
+ keyExtractor: (0, import_react48.useCallback)(
4368
4745
  ({ key }, index) => typeof key === "string" ? key : (key ?? index).toString(),
4369
4746
  []
4370
4747
  ),
4371
- renderItem: (0, import_react46.useCallback)((item) => item, [])
4748
+ renderItem: (0, import_react48.useCallback)((item) => item, [])
4372
4749
  }
4373
4750
  );
4374
4751
  });
4375
- var ChildrenListView = (0, import_react46.memo)(ChildrenListViewInner);
4376
- var SimpleListViewInner = (0, import_react46.forwardRef)(function SimpleListViewInner2(props, forwardedRef) {
4752
+ var ChildrenListView = (0, import_react48.memo)(ChildrenListViewInner);
4753
+ var SimpleListViewInner = (0, import_react48.forwardRef)(function SimpleListViewInner2(props, forwardedRef) {
4377
4754
  if ("children" in props) {
4378
- return /* @__PURE__ */ import_react46.default.createElement(ChildrenListView, { ref: forwardedRef, ...props });
4755
+ return /* @__PURE__ */ import_react48.default.createElement(ChildrenListView, { ref: forwardedRef, ...props });
4379
4756
  } else {
4380
- return /* @__PURE__ */ import_react46.default.createElement(ListViewRoot, { ref: forwardedRef, ...props });
4757
+ return /* @__PURE__ */ import_react48.default.createElement(ListViewRoot, { ref: forwardedRef, ...props });
4381
4758
  }
4382
4759
  });
4383
- var SimpleListView = (0, import_react46.memo)(SimpleListViewInner);
4760
+ var SimpleListView = (0, import_react48.memo)(SimpleListViewInner);
4384
4761
  var ListView;
4385
4762
  ((ListView2) => {
4386
- ListView2.RowTitle = (0, import_react46.memo)(ListViewRowTitle);
4387
- ListView2.EditableRowTitle = (0, import_react46.memo)(ListViewEditableRowTitle);
4388
- ListView2.Row = (0, import_react46.memo)(ListViewRow);
4763
+ ListView2.RowTitle = (0, import_react48.memo)(ListViewRowTitle);
4764
+ ListView2.EditableRowTitle = (0, import_react48.memo)(ListViewEditableRowTitle);
4765
+ ListView2.Row = (0, import_react48.memo)(ListViewRow);
4389
4766
  ListView2.Root = SimpleListView;
4390
4767
  ListView2.RowContext = ListRowContext;
4391
4768
  ListView2.DragIndicator = ListViewDragIndicatorElement;
@@ -4398,7 +4775,7 @@ var ListView;
4398
4775
  })(ListView || (ListView = {}));
4399
4776
 
4400
4777
  // src/components/Text.tsx
4401
- var import_react47 = __toESM(require("react"));
4778
+ var import_react49 = __toESM(require("react"));
4402
4779
  var import_styled_components26 = __toESM(require("styled-components"));
4403
4780
  var elements = {
4404
4781
  title: "h1",
@@ -4410,6 +4787,7 @@ var elements = {
4410
4787
  heading5: "h5",
4411
4788
  body: "p",
4412
4789
  small: "span",
4790
+ button: "span",
4413
4791
  code: "code",
4414
4792
  label: "span"
4415
4793
  };
@@ -4419,7 +4797,7 @@ var StyledElement = import_styled_components26.default.span(({ theme, variant, s
4419
4797
  ...styleProps,
4420
4798
  ...mergeBreakpoints(breakpoints || [])
4421
4799
  }));
4422
- var Text = (0, import_react47.forwardRef)(function Text2({
4800
+ var Text = (0, import_react49.forwardRef)(function Text2({
4423
4801
  as,
4424
4802
  variant,
4425
4803
  breakpoints,
@@ -4431,7 +4809,7 @@ var Text = (0, import_react47.forwardRef)(function Text2({
4431
4809
  ...rest
4432
4810
  }, forwardedRef) {
4433
4811
  const element = as ?? elements[variant] ?? "span";
4434
- return /* @__PURE__ */ import_react47.default.createElement(
4812
+ return /* @__PURE__ */ import_react49.default.createElement(
4435
4813
  StyledElement,
4436
4814
  {
4437
4815
  ref: forwardedRef,
@@ -4447,28 +4825,28 @@ var Text = (0, import_react47.forwardRef)(function Text2({
4447
4825
  children
4448
4826
  );
4449
4827
  });
4450
- var Heading1 = (0, import_react47.forwardRef)(
4451
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "heading1" })
4828
+ var Heading1 = (0, import_react49.forwardRef)(
4829
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading1" })
4452
4830
  );
4453
- var Heading2 = (0, import_react47.forwardRef)(
4454
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "heading2" })
4831
+ var Heading2 = (0, import_react49.forwardRef)(
4832
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading2" })
4455
4833
  );
4456
- var Heading3 = (0, import_react47.forwardRef)(
4457
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "heading3" })
4834
+ var Heading3 = (0, import_react49.forwardRef)(
4835
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading3" })
4458
4836
  );
4459
- var Heading4 = (0, import_react47.forwardRef)(
4460
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "heading4" })
4837
+ var Heading4 = (0, import_react49.forwardRef)(
4838
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading4" })
4461
4839
  );
4462
- var Heading5 = (0, import_react47.forwardRef)(
4463
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "heading5" })
4840
+ var Heading5 = (0, import_react49.forwardRef)(
4841
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading5" })
4464
4842
  );
4465
- var Body = (0, import_react47.forwardRef)(
4466
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "body" })
4843
+ var Body = (0, import_react49.forwardRef)(
4844
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "body" })
4467
4845
  );
4468
- var Small = (0, import_react47.forwardRef)(
4469
- (props, ref) => /* @__PURE__ */ import_react47.default.createElement(Text, { ref, ...props, variant: "small" })
4846
+ var Small = (0, import_react49.forwardRef)(
4847
+ (props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "small" })
4470
4848
  );
4471
- var Italic = ({ children }) => /* @__PURE__ */ import_react47.default.createElement(
4849
+ var Italic = ({ children }) => /* @__PURE__ */ import_react49.default.createElement(
4472
4850
  "span",
4473
4851
  {
4474
4852
  style: {
@@ -4480,9 +4858,9 @@ var Italic = ({ children }) => /* @__PURE__ */ import_react47.default.createElem
4480
4858
 
4481
4859
  // src/components/InputFieldWithCompletions.tsx
4482
4860
  function filterWithGroupedSections(items, query) {
4483
- const sections = (0, import_noya_utils8.chunkBy)(items, (a, b) => b.type !== "sectionHeader");
4861
+ const sections = (0, import_noya_utils9.chunkBy)(items, (a, b) => b.type !== "sectionHeader");
4484
4862
  return sections.flatMap((section) => {
4485
- const [headers, regular] = (0, import_noya_utils8.partition)(
4863
+ const [headers, regular] = (0, import_noya_utils9.partition)(
4486
4864
  section,
4487
4865
  (item) => item.type === "sectionHeader"
4488
4866
  );
@@ -4510,15 +4888,15 @@ var CompletionToken = import_styled_components27.default.span(
4510
4888
  whiteSpace: "pre"
4511
4889
  })
4512
4890
  );
4513
- var CompletionMenu = (0, import_react48.memo)(
4514
- (0, import_react48.forwardRef)(function CompletionMenu2({
4891
+ var CompletionMenu = (0, import_react50.memo)(
4892
+ (0, import_react50.forwardRef)(function CompletionMenu2({
4515
4893
  items,
4516
4894
  selectedIndex,
4517
4895
  onSelectItem,
4518
4896
  onHoverIndex,
4519
4897
  listSize
4520
4898
  }, forwardedRef) {
4521
- return /* @__PURE__ */ import_react48.default.createElement(
4899
+ return /* @__PURE__ */ import_react50.default.createElement(
4522
4900
  ListView.Root,
4523
4901
  {
4524
4902
  ref: forwardedRef,
@@ -4530,13 +4908,13 @@ var CompletionMenu = (0, import_react48.memo)(
4530
4908
  sectionHeaderVariant: "label",
4531
4909
  renderItem: (item, i) => {
4532
4910
  if (item.type === "sectionHeader") {
4533
- return /* @__PURE__ */ import_react48.default.createElement(ListView.Row, { key: item.id, isSectionHeader: true }, item.name);
4911
+ return /* @__PURE__ */ import_react50.default.createElement(ListView.Row, { key: item.id, isSectionHeader: true }, item.name);
4534
4912
  }
4535
4913
  const tokens = fuzzyTokenize({
4536
4914
  item: item.name,
4537
4915
  itemScore: item
4538
4916
  });
4539
- return /* @__PURE__ */ import_react48.default.createElement(
4917
+ return /* @__PURE__ */ import_react50.default.createElement(
4540
4918
  ListView.Row,
4541
4919
  {
4542
4920
  key: item.id,
@@ -4548,16 +4926,16 @@ var CompletionMenu = (0, import_react48.memo)(
4548
4926
  }
4549
4927
  }
4550
4928
  },
4551
- tokens.map((token, j) => /* @__PURE__ */ import_react48.default.createElement(CompletionToken, { key: j, type: token.type }, token.text)),
4552
- item.icon && /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement(Spacer.Horizontal, null), item.icon)
4929
+ tokens.map((token, j) => /* @__PURE__ */ import_react50.default.createElement(CompletionToken, { key: j, type: token.type }, token.text)),
4930
+ item.icon && /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement(Spacer.Horizontal, null), item.icon)
4553
4931
  );
4554
4932
  }
4555
4933
  }
4556
4934
  );
4557
4935
  })
4558
4936
  );
4559
- var InputFieldWithCompletions = (0, import_react48.memo)(
4560
- (0, import_react48.forwardRef)(function InputFieldWithCompletions2({
4937
+ var InputFieldWithCompletions = (0, import_react50.memo)(
4938
+ (0, import_react50.forwardRef)(function InputFieldWithCompletions2({
4561
4939
  loading,
4562
4940
  initialValue = "",
4563
4941
  placeholder,
@@ -4575,13 +4953,13 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4575
4953
  hideChildrenWhenFocused = false,
4576
4954
  hideMenuWhenEmptyValue = false
4577
4955
  }, forwardedRef) {
4578
- const ref = (0, import_react48.useRef)(null);
4579
- const [isFocused, setIsFocused] = (0, import_react48.useState)(false);
4580
- const [state, _setState] = (0, import_react48.useState)({
4956
+ const ref = (0, import_react50.useRef)(null);
4957
+ const [isFocused, setIsFocused] = (0, import_react50.useState)(false);
4958
+ const [state, _setState] = (0, import_react50.useState)({
4581
4959
  filter: initialValue,
4582
4960
  selectedIndex: 0
4583
4961
  });
4584
- const updateState = (0, import_react48.useCallback)(
4962
+ const updateState = (0, import_react50.useCallback)(
4585
4963
  (newState, hoverItem) => {
4586
4964
  const nextState = { ...state, ...newState };
4587
4965
  const nextItems = filterWithGroupedSections(items, nextState.filter);
@@ -4610,20 +4988,20 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4610
4988
  },
4611
4989
  [items, onChange, onHoverItem, state]
4612
4990
  );
4613
- const initialValueRef = (0, import_react48.useRef)(initialValue);
4614
- (0, import_react48.useLayoutEffect)(() => {
4991
+ const initialValueRef = (0, import_react50.useRef)(initialValue);
4992
+ (0, import_react50.useLayoutEffect)(() => {
4615
4993
  if (initialValueRef.current === initialValue)
4616
4994
  return;
4617
4995
  initialValueRef.current = initialValue;
4618
4996
  updateState({ filter: initialValue });
4619
4997
  }, [initialValue, updateState]);
4620
4998
  const { filter, selectedIndex } = state;
4621
- const listRef = import_react48.default.useRef(null);
4622
- const filteredItems = (0, import_react48.useMemo)(
4999
+ const listRef = import_react50.default.useRef(null);
5000
+ const filteredItems = (0, import_react50.useMemo)(
4623
5001
  () => filterWithGroupedSections(items, filter),
4624
5002
  [items, filter]
4625
5003
  );
4626
- const [normalItems, sectionHeaderItems] = (0, import_noya_utils8.partition)(
5004
+ const [normalItems, sectionHeaderItems] = (0, import_noya_utils9.partition)(
4627
5005
  filteredItems,
4628
5006
  (item) => item.type !== "sectionHeader"
4629
5007
  );
@@ -4635,13 +5013,13 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4635
5013
  ),
4636
5014
  ListView.rowHeight * 10.5
4637
5015
  );
4638
- (0, import_react48.useEffect)(() => {
5016
+ (0, import_react50.useEffect)(() => {
4639
5017
  if (listRef.current) {
4640
5018
  listRef.current.scrollToIndex(selectedIndex);
4641
5019
  }
4642
5020
  }, [selectedIndex]);
4643
- const lastSubmittedValueRef = (0, import_react48.useRef)(void 0);
4644
- const selectItem = (0, import_react48.useCallback)(
5021
+ const lastSubmittedValueRef = (0, import_react50.useRef)(void 0);
5022
+ const selectItem = (0, import_react50.useCallback)(
4645
5023
  (item) => {
4646
5024
  if (item.type === "sectionHeader")
4647
5025
  return;
@@ -4657,17 +5035,17 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4657
5035
  },
4658
5036
  [filter, onSelectItem, onHoverItem, ref]
4659
5037
  );
4660
- const handleChange = (0, import_react48.useCallback)(
5038
+ const handleChange = (0, import_react50.useCallback)(
4661
5039
  (value) => updateState({ selectedIndex: 0, filter: value }),
4662
5040
  [updateState]
4663
5041
  );
4664
- const handleBlur = (0, import_react48.useCallback)(() => {
5042
+ const handleBlur = (0, import_react50.useCallback)(() => {
4665
5043
  setIsFocused(false);
4666
5044
  const didSubmit = lastSubmittedValueRef.current?.filter === filter;
4667
5045
  updateState({ selectedIndex: 0, filter: initialValue }, "resetHover");
4668
5046
  onBlur?.(didSubmit, filter);
4669
5047
  }, [filter, initialValue, onBlur, updateState]);
4670
- const handleFocus = (0, import_react48.useCallback)(
5048
+ const handleFocus = (0, import_react50.useCallback)(
4671
5049
  (event) => {
4672
5050
  setIsFocused(true);
4673
5051
  updateState({ selectedIndex: 0, filter: initialValue });
@@ -4675,11 +5053,11 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4675
5053
  },
4676
5054
  [initialValue, onFocus, updateState]
4677
5055
  );
4678
- const handleIndexChange = (0, import_react48.useCallback)(
5056
+ const handleIndexChange = (0, import_react50.useCallback)(
4679
5057
  (index) => updateState({ selectedIndex: index }),
4680
5058
  [updateState]
4681
5059
  );
4682
- const handleKeyDown = (0, import_react48.useCallback)(
5060
+ const handleKeyDown = (0, import_react50.useCallback)(
4683
5061
  (event) => {
4684
5062
  let handled = false;
4685
5063
  switch (event.key) {
@@ -4743,7 +5121,7 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4743
5121
  );
4744
5122
  const display = !filter && hideMenuWhenEmptyValue ? "none" : "flex";
4745
5123
  const typeaheadValue = filteredItems[selectedIndex]?.name;
4746
- (0, import_react48.useImperativeHandle)(forwardedRef, () => ({
5124
+ (0, import_react50.useImperativeHandle)(forwardedRef, () => ({
4747
5125
  focus: () => {
4748
5126
  ref.current?.focus();
4749
5127
  },
@@ -4754,14 +5132,14 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4754
5132
  ref.current?.setSelectionRange(0, ref.current.value.length);
4755
5133
  }
4756
5134
  }));
4757
- return /* @__PURE__ */ import_react48.default.createElement(
5135
+ return /* @__PURE__ */ import_react50.default.createElement(
4758
5136
  InputField.Root,
4759
5137
  {
4760
5138
  size: size2,
4761
5139
  labelSize: 16,
4762
5140
  renderPopoverContent: ({ width }) => {
4763
5141
  const listSize = { width, height };
4764
- return /* @__PURE__ */ import_react48.default.createElement(Stack.V, { flex: `0 0 ${height}px`, display }, filteredItems.length > 0 ? /* @__PURE__ */ import_react48.default.createElement(
5142
+ return /* @__PURE__ */ import_react50.default.createElement(Stack.V, { flex: `0 0 ${height}px`, display }, filteredItems.length > 0 ? /* @__PURE__ */ import_react50.default.createElement(
4765
5143
  CompletionMenu,
4766
5144
  {
4767
5145
  ref: listRef,
@@ -4771,7 +5149,7 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4771
5149
  onHoverIndex: handleIndexChange,
4772
5150
  listSize
4773
5151
  }
4774
- ) : /* @__PURE__ */ import_react48.default.createElement(
5152
+ ) : /* @__PURE__ */ import_react50.default.createElement(
4775
5153
  Stack.V,
4776
5154
  {
4777
5155
  height: "100px",
@@ -4779,11 +5157,11 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4779
5157
  alignItems: "center",
4780
5158
  justifyContent: "center"
4781
5159
  },
4782
- /* @__PURE__ */ import_react48.default.createElement(Small, { color: "textDisabled" }, loading ? "Loading" : "No results")
5160
+ /* @__PURE__ */ import_react50.default.createElement(Small, { color: "textDisabled" }, loading ? "Loading" : "No results")
4783
5161
  ));
4784
5162
  }
4785
5163
  },
4786
- /* @__PURE__ */ import_react48.default.createElement(
5164
+ /* @__PURE__ */ import_react50.default.createElement(
4787
5165
  InputField.Input,
4788
5166
  {
4789
5167
  ref,
@@ -4807,9 +5185,9 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4807
5185
  "aria-controls": "component-listbox"
4808
5186
  }
4809
5187
  ),
4810
- filter && typeaheadValue && typeaheadValue.startsWith(filter) && /* @__PURE__ */ import_react48.default.createElement(InputField.Typeahead, { value: typeaheadValue }),
5188
+ filter && typeaheadValue && typeaheadValue.startsWith(filter) && /* @__PURE__ */ import_react50.default.createElement(InputField.Typeahead, { value: typeaheadValue }),
4811
5189
  (!isFocused || !hideChildrenWhenFocused) && children,
4812
- loading && isFocused && /* @__PURE__ */ import_react48.default.createElement(InputField.Label, null, /* @__PURE__ */ import_react48.default.createElement(ActivityIndicator, null))
5190
+ loading && isFocused && /* @__PURE__ */ import_react50.default.createElement(InputField.Label, null, /* @__PURE__ */ import_react50.default.createElement(ActivityIndicator, null))
4813
5191
  );
4814
5192
  })
4815
5193
  );
@@ -4831,7 +5209,7 @@ function getNextIndex(items, currentIndex, direction, isDisabled) {
4831
5209
  }
4832
5210
 
4833
5211
  // src/components/Label.tsx
4834
- var import_react49 = __toESM(require("react"));
5212
+ var import_react51 = __toESM(require("react"));
4835
5213
  var import_styled_components28 = __toESM(require("styled-components"));
4836
5214
  var LabelLabel = import_styled_components28.default.label(
4837
5215
  ({ theme, selected }) => ({
@@ -4860,17 +5238,17 @@ var LabelContainer2 = import_styled_components28.default.span(({ theme }) => ({
4860
5238
  alignItems: "center"
4861
5239
  }));
4862
5240
  function LabelRoot({ label, children }) {
4863
- return /* @__PURE__ */ import_react49.default.createElement(LabelContainer2, null, children, label && /* @__PURE__ */ import_react49.default.createElement(import_react49.default.Fragment, null, /* @__PURE__ */ import_react49.default.createElement(Spacer.Vertical, { size: 2 }), /* @__PURE__ */ import_react49.default.createElement(LabelLabel, null, label)));
5241
+ return /* @__PURE__ */ import_react51.default.createElement(LabelContainer2, null, children, label && /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, /* @__PURE__ */ import_react51.default.createElement(Spacer.Vertical, { size: 2 }), /* @__PURE__ */ import_react51.default.createElement(LabelLabel, null, label)));
4864
5242
  }
4865
5243
  var Label;
4866
5244
  ((_Label) => {
4867
- _Label.Label = (0, import_react49.memo)(LabelLabel);
4868
- _Label.Root = (0, import_react49.memo)(LabelRoot);
5245
+ _Label.Label = (0, import_react51.memo)(LabelLabel);
5246
+ _Label.Root = (0, import_react51.memo)(LabelRoot);
4869
5247
  })(Label || (Label = {}));
4870
5248
 
4871
5249
  // src/components/LabeledElementView.tsx
4872
5250
  var kiwi = __toESM(require("kiwi.js"));
4873
- var import_react50 = __toESM(require("react"));
5251
+ var import_react52 = __toESM(require("react"));
4874
5252
  var import_styled_components29 = __toESM(require("styled-components"));
4875
5253
  var Container4 = import_styled_components29.default.div(({ theme }) => ({
4876
5254
  display: "flex",
@@ -4889,24 +5267,24 @@ var Labels = import_styled_components29.default.div(({ theme }) => ({
4889
5267
  overflow: "hidden",
4890
5268
  userSelect: "none"
4891
5269
  }));
4892
- var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
5270
+ var LabeledElementView = (0, import_react52.memo)(function LabeledElementView2({
4893
5271
  children,
4894
5272
  renderLabel
4895
5273
  }) {
4896
- const elementIds = import_react50.Children.toArray(children).flatMap(
4897
- (child) => (0, import_react50.isValidElement)(child) && child.type === import_react50.Fragment ? child.props.children : [child]
5274
+ const elementIds = import_react52.Children.toArray(children).flatMap(
5275
+ (child) => (0, import_react52.isValidElement)(child) && child.type === import_react52.Fragment ? child.props.children : [child]
4898
5276
  ).map(
4899
- (child) => (0, import_react50.isValidElement)(child) && "id" in child.props ? child.props.id : null
5277
+ (child) => (0, import_react52.isValidElement)(child) && "id" in child.props ? child.props.id : null
4900
5278
  ).filter((id) => !!id);
4901
5279
  const serializedIds = elementIds.join(",");
4902
- const containerRef = (0, import_react50.useRef)(null);
4903
- const refs = (0, import_react50.useMemo)(() => {
5280
+ const containerRef = (0, import_react52.useRef)(null);
5281
+ const refs = (0, import_react52.useMemo)(() => {
4904
5282
  return Object.fromEntries(
4905
- serializedIds.split(",").map((id) => [id, (0, import_react50.createRef)()])
5283
+ serializedIds.split(",").map((id) => [id, (0, import_react52.createRef)()])
4906
5284
  );
4907
5285
  }, [serializedIds]);
4908
- const labelElements = (0, import_react50.useMemo)(() => {
4909
- return serializedIds.split(",").map((id, index) => /* @__PURE__ */ import_react50.default.createElement(
5286
+ const labelElements = (0, import_react52.useMemo)(() => {
5287
+ return serializedIds.split(",").map((id, index) => /* @__PURE__ */ import_react52.default.createElement(
4910
5288
  "span",
4911
5289
  {
4912
5290
  key: id,
@@ -4919,7 +5297,7 @@ var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
4919
5297
  })
4920
5298
  ));
4921
5299
  }, [refs, serializedIds, renderLabel]);
4922
- (0, import_react50.useLayoutEffect)(() => {
5300
+ (0, import_react52.useLayoutEffect)(() => {
4923
5301
  if (!containerRef.current)
4924
5302
  return;
4925
5303
  const containerRect = containerRef.current.getBoundingClientRect();
@@ -4984,13 +5362,13 @@ var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
4984
5362
  `${Math.max(...heights)}px`
4985
5363
  );
4986
5364
  }, [refs, labelElements]);
4987
- return /* @__PURE__ */ import_react50.default.createElement(Container4, { ref: containerRef }, /* @__PURE__ */ import_react50.default.createElement(Tools, null, children), /* @__PURE__ */ import_react50.default.createElement(Labels, null, labelElements));
5365
+ return /* @__PURE__ */ import_react52.default.createElement(Container4, { ref: containerRef }, /* @__PURE__ */ import_react52.default.createElement(Tools, null, children), /* @__PURE__ */ import_react52.default.createElement(Labels, null, labelElements));
4988
5366
  });
4989
5367
 
4990
5368
  // src/components/Progress.tsx
4991
- var import_noya_utils9 = require("@noya-app/noya-utils");
5369
+ var import_noya_utils10 = require("@noya-app/noya-utils");
4992
5370
  var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
4993
- var import_react51 = __toESM(require("react"));
5371
+ var import_react53 = __toESM(require("react"));
4994
5372
  var import_styled_components30 = __toESM(require("styled-components"));
4995
5373
  function Progress({
4996
5374
  value,
@@ -4999,8 +5377,8 @@ function Progress({
4999
5377
  flex,
5000
5378
  variant = "normal"
5001
5379
  }) {
5002
- const clampedValue = (0, import_noya_utils9.clamp)(value, 0, 100);
5003
- return /* @__PURE__ */ import_react51.default.createElement(ProgressRoot, { value: clampedValue, style: { width, flex, height } }, /* @__PURE__ */ import_react51.default.createElement(
5380
+ const clampedValue = (0, import_noya_utils10.clamp)(value, 0, 100);
5381
+ return /* @__PURE__ */ import_react53.default.createElement(ProgressRoot, { value: clampedValue, style: { width, flex, height } }, /* @__PURE__ */ import_react53.default.createElement(
5004
5382
  ProgressIndicator,
5005
5383
  {
5006
5384
  variant,
@@ -5025,7 +5403,7 @@ var ProgressIndicator = (0, import_styled_components30.default)(ProgressPrimitiv
5025
5403
 
5026
5404
  // src/components/RadioGroup.tsx
5027
5405
  var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"));
5028
- var import_react52 = __toESM(require("react"));
5406
+ var import_react54 = __toESM(require("react"));
5029
5407
  var import_styled_components31 = __toESM(require("styled-components"));
5030
5408
  var ignoredProps3 = /* @__PURE__ */ new Set(["colorScheme"]);
5031
5409
  var StyledRoot = (0, import_styled_components31.default)(ToggleGroupPrimitive.Root).withConfig({
@@ -5078,9 +5456,9 @@ var StyledItem = (0, import_styled_components31.default)(ToggleGroupPrimitive.It
5078
5456
  boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors[colorScheme ?? "primary"]}`
5079
5457
  }
5080
5458
  }));
5081
- var ToggleGroupItem = (0, import_react52.forwardRef)(function ToggleGroupItem2({ value, tooltip, children, disabled = false }, forwardedRef) {
5082
- const { colorScheme } = (0, import_react52.useContext)(RadioGroupContext);
5083
- const itemElement = /* @__PURE__ */ import_react52.default.createElement(
5459
+ var ToggleGroupItem = (0, import_react54.forwardRef)(function ToggleGroupItem2({ value, tooltip, children, disabled = false }, forwardedRef) {
5460
+ const { colorScheme } = (0, import_react54.useContext)(RadioGroupContext);
5461
+ const itemElement = /* @__PURE__ */ import_react54.default.createElement(
5084
5462
  StyledItem,
5085
5463
  {
5086
5464
  ref: forwardedRef,
@@ -5090,9 +5468,9 @@ var ToggleGroupItem = (0, import_react52.forwardRef)(function ToggleGroupItem2({
5090
5468
  },
5091
5469
  children
5092
5470
  );
5093
- return tooltip ? /* @__PURE__ */ import_react52.default.createElement(Tooltip, { content: tooltip }, itemElement) : itemElement;
5471
+ return tooltip ? /* @__PURE__ */ import_react54.default.createElement(Tooltip, { content: tooltip }, itemElement) : itemElement;
5094
5472
  });
5095
- var RadioGroupContext = (0, import_react52.createContext)({
5473
+ var RadioGroupContext = (0, import_react54.createContext)({
5096
5474
  colorScheme: "primary"
5097
5475
  });
5098
5476
  function ToggleGroupRoot({
@@ -5103,8 +5481,8 @@ function ToggleGroupRoot({
5103
5481
  allowEmpty,
5104
5482
  children
5105
5483
  }) {
5106
- const contextValue = (0, import_react52.useMemo)(() => ({ colorScheme }), [colorScheme]);
5107
- const handleValueChange = (0, import_react52.useCallback)(
5484
+ const contextValue = (0, import_react54.useMemo)(() => ({ colorScheme }), [colorScheme]);
5485
+ const handleValueChange = (0, import_react54.useCallback)(
5108
5486
  (value2) => {
5109
5487
  if (!allowEmpty && !value2)
5110
5488
  return;
@@ -5112,7 +5490,7 @@ function ToggleGroupRoot({
5112
5490
  },
5113
5491
  [allowEmpty, onValueChange]
5114
5492
  );
5115
- return /* @__PURE__ */ import_react52.default.createElement(RadioGroupContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react52.default.createElement(
5493
+ return /* @__PURE__ */ import_react54.default.createElement(RadioGroupContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react54.default.createElement(
5116
5494
  StyledRoot,
5117
5495
  {
5118
5496
  id,
@@ -5126,30 +5504,30 @@ function ToggleGroupRoot({
5126
5504
  }
5127
5505
  var RadioGroup;
5128
5506
  ((RadioGroup2) => {
5129
- RadioGroup2.Root = (0, import_react52.memo)(ToggleGroupRoot);
5130
- RadioGroup2.Item = (0, import_react52.memo)(ToggleGroupItem);
5507
+ RadioGroup2.Root = (0, import_react54.memo)(ToggleGroupRoot);
5508
+ RadioGroup2.Item = (0, import_react54.memo)(ToggleGroupItem);
5131
5509
  })(RadioGroup || (RadioGroup = {}));
5132
5510
 
5133
5511
  // src/components/Select.tsx
5134
- var import_noya_utils10 = require("@noya-app/noya-utils");
5135
- var import_react53 = __toESM(require("react"));
5512
+ var import_noya_utils11 = require("@noya-app/noya-utils");
5513
+ var import_react55 = __toESM(require("react"));
5136
5514
  var import_styled_components32 = __toESM(require("styled-components"));
5137
- var SelectContext = (0, import_react53.createContext)(void 0);
5138
- var SelectOption = (0, import_react53.memo)(function SelectOption2({
5515
+ var SelectContext = (0, import_react55.createContext)(void 0);
5516
+ var SelectOption = (0, import_react55.memo)(function SelectOption2({
5139
5517
  value,
5140
5518
  title,
5141
5519
  onSelect
5142
5520
  }) {
5143
- const { addListener, removeListener } = (0, import_react53.useContext)(SelectContext);
5144
- (0, import_react53.useEffect)(() => {
5521
+ const { addListener, removeListener } = (0, import_react55.useContext)(SelectContext);
5522
+ (0, import_react55.useEffect)(() => {
5145
5523
  if (!onSelect)
5146
5524
  return;
5147
5525
  addListener(value, onSelect);
5148
5526
  return () => removeListener(value);
5149
5527
  }, [addListener, onSelect, removeListener, value]);
5150
- return /* @__PURE__ */ import_react53.default.createElement("option", { value }, title ?? value);
5528
+ return /* @__PURE__ */ import_react55.default.createElement("option", { value }, title ?? value);
5151
5529
  });
5152
- var createChevronSVGString = (0, import_noya_utils10.memoize)(
5530
+ var createChevronSVGString = (0, import_noya_utils11.memoize)(
5153
5531
  (color) => `
5154
5532
  <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${color}'>
5155
5533
  <path d='M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z'></path>
@@ -5187,7 +5565,7 @@ var SelectElement = import_styled_components32.default.select(
5187
5565
  }
5188
5566
  })
5189
5567
  );
5190
- var Select = (0, import_react53.memo)(function Select2({
5568
+ var Select = (0, import_react55.memo)(function Select2({
5191
5569
  id,
5192
5570
  flex,
5193
5571
  value,
@@ -5197,8 +5575,8 @@ var Select = (0, import_react53.memo)(function Select2({
5197
5575
  const getTitle = "options" in rest ? rest.getTitle : void 0;
5198
5576
  const onChange = "options" in rest ? rest.onChange : void 0;
5199
5577
  const children = "options" in rest ? void 0 : rest.children;
5200
- const optionElements = (0, import_react53.useMemo)(
5201
- () => options ? options.map((option, index) => /* @__PURE__ */ import_react53.default.createElement(
5578
+ const optionElements = (0, import_react55.useMemo)(
5579
+ () => options ? options.map((option, index) => /* @__PURE__ */ import_react55.default.createElement(
5202
5580
  SelectOption,
5203
5581
  {
5204
5582
  key: option,
@@ -5209,21 +5587,21 @@ var Select = (0, import_react53.memo)(function Select2({
5209
5587
  )) : children,
5210
5588
  [children, getTitle, onChange, options]
5211
5589
  );
5212
- const listeners = (0, import_react53.useRef)(/* @__PURE__ */ new Map());
5213
- const contextValue = (0, import_react53.useMemo)(
5590
+ const listeners = (0, import_react55.useRef)(/* @__PURE__ */ new Map());
5591
+ const contextValue = (0, import_react55.useMemo)(
5214
5592
  () => ({
5215
5593
  addListener: (value2, listener) => listeners.current.set(value2, listener),
5216
5594
  removeListener: (value2) => listeners.current.delete(value2)
5217
5595
  }),
5218
5596
  []
5219
5597
  );
5220
- return /* @__PURE__ */ import_react53.default.createElement(SelectContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react53.default.createElement(
5598
+ return /* @__PURE__ */ import_react55.default.createElement(SelectContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react55.default.createElement(
5221
5599
  SelectElement,
5222
5600
  {
5223
5601
  id,
5224
5602
  flex,
5225
5603
  value,
5226
- onChange: (0, import_react53.useCallback)(
5604
+ onChange: (0, import_react55.useCallback)(
5227
5605
  (event) => listeners.current.get(event.target.value)?.(),
5228
5606
  [listeners]
5229
5607
  ),
@@ -5235,7 +5613,7 @@ var Select = (0, import_react53.memo)(function Select2({
5235
5613
 
5236
5614
  // src/components/Slider.tsx
5237
5615
  var RadixSlider = __toESM(require("@radix-ui/react-slider"));
5238
- var import_react54 = __toESM(require("react"));
5616
+ var import_react56 = __toESM(require("react"));
5239
5617
  var import_styled_components33 = __toESM(require("styled-components"));
5240
5618
  var StyledSlider = (0, import_styled_components33.default)(RadixSlider.Root)({
5241
5619
  flex: "1",
@@ -5276,17 +5654,17 @@ var Slider = function Slider2({
5276
5654
  min,
5277
5655
  max
5278
5656
  }) {
5279
- const arrayValue = (0, import_react54.useMemo)(
5657
+ const arrayValue = (0, import_react56.useMemo)(
5280
5658
  () => [Math.min(Math.max(value, min), max)],
5281
5659
  [value, min, max]
5282
5660
  );
5283
- const handleValueChange = (0, import_react54.useCallback)(
5661
+ const handleValueChange = (0, import_react56.useCallback)(
5284
5662
  (arrayValue2) => {
5285
5663
  onValueChange(arrayValue2[0]);
5286
5664
  },
5287
5665
  [onValueChange]
5288
5666
  );
5289
- return /* @__PURE__ */ import_react54.default.createElement(
5667
+ return /* @__PURE__ */ import_react56.default.createElement(
5290
5668
  StyledSlider,
5291
5669
  {
5292
5670
  min,
@@ -5295,14 +5673,14 @@ var Slider = function Slider2({
5295
5673
  value: arrayValue,
5296
5674
  onValueChange: handleValueChange
5297
5675
  },
5298
- /* @__PURE__ */ import_react54.default.createElement(StyledTrack, null, /* @__PURE__ */ import_react54.default.createElement(StyledRange, null)),
5299
- /* @__PURE__ */ import_react54.default.createElement(StyledThumb2, null)
5676
+ /* @__PURE__ */ import_react56.default.createElement(StyledTrack, null, /* @__PURE__ */ import_react56.default.createElement(StyledRange, null)),
5677
+ /* @__PURE__ */ import_react56.default.createElement(StyledThumb2, null)
5300
5678
  );
5301
5679
  };
5302
5680
 
5303
5681
  // src/components/Switch.tsx
5304
5682
  var SwitchPrimitive = __toESM(require("@radix-ui/react-switch"));
5305
- var import_react55 = __toESM(require("react"));
5683
+ var import_react57 = __toESM(require("react"));
5306
5684
  var import_styled_components34 = __toESM(require("styled-components"));
5307
5685
  var SwitchRoot = (0, import_styled_components34.default)(SwitchPrimitive.Root)(({ theme, colorScheme: variant }) => ({
5308
5686
  all: "unset",
@@ -5338,7 +5716,7 @@ var Switch = function Switch2({
5338
5716
  onChange,
5339
5717
  colorScheme = "normal"
5340
5718
  }) {
5341
- return /* @__PURE__ */ import_react55.default.createElement(
5719
+ return /* @__PURE__ */ import_react57.default.createElement(
5342
5720
  SwitchRoot,
5343
5721
  {
5344
5722
  colorScheme,
@@ -5347,42 +5725,42 @@ var Switch = function Switch2({
5347
5725
  onChange(newValue);
5348
5726
  }
5349
5727
  },
5350
- /* @__PURE__ */ import_react55.default.createElement(SwitchThumb, null)
5728
+ /* @__PURE__ */ import_react57.default.createElement(SwitchThumb, null)
5351
5729
  );
5352
5730
  };
5353
5731
 
5354
5732
  // src/components/TreeView.tsx
5355
- var import_react56 = __toESM(require("react"));
5356
- var TreeRow = (0, import_react56.forwardRef)(function TreeRow2({
5733
+ var import_react58 = __toESM(require("react"));
5734
+ var TreeRow = (0, import_react58.forwardRef)(function TreeRow2({
5357
5735
  icon,
5358
5736
  expanded,
5359
5737
  onClickChevron,
5360
5738
  children,
5361
5739
  ...rest
5362
5740
  }, forwardedRef) {
5363
- const { expandable } = (0, import_react56.useContext)(ListView.RowContext);
5364
- const handleClickChevron = (0, import_react56.useCallback)(
5741
+ const { expandable } = (0, import_react58.useContext)(ListView.RowContext);
5742
+ const handleClickChevron = (0, import_react58.useCallback)(
5365
5743
  (event) => {
5366
5744
  event.stopPropagation();
5367
5745
  onClickChevron?.({ altKey: event.altKey });
5368
5746
  },
5369
5747
  [onClickChevron]
5370
5748
  );
5371
- return /* @__PURE__ */ import_react56.default.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && /* @__PURE__ */ import_react56.default.createElement(import_react56.default.Fragment, null, expanded === void 0 ? /* @__PURE__ */ import_react56.default.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ import_react56.default.createElement(
5749
+ return /* @__PURE__ */ import_react58.default.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, expanded === void 0 ? /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ import_react58.default.createElement(
5372
5750
  IconButton,
5373
5751
  {
5374
5752
  iconName: expanded ? "ChevronDownIcon" : "ChevronRightIcon",
5375
5753
  onClick: handleClickChevron,
5376
5754
  selected: rest.selected
5377
5755
  }
5378
- ), /* @__PURE__ */ import_react56.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react56.default.createElement(import_react56.default.Fragment, null, icon, /* @__PURE__ */ import_react56.default.createElement(Spacer.Horizontal, { size: 10 })), children);
5756
+ ), /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, icon, /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 10 })), children);
5379
5757
  });
5380
5758
  var TreeView;
5381
5759
  ((TreeView2) => {
5382
5760
  TreeView2.Root = ListView.Root;
5383
5761
  TreeView2.RowTitle = ListView.RowTitle;
5384
5762
  TreeView2.EditableRowTitle = ListView.EditableRowTitle;
5385
- TreeView2.Row = (0, import_react56.memo)(TreeRow);
5763
+ TreeView2.Row = (0, import_react58.memo)(TreeRow);
5386
5764
  })(TreeView || (TreeView = {}));
5387
5765
 
5388
5766
  // src/hooks/usePlatform.ts
@@ -5413,6 +5791,7 @@ var dark_exports = {};
5413
5791
  __export(dark_exports, {
5414
5792
  colors: () => colors2,
5415
5793
  fonts: () => fonts,
5794
+ name: () => name2,
5416
5795
  sizes: () => sizes2,
5417
5796
  textStyles: () => textStyles
5418
5797
  });
@@ -5423,9 +5802,11 @@ var light_exports = {};
5423
5802
  __export(light_exports, {
5424
5803
  colors: () => colors,
5425
5804
  fonts: () => fonts,
5805
+ name: () => name,
5426
5806
  sizes: () => sizes2,
5427
5807
  textStyles: () => textStyles
5428
5808
  });
5809
+ var name = "light";
5429
5810
  var colors = {
5430
5811
  logo: {
5431
5812
  fill: "rgb(175,175,175)",
@@ -5580,6 +5961,13 @@ var textStyles = {
5580
5961
  fontWeight: 400,
5581
5962
  lineHeight: "1.4"
5582
5963
  },
5964
+ button: {
5965
+ fontFamily: fonts.normal,
5966
+ fontSize: "0.8rem",
5967
+ fontWeight: 500,
5968
+ lineHeight: "1.4",
5969
+ letterSpacing: "-0.2px"
5970
+ },
5583
5971
  code: {
5584
5972
  fontFamily: fonts.monospace,
5585
5973
  fontSize: "90%",
@@ -5619,6 +6007,7 @@ var sizes2 = {
5619
6007
  };
5620
6008
 
5621
6009
  // src/theme/dark.ts
6010
+ var name2 = "dark";
5622
6011
  var colors2 = (0, import_immer.default)(colors, (colors3) => {
5623
6012
  colors3.logo.fill = "rgb(248,248,250)";
5624
6013
  colors3.logo.highlight = "rgb(248,248,250)";
@@ -5689,8 +6078,8 @@ var SUPPORTED_CANVAS_UPLOAD_TYPES = [
5689
6078
  ];
5690
6079
 
5691
6080
  // src/components/ArrayController.tsx
5692
- var import_noya_utils11 = require("@noya-app/noya-utils");
5693
- var import_react58 = __toESM(require("react"));
6081
+ var import_noya_utils12 = require("@noya-app/noya-utils");
6082
+ var import_react60 = __toESM(require("react"));
5694
6083
  var import_styled_components36 = __toESM(require("styled-components"));
5695
6084
 
5696
6085
  // src/components/InspectorPrimitives.tsx
@@ -5709,7 +6098,7 @@ __export(InspectorPrimitives_exports, {
5709
6098
  Title: () => Title3,
5710
6099
  VerticalSeparator: () => VerticalSeparator
5711
6100
  });
5712
- var import_react57 = __toESM(require("react"));
6101
+ var import_react59 = __toESM(require("react"));
5713
6102
  var import_styled_components35 = __toESM(require("styled-components"));
5714
6103
  var Section = import_styled_components35.default.div(({ theme, padding = "10px", gap }) => ({
5715
6104
  flex: "0 0 auto",
@@ -5756,8 +6145,8 @@ var Checkbox = import_styled_components35.default.input(({ theme }) => ({
5756
6145
  var Text3 = import_styled_components35.default.span(({ theme }) => ({
5757
6146
  ...theme.textStyles.small
5758
6147
  }));
5759
- var VerticalSeparator = () => /* @__PURE__ */ import_react57.default.createElement(Spacer.Vertical, { size: (0, import_styled_components35.useTheme)().sizes.inspector.verticalSeparator });
5760
- var HorizontalSeparator = () => /* @__PURE__ */ import_react57.default.createElement(Spacer.Horizontal, { size: (0, import_styled_components35.useTheme)().sizes.inspector.horizontalSeparator });
6148
+ var VerticalSeparator = () => /* @__PURE__ */ import_react59.default.createElement(Spacer.Vertical, { size: (0, import_styled_components35.useTheme)().sizes.inspector.verticalSeparator });
6149
+ var HorizontalSeparator = () => /* @__PURE__ */ import_react59.default.createElement(Spacer.Horizontal, { size: (0, import_styled_components35.useTheme)().sizes.inspector.horizontalSeparator });
5761
6150
  var SliderRowLabel = import_styled_components35.default.span(({ theme }) => ({
5762
6151
  ...theme.textStyles.small,
5763
6152
  color: theme.colors.textMuted,
@@ -5777,7 +6166,7 @@ var RowLabel = import_styled_components35.default.span(({ theme, textStyle }) =>
5777
6166
  // Button height
5778
6167
  alignItems: "center"
5779
6168
  }));
5780
- var LabeledRow = (0, import_react57.memo)(function LabeledRow2({
6169
+ var LabeledRow = (0, import_react59.memo)(function LabeledRow2({
5781
6170
  id,
5782
6171
  children,
5783
6172
  label,
@@ -5785,13 +6174,13 @@ var LabeledRow = (0, import_react57.memo)(function LabeledRow2({
5785
6174
  gap,
5786
6175
  right
5787
6176
  }) {
5788
- return /* @__PURE__ */ import_react57.default.createElement(Row2, { id }, /* @__PURE__ */ import_react57.default.createElement(Column, null, /* @__PURE__ */ import_react57.default.createElement(RowLabel, { textStyle: labelTextStyle }, label, right && /* @__PURE__ */ import_react57.default.createElement(Spacer.Horizontal, null), right), /* @__PURE__ */ import_react57.default.createElement(Row2, { gap }, children)));
6177
+ return /* @__PURE__ */ import_react59.default.createElement(Row2, { id }, /* @__PURE__ */ import_react59.default.createElement(Column, null, /* @__PURE__ */ import_react59.default.createElement(RowLabel, { textStyle: labelTextStyle }, label, right && /* @__PURE__ */ import_react59.default.createElement(Spacer.Horizontal, null), right), /* @__PURE__ */ import_react59.default.createElement(Row2, { gap }, children)));
5789
6178
  });
5790
- var LabeledSliderRow = (0, import_react57.memo)(function LabeledRow3({
6179
+ var LabeledSliderRow = (0, import_react59.memo)(function LabeledRow3({
5791
6180
  children,
5792
6181
  label
5793
6182
  }) {
5794
- return /* @__PURE__ */ import_react57.default.createElement(Row2, null, /* @__PURE__ */ import_react57.default.createElement(Column, null, /* @__PURE__ */ import_react57.default.createElement(SliderRowLabel, null, label), /* @__PURE__ */ import_react57.default.createElement(Row2, null, children)));
6183
+ return /* @__PURE__ */ import_react59.default.createElement(Row2, null, /* @__PURE__ */ import_react59.default.createElement(Column, null, /* @__PURE__ */ import_react59.default.createElement(SliderRowLabel, null, label), /* @__PURE__ */ import_react59.default.createElement(Row2, null, children)));
5795
6184
  });
5796
6185
 
5797
6186
  // src/components/ArrayController.tsx
@@ -5804,7 +6193,7 @@ var ElementRow = import_styled_components36.default.div({
5804
6193
  var ItemContainer2 = import_styled_components36.default.div({
5805
6194
  position: "relative"
5806
6195
  });
5807
- var ArrayController = (0, import_react58.memo)(function ArrayController2({
6196
+ var ArrayController = (0, import_react60.memo)(function ArrayController2({
5808
6197
  id,
5809
6198
  items,
5810
6199
  title,
@@ -5822,12 +6211,12 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5822
6211
  }) {
5823
6212
  const iconColor = (0, import_styled_components36.useTheme)().colors.icon;
5824
6213
  const primaryLightColor = (0, import_styled_components36.useTheme)().colors.primaryLight;
5825
- const keys = (0, import_react58.useMemo)(
6214
+ const keys = (0, import_react60.useMemo)(
5826
6215
  () => items.map((item, index) => getKey?.(item) ?? index.toString()),
5827
6216
  [getKey, items]
5828
6217
  );
5829
- const indexes = reversed ? (0, import_noya_utils11.range)(0, items.length).reverse() : (0, import_noya_utils11.range)(0, items.length);
5830
- const handleMoveItem = (0, import_react58.useCallback)(
6218
+ const indexes = reversed ? (0, import_noya_utils12.range)(0, items.length).reverse() : (0, import_noya_utils12.range)(0, items.length);
6219
+ const handleMoveItem = (0, import_react60.useCallback)(
5831
6220
  (sourceIndex, destinationIndex, position) => {
5832
6221
  if (reversed) {
5833
6222
  if (position === "above") {
@@ -5844,11 +6233,11 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5844
6233
  [onMoveItem, reversed]
5845
6234
  );
5846
6235
  const renderRow = (index) => {
5847
- return /* @__PURE__ */ import_react58.default.createElement(ElementRow, { key: keys[index] }, renderItem({ item: items[index], index }));
6236
+ return /* @__PURE__ */ import_react60.default.createElement(ElementRow, { key: keys[index] }, renderItem({ item: items[index], index }));
5848
6237
  };
5849
- return /* @__PURE__ */ import_react58.default.createElement(Section, { id, padding, gap: "2px" }, /* @__PURE__ */ import_react58.default.createElement(SectionHeader, null, /* @__PURE__ */ import_react58.default.createElement(Button, { variant: "none", onClick: onClickPlus }, /* @__PURE__ */ import_react58.default.createElement(Title3, null, title)), /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, null), withSeparatorElements(
6238
+ return /* @__PURE__ */ import_react60.default.createElement(Section, { id, padding, gap: "2px" }, /* @__PURE__ */ import_react60.default.createElement(SectionHeader, null, /* @__PURE__ */ import_react60.default.createElement(Button, { variant: "none", onClick: onClickPlus }, /* @__PURE__ */ import_react60.default.createElement(Title3, null, title)), /* @__PURE__ */ import_react60.default.createElement(Spacer.Horizontal, null), withSeparatorElements(
5850
6239
  [
5851
- onClickTrash && /* @__PURE__ */ import_react58.default.createElement(
6240
+ onClickTrash && /* @__PURE__ */ import_react60.default.createElement(
5852
6241
  IconButton,
5853
6242
  {
5854
6243
  id: `${id}-trash`,
@@ -5857,7 +6246,7 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5857
6246
  onClick: onClickTrash
5858
6247
  }
5859
6248
  ),
5860
- onClickExpand && /* @__PURE__ */ import_react58.default.createElement(
6249
+ onClickExpand && /* @__PURE__ */ import_react60.default.createElement(
5861
6250
  IconButton,
5862
6251
  {
5863
6252
  id: `${id}-gear`,
@@ -5866,7 +6255,7 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5866
6255
  onClick: onClickExpand
5867
6256
  }
5868
6257
  ),
5869
- onClickPlus && /* @__PURE__ */ import_react58.default.createElement(
6258
+ onClickPlus && /* @__PURE__ */ import_react60.default.createElement(
5870
6259
  IconButton,
5871
6260
  {
5872
6261
  id: `${id}-add`,
@@ -5876,15 +6265,15 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5876
6265
  }
5877
6266
  )
5878
6267
  ],
5879
- /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 8 })
5880
- )), /* @__PURE__ */ import_react58.default.createElement(Stack.V, { gap: "4px" }, sortable ? /* @__PURE__ */ import_react58.default.createElement(
6268
+ /* @__PURE__ */ import_react60.default.createElement(Spacer.Horizontal, { size: 8 })
6269
+ )), /* @__PURE__ */ import_react60.default.createElement(Stack.V, { gap: "4px" }, sortable ? /* @__PURE__ */ import_react60.default.createElement(
5881
6270
  Sortable.Root,
5882
6271
  {
5883
6272
  keys,
5884
6273
  renderOverlay: renderRow,
5885
6274
  onMoveItem: handleMoveItem
5886
6275
  },
5887
- indexes.map((index) => /* @__PURE__ */ import_react58.default.createElement(Sortable.Item, { id: keys[index], key: keys[index] }, ({ relativeDropPosition, ...sortableProps }) => /* @__PURE__ */ import_react58.default.createElement(ItemContainer2, { ...sortableProps }, renderRow(index), relativeDropPosition && /* @__PURE__ */ import_react58.default.createElement(
6276
+ indexes.map((index) => /* @__PURE__ */ import_react60.default.createElement(Sortable.Item, { id: keys[index], key: keys[index] }, ({ relativeDropPosition, ...sortableProps }) => /* @__PURE__ */ import_react60.default.createElement(ItemContainer2, { ...sortableProps }, renderRow(index), relativeDropPosition && /* @__PURE__ */ import_react60.default.createElement(
5888
6277
  ListView.DragIndicator,
5889
6278
  {
5890
6279
  gap: 0,
@@ -5897,12 +6286,12 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5897
6286
  });
5898
6287
 
5899
6288
  // src/components/DimensionInput.tsx
5900
- var import_noya_utils12 = require("@noya-app/noya-utils");
5901
- var import_react59 = __toESM(require("react"));
6289
+ var import_noya_utils13 = require("@noya-app/noya-utils");
6290
+ var import_react61 = __toESM(require("react"));
5902
6291
  function getNewValue(value, mode, delta) {
5903
6292
  return delta === void 0 ? value : mode === "replace" ? delta : value + delta;
5904
6293
  }
5905
- var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
6294
+ var DimensionInput = (0, import_react61.memo)(function DimensionInput2({
5906
6295
  id,
5907
6296
  value,
5908
6297
  onSetValue,
@@ -5912,30 +6301,31 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
5912
6301
  disabled,
5913
6302
  trigger = "submit"
5914
6303
  }) {
5915
- const handleNudgeValue = (0, import_react59.useCallback)(
6304
+ const handleNudgeValue = (0, import_react61.useCallback)(
5916
6305
  (value2) => onSetValue(value2, "adjust"),
5917
6306
  [onSetValue]
5918
6307
  );
5919
- const handleSetValue = (0, import_react59.useCallback)(
6308
+ const handleSetValue = (0, import_react61.useCallback)(
5920
6309
  (value2) => onSetValue(value2, "replace"),
5921
6310
  [onSetValue]
5922
6311
  );
5923
- return /* @__PURE__ */ import_react59.default.createElement(InputField.Root, { id, width: size2 }, /* @__PURE__ */ import_react59.default.createElement(
6312
+ return /* @__PURE__ */ import_react61.default.createElement(InputField.Root, { id, width: size2 }, /* @__PURE__ */ import_react61.default.createElement(
5924
6313
  InputField.NumberInput,
5925
6314
  {
5926
- value: value === void 0 ? value : (0, import_noya_utils12.round)(value, 2),
6315
+ value: value === void 0 ? value : (0, import_noya_utils13.round)(value, 2),
5927
6316
  placeholder: value === void 0 ? placeholder : void 0,
5928
6317
  onNudge: handleNudgeValue,
5929
6318
  disabled,
5930
6319
  ...trigger === "change" ? { onChange: handleSetValue } : { onSubmit: handleSetValue }
5931
6320
  }
5932
- ), label && /* @__PURE__ */ import_react59.default.createElement(InputField.Label, null, label));
6321
+ ), label && /* @__PURE__ */ import_react61.default.createElement(InputField.Label, null, label));
5933
6322
  });
5934
6323
  // Annotate the CommonJS export names for ESM import in node:
5935
6324
  0 && (module.exports = {
5936
6325
  ActivityIndicator,
5937
6326
  ArrayController,
5938
6327
  Avatar,
6328
+ AvatarStack,
5939
6329
  Body,
5940
6330
  Button,
5941
6331
  ButtonElement,
@@ -5954,6 +6344,8 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
5954
6344
  DropdownMenu,
5955
6345
  FillInputField,
5956
6346
  FillPreviewBackground,
6347
+ FloatingWindow,
6348
+ FloatingWindowProvider,
5957
6349
  FullscreenDialog,
5958
6350
  GlobalInputBlurProvider,
5959
6351
  GradientPicker,
@@ -6011,9 +6403,11 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
6011
6403
  sketchColorToHex,
6012
6404
  sketchColorToRgba,
6013
6405
  sketchColorToRgbaString,
6406
+ useCurrentFloatingWindowInternal,
6014
6407
  useDesignSystemConfiguration,
6015
6408
  useDesignSystemTheme,
6016
6409
  useDialogContainsElement,
6410
+ useFloatingWindowManager,
6017
6411
  useGlobalInputBlur,
6018
6412
  useGlobalInputBlurListener,
6019
6413
  useGlobalInputBlurTrigger,