@noya-app/noya-designsystem 0.1.10 → 0.1.12

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,7 +348,7 @@ 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(
351
+ var ButtonElement = import_styled_components5.default.button(
234
352
  ({
235
353
  theme,
236
354
  active,
@@ -240,7 +358,7 @@ var ButtonElement = import_styled_components4.default.button(
240
358
  flex,
241
359
  defaultBackground = theme.colors.inputBackground
242
360
  }) => ({
243
- ...size2 === "large" ? theme.textStyles.heading4 : theme.textStyles.small,
361
+ ...size2 === "large" ? theme.textStyles.heading4 : theme.textStyles.button,
244
362
  textDecoration: "none",
245
363
  lineHeight: "1",
246
364
  flex: flex ?? "0 0 auto",
@@ -328,7 +446,7 @@ var ButtonElement = import_styled_components4.default.button(
328
446
  }
329
447
  })
330
448
  );
331
- var ButtonContent = import_styled_components4.default.span(({ theme }) => ({
449
+ var ButtonContent = import_styled_components5.default.span(({ theme }) => ({
332
450
  // Line height of small text - maybe figure out better way to ensure
333
451
  // icons don't have a smaller height
334
452
  minHeight: "19px",
@@ -339,7 +457,7 @@ var ButtonContent = import_styled_components4.default.span(({ theme }) => ({
339
457
  // Helps with alignment with the default small text
340
458
  lineHeight: "15px"
341
459
  }));
342
- var Button = (0, import_react4.forwardRef)(function Button2({
460
+ var Button = (0, import_react6.forwardRef)(function Button2({
343
461
  id,
344
462
  className,
345
463
  style: style3,
@@ -357,7 +475,7 @@ var Button = (0, import_react4.forwardRef)(function Button2({
357
475
  ...rest
358
476
  // Propagate any other props so this component works as a Slot
359
477
  }, forwardedRef) {
360
- const buttonElement = /* @__PURE__ */ import_react4.default.createElement(
478
+ const buttonElement = /* @__PURE__ */ import_react6.default.createElement(
361
479
  ButtonElement,
362
480
  {
363
481
  ref: forwardedRef,
@@ -372,46 +490,46 @@ var Button = (0, import_react4.forwardRef)(function Button2({
372
490
  size: size2,
373
491
  defaultBackground,
374
492
  onClick,
375
- onDoubleClick: (0, import_react4.useCallback)((event) => {
493
+ onDoubleClick: (0, import_react6.useCallback)((event) => {
376
494
  event.stopPropagation();
377
495
  }, []),
378
496
  ...rest
379
497
  },
380
- /* @__PURE__ */ import_react4.default.createElement(ButtonContent, { style: contentStyle }, children)
498
+ /* @__PURE__ */ import_react6.default.createElement(ButtonContent, { style: contentStyle }, children)
381
499
  );
382
- 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;
383
501
  });
384
502
 
385
503
  // src/components/Chip.tsx
386
504
  var import_noya_icons3 = require("@noya-app/noya-icons");
387
- var import_react34 = __toESM(require("react"));
505
+ var import_react35 = __toESM(require("react"));
388
506
  var import_styled_components16 = __toESM(require("styled-components"));
389
507
 
390
508
  // src/contexts/DesignSystemConfiguration.tsx
391
- var import_react33 = __toESM(require("react"));
509
+ var import_react34 = __toESM(require("react"));
392
510
  var import_styled_components15 = require("styled-components");
393
511
 
394
512
  // src/components/Toast.tsx
395
513
  var ToastPrimitive = __toESM(require("@radix-ui/react-toast"));
396
- var import_react6 = __toESM(require("react"));
397
- var import_styled_components6 = __toESM(require("styled-components"));
514
+ var import_react8 = __toESM(require("react"));
515
+ var import_styled_components7 = __toESM(require("styled-components"));
398
516
 
399
517
  // src/components/IconButton.tsx
400
518
  var Icons = __toESM(require("@noya-app/noya-icons"));
401
- var import_react5 = __toESM(require("react"));
402
- var import_styled_components5 = require("styled-components");
403
- var IconButton = (0, import_react5.memo)(
404
- (0, import_react5.forwardRef)(function IconButton2({ selected, iconName, color, size: size2, contentStyle, ...props }, forwardedRef) {
405
- 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;
406
524
  const Icon = Icons[iconName];
407
- const style3 = (0, import_react5.useMemo)(() => {
525
+ const style3 = (0, import_react7.useMemo)(() => {
408
526
  return {
409
527
  padding: "0 2px",
410
528
  ...size2 && { minHeight: size2 },
411
529
  ...contentStyle
412
530
  };
413
531
  }, [contentStyle, size2]);
414
- 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(
415
533
  Icon,
416
534
  {
417
535
  color: color ?? (selected ? iconSelectedColor : iconColor),
@@ -422,7 +540,7 @@ var IconButton = (0, import_react5.memo)(
422
540
  );
423
541
 
424
542
  // src/components/Toast.tsx
425
- var ToastViewport = (0, import_styled_components6.default)(ToastPrimitive.Viewport)({
543
+ var ToastViewport = (0, import_styled_components7.default)(ToastPrimitive.Viewport)({
426
544
  position: "fixed",
427
545
  bottom: 0,
428
546
  right: 0,
@@ -437,7 +555,7 @@ var ToastViewport = (0, import_styled_components6.default)(ToastPrimitive.Viewpo
437
555
  zIndex: 2147483647,
438
556
  outline: "none"
439
557
  });
440
- var ToastRoot = (0, import_styled_components6.default)(ToastPrimitive.Root)(({ theme }) => ({
558
+ var ToastRoot = (0, import_styled_components7.default)(ToastPrimitive.Root)(({ theme }) => ({
441
559
  borderRadius: 4,
442
560
  fontSize: 14,
443
561
  backgroundColor: theme.colors.popover.background,
@@ -450,19 +568,19 @@ var ToastRoot = (0, import_styled_components6.default)(ToastPrimitive.Root)(({ t
450
568
  columnGap: 10,
451
569
  alignItems: "center"
452
570
  }));
453
- var ToastTitle = (0, import_styled_components6.default)(ToastPrimitive.Title)(({ theme }) => ({
571
+ var ToastTitle = (0, import_styled_components7.default)(ToastPrimitive.Title)(({ theme }) => ({
454
572
  gridArea: "title",
455
573
  marginBottom: 5,
456
574
  ...theme.textStyles.label,
457
575
  fontWeight: "bold",
458
576
  color: theme.colors.text
459
577
  }));
460
- var ToastDescription = (0, import_styled_components6.default)(ToastPrimitive.Description)(({ theme }) => ({
578
+ var ToastDescription = (0, import_styled_components7.default)(ToastPrimitive.Description)(({ theme }) => ({
461
579
  gridArea: "description",
462
580
  ...theme.textStyles.small,
463
581
  color: theme.colors.textMuted
464
582
  }));
465
- var ToastAction = (0, import_styled_components6.default)(ToastPrimitive.Action)({
583
+ var ToastAction = (0, import_styled_components7.default)(ToastPrimitive.Action)({
466
584
  gridArea: "action"
467
585
  });
468
586
  var Toast = ({
@@ -471,9 +589,9 @@ var Toast = ({
471
589
  children,
472
590
  ...props
473
591
  }) => {
474
- 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" })));
475
593
  };
476
- 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));
477
595
 
478
596
  // src/contexts/DialogContext.tsx
479
597
  var import_react32 = __toESM(require("react"));
@@ -481,16 +599,16 @@ var import_styled_components14 = __toESM(require("styled-components"));
481
599
 
482
600
  // src/components/Dialog.tsx
483
601
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"));
484
- var import_react7 = __toESM(require("react"));
485
- var import_styled_components8 = __toESM(require("styled-components"));
602
+ var import_react9 = __toESM(require("react"));
603
+ var import_styled_components9 = __toESM(require("styled-components"));
486
604
 
487
605
  // src/components/Spacer.tsx
488
- var import_styled_components7 = __toESM(require("styled-components"));
489
- 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 }) => ({
490
608
  display: inline ? "inline-block" : "block",
491
609
  ...size2 === void 0 ? { flex: 1 } : { minHeight: size2 }
492
610
  }));
493
- var SpacerHorizontal = import_styled_components7.default.span(({ size: size2, inline }) => ({
611
+ var SpacerHorizontal = import_styled_components8.default.span(({ size: size2, inline }) => ({
494
612
  display: inline ? "inline-block" : "block",
495
613
  ...size2 === void 0 ? { flex: 1 } : { minWidth: size2 }
496
614
  }));
@@ -501,12 +619,12 @@ var Spacer;
501
619
  })(Spacer || (Spacer = {}));
502
620
 
503
621
  // src/components/Dialog.tsx
504
- var StyledOverlay = (0, import_styled_components8.default)(DialogPrimitive.Overlay)({
622
+ var StyledOverlay = (0, import_styled_components9.default)(DialogPrimitive.Overlay)({
505
623
  backgroundColor: "rgba(0,0,0,0.5)",
506
624
  position: "fixed",
507
625
  inset: 0
508
626
  });
509
- var StyledContent = (0, import_styled_components8.default)(DialogPrimitive.Content)(({ theme }) => ({
627
+ var StyledContent = (0, import_styled_components9.default)(DialogPrimitive.Content)(({ theme }) => ({
510
628
  boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
511
629
  position: "fixed",
512
630
  top: "50%",
@@ -525,17 +643,17 @@ var StyledContent = (0, import_styled_components8.default)(DialogPrimitive.Conte
525
643
  pointerEvents: "all",
526
644
  zIndex: 1e3
527
645
  }));
528
- var StyledTitle = (0, import_styled_components8.default)(DialogPrimitive.Title)(({ theme }) => ({
646
+ var StyledTitle = (0, import_styled_components9.default)(DialogPrimitive.Title)(({ theme }) => ({
529
647
  margin: 0,
530
648
  ...theme.textStyles.body,
531
649
  color: theme.colors.text
532
650
  }));
533
- var StyledDescription = (0, import_styled_components8.default)(DialogPrimitive.Description)(({ theme }) => ({
651
+ var StyledDescription = (0, import_styled_components9.default)(DialogPrimitive.Description)(({ theme }) => ({
534
652
  margin: 0,
535
653
  ...theme.textStyles.small,
536
654
  color: theme.colors.textMuted
537
655
  }));
538
- var CloseButtonContainer = import_styled_components8.default.div(({ theme }) => ({
656
+ var CloseButtonContainer = import_styled_components9.default.div(({ theme }) => ({
539
657
  position: "absolute",
540
658
  top: theme.sizes.dialog.padding,
541
659
  right: theme.sizes.dialog.padding,
@@ -546,7 +664,7 @@ var CloseButtonContainer = import_styled_components8.default.div(({ theme }) =>
546
664
  // boxShadow: `0 0 2px rgba(0, 0, 0, 0.2)`,
547
665
  border: `1px solid rgba(128,128,128,0.2)`
548
666
  }));
549
- var Dialog = (0, import_react7.forwardRef)(function Dialog2({
667
+ var Dialog = (0, import_react9.forwardRef)(function Dialog2({
550
668
  children,
551
669
  title,
552
670
  description,
@@ -556,15 +674,15 @@ var Dialog = (0, import_react7.forwardRef)(function Dialog2({
556
674
  onOpenAutoFocus,
557
675
  closeOnInteractOutside = true
558
676
  }, forwardedRef) {
559
- const contentRef = (0, import_react7.useRef)(null);
560
- (0, import_react7.useImperativeHandle)(forwardedRef, () => ({
677
+ const contentRef = (0, import_react9.useRef)(null);
678
+ (0, import_react9.useImperativeHandle)(forwardedRef, () => ({
561
679
  containsElement(element) {
562
680
  if (!contentRef.current)
563
681
  return false;
564
682
  return contentRef.current.contains(element);
565
683
  }
566
684
  }));
567
- 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(
568
686
  StyledContent,
569
687
  {
570
688
  ref: contentRef,
@@ -579,14 +697,14 @@ var Dialog = (0, import_react7.forwardRef)(function Dialog2({
579
697
  }
580
698
  }
581
699
  },
582
- /* @__PURE__ */ import_react7.default.createElement(CloseButtonContainer, null, /* @__PURE__ */ import_react7.default.createElement(DialogPrimitive.Close, { asChild: true }, /* @__PURE__ */ import_react7.default.createElement(IconButton, { iconName: "Cross1Icon" }))),
583
- 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 })),
584
- 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 })),
585
703
  children
586
704
  ));
587
705
  });
588
- var FullscreenDialog = (0, import_react7.forwardRef)(function FullscreenDialog2({ style: style3, ...rest }, forwardedRef) {
589
- 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(
590
708
  Dialog,
591
709
  {
592
710
  ref: forwardedRef,
@@ -613,13 +731,13 @@ var import_noya_icons2 = require("@noya-app/noya-icons");
613
731
  var import_noya_utils5 = require("@noya-app/noya-utils");
614
732
 
615
733
  // ../noya-react-utils/src/components/AutoSizer.tsx
616
- var import_react8 = __toESM(require("react"));
734
+ var import_react10 = __toESM(require("react"));
617
735
 
618
736
  // ../noya-react-utils/src/hooks/useSize.ts
619
- var React8 = __toESM(require("react"));
737
+ var React9 = __toESM(require("react"));
620
738
  function useSize(refToObserve, dimensions = "both") {
621
- const [size2, setSize] = React8.useState(void 0);
622
- React8.useEffect(() => {
739
+ const [size2, setSize] = React9.useState(void 0);
740
+ React9.useEffect(() => {
623
741
  if (refToObserve.current) {
624
742
  const elementToObserve = refToObserve.current;
625
743
  const resizeObserver = new ResizeObserver((entries) => {
@@ -666,37 +784,37 @@ var style = {
666
784
  flex: "1 0 0",
667
785
  flexDirection: "column"
668
786
  };
669
- var AutoSizer = (0, import_react8.memo)(function AutoSizer2({
787
+ var AutoSizer = (0, import_react10.memo)(function AutoSizer2({
670
788
  children,
671
789
  className
672
790
  }) {
673
- const containerRef = (0, import_react8.useRef)(null);
791
+ const containerRef = (0, import_react10.useRef)(null);
674
792
  const containerSize = useSize(containerRef);
675
- 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));
676
794
  });
677
- var SingleDimensionAutoSizer = (0, import_react8.memo)(function SingleDimensionAutoSizer2({
795
+ var SingleDimensionAutoSizer = (0, import_react10.memo)(function SingleDimensionAutoSizer2({
678
796
  children,
679
797
  dimension,
680
798
  className
681
799
  }) {
682
- const containerRef = (0, import_react8.useRef)(null);
800
+ const containerRef = (0, import_react10.useRef)(null);
683
801
  const containerSize = useSize(containerRef, dimension);
684
- 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]));
685
803
  });
686
804
 
687
805
  // ../noya-react-utils/src/components/FileDropTarget.tsx
688
- var import_react10 = __toESM(require("react"));
806
+ var import_react12 = __toESM(require("react"));
689
807
 
690
808
  // ../noya-react-utils/src/hooks/useFileDropTarget.ts
691
- var import_react9 = require("react");
809
+ var import_react11 = require("react");
692
810
  function useFileDropTarget(dropEvent) {
693
- const [isDropTargetActive, setIsDropTargetActive] = (0, import_react9.useState)(false);
694
- 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) => {
695
813
  if (on !== void 0)
696
814
  setIsDropTargetActive(on);
697
815
  event.preventDefault();
698
816
  }, []);
699
- const handleDropEvent = (0, import_react9.useCallback)(
817
+ const handleDropEvent = (0, import_react11.useCallback)(
700
818
  (event) => {
701
819
  dropEvent(event);
702
820
  setIsDropTargetActive(false);
@@ -719,12 +837,12 @@ function isSupportedFile(file, supportedFileTypes) {
719
837
  return supportedFileTypes.includes(file.type) || file.type === "" && file.name.endsWith(".sketch");
720
838
  }
721
839
  var style2 = { display: "flex", flex: 1 };
722
- var FileDropTarget = (0, import_react10.memo)(function FileDropTarget2({
840
+ var FileDropTarget = (0, import_react12.memo)(function FileDropTarget2({
723
841
  children,
724
842
  onDropFiles,
725
843
  supportedFileTypes
726
844
  }) {
727
- const handleFile = (0, import_react10.useCallback)(
845
+ const handleFile = (0, import_react12.useCallback)(
728
846
  (event) => {
729
847
  event.preventDefault();
730
848
  const offsetPoint = {
@@ -757,51 +875,51 @@ var FileDropTarget = (0, import_react10.memo)(function FileDropTarget2({
757
875
  [onDropFiles, supportedFileTypes]
758
876
  );
759
877
  const { dropTargetProps, isDropTargetActive } = useFileDropTarget(handleFile);
760
- 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);
761
879
  });
762
880
 
763
881
  // ../noya-react-utils/src/hooks/useDeepArray.ts
764
882
  var import_noya_utils = require("@noya-app/noya-utils");
765
- var import_react11 = require("react");
883
+ var import_react13 = require("react");
766
884
 
767
885
  // ../noya-react-utils/src/hooks/useDeepState.ts
768
886
  var import_noya_utils2 = require("@noya-app/noya-utils");
769
- var import_react12 = require("react");
887
+ var import_react14 = require("react");
770
888
 
771
889
  // ../noya-react-utils/src/hooks/useFetch.ts
772
- var import_react13 = require("react");
890
+ var import_react15 = require("react");
773
891
 
774
892
  // ../noya-react-utils/src/hooks/useIsMounted.ts
775
- var import_react14 = require("react");
893
+ var import_react16 = require("react");
776
894
 
777
895
  // ../noya-react-utils/src/hooks/useLateReference.ts
778
- var import_react15 = require("react");
896
+ var import_react17 = require("react");
779
897
 
780
898
  // ../noya-react-utils/src/hooks/useLazyValue.ts
781
- var import_react16 = require("react");
899
+ var import_react18 = require("react");
782
900
 
783
901
  // ../noya-react-utils/src/hooks/useMutableState.ts
784
- var import_react17 = require("react");
902
+ var import_react19 = require("react");
785
903
 
786
904
  // ../noya-react-utils/src/hooks/usePersistentState.ts
787
- var import_react18 = require("react");
905
+ var import_react20 = require("react");
788
906
 
789
907
  // ../noya-react-utils/src/hooks/usePixelRatio.ts
790
- var import_react19 = require("react");
908
+ var import_react21 = require("react");
791
909
 
792
910
  // ../noya-react-utils/src/hooks/useShallowArray.ts
793
911
  var import_noya_utils3 = require("@noya-app/noya-utils");
794
- var import_react20 = require("react");
912
+ var import_react22 = require("react");
795
913
 
796
914
  // ../noya-react-utils/src/hooks/useStableCallback.ts
797
- var import_react21 = require("react");
915
+ var import_react23 = require("react");
798
916
 
799
917
  // ../noya-react-utils/src/hooks/useSystemColorScheme.ts
800
- var import_react22 = require("react");
918
+ var import_react24 = require("react");
801
919
 
802
920
  // ../noya-react-utils/src/hooks/useUrlHashParameters.ts
803
921
  var import_noya_utils4 = require("@noya-app/noya-utils");
804
- var import_react23 = require("react");
922
+ var import_react25 = require("react");
805
923
 
806
924
  // ../emitter/src/index.ts
807
925
  var Emitter = class {
@@ -923,34 +1041,13 @@ function handleNudge(e) {
923
1041
  var import_noya_icons = require("@noya-app/noya-icons");
924
1042
  var import_noya_keymap2 = require("@noya-app/noya-keymap");
925
1043
  var RadixDropdownMenu = __toESM(require("@radix-ui/react-dropdown-menu"));
926
- var import_react26 = __toESM(require("react"));
927
- var import_styled_components10 = __toESM(require("styled-components"));
1044
+ var import_react27 = __toESM(require("react"));
1045
+ var import_styled_components11 = __toESM(require("styled-components"));
928
1046
 
929
1047
  // src/components/internal/Menu.tsx
930
1048
  var import_noya_keymap = require("@noya-app/noya-keymap");
931
- var import_react25 = __toESM(require("react"));
932
- var import_styled_components9 = __toESM(require("styled-components"));
933
-
934
- // src/utils/withSeparatorElements.ts
935
- var import_react24 = require("react");
936
- function createKey(key) {
937
- return `s-${key}`;
938
- }
939
- function withSeparatorElements(elements2, separator) {
940
- const childrenArray = import_react24.Children.toArray(elements2);
941
- for (let i = childrenArray.length - 1; i > 0; i--) {
942
- let sep = typeof separator === "function" ? separator() : (0, import_react24.isValidElement)(separator) ? (0, import_react24.cloneElement)(separator, { key: createKey(i) }) : separator;
943
- if ((0, import_react24.isValidElement)(sep) && sep.key == null) {
944
- sep = (0, import_react24.cloneElement)(sep, { key: createKey(i) });
945
- }
946
- if (!sep || typeof sep === "boolean")
947
- continue;
948
- childrenArray.splice(i, 0, sep);
949
- }
950
- return childrenArray;
951
- }
952
-
953
- // src/components/internal/Menu.tsx
1049
+ var import_react26 = __toESM(require("react"));
1050
+ var import_styled_components10 = __toESM(require("styled-components"));
954
1051
  var SEPARATOR_ITEM = "separator";
955
1052
  var CHECKBOX_WIDTH = 15;
956
1053
  var CHECKBOX_RIGHT_INSET = 3;
@@ -964,9 +1061,7 @@ var styles = {
964
1061
  theme,
965
1062
  disabled
966
1063
  }) => ({
967
- ...theme.textStyles.small,
968
- fontWeight: 500,
969
- fontSize: "0.8rem",
1064
+ ...theme.textStyles.button,
970
1065
  flex: "0 0 auto",
971
1066
  userSelect: "none",
972
1067
  cursor: "pointer",
@@ -1028,7 +1123,7 @@ function getKeyboardShortcutsForMenuItems(menuItems, onSelect) {
1028
1123
  menuItems.flatMap(getKeyboardShortcuts).map(([key, value]) => [key, () => onSelect(value)])
1029
1124
  );
1030
1125
  }
1031
- var ShortcutElement = import_styled_components9.default.kbd(
1126
+ var ShortcutElement = import_styled_components10.default.kbd(
1032
1127
  ({
1033
1128
  theme,
1034
1129
  fixedWidth
@@ -1041,12 +1136,12 @@ var ShortcutElement = import_styled_components9.default.kbd(
1041
1136
  }
1042
1137
  })
1043
1138
  );
1044
- var KeyboardShortcut = (0, import_react25.memo)(function KeyboardShortcut2({
1139
+ var KeyboardShortcut = (0, import_react26.memo)(function KeyboardShortcut2({
1045
1140
  shortcut
1046
1141
  }) {
1047
1142
  const platform = useDesignSystemConfiguration().platform;
1048
1143
  const { keys, separator } = (0, import_noya_keymap.getShortcutDisplayParts)(shortcut, platform);
1049
- const keyElements = keys.map((key) => /* @__PURE__ */ import_react25.default.createElement(
1144
+ const keyElements = keys.map((key) => /* @__PURE__ */ import_react26.default.createElement(
1050
1145
  ShortcutElement,
1051
1146
  {
1052
1147
  key,
@@ -1054,24 +1149,24 @@ var KeyboardShortcut = (0, import_react25.memo)(function KeyboardShortcut2({
1054
1149
  },
1055
1150
  key
1056
1151
  ));
1057
- 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(
1058
1153
  keyElements,
1059
- /* @__PURE__ */ import_react25.default.createElement(ShortcutElement, null, separator)
1154
+ /* @__PURE__ */ import_react26.default.createElement(ShortcutElement, null, separator)
1060
1155
  ) : keyElements);
1061
1156
  });
1062
1157
 
1063
1158
  // src/components/DropdownMenu.tsx
1064
- var SeparatorElement = (0, import_styled_components10.default)(RadixDropdownMenu.Separator)(
1159
+ var SeparatorElement = (0, import_styled_components11.default)(RadixDropdownMenu.Separator)(
1065
1160
  styles.separatorStyle
1066
1161
  );
1067
- var ItemElement = (0, import_styled_components10.default)(RadixDropdownMenu.Item)(styles.itemStyle);
1068
- 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)(
1069
1164
  styles.itemStyle
1070
1165
  );
1071
- var StyledItemIndicator = (0, import_styled_components10.default)(RadixDropdownMenu.ItemIndicator)(
1166
+ var StyledItemIndicator = (0, import_styled_components11.default)(RadixDropdownMenu.ItemIndicator)(
1072
1167
  styles.itemIndicatorStyle
1073
1168
  );
1074
- var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
1169
+ var DropdownMenuItem = (0, import_react27.memo)(function ContextMenuItem({
1075
1170
  value,
1076
1171
  children,
1077
1172
  onSelect,
@@ -1082,27 +1177,27 @@ var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
1082
1177
  items,
1083
1178
  shortcut
1084
1179
  }) {
1085
- const handleSelectItem = (0, import_react26.useCallback)(() => {
1180
+ const handleSelectItem = (0, import_react27.useCallback)(() => {
1086
1181
  if (!value)
1087
1182
  return;
1088
1183
  onSelect(value);
1089
1184
  }, [onSelect, value]);
1090
1185
  if (checked) {
1091
- return /* @__PURE__ */ import_react26.default.createElement(
1186
+ return /* @__PURE__ */ import_react27.default.createElement(
1092
1187
  CheckboxItemElement,
1093
1188
  {
1094
1189
  checked,
1095
1190
  disabled,
1096
1191
  onSelect: handleSelectItem
1097
1192
  },
1098
- /* @__PURE__ */ import_react26.default.createElement(StyledItemIndicator, null, /* @__PURE__ */ import_react26.default.createElement(import_noya_icons.CheckIcon, null)),
1099
- 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 })),
1100
1195
  children
1101
1196
  );
1102
1197
  }
1103
- 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)));
1104
1199
  if (items && items.length > 0) {
1105
- return /* @__PURE__ */ import_react26.default.createElement(
1200
+ return /* @__PURE__ */ import_react27.default.createElement(
1106
1201
  DropdownMenuRoot,
1107
1202
  {
1108
1203
  isNested: true,
@@ -1116,9 +1211,9 @@ var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
1116
1211
  return element;
1117
1212
  }
1118
1213
  });
1119
- var Content5 = (0, import_styled_components10.default)(RadixDropdownMenu.Content)(styles.contentStyle);
1120
- var SubContent2 = (0, import_styled_components10.default)(RadixDropdownMenu.SubContent)(styles.contentStyle);
1121
- 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({
1122
1217
  items,
1123
1218
  children,
1124
1219
  onSelect,
@@ -1136,7 +1231,7 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1136
1231
  const hasCheckedItem = items.some(
1137
1232
  (item) => item !== SEPARATOR_ITEM && item.checked
1138
1233
  );
1139
- const keymap = (0, import_react26.useMemo)(
1234
+ const keymap = (0, import_react27.useMemo)(
1140
1235
  () => isNested || shouldBindKeyboardShortcuts === false ? {} : getKeyboardShortcutsForMenuItems(items, onSelect),
1141
1236
  [isNested, items, onSelect, shouldBindKeyboardShortcuts]
1142
1237
  );
@@ -1144,8 +1239,8 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1144
1239
  const RootComponent = isNested ? RadixDropdownMenu.Sub : RadixDropdownMenu.Root;
1145
1240
  const TriggerComponent = isNested ? RadixDropdownMenu.SubTrigger : RadixDropdownMenu.Trigger;
1146
1241
  const ContentComponent = isNested ? SubContent2 : Content5;
1147
- const contentStyle = (0, import_react26.useMemo)(() => ({ zIndex: 1e3 }), []);
1148
- 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(
1149
1244
  ContentComponent,
1150
1245
  {
1151
1246
  side,
@@ -1157,7 +1252,7 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1157
1252
  ...{ onCloseAutoFocus }
1158
1253
  },
1159
1254
  items.map(
1160
- (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(
1161
1256
  DropdownMenuItem,
1162
1257
  {
1163
1258
  key: item.value ?? index,
@@ -1175,14 +1270,14 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
1175
1270
  )
1176
1271
  )));
1177
1272
  });
1178
- var DropdownMenu = (0, import_react26.memo)(DropdownMenuRoot);
1273
+ var DropdownMenu = (0, import_react27.memo)(DropdownMenuRoot);
1179
1274
 
1180
1275
  // src/components/internal/TextInput.tsx
1181
1276
  var import_react_compose_refs = require("@radix-ui/react-compose-refs");
1182
- var import_react28 = __toESM(require("react"));
1277
+ var import_react29 = __toESM(require("react"));
1183
1278
 
1184
1279
  // src/contexts/GlobalInputBlurContext.tsx
1185
- var import_react27 = require("react");
1280
+ var import_react28 = require("react");
1186
1281
  var defaultValue = /* @__PURE__ */ (() => {
1187
1282
  const listeners = [];
1188
1283
  const value = {
@@ -1203,14 +1298,14 @@ var defaultValue = /* @__PURE__ */ (() => {
1203
1298
  };
1204
1299
  return value;
1205
1300
  })();
1206
- var GlobalInputBlurContext = (0, import_react27.createContext)(defaultValue);
1301
+ var GlobalInputBlurContext = (0, import_react28.createContext)(defaultValue);
1207
1302
  var GlobalInputBlurProvider = GlobalInputBlurContext.Provider;
1208
1303
  var useGlobalInputBlur = () => {
1209
- return (0, import_react27.useContext)(GlobalInputBlurContext);
1304
+ return (0, import_react28.useContext)(GlobalInputBlurContext);
1210
1305
  };
1211
1306
  function useGlobalInputBlurListener(f) {
1212
1307
  const context = useGlobalInputBlur();
1213
- (0, import_react27.useEffect)(() => {
1308
+ (0, import_react28.useEffect)(() => {
1214
1309
  context.addListener(f);
1215
1310
  return () => {
1216
1311
  context.removeListener(f);
@@ -1222,8 +1317,8 @@ function useGlobalInputBlurTrigger() {
1222
1317
  }
1223
1318
 
1224
1319
  // src/components/internal/TextInput.tsx
1225
- var ReadOnlyTextInput = (0, import_react28.forwardRef)(function ReadOnlyTextInput2({ onKeyDown, onFocusChange, value, ...rest }, forwardedRef) {
1226
- 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(
1227
1322
  "input",
1228
1323
  {
1229
1324
  ref: forwardedRef,
@@ -1234,7 +1329,7 @@ var ReadOnlyTextInput = (0, import_react28.forwardRef)(function ReadOnlyTextInpu
1234
1329
  }
1235
1330
  );
1236
1331
  });
1237
- var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledTextInput2({
1332
+ var ControlledTextInput = (0, import_react29.forwardRef)(function ControlledTextInput2({
1238
1333
  onKeyDown,
1239
1334
  value,
1240
1335
  onChange,
@@ -1243,28 +1338,28 @@ var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledText
1243
1338
  onFocusCapture,
1244
1339
  ...rest
1245
1340
  }, forwardedRef) {
1246
- const handleBlur = (0, import_react28.useCallback)(
1341
+ const handleBlur = (0, import_react29.useCallback)(
1247
1342
  (event) => {
1248
1343
  onBlur?.(event);
1249
1344
  onFocusChange?.(false);
1250
1345
  },
1251
1346
  [onBlur, onFocusChange]
1252
1347
  );
1253
- const handleFocusCapture = (0, import_react28.useCallback)(
1348
+ const handleFocusCapture = (0, import_react29.useCallback)(
1254
1349
  (event) => {
1255
1350
  onFocusCapture?.(event);
1256
1351
  onFocusChange?.(true);
1257
1352
  },
1258
1353
  [onFocusCapture, onFocusChange]
1259
1354
  );
1260
- return /* @__PURE__ */ import_react28.default.createElement(
1355
+ return /* @__PURE__ */ import_react29.default.createElement(
1261
1356
  "input",
1262
1357
  {
1263
1358
  ref: forwardedRef,
1264
1359
  ...rest,
1265
1360
  value,
1266
1361
  onKeyDown,
1267
- onChange: (0, import_react28.useCallback)(
1362
+ onChange: (0, import_react29.useCallback)(
1268
1363
  (event) => onChange(event.target.value),
1269
1364
  [onChange]
1270
1365
  ),
@@ -1273,7 +1368,7 @@ var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledText
1273
1368
  }
1274
1369
  );
1275
1370
  });
1276
- var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTextInput2({
1371
+ var SubmittableTextInput = (0, import_react29.forwardRef)(function SubmittableTextInput2({
1277
1372
  onKeyDown,
1278
1373
  value,
1279
1374
  onSubmit,
@@ -1284,16 +1379,16 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1284
1379
  submitAutomaticallyAfterDelay,
1285
1380
  ...rest
1286
1381
  }, forwardedRef) {
1287
- const ref = import_react28.default.useRef(null);
1288
- const latestValue = (0, import_react28.useRef)(value);
1382
+ const ref = import_react29.default.useRef(null);
1383
+ const latestValue = (0, import_react29.useRef)(value);
1289
1384
  latestValue.current = value;
1290
- const userDidEdit = (0, import_react28.useRef)(false);
1291
- const isSubmitTriggeredByEscapeKey = (0, import_react28.useRef)(false);
1292
- const [internalValue, setInternalValue] = (0, import_react28.useState)("");
1293
- (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)(() => {
1294
1389
  setInternalValue(value);
1295
1390
  }, [value]);
1296
- const handleSubmit = (0, import_react28.useCallback)(() => {
1391
+ const handleSubmit = (0, import_react29.useCallback)(() => {
1297
1392
  const submissionValue = isSubmitTriggeredByEscapeKey.current ? value : internalValue;
1298
1393
  isSubmitTriggeredByEscapeKey.current = false;
1299
1394
  if (submissionValue === value && !allowSubmittingWithSameValue)
@@ -1303,13 +1398,13 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1303
1398
  setInternalValue(latestValue.current);
1304
1399
  }, [allowSubmittingWithSameValue, value, internalValue, onSubmit]);
1305
1400
  useGlobalInputBlurListener(
1306
- (0, import_react28.useCallback)(() => {
1401
+ (0, import_react29.useCallback)(() => {
1307
1402
  if (ref.current !== document.activeElement)
1308
1403
  return;
1309
1404
  handleSubmit();
1310
1405
  }, [handleSubmit])
1311
1406
  );
1312
- const handleKeyDown = (0, import_react28.useCallback)(
1407
+ const handleKeyDown = (0, import_react29.useCallback)(
1313
1408
  (event) => {
1314
1409
  if (event.key === "Enter") {
1315
1410
  handleSubmit();
@@ -1324,14 +1419,14 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1324
1419
  },
1325
1420
  [onKeyDown, handleSubmit]
1326
1421
  );
1327
- const handleChange = (0, import_react28.useCallback)(
1422
+ const handleChange = (0, import_react29.useCallback)(
1328
1423
  (event) => {
1329
1424
  userDidEdit.current = true;
1330
1425
  setInternalValue(event.target.value);
1331
1426
  },
1332
1427
  []
1333
1428
  );
1334
- const handleBlur = (0, import_react28.useCallback)(
1429
+ const handleBlur = (0, import_react29.useCallback)(
1335
1430
  (event) => {
1336
1431
  onBlur?.(event);
1337
1432
  onFocusChange?.(false);
@@ -1339,19 +1434,19 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1339
1434
  },
1340
1435
  [onBlur, onFocusChange, handleSubmit]
1341
1436
  );
1342
- const handleFocusCapture = (0, import_react28.useCallback)(
1437
+ const handleFocusCapture = (0, import_react29.useCallback)(
1343
1438
  (event) => {
1344
1439
  onFocusCapture?.(event);
1345
1440
  onFocusChange?.(true);
1346
1441
  },
1347
1442
  [onFocusCapture, onFocusChange]
1348
1443
  );
1349
- const autoSubmitTimeoutRef = (0, import_react28.useRef)(
1444
+ const autoSubmitTimeoutRef = (0, import_react29.useRef)(
1350
1445
  null
1351
1446
  );
1352
- const latestHandleSubmit = (0, import_react28.useRef)(handleSubmit);
1447
+ const latestHandleSubmit = (0, import_react29.useRef)(handleSubmit);
1353
1448
  latestHandleSubmit.current = handleSubmit;
1354
- (0, import_react28.useEffect)(() => {
1449
+ (0, import_react29.useEffect)(() => {
1355
1450
  if (submitAutomaticallyAfterDelay) {
1356
1451
  if (autoSubmitTimeoutRef.current) {
1357
1452
  clearTimeout(autoSubmitTimeoutRef.current);
@@ -1368,7 +1463,7 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1368
1463
  }
1369
1464
  };
1370
1465
  }, [internalValue, submitAutomaticallyAfterDelay]);
1371
- return /* @__PURE__ */ import_react28.default.createElement(
1466
+ return /* @__PURE__ */ import_react29.default.createElement(
1372
1467
  "input",
1373
1468
  {
1374
1469
  ref: (0, import_react_compose_refs.composeRefs)(ref, forwardedRef),
@@ -1381,13 +1476,13 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
1381
1476
  }
1382
1477
  );
1383
1478
  });
1384
- var TextInput_default = (0, import_react28.forwardRef)(function TextInput(props, forwardedRef) {
1479
+ var TextInput_default = (0, import_react29.forwardRef)(function TextInput(props, forwardedRef) {
1385
1480
  const commonProps = {
1386
- onPointerDown: (0, import_react28.useCallback)(
1481
+ onPointerDown: (0, import_react29.useCallback)(
1387
1482
  (event) => event.stopPropagation(),
1388
1483
  []
1389
1484
  ),
1390
- onClick: (0, import_react28.useCallback)(
1485
+ onClick: (0, import_react29.useCallback)(
1391
1486
  (event) => event.stopPropagation(),
1392
1487
  []
1393
1488
  ),
@@ -1400,19 +1495,19 @@ var TextInput_default = (0, import_react28.forwardRef)(function TextInput(props,
1400
1495
  ...props
1401
1496
  };
1402
1497
  if ("readOnly" in commonProps) {
1403
- 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 });
1404
1499
  } else if ("onChange" in commonProps) {
1405
- return /* @__PURE__ */ import_react28.default.createElement(ControlledTextInput, { ref: forwardedRef, ...commonProps });
1500
+ return /* @__PURE__ */ import_react29.default.createElement(ControlledTextInput, { ref: forwardedRef, ...commonProps });
1406
1501
  } else {
1407
- return /* @__PURE__ */ import_react28.default.createElement(SubmittableTextInput, { ref: forwardedRef, ...commonProps });
1502
+ return /* @__PURE__ */ import_react29.default.createElement(SubmittableTextInput, { ref: forwardedRef, ...commonProps });
1408
1503
  }
1409
1504
  });
1410
1505
 
1411
1506
  // src/components/Popover.tsx
1412
1507
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"));
1413
- var import_react29 = __toESM(require("react"));
1414
- var import_styled_components11 = __toESM(require("styled-components"));
1415
- 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 }) => ({
1416
1511
  borderRadius: 4,
1417
1512
  fontSize: 14,
1418
1513
  backgroundColor: theme.colors.popover.background,
@@ -1424,10 +1519,10 @@ var ContentElement = (0, import_styled_components11.default)(PopoverPrimitive.Co
1424
1519
  ...variant === "normal" && { width: "240px" },
1425
1520
  zIndex: 1e3
1426
1521
  }));
1427
- var ArrowElement = (0, import_styled_components11.default)(PopoverPrimitive.Arrow)(({ theme }) => ({
1522
+ var ArrowElement = (0, import_styled_components12.default)(PopoverPrimitive.Arrow)(({ theme }) => ({
1428
1523
  fill: theme.colors.popover.background
1429
1524
  }));
1430
- var PopoverClose = (0, import_styled_components11.default)(PopoverPrimitive.Close)(({ theme }) => ({
1525
+ var PopoverClose = (0, import_styled_components12.default)(PopoverPrimitive.Close)(({ theme }) => ({
1431
1526
  all: "unset",
1432
1527
  fontFamily: "inherit",
1433
1528
  borderRadius: "100%",
@@ -1457,7 +1552,7 @@ function Popover({
1457
1552
  onFocusOutside,
1458
1553
  onClickClose
1459
1554
  }) {
1460
- 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(
1461
1556
  ContentElement,
1462
1557
  {
1463
1558
  variant,
@@ -1478,75 +1573,11 @@ function Popover({
1478
1573
  }
1479
1574
  },
1480
1575
  children,
1481
- showArrow && /* @__PURE__ */ import_react29.default.createElement(ArrowElement, null),
1482
- 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 }))
1483
1578
  )));
1484
1579
  }
1485
1580
 
1486
- // src/components/Stack.tsx
1487
- var import_react30 = __toESM(require("react"));
1488
- var import_styled_components12 = __toESM(require("styled-components"));
1489
-
1490
- // src/utils/breakpoints.ts
1491
- function mergeBreakpoints(breakpoints, transform) {
1492
- const breakpointMap = Array.isArray(breakpoints) ? breakpoints.reduce(
1493
- (result, item) => {
1494
- const [key, value] = item;
1495
- result[key] = result[key] ? { ...result[key], ...value } : value;
1496
- return result;
1497
- },
1498
- {}
1499
- ) : breakpoints;
1500
- const breakpointList = Object.entries(breakpointMap);
1501
- const transformedList = breakpointList.sort((a, b) => Number(b[0]) - Number(a[0])).map(([width, value]) => [
1502
- `@media screen and (max-width: ${width}px)`,
1503
- transform?.(value) ?? value
1504
- ]);
1505
- return Object.fromEntries(transformedList);
1506
- }
1507
-
1508
- // src/components/Stack.tsx
1509
- var Element = import_styled_components12.default.div(({ styleProps, breakpoints }) => ({
1510
- ...styleProps,
1511
- ...mergeBreakpoints(breakpoints || [])
1512
- }));
1513
- var StackBase = (0, import_react30.forwardRef)(function StackBase2({ id, as, children, separator, breakpoints, tabIndex, href, ...rest }, forwardedRef) {
1514
- const elements2 = separator ? withSeparatorElements(import_react30.Children.toArray(children), separator) : children;
1515
- const styleProps = {
1516
- display: "flex",
1517
- position: "relative",
1518
- alignItems: "stretch",
1519
- ...rest
1520
- };
1521
- return /* @__PURE__ */ import_react30.default.createElement(
1522
- Element,
1523
- {
1524
- ref: forwardedRef,
1525
- id,
1526
- as,
1527
- styleProps,
1528
- breakpoints,
1529
- tabIndex,
1530
- ...href && { href }
1531
- },
1532
- elements2
1533
- );
1534
- });
1535
- var VerticalStack = (0, import_react30.memo)(
1536
- (0, import_react30.forwardRef)(function VStack(props, forwardedRef) {
1537
- return /* @__PURE__ */ import_react30.default.createElement(StackBase, { ...props, flexDirection: "column", ref: forwardedRef });
1538
- })
1539
- );
1540
- var HorizontalStack = (0, import_react30.memo)(
1541
- (0, import_react30.forwardRef)(function HStack(props, forwardedRef) {
1542
- return /* @__PURE__ */ import_react30.default.createElement(StackBase, { ...props, flexDirection: "row", ref: forwardedRef });
1543
- })
1544
- );
1545
- var Stack = {
1546
- V: VerticalStack,
1547
- H: HorizontalStack
1548
- };
1549
-
1550
1581
  // src/components/InputField.tsx
1551
1582
  var InputFieldContext = (0, import_react31.createContext)({
1552
1583
  labelPosition: "end",
@@ -2082,20 +2113,68 @@ function useDialogContainsElement() {
2082
2113
  return useDialog().containsElement;
2083
2114
  }
2084
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
+
2085
2164
  // src/contexts/DesignSystemConfiguration.tsx
2086
- var DesignSystemConfigurationContext = (0, import_react33.createContext)(void 0);
2087
- var DesignSystemConfigurationProvider = (0, import_react33.memo)(
2165
+ var DesignSystemConfigurationContext = (0, import_react34.createContext)(void 0);
2166
+ var DesignSystemConfigurationProvider = (0, import_react34.memo)(
2088
2167
  function DesignSystemConfigurationProvider2({
2089
2168
  children,
2090
2169
  theme,
2091
2170
  platform
2092
2171
  }) {
2093
- const contextValue = (0, import_react33.useMemo)(() => ({ platform }), [platform]);
2094
- 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(DialogProvider, null, /* @__PURE__ */ import_react34.default.createElement(ToastProvider, null, /* @__PURE__ */ import_react34.default.createElement(FloatingWindowProvider, null, children)))));
2095
2174
  }
2096
2175
  );
2097
2176
  function useDesignSystemConfiguration() {
2098
- const value = (0, import_react33.useContext)(DesignSystemConfigurationContext);
2177
+ const value = (0, import_react34.useContext)(DesignSystemConfigurationContext);
2099
2178
  if (!value) {
2100
2179
  throw new Error("Missing DesignSystemConfigurationProvider");
2101
2180
  }
@@ -2106,7 +2185,7 @@ function useDesignSystemTheme() {
2106
2185
  }
2107
2186
 
2108
2187
  // src/hooks/useHover.ts
2109
- var React19 = __toESM(require("react"));
2188
+ var React20 = __toESM(require("react"));
2110
2189
  var globalIgnoreEmulatedMouseEvents = false;
2111
2190
  var hoverCount = 0;
2112
2191
  function setGlobalIgnoreEmulatedMouseEvents() {
@@ -2136,13 +2215,13 @@ function setupGlobalTouchEvents() {
2136
2215
  }
2137
2216
  function useHover(props = {}) {
2138
2217
  const { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;
2139
- const [isHovered, setHovered] = React19.useState(false);
2140
- const state = React19.useRef({
2218
+ const [isHovered, setHovered] = React20.useState(false);
2219
+ const state = React20.useRef({
2141
2220
  isHovered: false,
2142
2221
  ignoreEmulatedMouseEvents: false
2143
2222
  }).current;
2144
- React19.useEffect(setupGlobalTouchEvents, []);
2145
- const hoverProps = React19.useMemo(
2223
+ React20.useEffect(setupGlobalTouchEvents, []);
2224
+ const hoverProps = React20.useMemo(
2146
2225
  function getHoverProps() {
2147
2226
  function triggerHoverStart(event, pointerType) {
2148
2227
  if (isDisabled || pointerType === "touch" || state.isHovered) {
@@ -2283,7 +2362,7 @@ var AddElement = (0, import_styled_components16.default)(import_noya_icons3.Plus
2283
2362
  opacity: 0.85
2284
2363
  }
2285
2364
  }));
2286
- var Chip = (0, import_react34.memo)(function Chip2({
2365
+ var Chip = (0, import_react35.memo)(function Chip2({
2287
2366
  colorScheme,
2288
2367
  children,
2289
2368
  deletable,
@@ -2304,7 +2383,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2304
2383
  });
2305
2384
  const handleClick = !children && !deletable && addable ? onAdd : onClick;
2306
2385
  const color = colorScheme === "primary" ? theme.colors.primary : colorScheme === "secondary" ? theme.colors.secondary : theme.colors.text;
2307
- return /* @__PURE__ */ import_react34.default.createElement(
2386
+ return /* @__PURE__ */ import_react35.default.createElement(
2308
2387
  ChipElement,
2309
2388
  {
2310
2389
  variant,
@@ -2316,7 +2395,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2316
2395
  isInteractive: !!handleClick,
2317
2396
  tabIndex
2318
2397
  },
2319
- addable && /* @__PURE__ */ import_react34.default.createElement(
2398
+ addable && /* @__PURE__ */ import_react35.default.createElement(
2320
2399
  AddElement,
2321
2400
  {
2322
2401
  size: size2,
@@ -2329,7 +2408,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2329
2408
  }
2330
2409
  ),
2331
2410
  children,
2332
- deletable && /* @__PURE__ */ import_react34.default.createElement(
2411
+ deletable && /* @__PURE__ */ import_react35.default.createElement(
2333
2412
  DeleteElement,
2334
2413
  {
2335
2414
  size: size2,
@@ -2348,7 +2427,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
2348
2427
  var import_noya_icons4 = require("@noya-app/noya-icons");
2349
2428
  var import_noya_keymap3 = require("@noya-app/noya-keymap");
2350
2429
  var RadixContextMenu = __toESM(require("@radix-ui/react-context-menu"));
2351
- var import_react35 = __toESM(require("react"));
2430
+ var import_react36 = __toESM(require("react"));
2352
2431
  var import_styled_components17 = __toESM(require("styled-components"));
2353
2432
  var SeparatorElement2 = (0, import_styled_components17.default)(RadixContextMenu.Separator)(
2354
2433
  styles.separatorStyle
@@ -2360,7 +2439,7 @@ var CheckboxItemElement2 = (0, import_styled_components17.default)(RadixContextM
2360
2439
  var StyledItemIndicator2 = (0, import_styled_components17.default)(RadixContextMenu.ItemIndicator)(
2361
2440
  styles.itemIndicatorStyle
2362
2441
  );
2363
- var ContextMenuItem2 = (0, import_react35.memo)(function ContextMenuItem3({
2442
+ var ContextMenuItem2 = (0, import_react36.memo)(function ContextMenuItem3({
2364
2443
  value,
2365
2444
  children,
2366
2445
  onSelect,
@@ -2371,42 +2450,42 @@ var ContextMenuItem2 = (0, import_react35.memo)(function ContextMenuItem3({
2371
2450
  items,
2372
2451
  shortcut
2373
2452
  }) {
2374
- const handlePointerDown = (0, import_react35.useCallback)(
2453
+ const handlePointerDown = (0, import_react36.useCallback)(
2375
2454
  (event) => event.stopPropagation(),
2376
2455
  []
2377
2456
  );
2378
- const handleSelectItem = (0, import_react35.useCallback)(() => {
2457
+ const handleSelectItem = (0, import_react36.useCallback)(() => {
2379
2458
  if (!value)
2380
2459
  return;
2381
2460
  onSelect(value);
2382
2461
  }, [onSelect, value]);
2383
2462
  if (checked) {
2384
- return /* @__PURE__ */ import_react35.default.createElement(
2463
+ return /* @__PURE__ */ import_react36.default.createElement(
2385
2464
  CheckboxItemElement2,
2386
2465
  {
2387
2466
  checked,
2388
2467
  disabled,
2389
2468
  onSelect: handleSelectItem
2390
2469
  },
2391
- /* @__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)),
2392
2471
  children
2393
2472
  );
2394
2473
  }
2395
- const element = /* @__PURE__ */ import_react35.default.createElement(
2474
+ const element = /* @__PURE__ */ import_react36.default.createElement(
2396
2475
  ItemElement2,
2397
2476
  {
2398
2477
  disabled,
2399
2478
  onSelect: handleSelectItem,
2400
2479
  onPointerDown: handlePointerDown
2401
2480
  },
2402
- indented && /* @__PURE__ */ import_react35.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }),
2403
- 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 })),
2404
2483
  children,
2405
- 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 })),
2406
- 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))
2407
2486
  );
2408
2487
  if (items && items.length > 0) {
2409
- 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);
2410
2489
  } else {
2411
2490
  return element;
2412
2491
  }
@@ -2424,19 +2503,19 @@ function ContextMenuRoot({
2424
2503
  const hasCheckedItem = items.some(
2425
2504
  (item) => item !== SEPARATOR_ITEM && item.checked
2426
2505
  );
2427
- const keymap = (0, import_react35.useMemo)(
2506
+ const keymap = (0, import_react36.useMemo)(
2428
2507
  () => isNested || shouldBindKeyboardShortcuts === false ? {} : getKeyboardShortcutsForMenuItems(items, onSelect),
2429
2508
  [isNested, items, onSelect, shouldBindKeyboardShortcuts]
2430
2509
  );
2431
2510
  (0, import_noya_keymap3.useKeyboardShortcuts)(keymap);
2432
- const onPointerDown = (0, import_react35.useCallback)((event) => {
2511
+ const onPointerDown = (0, import_react36.useCallback)((event) => {
2433
2512
  event.preventDefault();
2434
2513
  }, []);
2435
2514
  const RootComponent = isNested ? RadixContextMenu.Sub : RadixContextMenu.Root;
2436
2515
  const TriggerComponent = isNested ? RadixContextMenu.SubTrigger : RadixContextMenu.Trigger;
2437
2516
  const ContentComponent = isNested ? SubContent4 : Content8;
2438
- 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(
2439
- (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(
2440
2519
  ContextMenuItem2,
2441
2520
  {
2442
2521
  key: item.value ?? index,
@@ -2453,26 +2532,26 @@ function ContextMenuRoot({
2453
2532
  )
2454
2533
  ))));
2455
2534
  }
2456
- var ContextMenu = (0, import_react35.memo)(ContextMenuRoot);
2535
+ var ContextMenu = (0, import_react36.memo)(ContextMenuRoot);
2457
2536
 
2458
2537
  // src/components/Divider.tsx
2459
- var import_react36 = __toESM(require("react"));
2538
+ var import_react37 = __toESM(require("react"));
2460
2539
  var import_styled_components18 = __toESM(require("styled-components"));
2461
2540
  var DividerContainer = import_styled_components18.default.div(({ theme, variant = "normal", orientation, overflow = 0 }) => ({
2462
2541
  ...orientation === "horizontal" ? { height: "1px", minHeight: "1px", margin: `0px -${overflow}px` } : { width: "1px", minWidth: "1px", margin: `-${overflow}px 0px` },
2463
2542
  background: variant === "strong" ? theme.colors.dividerStrong : variant === "subtle" ? theme.colors.dividerSubtle : theme.colors.divider,
2464
2543
  alignSelf: "stretch"
2465
2544
  }));
2466
- var Divider = (0, import_react36.memo)(function Divider2(props) {
2467
- 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 });
2468
2547
  });
2469
- var DividerVertical = (0, import_react36.memo)(function DividerVertical2(props) {
2470
- 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 });
2471
2550
  });
2472
2551
 
2473
2552
  // src/components/DraggableMenuButton.tsx
2474
2553
  var import_noya_icons5 = require("@noya-app/noya-icons");
2475
- var import_react37 = __toESM(require("react"));
2554
+ var import_react38 = __toESM(require("react"));
2476
2555
  var import_styled_components19 = __toESM(require("styled-components"));
2477
2556
  var DotButtonElement = import_styled_components19.default.div(({ theme }) => ({
2478
2557
  cursor: "pointer",
@@ -2492,15 +2571,15 @@ var TriggerElement = import_styled_components19.default.div({
2492
2571
  pointerEvents: "none",
2493
2572
  height: "15px"
2494
2573
  });
2495
- var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2({
2574
+ var DraggableMenuButton = (0, import_react38.memo)(function DraggableMenuButton2({
2496
2575
  items,
2497
2576
  onSelect,
2498
2577
  isVisible = true
2499
2578
  }) {
2500
2579
  const color = useDesignSystemTheme().colors.icon;
2501
- const [open, setOpen] = (0, import_react37.useState)(false);
2502
- const [downPosition, setDownPosition] = import_react37.default.useState(null);
2503
- 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)(
2504
2583
  (event) => {
2505
2584
  if (open) {
2506
2585
  setDownPosition(null);
@@ -2513,7 +2592,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2513
2592
  },
2514
2593
  [open]
2515
2594
  );
2516
- const handlePointerUp = (0, import_react37.useCallback)(
2595
+ const handlePointerUp = (0, import_react38.useCallback)(
2517
2596
  (event) => {
2518
2597
  if (open || !downPosition) {
2519
2598
  setDownPosition(null);
@@ -2529,14 +2608,14 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2529
2608
  },
2530
2609
  [downPosition, open]
2531
2610
  );
2532
- const handleOpenChange = (0, import_react37.useCallback)(
2611
+ const handleOpenChange = (0, import_react38.useCallback)(
2533
2612
  (isOpen) => {
2534
2613
  if (!isOpen)
2535
2614
  setOpen(false);
2536
2615
  },
2537
2616
  [setOpen]
2538
2617
  );
2539
- return /* @__PURE__ */ import_react37.default.createElement(
2618
+ return /* @__PURE__ */ import_react38.default.createElement(
2540
2619
  DotButtonElement,
2541
2620
  {
2542
2621
  onPointerDownCapture: handlePointerDownCapture,
@@ -2546,7 +2625,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2546
2625
  event.preventDefault();
2547
2626
  }
2548
2627
  },
2549
- items && onSelect ? /* @__PURE__ */ import_react37.default.createElement(
2628
+ items && onSelect ? /* @__PURE__ */ import_react38.default.createElement(
2550
2629
  DropdownMenu,
2551
2630
  {
2552
2631
  open,
@@ -2555,13 +2634,13 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2555
2634
  onSelect,
2556
2635
  shouldBindKeyboardShortcuts: false
2557
2636
  },
2558
- /* @__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(
2559
2638
  import_noya_icons5.DragHandleDots2Icon,
2560
2639
  {
2561
2640
  color: isVisible || open ? color : "transparent"
2562
2641
  }
2563
2642
  ))
2564
- ) : /* @__PURE__ */ import_react37.default.createElement(
2643
+ ) : /* @__PURE__ */ import_react38.default.createElement(
2565
2644
  import_noya_icons5.DragHandleDots2Icon,
2566
2645
  {
2567
2646
  color: isVisible || open ? color : "transparent"
@@ -2571,7 +2650,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
2571
2650
  });
2572
2651
 
2573
2652
  // src/components/FillInputField.tsx
2574
- var import_react41 = __toESM(require("react"));
2653
+ var import_react42 = __toESM(require("react"));
2575
2654
  var import_styled_components21 = __toESM(require("styled-components"));
2576
2655
 
2577
2656
  // ../noya-file-format/src/types.ts
@@ -2897,26 +2976,26 @@ var ClassValue = /* @__PURE__ */ ((ClassValue2) => {
2897
2976
  })(ClassValue || {});
2898
2977
 
2899
2978
  // src/components/FillPreviewBackground.tsx
2900
- var import_react40 = __toESM(require("react"));
2979
+ var import_react41 = __toESM(require("react"));
2901
2980
  var import_styled_components20 = __toESM(require("styled-components"));
2902
2981
 
2903
2982
  // src/contexts/ImageDataContext.tsx
2904
- var import_react38 = __toESM(require("react"));
2905
- var ImageDataContext = (0, import_react38.createContext)(
2983
+ var import_react39 = __toESM(require("react"));
2984
+ var ImageDataContext = (0, import_react39.createContext)(
2906
2985
  void 0
2907
2986
  );
2908
- var ImageDataProvider = (0, import_react38.memo)(function ImageDataProvider2({
2987
+ var ImageDataProvider = (0, import_react39.memo)(function ImageDataProvider2({
2909
2988
  children,
2910
2989
  getImageData
2911
2990
  }) {
2912
- const contextValue = (0, import_react38.useMemo)(
2991
+ const contextValue = (0, import_react39.useMemo)(
2913
2992
  () => ({ getImageData: getImageData ?? (() => void 0) }),
2914
2993
  [getImageData]
2915
2994
  );
2916
- return /* @__PURE__ */ import_react38.default.createElement(ImageDataContext.Provider, { value: contextValue }, children);
2995
+ return /* @__PURE__ */ import_react39.default.createElement(ImageDataContext.Provider, { value: contextValue }, children);
2917
2996
  });
2918
2997
  function useImageData(ref) {
2919
- const value = (0, import_react38.useContext)(ImageDataContext);
2998
+ const value = (0, import_react39.useContext)(ImageDataContext);
2920
2999
  if (!value) {
2921
3000
  throw new Error("Missing ImageDataProvider");
2922
3001
  }
@@ -2924,15 +3003,15 @@ function useImageData(ref) {
2924
3003
  }
2925
3004
 
2926
3005
  // src/hooks/useObjectURL.ts
2927
- var import_react39 = require("react");
3006
+ var import_react40 = require("react");
2928
3007
  function useObjectURL(object) {
2929
- const objectURL = (0, import_react39.useMemo)(() => {
3008
+ const objectURL = (0, import_react40.useMemo)(() => {
2930
3009
  if (object instanceof Blob)
2931
3010
  return URL.createObjectURL(object);
2932
3011
  const bytes = object instanceof Uint8Array ? object : object !== void 0 ? new Uint8Array(object) : new Uint8Array();
2933
3012
  return URL.createObjectURL(new Blob([bytes]));
2934
3013
  }, [object]);
2935
- (0, import_react39.useLayoutEffect)(() => {
3014
+ (0, import_react40.useLayoutEffect)(() => {
2936
3015
  return () => URL.revokeObjectURL(objectURL);
2937
3016
  }, [objectURL]);
2938
3017
  return objectURL;
@@ -2988,9 +3067,9 @@ var Background = import_styled_components20.default.span(({ background }) => ({
2988
3067
  position: "absolute",
2989
3068
  inset: 0
2990
3069
  }));
2991
- var HorizontalDotsBackground = (0, import_react40.memo)(function HorizontalDotsBackground2() {
3070
+ var HorizontalDotsBackground = (0, import_react41.memo)(function HorizontalDotsBackground2() {
2992
3071
  const { inputBackground, placeholderDots } = (0, import_styled_components20.useTheme)().colors;
2993
- const background = (0, import_react40.useMemo)(
3072
+ const background = (0, import_react41.useMemo)(
2994
3073
  () => [
2995
3074
  `center url("data:image/svg+xml;utf8,${dotsHorizontalSvg(
2996
3075
  placeholderDots
@@ -2999,7 +3078,7 @@ var HorizontalDotsBackground = (0, import_react40.memo)(function HorizontalDotsB
2999
3078
  ].join(","),
3000
3079
  [inputBackground, placeholderDots]
3001
3080
  );
3002
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3081
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
3003
3082
  });
3004
3083
  function getPatternSizeAndPosition(fillType, tileScale) {
3005
3084
  switch (fillType) {
@@ -3013,7 +3092,7 @@ function getPatternSizeAndPosition(fillType, tileScale) {
3013
3092
  return "center / 100% 100%";
3014
3093
  }
3015
3094
  }
3016
- var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewBackground2({
3095
+ var PatternPreviewBackground = (0, import_react41.memo)(function PatternPreviewBackground2({
3017
3096
  fillType,
3018
3097
  tileScale,
3019
3098
  imageRef
@@ -3021,7 +3100,7 @@ var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewB
3021
3100
  const image = useImageData(imageRef);
3022
3101
  const url = useObjectURL(image);
3023
3102
  const size2 = getPatternSizeAndPosition(fillType, tileScale);
3024
- const background = (0, import_react40.useMemo)(
3103
+ const background = (0, import_react41.useMemo)(
3025
3104
  () => [
3026
3105
  size2,
3027
3106
  `url(${url})`,
@@ -3029,37 +3108,37 @@ var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewB
3029
3108
  ].join(" "),
3030
3109
  [fillType, size2, url]
3031
3110
  );
3032
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3111
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
3033
3112
  });
3034
- var ColorPreviewBackground = (0, import_react40.memo)(function ColorPreviewBackground2({
3113
+ var ColorPreviewBackground = (0, import_react41.memo)(function ColorPreviewBackground2({
3035
3114
  color
3036
3115
  }) {
3037
- const background = (0, import_react40.useMemo)(() => sketchColorToRgbaString(color), [color]);
3038
- 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 });
3039
3118
  });
3040
- var GradientPreviewBackground = (0, import_react40.memo)(function GradientPreviewBackground2({
3119
+ var GradientPreviewBackground = (0, import_react41.memo)(function GradientPreviewBackground2({
3041
3120
  gradient
3042
3121
  }) {
3043
- const background = (0, import_react40.useMemo)(
3122
+ const background = (0, import_react41.useMemo)(
3044
3123
  () => getGradientBackground(gradient.stops, gradient.gradientType, 180),
3045
3124
  [gradient.gradientType, gradient.stops]
3046
3125
  );
3047
- return /* @__PURE__ */ import_react40.default.createElement(Background, { background });
3126
+ return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
3048
3127
  });
3049
- var FillPreviewBackground = (0, import_react40.memo)(function FillPreviewBackground2({
3128
+ var FillPreviewBackground = (0, import_react41.memo)(function FillPreviewBackground2({
3050
3129
  value
3051
3130
  }) {
3052
3131
  if (!value)
3053
- return /* @__PURE__ */ import_react40.default.createElement(HorizontalDotsBackground, null);
3132
+ return /* @__PURE__ */ import_react41.default.createElement(HorizontalDotsBackground, null);
3054
3133
  switch (value._class) {
3055
3134
  case "color":
3056
- return /* @__PURE__ */ import_react40.default.createElement(ColorPreviewBackground, { color: value });
3135
+ return /* @__PURE__ */ import_react41.default.createElement(ColorPreviewBackground, { color: value });
3057
3136
  case "gradient":
3058
- return /* @__PURE__ */ import_react40.default.createElement(GradientPreviewBackground, { gradient: value });
3137
+ return /* @__PURE__ */ import_react41.default.createElement(GradientPreviewBackground, { gradient: value });
3059
3138
  case "pattern":
3060
3139
  if (!value.image)
3061
3140
  return null;
3062
- return /* @__PURE__ */ import_react40.default.createElement(
3141
+ return /* @__PURE__ */ import_react41.default.createElement(
3063
3142
  PatternPreviewBackground,
3064
3143
  {
3065
3144
  fillType: value.patternFillType,
@@ -3089,16 +3168,285 @@ var Container = import_styled_components21.default.button(
3089
3168
  flex
3090
3169
  })
3091
3170
  );
3092
- var FillInputField = (0, import_react41.memo)(
3093
- (0, import_react41.forwardRef)(function FillInputField2({ id, value, ...rest }, ref) {
3094
- 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 }));
3095
3174
  })
3096
3175
  );
3097
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
+
3098
3446
  // src/components/GradientPicker.tsx
3099
3447
  var import_noya_colorpicker2 = require("@noya-app/noya-colorpicker");
3100
- var import_react42 = __toESM(require("react"));
3101
- var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3448
+ var import_react44 = __toESM(require("react"));
3449
+ var GradientPicker = (0, import_react44.memo)(function GradientPicker2({
3102
3450
  value,
3103
3451
  selectedStop,
3104
3452
  onChangeColor,
@@ -3107,7 +3455,7 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3107
3455
  onDelete,
3108
3456
  onSelectStop
3109
3457
  }) {
3110
- const colorModel = (0, import_react42.useMemo)(
3458
+ const colorModel = (0, import_react44.useMemo)(
3111
3459
  () => ({
3112
3460
  defaultColor: { r: 0, g: 0, b: 0, a: 1 },
3113
3461
  toHsva: import_noya_colorpicker2.rgbaToHsva,
@@ -3116,30 +3464,30 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3116
3464
  }),
3117
3465
  []
3118
3466
  );
3119
- const rgbaColor = (0, import_react42.useMemo)(
3467
+ const rgbaColor = (0, import_react44.useMemo)(
3120
3468
  () => sketchColorToRgba(value[selectedStop].color),
3121
3469
  [value, selectedStop]
3122
3470
  );
3123
- const handleChangeColor = (0, import_react42.useCallback)(
3471
+ const handleChangeColor = (0, import_react44.useCallback)(
3124
3472
  (value2) => {
3125
3473
  onChangeColor(rgbaToSketchColor(value2));
3126
3474
  },
3127
3475
  [onChangeColor]
3128
3476
  );
3129
- const handleAddGradientStop = (0, import_react42.useCallback)(
3477
+ const handleAddGradientStop = (0, import_react44.useCallback)(
3130
3478
  (value2, position) => {
3131
3479
  onAdd(rgbaToSketchColor(value2), position);
3132
3480
  },
3133
3481
  [onAdd]
3134
3482
  );
3135
- return /* @__PURE__ */ import_react42.default.createElement(
3483
+ return /* @__PURE__ */ import_react44.default.createElement(
3136
3484
  import_noya_colorpicker2.ColorPicker,
3137
3485
  {
3138
3486
  onChange: handleChangeColor,
3139
3487
  colorModel,
3140
3488
  color: rgbaColor
3141
3489
  },
3142
- /* @__PURE__ */ import_react42.default.createElement(
3490
+ /* @__PURE__ */ import_react44.default.createElement(
3143
3491
  import_noya_colorpicker2.Gradient,
3144
3492
  {
3145
3493
  gradients: value,
@@ -3150,12 +3498,12 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
3150
3498
  onDelete
3151
3499
  }
3152
3500
  ),
3153
- /* @__PURE__ */ import_react42.default.createElement(Spacer.Vertical, { size: 10 }),
3154
- /* @__PURE__ */ import_react42.default.createElement(import_noya_colorpicker2.Saturation, null),
3155
- /* @__PURE__ */ import_react42.default.createElement(Spacer.Vertical, { size: 12 }),
3156
- /* @__PURE__ */ import_react42.default.createElement(import_noya_colorpicker2.Hue, null),
3157
- /* @__PURE__ */ import_react42.default.createElement(Spacer.Vertical, { size: 5 }),
3158
- /* @__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)
3159
3507
  );
3160
3508
  });
3161
3509
 
@@ -3187,12 +3535,12 @@ var Grid = import_styled_components22.default.div((props) => ({
3187
3535
  }));
3188
3536
 
3189
3537
  // src/components/GridView.tsx
3190
- var import_react44 = __toESM(require("react"));
3538
+ var import_react46 = __toESM(require("react"));
3191
3539
  var import_styled_components24 = __toESM(require("styled-components"));
3192
3540
 
3193
3541
  // src/components/ScrollArea.tsx
3194
3542
  var RadixScrollArea = __toESM(require("@radix-ui/react-scroll-area"));
3195
- var import_react43 = __toESM(require("react"));
3543
+ var import_react45 = __toESM(require("react"));
3196
3544
  var import_styled_components23 = __toESM(require("styled-components"));
3197
3545
  var SCROLLBAR_SIZE = 10;
3198
3546
  var StyledViewport = (0, import_styled_components23.default)(RadixScrollArea.Viewport)({
@@ -3220,18 +3568,18 @@ var Container2 = import_styled_components23.default.div({
3220
3568
  flex: "1 1 0px",
3221
3569
  minHeight: 0
3222
3570
  });
3223
- var ScrollArea = (0, import_react43.memo)(function ScrollArea2({ children }) {
3224
- const [scrollElementRef, setScrollElementRef] = (0, import_react43.useState)(null);
3225
- 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(
3226
3574
  StyledViewport,
3227
3575
  {
3228
- ref: (0, import_react43.useCallback)(
3576
+ ref: (0, import_react45.useCallback)(
3229
3577
  (ref) => setScrollElementRef(ref),
3230
3578
  []
3231
3579
  )
3232
3580
  },
3233
3581
  typeof children === "function" ? scrollElementRef ? children(scrollElementRef) : null : children
3234
- ), /* @__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" }))));
3235
3583
  });
3236
3584
 
3237
3585
  // src/components/GridView.tsx
@@ -3411,7 +3759,7 @@ var Shimmer = import_styled_components24.default.div`
3411
3759
  align-items: end;
3412
3760
  padding: 4px;
3413
3761
  `;
3414
- var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3762
+ var GridViewItem = (0, import_react46.forwardRef)(function GridViewItem2({
3415
3763
  id,
3416
3764
  title,
3417
3765
  subtitle,
@@ -3427,15 +3775,15 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3427
3775
  onContextMenu,
3428
3776
  style: style3
3429
3777
  }, forwardedRef) {
3430
- const [hovered, setHovered] = import_react44.default.useState(false);
3778
+ const [hovered, setHovered] = import_react46.default.useState(false);
3431
3779
  const { hoverProps } = useHover({
3432
3780
  onHoverChange: (isHovering) => {
3433
3781
  onHoverChange?.(isHovering);
3434
3782
  setHovered(isHovering);
3435
3783
  }
3436
3784
  });
3437
- const { textPosition, bordered, disabled } = (0, import_react44.useContext)(GridViewContext);
3438
- const handleClick = (0, import_react44.useCallback)(
3785
+ const { textPosition, bordered, disabled } = (0, import_react46.useContext)(GridViewContext);
3786
+ const handleClick = (0, import_react46.useCallback)(
3439
3787
  (event) => {
3440
3788
  event.stopPropagation();
3441
3789
  event.preventDefault();
@@ -3444,7 +3792,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3444
3792
  },
3445
3793
  [onClick, onPress]
3446
3794
  );
3447
- const handleKeyDown = (0, import_react44.useCallback)(
3795
+ const handleKeyDown = (0, import_react46.useCallback)(
3448
3796
  (event) => {
3449
3797
  if (event.key === "Enter" || event.key === " ") {
3450
3798
  event.stopPropagation();
@@ -3456,7 +3804,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3456
3804
  },
3457
3805
  [onPress]
3458
3806
  );
3459
- let element = /* @__PURE__ */ import_react44.default.createElement(
3807
+ let element = /* @__PURE__ */ import_react46.default.createElement(
3460
3808
  ItemContainer,
3461
3809
  {
3462
3810
  id,
@@ -3465,7 +3813,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3465
3813
  tabIndex: disabled ? void 0 : 0,
3466
3814
  onKeyDown: handleKeyDown
3467
3815
  },
3468
- /* @__PURE__ */ import_react44.default.createElement(
3816
+ /* @__PURE__ */ import_react46.default.createElement(
3469
3817
  ContentContainer,
3470
3818
  {
3471
3819
  disabled,
@@ -3479,25 +3827,25 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
3479
3827
  },
3480
3828
  children
3481
3829
  ),
3482
- 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 || " ")),
3483
- 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)),
3484
- 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 }))
3485
3833
  );
3486
3834
  if (menuItems && onSelectMenuItem) {
3487
- 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);
3488
3836
  }
3489
3837
  if (textPosition === "toolip") {
3490
- element = /* @__PURE__ */ import_react44.default.createElement(
3838
+ element = /* @__PURE__ */ import_react46.default.createElement(
3491
3839
  Tooltip,
3492
3840
  {
3493
- 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))
3494
3842
  },
3495
3843
  element
3496
3844
  );
3497
3845
  }
3498
3846
  return element;
3499
3847
  });
3500
- var GridViewContext = (0, import_react44.createContext)({
3848
+ var GridViewContext = (0, import_react46.createContext)({
3501
3849
  size: "small",
3502
3850
  textPosition: "below",
3503
3851
  bordered: false,
@@ -3512,7 +3860,7 @@ function GridViewRoot({
3512
3860
  bordered = false,
3513
3861
  disabled = false
3514
3862
  }) {
3515
- const handleClick = (0, import_react44.useCallback)(
3863
+ const handleClick = (0, import_react46.useCallback)(
3516
3864
  (event) => {
3517
3865
  event.stopPropagation();
3518
3866
  event.preventDefault();
@@ -3520,7 +3868,7 @@ function GridViewRoot({
3520
3868
  },
3521
3869
  [onClick]
3522
3870
  );
3523
- const contextValue = (0, import_react44.useMemo)(
3871
+ const contextValue = (0, import_react46.useMemo)(
3524
3872
  () => ({
3525
3873
  size: size2,
3526
3874
  textPosition,
@@ -3529,33 +3877,33 @@ function GridViewRoot({
3529
3877
  }),
3530
3878
  [bordered, disabled, size2, textPosition]
3531
3879
  );
3532
- 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));
3533
3881
  }
3534
3882
  function GridViewSection({
3535
3883
  children,
3536
3884
  padding = "20px"
3537
3885
  }) {
3538
- const { size: size2 } = (0, import_react44.useContext)(GridViewContext);
3539
- 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);
3540
3888
  }
3541
3889
  function GridViewSectionHeader({ title }) {
3542
3890
  const grouped = title.split("/");
3543
- return /* @__PURE__ */ import_react44.default.createElement(SectionHeaderContainer, null, /* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 24 }), withSeparatorElements(
3544
- grouped.map((title2, index) => /* @__PURE__ */ import_react44.default.createElement(SectionTitle, { last: index === grouped.length - 1 }, title2)),
3545
- /* @__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, " / ")
3546
3894
  ));
3547
3895
  }
3548
3896
  var GridView;
3549
3897
  ((GridView2) => {
3550
- GridView2.Root = (0, import_react44.memo)(GridViewRoot);
3551
- GridView2.Item = (0, import_react44.memo)(GridViewItem);
3552
- GridView2.Section = (0, import_react44.memo)(GridViewSection);
3553
- 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);
3554
3902
  })(GridView || (GridView = {}));
3555
3903
 
3556
3904
  // src/components/InputFieldWithCompletions.tsx
3557
- var import_noya_utils8 = require("@noya-app/noya-utils");
3558
- var import_react48 = __toESM(require("react"));
3905
+ var import_noya_utils9 = require("@noya-app/noya-utils");
3906
+ var import_react50 = __toESM(require("react"));
3559
3907
  var import_styled_components27 = __toESM(require("styled-components"));
3560
3908
 
3561
3909
  // src/utils/fuzzyScorer.ts
@@ -3630,15 +3978,15 @@ function mergeRanges(ranges) {
3630
3978
  }
3631
3979
 
3632
3980
  // src/components/ListView.tsx
3633
- var import_noya_utils7 = require("@noya-app/noya-utils");
3981
+ var import_noya_utils8 = require("@noya-app/noya-utils");
3634
3982
  var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
3635
- var import_react46 = __toESM(require("react"));
3983
+ var import_react48 = __toESM(require("react"));
3636
3984
  var import_react_virtualized = require("react-virtualized");
3637
3985
  var import_react_window = require("react-window");
3638
3986
  var import_styled_components25 = __toESM(require("styled-components"));
3639
3987
 
3640
3988
  // src/hooks/mergeEventHandlers.ts
3641
- var import_noya_utils6 = require("@noya-app/noya-utils");
3989
+ var import_noya_utils7 = require("@noya-app/noya-utils");
3642
3990
  var import_primitive = require("@radix-ui/primitive");
3643
3991
  function composeAllEventHandlers(...handlers) {
3644
3992
  const [first, ...rest] = handlers;
@@ -3648,7 +3996,7 @@ function composeAllEventHandlers(...handlers) {
3648
3996
  );
3649
3997
  }
3650
3998
  function mergeEventHandlers(...handlerMaps) {
3651
- 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());
3652
4000
  return Object.fromEntries(
3653
4001
  eventNames.map((eventName) => {
3654
4002
  const handlers = handlerMaps.flatMap((handlerMap) => {
@@ -3663,8 +4011,8 @@ function mergeEventHandlers(...handlerMaps) {
3663
4011
  // src/components/Sortable.tsx
3664
4012
  var import_core = require("@dnd-kit/core");
3665
4013
  var import_sortable = require("@dnd-kit/sortable");
3666
- var import_react45 = __toESM(require("react"));
3667
- var import_react_dom = require("react-dom");
4014
+ var import_react47 = __toESM(require("react"));
4015
+ var import_react_dom2 = require("react-dom");
3668
4016
  var normalizeListDestinationIndex = (index, position) => {
3669
4017
  return position === "above" ? index : index + 1;
3670
4018
  };
@@ -3677,7 +4025,7 @@ var defaultAcceptsDrop = (sourceIndex, destinationIndex, position) => {
3677
4025
  }
3678
4026
  return true;
3679
4027
  };
3680
- var SortableItemContext = (0, import_react45.createContext)({
4028
+ var SortableItemContext = (0, import_react47.createContext)({
3681
4029
  keys: [],
3682
4030
  position: { x: 0, y: 0 },
3683
4031
  acceptsDrop: defaultAcceptsDrop,
@@ -3699,7 +4047,7 @@ function SortableItem({
3699
4047
  disabled,
3700
4048
  children
3701
4049
  }) {
3702
- const { keys, position, acceptsDrop, setActivatorEvent, axis } = (0, import_react45.useContext)(SortableItemContext);
4050
+ const { keys, position, acceptsDrop, setActivatorEvent, axis } = (0, import_react47.useContext)(SortableItemContext);
3703
4051
  const sortable = (0, import_sortable.useSortable)({ id, disabled });
3704
4052
  const {
3705
4053
  active,
@@ -3719,7 +4067,7 @@ function SortableItem({
3719
4067
  const eventY = activatorEvent?.clientY ?? 0;
3720
4068
  const offsetLeft = eventX + position.x;
3721
4069
  const offsetTop = eventY + position.y;
3722
- const ref = (0, import_react45.useCallback)((node) => setNodeRef(node), [setNodeRef]);
4070
+ const ref = (0, import_react47.useCallback)((node) => setNodeRef(node), [setNodeRef]);
3723
4071
  return children({
3724
4072
  ref,
3725
4073
  ...attributes,
@@ -3750,22 +4098,22 @@ function SortableRoot({
3750
4098
  }
3751
4099
  })
3752
4100
  );
3753
- const [activeIndex, setActiveIndex] = (0, import_react45.useState)();
3754
- const activatorEvent = (0, import_react45.useRef)(null);
3755
- 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) => {
3756
4104
  activatorEvent.current = event;
3757
4105
  }, []);
3758
- const [position, setPosition] = (0, import_react45.useState)({ x: 0, y: 0 });
3759
- 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)(
3760
4108
  (event) => {
3761
4109
  setActiveIndex(keys.indexOf(event.active.id));
3762
4110
  },
3763
4111
  [keys]
3764
4112
  );
3765
- const handleDragMove = (0, import_react45.useCallback)((event) => {
4113
+ const handleDragMove = (0, import_react47.useCallback)((event) => {
3766
4114
  setPosition({ ...event.delta });
3767
4115
  }, []);
3768
- const handleDragEnd = (0, import_react45.useCallback)(
4116
+ const handleDragEnd = (0, import_react47.useCallback)(
3769
4117
  (event) => {
3770
4118
  const { active, over } = event;
3771
4119
  setActiveIndex(void 0);
@@ -3792,10 +4140,10 @@ function SortableRoot({
3792
4140
  },
3793
4141
  [acceptsDrop, axis, keys, onMoveItem, position.x, position.y]
3794
4142
  );
3795
- return /* @__PURE__ */ import_react45.default.createElement(
4143
+ return /* @__PURE__ */ import_react47.default.createElement(
3796
4144
  SortableItemContext.Provider,
3797
4145
  {
3798
- value: (0, import_react45.useMemo)(
4146
+ value: (0, import_react47.useMemo)(
3799
4147
  () => ({
3800
4148
  keys,
3801
4149
  acceptsDrop,
@@ -3806,7 +4154,7 @@ function SortableRoot({
3806
4154
  [acceptsDrop, axis, keys, position, setActivatorEvent]
3807
4155
  )
3808
4156
  },
3809
- /* @__PURE__ */ import_react45.default.createElement(
4157
+ /* @__PURE__ */ import_react47.default.createElement(
3810
4158
  import_core.DndContext,
3811
4159
  {
3812
4160
  sensors,
@@ -3815,9 +4163,9 @@ function SortableRoot({
3815
4163
  onDragMove: handleDragMove,
3816
4164
  onDragEnd: handleDragEnd
3817
4165
  },
3818
- /* @__PURE__ */ import_react45.default.createElement(import_sortable.SortableContext, { items: keys, strategy: import_sortable.verticalListSortingStrategy }, children),
3819
- renderOverlay && (0, import_react_dom.createPortal)(
3820
- /* @__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)),
3821
4169
  document.body
3822
4170
  )
3823
4171
  )
@@ -3825,17 +4173,17 @@ function SortableRoot({
3825
4173
  }
3826
4174
  var Sortable;
3827
4175
  ((Sortable2) => {
3828
- Sortable2.Item = (0, import_react45.memo)(SortableItem);
3829
- Sortable2.Root = (0, import_react45.memo)(SortableRoot);
4176
+ Sortable2.Item = (0, import_react47.memo)(SortableItem);
4177
+ Sortable2.Root = (0, import_react47.memo)(SortableRoot);
3830
4178
  })(Sortable || (Sortable = {}));
3831
4179
 
3832
4180
  // src/components/ListView.tsx
3833
4181
  var ROW_HEIGHT = 31;
3834
4182
  var SECTION_HEADER_LABEL_HEIGHT = 27;
3835
- var DraggingContext = (0, import_react46.createContext)({
4183
+ var DraggingContext = (0, import_react48.createContext)({
3836
4184
  indentation: 12
3837
4185
  });
3838
- var ListRowContext = (0, import_react46.createContext)({
4186
+ var ListRowContext = (0, import_react48.createContext)({
3839
4187
  marginType: "none",
3840
4188
  selectedPosition: "only",
3841
4189
  sortable: false,
@@ -3865,8 +4213,8 @@ function ListViewEditableRowTitle({
3865
4213
  autoFocus,
3866
4214
  placeholder
3867
4215
  }) {
3868
- const inputRef = (0, import_react46.useRef)(null);
3869
- (0, import_react46.useLayoutEffect)(() => {
4216
+ const inputRef = (0, import_react48.useRef)(null);
4217
+ (0, import_react48.useLayoutEffect)(() => {
3870
4218
  const element = inputRef.current;
3871
4219
  if (!element || !autoFocus)
3872
4220
  return;
@@ -3875,7 +4223,7 @@ function ListViewEditableRowTitle({
3875
4223
  element.select();
3876
4224
  }, 0);
3877
4225
  }, [autoFocus]);
3878
- return /* @__PURE__ */ import_react46.default.createElement(
4226
+ return /* @__PURE__ */ import_react48.default.createElement(
3879
4227
  ListViewEditableRowTitleElement,
3880
4228
  {
3881
4229
  ref: inputRef,
@@ -3997,7 +4345,7 @@ var ListViewDragIndicatorElement = import_styled_components25.default.div(({ the
3997
4345
  boxShadow: "0 0 2px rgba(0,0,0,0.5)"
3998
4346
  }
3999
4347
  }));
4000
- var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4348
+ var ListViewRow = (0, import_react48.forwardRef)(function ListViewRow2({
4001
4349
  id,
4002
4350
  tabIndex = 0,
4003
4351
  gap,
@@ -4030,12 +4378,12 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4030
4378
  divider,
4031
4379
  gap: listGap,
4032
4380
  colorScheme
4033
- } = (0, import_react46.useContext)(ListRowContext);
4381
+ } = (0, import_react48.useContext)(ListRowContext);
4034
4382
  const { hoverProps } = useHover({
4035
4383
  onHoverChange
4036
4384
  });
4037
- const { indentation, isDragging } = (0, import_react46.useContext)(DraggingContext);
4038
- const handlePress = (0, import_react46.useCallback)(
4385
+ const { indentation, isDragging } = (0, import_react48.useContext)(DraggingContext);
4386
+ const handlePress = (0, import_react48.useCallback)(
4039
4387
  (event) => {
4040
4388
  event.preventDefault();
4041
4389
  if (event.button !== 0)
@@ -4044,14 +4392,14 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4044
4392
  },
4045
4393
  [onPress]
4046
4394
  );
4047
- const handleDoubleClick = (0, import_react46.useCallback)(
4395
+ const handleDoubleClick = (0, import_react48.useCallback)(
4048
4396
  (event) => {
4049
4397
  event.stopPropagation();
4050
4398
  onDoubleClick?.();
4051
4399
  },
4052
4400
  [onDoubleClick]
4053
4401
  );
4054
- const mergedStyle = (0, import_react46.useMemo)(() => {
4402
+ const mergedStyle = (0, import_react48.useMemo)(() => {
4055
4403
  return isDragging ? {
4056
4404
  // TODO: Where do these offsets actually come from?
4057
4405
  transform: `translate3d(-36px, -6px, 0)`,
@@ -4063,7 +4411,7 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4063
4411
  relativeDropPosition,
4064
4412
  ...renderProps
4065
4413
  }, ref) => {
4066
- const element = /* @__PURE__ */ import_react46.default.createElement(
4414
+ const element = /* @__PURE__ */ import_react48.default.createElement(
4067
4415
  RowContainer,
4068
4416
  {
4069
4417
  ref,
@@ -4094,7 +4442,7 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4094
4442
  ),
4095
4443
  tabIndex
4096
4444
  },
4097
- relativeDropPosition && /* @__PURE__ */ import_react46.default.createElement(
4445
+ relativeDropPosition && /* @__PURE__ */ import_react48.default.createElement(
4098
4446
  ListViewDragIndicatorElement,
4099
4447
  {
4100
4448
  colorScheme,
@@ -4103,11 +4451,11 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4103
4451
  gap: listGap
4104
4452
  }
4105
4453
  ),
4106
- 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 }),
4107
4455
  children
4108
4456
  );
4109
4457
  if (menuItems && onSelectMenuItem) {
4110
- return /* @__PURE__ */ import_react46.default.createElement(
4458
+ return /* @__PURE__ */ import_react48.default.createElement(
4111
4459
  ContextMenu,
4112
4460
  {
4113
4461
  items: menuItems,
@@ -4120,21 +4468,21 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
4120
4468
  return element;
4121
4469
  };
4122
4470
  if (sortable && id) {
4123
- 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)));
4124
4472
  }
4125
4473
  return renderContent({}, forwardedRef);
4126
4474
  });
4127
- var RenderItemContext = (0, import_react46.createContext)(
4475
+ var RenderItemContext = (0, import_react48.createContext)(
4128
4476
  () => null
4129
4477
  );
4130
- var VirtualizedListRow = (0, import_react46.memo)(function VirtualizedListRow2({
4478
+ var VirtualizedListRow = (0, import_react48.memo)(function VirtualizedListRow2({
4131
4479
  index,
4132
4480
  style: style3
4133
4481
  }) {
4134
- const renderItem = (0, import_react46.useContext)(RenderItemContext);
4135
- 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));
4136
4484
  });
4137
- var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedListInner2({
4485
+ var VirtualizedListInner = (0, import_react48.forwardRef)(function VirtualizedListInner2({
4138
4486
  size: size2,
4139
4487
  scrollElement,
4140
4488
  items,
@@ -4142,20 +4490,20 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
4142
4490
  keyExtractor,
4143
4491
  renderItem
4144
4492
  }, ref) {
4145
- const listRef = (0, import_react46.useRef)(null);
4146
- (0, import_react46.useImperativeHandle)(ref, () => ({
4493
+ const listRef = (0, import_react48.useRef)(null);
4494
+ (0, import_react48.useImperativeHandle)(ref, () => ({
4147
4495
  scrollToIndex(index) {
4148
4496
  listRef.current?.scrollToItem(index);
4149
4497
  }
4150
4498
  }));
4151
- (0, import_react46.useLayoutEffect)(() => {
4499
+ (0, import_react48.useLayoutEffect)(() => {
4152
4500
  listRef.current?.resetAfterIndex(0);
4153
4501
  }, [
4154
4502
  // When items change, we need to re-render the virtualized list,
4155
4503
  // since it doesn't currently support row height changes
4156
4504
  items
4157
4505
  ]);
4158
- const listStyle = (0, import_react46.useMemo)(
4506
+ const listStyle = (0, import_react48.useMemo)(
4159
4507
  () => ({
4160
4508
  overflowX: "initial",
4161
4509
  overflowY: "initial",
@@ -4163,18 +4511,18 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
4163
4511
  }),
4164
4512
  []
4165
4513
  );
4166
- 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(
4167
4515
  import_react_virtualized.WindowScroller,
4168
4516
  {
4169
4517
  scrollElement,
4170
- style: (0, import_react46.useMemo)(() => ({ flex: "1 1 auto" }), [])
4518
+ style: (0, import_react48.useMemo)(() => ({ flex: "1 1 auto" }), [])
4171
4519
  },
4172
- (0, import_react46.useCallback)(
4520
+ (0, import_react48.useCallback)(
4173
4521
  ({
4174
4522
  registerChild,
4175
4523
  onChildScroll,
4176
4524
  scrollTop
4177
- }) => /* @__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(
4178
4526
  import_react_window.VariableSizeList,
4179
4527
  {
4180
4528
  ref: listRef,
@@ -4204,7 +4552,7 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
4204
4552
  )
4205
4553
  ));
4206
4554
  });
4207
- var VirtualizedList = (0, import_react46.memo)(
4555
+ var VirtualizedList = (0, import_react48.memo)(
4208
4556
  VirtualizedListInner
4209
4557
  );
4210
4558
  var RootContainer2 = import_styled_components25.default.div(({ theme, scrollable, gap }) => ({
@@ -4215,7 +4563,7 @@ var RootContainer2 = import_styled_components25.default.div(({ theme, scrollable
4215
4563
  color: theme.colors.textMuted,
4216
4564
  gap
4217
4565
  }));
4218
- var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInner2({
4566
+ var ListViewRootInner = (0, import_react48.forwardRef)(function ListViewRootInner2({
4219
4567
  onPress,
4220
4568
  scrollable = false,
4221
4569
  expandable = true,
@@ -4234,7 +4582,7 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4234
4582
  colorScheme = "primary",
4235
4583
  gap = 0
4236
4584
  }, forwardedRef) {
4237
- const handleClick = (0, import_react46.useCallback)(
4585
+ const handleClick = (0, import_react48.useCallback)(
4238
4586
  (event) => {
4239
4587
  if (event.target instanceof HTMLElement && event.target.classList.contains("scroll-component"))
4240
4588
  return;
@@ -4244,19 +4592,19 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4244
4592
  },
4245
4593
  [onPress]
4246
4594
  );
4247
- const renderChild = (0, import_react46.useCallback)(
4595
+ const renderChild = (0, import_react48.useCallback)(
4248
4596
  (index) => renderItem(data[index], index, { isDragging: false }),
4249
4597
  [data, renderItem]
4250
4598
  );
4251
- const getItemContextValue = (0, import_react46.useCallback)(
4599
+ const getItemContextValue = (0, import_react48.useCallback)(
4252
4600
  (i) => {
4253
4601
  const current = renderChild(i);
4254
- if (!(0, import_react46.isValidElement)(current))
4602
+ if (!(0, import_react48.isValidElement)(current))
4255
4603
  return;
4256
4604
  const prevChild = i - 1 >= 0 && renderChild(i - 1);
4257
4605
  const nextChild = i + 1 < data.length && renderChild(i + 1);
4258
- const next = (0, import_react46.isValidElement)(nextChild) ? nextChild : void 0;
4259
- 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;
4260
4608
  const hasMarginTop = !prev;
4261
4609
  const hasMarginBottom = !next || current.props.isSectionHeader || next && next.props.isSectionHeader;
4262
4610
  let marginType;
@@ -4308,26 +4656,26 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4308
4656
  gap
4309
4657
  ]
4310
4658
  );
4311
- const draggingContextOverlayValue = (0, import_react46.useMemo)(
4659
+ const draggingContextOverlayValue = (0, import_react48.useMemo)(
4312
4660
  () => ({ indentation, isDragging: true }),
4313
4661
  [indentation]
4314
4662
  );
4315
- const renderOverlay = (0, import_react46.useCallback)(
4316
- (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 }))),
4317
4665
  [draggingContextOverlayValue, renderItem, data]
4318
4666
  );
4319
- const renderWrappedChild = (0, import_react46.useCallback)(
4667
+ const renderWrappedChild = (0, import_react48.useCallback)(
4320
4668
  (index) => {
4321
4669
  const contextValue = getItemContextValue(index);
4322
4670
  const current = renderChild(index);
4323
- if (!contextValue || !(0, import_react46.isValidElement)(current))
4671
+ if (!contextValue || !(0, import_react48.isValidElement)(current))
4324
4672
  return null;
4325
- 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);
4326
4674
  },
4327
4675
  [getItemContextValue, renderChild]
4328
4676
  );
4329
- const ids = (0, import_react46.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
4330
- 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(
4331
4679
  Sortable.Root,
4332
4680
  {
4333
4681
  onMoveItem,
@@ -4337,8 +4685,8 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4337
4685
  },
4338
4686
  children
4339
4687
  ) : children;
4340
- const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react46.default.createElement(ScrollArea, null, children) : children(null);
4341
- 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)(
4342
4690
  (index) => {
4343
4691
  const child = getItemContextValue(index);
4344
4692
  const margin = child?.marginType ? getPositionMargin(child.marginType) : { top: 0, bottom: 0 };
@@ -4347,12 +4695,12 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4347
4695
  },
4348
4696
  [getItemContextValue, variant]
4349
4697
  );
4350
- const getKey = (0, import_react46.useCallback)(
4698
+ const getKey = (0, import_react48.useCallback)(
4351
4699
  (index) => keyExtractor(data[index], index),
4352
4700
  [data, keyExtractor]
4353
4701
  );
4354
- const draggingContextValue = (0, import_react46.useMemo)(() => ({ indentation }), [indentation]);
4355
- 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(
4356
4704
  RootContainer2,
4357
4705
  {
4358
4706
  ...{
@@ -4363,7 +4711,7 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4363
4711
  },
4364
4712
  withScrollable(
4365
4713
  (scrollElementRef) => withSortable(
4366
- virtualized ? /* @__PURE__ */ import_react46.default.createElement(
4714
+ virtualized ? /* @__PURE__ */ import_react48.default.createElement(
4367
4715
  VirtualizedList,
4368
4716
  {
4369
4717
  ref: forwardedRef,
@@ -4374,47 +4722,47 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
4374
4722
  keyExtractor: getKey,
4375
4723
  renderItem: renderWrappedChild
4376
4724
  }
4377
- ) : (0, import_noya_utils7.range)(0, data.length).map(renderWrappedChild)
4725
+ ) : (0, import_noya_utils8.range)(0, data.length).map(renderWrappedChild)
4378
4726
  )
4379
4727
  )
4380
4728
  ));
4381
4729
  });
4382
- var ListViewRoot = (0, import_react46.memo)(ListViewRootInner);
4383
- var ChildrenListViewInner = (0, import_react46.forwardRef)(function ChildrenListViewInner2({ children, ...rest }, forwardedRef) {
4384
- const items = (0, import_react46.useMemo)(
4385
- () => import_react46.Children.toArray(children).flatMap(
4386
- (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] : []
4387
4735
  ),
4388
4736
  [children]
4389
4737
  );
4390
- return /* @__PURE__ */ import_react46.default.createElement(
4738
+ return /* @__PURE__ */ import_react48.default.createElement(
4391
4739
  ListViewRoot,
4392
4740
  {
4393
4741
  ref: forwardedRef,
4394
4742
  ...rest,
4395
4743
  data: items,
4396
- keyExtractor: (0, import_react46.useCallback)(
4744
+ keyExtractor: (0, import_react48.useCallback)(
4397
4745
  ({ key }, index) => typeof key === "string" ? key : (key ?? index).toString(),
4398
4746
  []
4399
4747
  ),
4400
- renderItem: (0, import_react46.useCallback)((item) => item, [])
4748
+ renderItem: (0, import_react48.useCallback)((item) => item, [])
4401
4749
  }
4402
4750
  );
4403
4751
  });
4404
- var ChildrenListView = (0, import_react46.memo)(ChildrenListViewInner);
4405
- 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) {
4406
4754
  if ("children" in props) {
4407
- return /* @__PURE__ */ import_react46.default.createElement(ChildrenListView, { ref: forwardedRef, ...props });
4755
+ return /* @__PURE__ */ import_react48.default.createElement(ChildrenListView, { ref: forwardedRef, ...props });
4408
4756
  } else {
4409
- return /* @__PURE__ */ import_react46.default.createElement(ListViewRoot, { ref: forwardedRef, ...props });
4757
+ return /* @__PURE__ */ import_react48.default.createElement(ListViewRoot, { ref: forwardedRef, ...props });
4410
4758
  }
4411
4759
  });
4412
- var SimpleListView = (0, import_react46.memo)(SimpleListViewInner);
4760
+ var SimpleListView = (0, import_react48.memo)(SimpleListViewInner);
4413
4761
  var ListView;
4414
4762
  ((ListView2) => {
4415
- ListView2.RowTitle = (0, import_react46.memo)(ListViewRowTitle);
4416
- ListView2.EditableRowTitle = (0, import_react46.memo)(ListViewEditableRowTitle);
4417
- 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);
4418
4766
  ListView2.Root = SimpleListView;
4419
4767
  ListView2.RowContext = ListRowContext;
4420
4768
  ListView2.DragIndicator = ListViewDragIndicatorElement;
@@ -4427,7 +4775,7 @@ var ListView;
4427
4775
  })(ListView || (ListView = {}));
4428
4776
 
4429
4777
  // src/components/Text.tsx
4430
- var import_react47 = __toESM(require("react"));
4778
+ var import_react49 = __toESM(require("react"));
4431
4779
  var import_styled_components26 = __toESM(require("styled-components"));
4432
4780
  var elements = {
4433
4781
  title: "h1",
@@ -4439,6 +4787,7 @@ var elements = {
4439
4787
  heading5: "h5",
4440
4788
  body: "p",
4441
4789
  small: "span",
4790
+ button: "span",
4442
4791
  code: "code",
4443
4792
  label: "span"
4444
4793
  };
@@ -4448,7 +4797,7 @@ var StyledElement = import_styled_components26.default.span(({ theme, variant, s
4448
4797
  ...styleProps,
4449
4798
  ...mergeBreakpoints(breakpoints || [])
4450
4799
  }));
4451
- var Text = (0, import_react47.forwardRef)(function Text2({
4800
+ var Text = (0, import_react49.forwardRef)(function Text2({
4452
4801
  as,
4453
4802
  variant,
4454
4803
  breakpoints,
@@ -4460,7 +4809,7 @@ var Text = (0, import_react47.forwardRef)(function Text2({
4460
4809
  ...rest
4461
4810
  }, forwardedRef) {
4462
4811
  const element = as ?? elements[variant] ?? "span";
4463
- return /* @__PURE__ */ import_react47.default.createElement(
4812
+ return /* @__PURE__ */ import_react49.default.createElement(
4464
4813
  StyledElement,
4465
4814
  {
4466
4815
  ref: forwardedRef,
@@ -4476,28 +4825,28 @@ var Text = (0, import_react47.forwardRef)(function Text2({
4476
4825
  children
4477
4826
  );
4478
4827
  });
4479
- var Heading1 = (0, import_react47.forwardRef)(
4480
- (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" })
4481
4830
  );
4482
- var Heading2 = (0, import_react47.forwardRef)(
4483
- (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" })
4484
4833
  );
4485
- var Heading3 = (0, import_react47.forwardRef)(
4486
- (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" })
4487
4836
  );
4488
- var Heading4 = (0, import_react47.forwardRef)(
4489
- (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" })
4490
4839
  );
4491
- var Heading5 = (0, import_react47.forwardRef)(
4492
- (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" })
4493
4842
  );
4494
- var Body = (0, import_react47.forwardRef)(
4495
- (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" })
4496
4845
  );
4497
- var Small = (0, import_react47.forwardRef)(
4498
- (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" })
4499
4848
  );
4500
- var Italic = ({ children }) => /* @__PURE__ */ import_react47.default.createElement(
4849
+ var Italic = ({ children }) => /* @__PURE__ */ import_react49.default.createElement(
4501
4850
  "span",
4502
4851
  {
4503
4852
  style: {
@@ -4509,9 +4858,9 @@ var Italic = ({ children }) => /* @__PURE__ */ import_react47.default.createElem
4509
4858
 
4510
4859
  // src/components/InputFieldWithCompletions.tsx
4511
4860
  function filterWithGroupedSections(items, query) {
4512
- 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");
4513
4862
  return sections.flatMap((section) => {
4514
- const [headers, regular] = (0, import_noya_utils8.partition)(
4863
+ const [headers, regular] = (0, import_noya_utils9.partition)(
4515
4864
  section,
4516
4865
  (item) => item.type === "sectionHeader"
4517
4866
  );
@@ -4539,15 +4888,15 @@ var CompletionToken = import_styled_components27.default.span(
4539
4888
  whiteSpace: "pre"
4540
4889
  })
4541
4890
  );
4542
- var CompletionMenu = (0, import_react48.memo)(
4543
- (0, import_react48.forwardRef)(function CompletionMenu2({
4891
+ var CompletionMenu = (0, import_react50.memo)(
4892
+ (0, import_react50.forwardRef)(function CompletionMenu2({
4544
4893
  items,
4545
4894
  selectedIndex,
4546
4895
  onSelectItem,
4547
4896
  onHoverIndex,
4548
4897
  listSize
4549
4898
  }, forwardedRef) {
4550
- return /* @__PURE__ */ import_react48.default.createElement(
4899
+ return /* @__PURE__ */ import_react50.default.createElement(
4551
4900
  ListView.Root,
4552
4901
  {
4553
4902
  ref: forwardedRef,
@@ -4559,13 +4908,13 @@ var CompletionMenu = (0, import_react48.memo)(
4559
4908
  sectionHeaderVariant: "label",
4560
4909
  renderItem: (item, i) => {
4561
4910
  if (item.type === "sectionHeader") {
4562
- 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);
4563
4912
  }
4564
4913
  const tokens = fuzzyTokenize({
4565
4914
  item: item.name,
4566
4915
  itemScore: item
4567
4916
  });
4568
- return /* @__PURE__ */ import_react48.default.createElement(
4917
+ return /* @__PURE__ */ import_react50.default.createElement(
4569
4918
  ListView.Row,
4570
4919
  {
4571
4920
  key: item.id,
@@ -4577,16 +4926,16 @@ var CompletionMenu = (0, import_react48.memo)(
4577
4926
  }
4578
4927
  }
4579
4928
  },
4580
- tokens.map((token, j) => /* @__PURE__ */ import_react48.default.createElement(CompletionToken, { key: j, type: token.type }, token.text)),
4581
- 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)
4582
4931
  );
4583
4932
  }
4584
4933
  }
4585
4934
  );
4586
4935
  })
4587
4936
  );
4588
- var InputFieldWithCompletions = (0, import_react48.memo)(
4589
- (0, import_react48.forwardRef)(function InputFieldWithCompletions2({
4937
+ var InputFieldWithCompletions = (0, import_react50.memo)(
4938
+ (0, import_react50.forwardRef)(function InputFieldWithCompletions2({
4590
4939
  loading,
4591
4940
  initialValue = "",
4592
4941
  placeholder,
@@ -4604,13 +4953,13 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4604
4953
  hideChildrenWhenFocused = false,
4605
4954
  hideMenuWhenEmptyValue = false
4606
4955
  }, forwardedRef) {
4607
- const ref = (0, import_react48.useRef)(null);
4608
- const [isFocused, setIsFocused] = (0, import_react48.useState)(false);
4609
- 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)({
4610
4959
  filter: initialValue,
4611
4960
  selectedIndex: 0
4612
4961
  });
4613
- const updateState = (0, import_react48.useCallback)(
4962
+ const updateState = (0, import_react50.useCallback)(
4614
4963
  (newState, hoverItem) => {
4615
4964
  const nextState = { ...state, ...newState };
4616
4965
  const nextItems = filterWithGroupedSections(items, nextState.filter);
@@ -4639,20 +4988,20 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4639
4988
  },
4640
4989
  [items, onChange, onHoverItem, state]
4641
4990
  );
4642
- const initialValueRef = (0, import_react48.useRef)(initialValue);
4643
- (0, import_react48.useLayoutEffect)(() => {
4991
+ const initialValueRef = (0, import_react50.useRef)(initialValue);
4992
+ (0, import_react50.useLayoutEffect)(() => {
4644
4993
  if (initialValueRef.current === initialValue)
4645
4994
  return;
4646
4995
  initialValueRef.current = initialValue;
4647
4996
  updateState({ filter: initialValue });
4648
4997
  }, [initialValue, updateState]);
4649
4998
  const { filter, selectedIndex } = state;
4650
- const listRef = import_react48.default.useRef(null);
4651
- const filteredItems = (0, import_react48.useMemo)(
4999
+ const listRef = import_react50.default.useRef(null);
5000
+ const filteredItems = (0, import_react50.useMemo)(
4652
5001
  () => filterWithGroupedSections(items, filter),
4653
5002
  [items, filter]
4654
5003
  );
4655
- const [normalItems, sectionHeaderItems] = (0, import_noya_utils8.partition)(
5004
+ const [normalItems, sectionHeaderItems] = (0, import_noya_utils9.partition)(
4656
5005
  filteredItems,
4657
5006
  (item) => item.type !== "sectionHeader"
4658
5007
  );
@@ -4664,13 +5013,13 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4664
5013
  ),
4665
5014
  ListView.rowHeight * 10.5
4666
5015
  );
4667
- (0, import_react48.useEffect)(() => {
5016
+ (0, import_react50.useEffect)(() => {
4668
5017
  if (listRef.current) {
4669
5018
  listRef.current.scrollToIndex(selectedIndex);
4670
5019
  }
4671
5020
  }, [selectedIndex]);
4672
- const lastSubmittedValueRef = (0, import_react48.useRef)(void 0);
4673
- const selectItem = (0, import_react48.useCallback)(
5021
+ const lastSubmittedValueRef = (0, import_react50.useRef)(void 0);
5022
+ const selectItem = (0, import_react50.useCallback)(
4674
5023
  (item) => {
4675
5024
  if (item.type === "sectionHeader")
4676
5025
  return;
@@ -4686,17 +5035,17 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4686
5035
  },
4687
5036
  [filter, onSelectItem, onHoverItem, ref]
4688
5037
  );
4689
- const handleChange = (0, import_react48.useCallback)(
5038
+ const handleChange = (0, import_react50.useCallback)(
4690
5039
  (value) => updateState({ selectedIndex: 0, filter: value }),
4691
5040
  [updateState]
4692
5041
  );
4693
- const handleBlur = (0, import_react48.useCallback)(() => {
5042
+ const handleBlur = (0, import_react50.useCallback)(() => {
4694
5043
  setIsFocused(false);
4695
5044
  const didSubmit = lastSubmittedValueRef.current?.filter === filter;
4696
5045
  updateState({ selectedIndex: 0, filter: initialValue }, "resetHover");
4697
5046
  onBlur?.(didSubmit, filter);
4698
5047
  }, [filter, initialValue, onBlur, updateState]);
4699
- const handleFocus = (0, import_react48.useCallback)(
5048
+ const handleFocus = (0, import_react50.useCallback)(
4700
5049
  (event) => {
4701
5050
  setIsFocused(true);
4702
5051
  updateState({ selectedIndex: 0, filter: initialValue });
@@ -4704,11 +5053,11 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4704
5053
  },
4705
5054
  [initialValue, onFocus, updateState]
4706
5055
  );
4707
- const handleIndexChange = (0, import_react48.useCallback)(
5056
+ const handleIndexChange = (0, import_react50.useCallback)(
4708
5057
  (index) => updateState({ selectedIndex: index }),
4709
5058
  [updateState]
4710
5059
  );
4711
- const handleKeyDown = (0, import_react48.useCallback)(
5060
+ const handleKeyDown = (0, import_react50.useCallback)(
4712
5061
  (event) => {
4713
5062
  let handled = false;
4714
5063
  switch (event.key) {
@@ -4772,7 +5121,7 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4772
5121
  );
4773
5122
  const display = !filter && hideMenuWhenEmptyValue ? "none" : "flex";
4774
5123
  const typeaheadValue = filteredItems[selectedIndex]?.name;
4775
- (0, import_react48.useImperativeHandle)(forwardedRef, () => ({
5124
+ (0, import_react50.useImperativeHandle)(forwardedRef, () => ({
4776
5125
  focus: () => {
4777
5126
  ref.current?.focus();
4778
5127
  },
@@ -4783,14 +5132,14 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4783
5132
  ref.current?.setSelectionRange(0, ref.current.value.length);
4784
5133
  }
4785
5134
  }));
4786
- return /* @__PURE__ */ import_react48.default.createElement(
5135
+ return /* @__PURE__ */ import_react50.default.createElement(
4787
5136
  InputField.Root,
4788
5137
  {
4789
5138
  size: size2,
4790
5139
  labelSize: 16,
4791
5140
  renderPopoverContent: ({ width }) => {
4792
5141
  const listSize = { width, height };
4793
- 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(
4794
5143
  CompletionMenu,
4795
5144
  {
4796
5145
  ref: listRef,
@@ -4800,7 +5149,7 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4800
5149
  onHoverIndex: handleIndexChange,
4801
5150
  listSize
4802
5151
  }
4803
- ) : /* @__PURE__ */ import_react48.default.createElement(
5152
+ ) : /* @__PURE__ */ import_react50.default.createElement(
4804
5153
  Stack.V,
4805
5154
  {
4806
5155
  height: "100px",
@@ -4808,11 +5157,11 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4808
5157
  alignItems: "center",
4809
5158
  justifyContent: "center"
4810
5159
  },
4811
- /* @__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")
4812
5161
  ));
4813
5162
  }
4814
5163
  },
4815
- /* @__PURE__ */ import_react48.default.createElement(
5164
+ /* @__PURE__ */ import_react50.default.createElement(
4816
5165
  InputField.Input,
4817
5166
  {
4818
5167
  ref,
@@ -4836,9 +5185,9 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
4836
5185
  "aria-controls": "component-listbox"
4837
5186
  }
4838
5187
  ),
4839
- 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 }),
4840
5189
  (!isFocused || !hideChildrenWhenFocused) && children,
4841
- 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))
4842
5191
  );
4843
5192
  })
4844
5193
  );
@@ -4860,7 +5209,7 @@ function getNextIndex(items, currentIndex, direction, isDisabled) {
4860
5209
  }
4861
5210
 
4862
5211
  // src/components/Label.tsx
4863
- var import_react49 = __toESM(require("react"));
5212
+ var import_react51 = __toESM(require("react"));
4864
5213
  var import_styled_components28 = __toESM(require("styled-components"));
4865
5214
  var LabelLabel = import_styled_components28.default.label(
4866
5215
  ({ theme, selected }) => ({
@@ -4889,17 +5238,17 @@ var LabelContainer2 = import_styled_components28.default.span(({ theme }) => ({
4889
5238
  alignItems: "center"
4890
5239
  }));
4891
5240
  function LabelRoot({ label, children }) {
4892
- 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)));
4893
5242
  }
4894
5243
  var Label;
4895
5244
  ((_Label) => {
4896
- _Label.Label = (0, import_react49.memo)(LabelLabel);
4897
- _Label.Root = (0, import_react49.memo)(LabelRoot);
5245
+ _Label.Label = (0, import_react51.memo)(LabelLabel);
5246
+ _Label.Root = (0, import_react51.memo)(LabelRoot);
4898
5247
  })(Label || (Label = {}));
4899
5248
 
4900
5249
  // src/components/LabeledElementView.tsx
4901
5250
  var kiwi = __toESM(require("kiwi.js"));
4902
- var import_react50 = __toESM(require("react"));
5251
+ var import_react52 = __toESM(require("react"));
4903
5252
  var import_styled_components29 = __toESM(require("styled-components"));
4904
5253
  var Container4 = import_styled_components29.default.div(({ theme }) => ({
4905
5254
  display: "flex",
@@ -4918,24 +5267,24 @@ var Labels = import_styled_components29.default.div(({ theme }) => ({
4918
5267
  overflow: "hidden",
4919
5268
  userSelect: "none"
4920
5269
  }));
4921
- var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
5270
+ var LabeledElementView = (0, import_react52.memo)(function LabeledElementView2({
4922
5271
  children,
4923
5272
  renderLabel
4924
5273
  }) {
4925
- const elementIds = import_react50.Children.toArray(children).flatMap(
4926
- (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]
4927
5276
  ).map(
4928
- (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
4929
5278
  ).filter((id) => !!id);
4930
5279
  const serializedIds = elementIds.join(",");
4931
- const containerRef = (0, import_react50.useRef)(null);
4932
- const refs = (0, import_react50.useMemo)(() => {
5280
+ const containerRef = (0, import_react52.useRef)(null);
5281
+ const refs = (0, import_react52.useMemo)(() => {
4933
5282
  return Object.fromEntries(
4934
- serializedIds.split(",").map((id) => [id, (0, import_react50.createRef)()])
5283
+ serializedIds.split(",").map((id) => [id, (0, import_react52.createRef)()])
4935
5284
  );
4936
5285
  }, [serializedIds]);
4937
- const labelElements = (0, import_react50.useMemo)(() => {
4938
- 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(
4939
5288
  "span",
4940
5289
  {
4941
5290
  key: id,
@@ -4948,7 +5297,7 @@ var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
4948
5297
  })
4949
5298
  ));
4950
5299
  }, [refs, serializedIds, renderLabel]);
4951
- (0, import_react50.useLayoutEffect)(() => {
5300
+ (0, import_react52.useLayoutEffect)(() => {
4952
5301
  if (!containerRef.current)
4953
5302
  return;
4954
5303
  const containerRect = containerRef.current.getBoundingClientRect();
@@ -5013,13 +5362,13 @@ var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
5013
5362
  `${Math.max(...heights)}px`
5014
5363
  );
5015
5364
  }, [refs, labelElements]);
5016
- 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));
5017
5366
  });
5018
5367
 
5019
5368
  // src/components/Progress.tsx
5020
- var import_noya_utils9 = require("@noya-app/noya-utils");
5369
+ var import_noya_utils10 = require("@noya-app/noya-utils");
5021
5370
  var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
5022
- var import_react51 = __toESM(require("react"));
5371
+ var import_react53 = __toESM(require("react"));
5023
5372
  var import_styled_components30 = __toESM(require("styled-components"));
5024
5373
  function Progress({
5025
5374
  value,
@@ -5028,8 +5377,8 @@ function Progress({
5028
5377
  flex,
5029
5378
  variant = "normal"
5030
5379
  }) {
5031
- const clampedValue = (0, import_noya_utils9.clamp)(value, 0, 100);
5032
- 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(
5033
5382
  ProgressIndicator,
5034
5383
  {
5035
5384
  variant,
@@ -5054,7 +5403,7 @@ var ProgressIndicator = (0, import_styled_components30.default)(ProgressPrimitiv
5054
5403
 
5055
5404
  // src/components/RadioGroup.tsx
5056
5405
  var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"));
5057
- var import_react52 = __toESM(require("react"));
5406
+ var import_react54 = __toESM(require("react"));
5058
5407
  var import_styled_components31 = __toESM(require("styled-components"));
5059
5408
  var ignoredProps3 = /* @__PURE__ */ new Set(["colorScheme"]);
5060
5409
  var StyledRoot = (0, import_styled_components31.default)(ToggleGroupPrimitive.Root).withConfig({
@@ -5107,9 +5456,9 @@ var StyledItem = (0, import_styled_components31.default)(ToggleGroupPrimitive.It
5107
5456
  boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors[colorScheme ?? "primary"]}`
5108
5457
  }
5109
5458
  }));
5110
- var ToggleGroupItem = (0, import_react52.forwardRef)(function ToggleGroupItem2({ value, tooltip, children, disabled = false }, forwardedRef) {
5111
- const { colorScheme } = (0, import_react52.useContext)(RadioGroupContext);
5112
- 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(
5113
5462
  StyledItem,
5114
5463
  {
5115
5464
  ref: forwardedRef,
@@ -5119,9 +5468,9 @@ var ToggleGroupItem = (0, import_react52.forwardRef)(function ToggleGroupItem2({
5119
5468
  },
5120
5469
  children
5121
5470
  );
5122
- 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;
5123
5472
  });
5124
- var RadioGroupContext = (0, import_react52.createContext)({
5473
+ var RadioGroupContext = (0, import_react54.createContext)({
5125
5474
  colorScheme: "primary"
5126
5475
  });
5127
5476
  function ToggleGroupRoot({
@@ -5132,8 +5481,8 @@ function ToggleGroupRoot({
5132
5481
  allowEmpty,
5133
5482
  children
5134
5483
  }) {
5135
- const contextValue = (0, import_react52.useMemo)(() => ({ colorScheme }), [colorScheme]);
5136
- const handleValueChange = (0, import_react52.useCallback)(
5484
+ const contextValue = (0, import_react54.useMemo)(() => ({ colorScheme }), [colorScheme]);
5485
+ const handleValueChange = (0, import_react54.useCallback)(
5137
5486
  (value2) => {
5138
5487
  if (!allowEmpty && !value2)
5139
5488
  return;
@@ -5141,7 +5490,7 @@ function ToggleGroupRoot({
5141
5490
  },
5142
5491
  [allowEmpty, onValueChange]
5143
5492
  );
5144
- 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(
5145
5494
  StyledRoot,
5146
5495
  {
5147
5496
  id,
@@ -5155,30 +5504,30 @@ function ToggleGroupRoot({
5155
5504
  }
5156
5505
  var RadioGroup;
5157
5506
  ((RadioGroup2) => {
5158
- RadioGroup2.Root = (0, import_react52.memo)(ToggleGroupRoot);
5159
- RadioGroup2.Item = (0, import_react52.memo)(ToggleGroupItem);
5507
+ RadioGroup2.Root = (0, import_react54.memo)(ToggleGroupRoot);
5508
+ RadioGroup2.Item = (0, import_react54.memo)(ToggleGroupItem);
5160
5509
  })(RadioGroup || (RadioGroup = {}));
5161
5510
 
5162
5511
  // src/components/Select.tsx
5163
- var import_noya_utils10 = require("@noya-app/noya-utils");
5164
- var import_react53 = __toESM(require("react"));
5512
+ var import_noya_utils11 = require("@noya-app/noya-utils");
5513
+ var import_react55 = __toESM(require("react"));
5165
5514
  var import_styled_components32 = __toESM(require("styled-components"));
5166
- var SelectContext = (0, import_react53.createContext)(void 0);
5167
- 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({
5168
5517
  value,
5169
5518
  title,
5170
5519
  onSelect
5171
5520
  }) {
5172
- const { addListener, removeListener } = (0, import_react53.useContext)(SelectContext);
5173
- (0, import_react53.useEffect)(() => {
5521
+ const { addListener, removeListener } = (0, import_react55.useContext)(SelectContext);
5522
+ (0, import_react55.useEffect)(() => {
5174
5523
  if (!onSelect)
5175
5524
  return;
5176
5525
  addListener(value, onSelect);
5177
5526
  return () => removeListener(value);
5178
5527
  }, [addListener, onSelect, removeListener, value]);
5179
- return /* @__PURE__ */ import_react53.default.createElement("option", { value }, title ?? value);
5528
+ return /* @__PURE__ */ import_react55.default.createElement("option", { value }, title ?? value);
5180
5529
  });
5181
- var createChevronSVGString = (0, import_noya_utils10.memoize)(
5530
+ var createChevronSVGString = (0, import_noya_utils11.memoize)(
5182
5531
  (color) => `
5183
5532
  <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${color}'>
5184
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>
@@ -5216,7 +5565,7 @@ var SelectElement = import_styled_components32.default.select(
5216
5565
  }
5217
5566
  })
5218
5567
  );
5219
- var Select = (0, import_react53.memo)(function Select2({
5568
+ var Select = (0, import_react55.memo)(function Select2({
5220
5569
  id,
5221
5570
  flex,
5222
5571
  value,
@@ -5226,8 +5575,8 @@ var Select = (0, import_react53.memo)(function Select2({
5226
5575
  const getTitle = "options" in rest ? rest.getTitle : void 0;
5227
5576
  const onChange = "options" in rest ? rest.onChange : void 0;
5228
5577
  const children = "options" in rest ? void 0 : rest.children;
5229
- const optionElements = (0, import_react53.useMemo)(
5230
- () => 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(
5231
5580
  SelectOption,
5232
5581
  {
5233
5582
  key: option,
@@ -5238,21 +5587,21 @@ var Select = (0, import_react53.memo)(function Select2({
5238
5587
  )) : children,
5239
5588
  [children, getTitle, onChange, options]
5240
5589
  );
5241
- const listeners = (0, import_react53.useRef)(/* @__PURE__ */ new Map());
5242
- const contextValue = (0, import_react53.useMemo)(
5590
+ const listeners = (0, import_react55.useRef)(/* @__PURE__ */ new Map());
5591
+ const contextValue = (0, import_react55.useMemo)(
5243
5592
  () => ({
5244
5593
  addListener: (value2, listener) => listeners.current.set(value2, listener),
5245
5594
  removeListener: (value2) => listeners.current.delete(value2)
5246
5595
  }),
5247
5596
  []
5248
5597
  );
5249
- 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(
5250
5599
  SelectElement,
5251
5600
  {
5252
5601
  id,
5253
5602
  flex,
5254
5603
  value,
5255
- onChange: (0, import_react53.useCallback)(
5604
+ onChange: (0, import_react55.useCallback)(
5256
5605
  (event) => listeners.current.get(event.target.value)?.(),
5257
5606
  [listeners]
5258
5607
  ),
@@ -5264,7 +5613,7 @@ var Select = (0, import_react53.memo)(function Select2({
5264
5613
 
5265
5614
  // src/components/Slider.tsx
5266
5615
  var RadixSlider = __toESM(require("@radix-ui/react-slider"));
5267
- var import_react54 = __toESM(require("react"));
5616
+ var import_react56 = __toESM(require("react"));
5268
5617
  var import_styled_components33 = __toESM(require("styled-components"));
5269
5618
  var StyledSlider = (0, import_styled_components33.default)(RadixSlider.Root)({
5270
5619
  flex: "1",
@@ -5305,17 +5654,17 @@ var Slider = function Slider2({
5305
5654
  min,
5306
5655
  max
5307
5656
  }) {
5308
- const arrayValue = (0, import_react54.useMemo)(
5657
+ const arrayValue = (0, import_react56.useMemo)(
5309
5658
  () => [Math.min(Math.max(value, min), max)],
5310
5659
  [value, min, max]
5311
5660
  );
5312
- const handleValueChange = (0, import_react54.useCallback)(
5661
+ const handleValueChange = (0, import_react56.useCallback)(
5313
5662
  (arrayValue2) => {
5314
5663
  onValueChange(arrayValue2[0]);
5315
5664
  },
5316
5665
  [onValueChange]
5317
5666
  );
5318
- return /* @__PURE__ */ import_react54.default.createElement(
5667
+ return /* @__PURE__ */ import_react56.default.createElement(
5319
5668
  StyledSlider,
5320
5669
  {
5321
5670
  min,
@@ -5324,14 +5673,14 @@ var Slider = function Slider2({
5324
5673
  value: arrayValue,
5325
5674
  onValueChange: handleValueChange
5326
5675
  },
5327
- /* @__PURE__ */ import_react54.default.createElement(StyledTrack, null, /* @__PURE__ */ import_react54.default.createElement(StyledRange, null)),
5328
- /* @__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)
5329
5678
  );
5330
5679
  };
5331
5680
 
5332
5681
  // src/components/Switch.tsx
5333
5682
  var SwitchPrimitive = __toESM(require("@radix-ui/react-switch"));
5334
- var import_react55 = __toESM(require("react"));
5683
+ var import_react57 = __toESM(require("react"));
5335
5684
  var import_styled_components34 = __toESM(require("styled-components"));
5336
5685
  var SwitchRoot = (0, import_styled_components34.default)(SwitchPrimitive.Root)(({ theme, colorScheme: variant }) => ({
5337
5686
  all: "unset",
@@ -5367,7 +5716,7 @@ var Switch = function Switch2({
5367
5716
  onChange,
5368
5717
  colorScheme = "normal"
5369
5718
  }) {
5370
- return /* @__PURE__ */ import_react55.default.createElement(
5719
+ return /* @__PURE__ */ import_react57.default.createElement(
5371
5720
  SwitchRoot,
5372
5721
  {
5373
5722
  colorScheme,
@@ -5376,42 +5725,42 @@ var Switch = function Switch2({
5376
5725
  onChange(newValue);
5377
5726
  }
5378
5727
  },
5379
- /* @__PURE__ */ import_react55.default.createElement(SwitchThumb, null)
5728
+ /* @__PURE__ */ import_react57.default.createElement(SwitchThumb, null)
5380
5729
  );
5381
5730
  };
5382
5731
 
5383
5732
  // src/components/TreeView.tsx
5384
- var import_react56 = __toESM(require("react"));
5385
- var TreeRow = (0, import_react56.forwardRef)(function TreeRow2({
5733
+ var import_react58 = __toESM(require("react"));
5734
+ var TreeRow = (0, import_react58.forwardRef)(function TreeRow2({
5386
5735
  icon,
5387
5736
  expanded,
5388
5737
  onClickChevron,
5389
5738
  children,
5390
5739
  ...rest
5391
5740
  }, forwardedRef) {
5392
- const { expandable } = (0, import_react56.useContext)(ListView.RowContext);
5393
- const handleClickChevron = (0, import_react56.useCallback)(
5741
+ const { expandable } = (0, import_react58.useContext)(ListView.RowContext);
5742
+ const handleClickChevron = (0, import_react58.useCallback)(
5394
5743
  (event) => {
5395
5744
  event.stopPropagation();
5396
5745
  onClickChevron?.({ altKey: event.altKey });
5397
5746
  },
5398
5747
  [onClickChevron]
5399
5748
  );
5400
- 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(
5401
5750
  IconButton,
5402
5751
  {
5403
5752
  iconName: expanded ? "ChevronDownIcon" : "ChevronRightIcon",
5404
5753
  onClick: handleClickChevron,
5405
5754
  selected: rest.selected
5406
5755
  }
5407
- ), /* @__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);
5408
5757
  });
5409
5758
  var TreeView;
5410
5759
  ((TreeView2) => {
5411
5760
  TreeView2.Root = ListView.Root;
5412
5761
  TreeView2.RowTitle = ListView.RowTitle;
5413
5762
  TreeView2.EditableRowTitle = ListView.EditableRowTitle;
5414
- TreeView2.Row = (0, import_react56.memo)(TreeRow);
5763
+ TreeView2.Row = (0, import_react58.memo)(TreeRow);
5415
5764
  })(TreeView || (TreeView = {}));
5416
5765
 
5417
5766
  // src/hooks/usePlatform.ts
@@ -5442,6 +5791,7 @@ var dark_exports = {};
5442
5791
  __export(dark_exports, {
5443
5792
  colors: () => colors2,
5444
5793
  fonts: () => fonts,
5794
+ name: () => name2,
5445
5795
  sizes: () => sizes2,
5446
5796
  textStyles: () => textStyles
5447
5797
  });
@@ -5452,9 +5802,11 @@ var light_exports = {};
5452
5802
  __export(light_exports, {
5453
5803
  colors: () => colors,
5454
5804
  fonts: () => fonts,
5805
+ name: () => name,
5455
5806
  sizes: () => sizes2,
5456
5807
  textStyles: () => textStyles
5457
5808
  });
5809
+ var name = "light";
5458
5810
  var colors = {
5459
5811
  logo: {
5460
5812
  fill: "rgb(175,175,175)",
@@ -5609,6 +5961,13 @@ var textStyles = {
5609
5961
  fontWeight: 400,
5610
5962
  lineHeight: "1.4"
5611
5963
  },
5964
+ button: {
5965
+ fontFamily: fonts.normal,
5966
+ fontSize: "0.8rem",
5967
+ fontWeight: 500,
5968
+ lineHeight: "1.4",
5969
+ letterSpacing: "-0.2px"
5970
+ },
5612
5971
  code: {
5613
5972
  fontFamily: fonts.monospace,
5614
5973
  fontSize: "90%",
@@ -5648,6 +6007,7 @@ var sizes2 = {
5648
6007
  };
5649
6008
 
5650
6009
  // src/theme/dark.ts
6010
+ var name2 = "dark";
5651
6011
  var colors2 = (0, import_immer.default)(colors, (colors3) => {
5652
6012
  colors3.logo.fill = "rgb(248,248,250)";
5653
6013
  colors3.logo.highlight = "rgb(248,248,250)";
@@ -5718,8 +6078,8 @@ var SUPPORTED_CANVAS_UPLOAD_TYPES = [
5718
6078
  ];
5719
6079
 
5720
6080
  // src/components/ArrayController.tsx
5721
- var import_noya_utils11 = require("@noya-app/noya-utils");
5722
- var import_react58 = __toESM(require("react"));
6081
+ var import_noya_utils12 = require("@noya-app/noya-utils");
6082
+ var import_react60 = __toESM(require("react"));
5723
6083
  var import_styled_components36 = __toESM(require("styled-components"));
5724
6084
 
5725
6085
  // src/components/InspectorPrimitives.tsx
@@ -5738,7 +6098,7 @@ __export(InspectorPrimitives_exports, {
5738
6098
  Title: () => Title3,
5739
6099
  VerticalSeparator: () => VerticalSeparator
5740
6100
  });
5741
- var import_react57 = __toESM(require("react"));
6101
+ var import_react59 = __toESM(require("react"));
5742
6102
  var import_styled_components35 = __toESM(require("styled-components"));
5743
6103
  var Section = import_styled_components35.default.div(({ theme, padding = "10px", gap }) => ({
5744
6104
  flex: "0 0 auto",
@@ -5785,8 +6145,8 @@ var Checkbox = import_styled_components35.default.input(({ theme }) => ({
5785
6145
  var Text3 = import_styled_components35.default.span(({ theme }) => ({
5786
6146
  ...theme.textStyles.small
5787
6147
  }));
5788
- var VerticalSeparator = () => /* @__PURE__ */ import_react57.default.createElement(Spacer.Vertical, { size: (0, import_styled_components35.useTheme)().sizes.inspector.verticalSeparator });
5789
- 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 });
5790
6150
  var SliderRowLabel = import_styled_components35.default.span(({ theme }) => ({
5791
6151
  ...theme.textStyles.small,
5792
6152
  color: theme.colors.textMuted,
@@ -5806,7 +6166,7 @@ var RowLabel = import_styled_components35.default.span(({ theme, textStyle }) =>
5806
6166
  // Button height
5807
6167
  alignItems: "center"
5808
6168
  }));
5809
- var LabeledRow = (0, import_react57.memo)(function LabeledRow2({
6169
+ var LabeledRow = (0, import_react59.memo)(function LabeledRow2({
5810
6170
  id,
5811
6171
  children,
5812
6172
  label,
@@ -5814,13 +6174,13 @@ var LabeledRow = (0, import_react57.memo)(function LabeledRow2({
5814
6174
  gap,
5815
6175
  right
5816
6176
  }) {
5817
- 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)));
5818
6178
  });
5819
- var LabeledSliderRow = (0, import_react57.memo)(function LabeledRow3({
6179
+ var LabeledSliderRow = (0, import_react59.memo)(function LabeledRow3({
5820
6180
  children,
5821
6181
  label
5822
6182
  }) {
5823
- 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)));
5824
6184
  });
5825
6185
 
5826
6186
  // src/components/ArrayController.tsx
@@ -5833,7 +6193,7 @@ var ElementRow = import_styled_components36.default.div({
5833
6193
  var ItemContainer2 = import_styled_components36.default.div({
5834
6194
  position: "relative"
5835
6195
  });
5836
- var ArrayController = (0, import_react58.memo)(function ArrayController2({
6196
+ var ArrayController = (0, import_react60.memo)(function ArrayController2({
5837
6197
  id,
5838
6198
  items,
5839
6199
  title,
@@ -5851,12 +6211,12 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5851
6211
  }) {
5852
6212
  const iconColor = (0, import_styled_components36.useTheme)().colors.icon;
5853
6213
  const primaryLightColor = (0, import_styled_components36.useTheme)().colors.primaryLight;
5854
- const keys = (0, import_react58.useMemo)(
6214
+ const keys = (0, import_react60.useMemo)(
5855
6215
  () => items.map((item, index) => getKey?.(item) ?? index.toString()),
5856
6216
  [getKey, items]
5857
6217
  );
5858
- const indexes = reversed ? (0, import_noya_utils11.range)(0, items.length).reverse() : (0, import_noya_utils11.range)(0, items.length);
5859
- 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)(
5860
6220
  (sourceIndex, destinationIndex, position) => {
5861
6221
  if (reversed) {
5862
6222
  if (position === "above") {
@@ -5873,11 +6233,11 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5873
6233
  [onMoveItem, reversed]
5874
6234
  );
5875
6235
  const renderRow = (index) => {
5876
- 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 }));
5877
6237
  };
5878
- 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(
5879
6239
  [
5880
- onClickTrash && /* @__PURE__ */ import_react58.default.createElement(
6240
+ onClickTrash && /* @__PURE__ */ import_react60.default.createElement(
5881
6241
  IconButton,
5882
6242
  {
5883
6243
  id: `${id}-trash`,
@@ -5886,7 +6246,7 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5886
6246
  onClick: onClickTrash
5887
6247
  }
5888
6248
  ),
5889
- onClickExpand && /* @__PURE__ */ import_react58.default.createElement(
6249
+ onClickExpand && /* @__PURE__ */ import_react60.default.createElement(
5890
6250
  IconButton,
5891
6251
  {
5892
6252
  id: `${id}-gear`,
@@ -5895,7 +6255,7 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5895
6255
  onClick: onClickExpand
5896
6256
  }
5897
6257
  ),
5898
- onClickPlus && /* @__PURE__ */ import_react58.default.createElement(
6258
+ onClickPlus && /* @__PURE__ */ import_react60.default.createElement(
5899
6259
  IconButton,
5900
6260
  {
5901
6261
  id: `${id}-add`,
@@ -5905,15 +6265,15 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5905
6265
  }
5906
6266
  )
5907
6267
  ],
5908
- /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 8 })
5909
- )), /* @__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(
5910
6270
  Sortable.Root,
5911
6271
  {
5912
6272
  keys,
5913
6273
  renderOverlay: renderRow,
5914
6274
  onMoveItem: handleMoveItem
5915
6275
  },
5916
- 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(
5917
6277
  ListView.DragIndicator,
5918
6278
  {
5919
6279
  gap: 0,
@@ -5926,12 +6286,12 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
5926
6286
  });
5927
6287
 
5928
6288
  // src/components/DimensionInput.tsx
5929
- var import_noya_utils12 = require("@noya-app/noya-utils");
5930
- var import_react59 = __toESM(require("react"));
6289
+ var import_noya_utils13 = require("@noya-app/noya-utils");
6290
+ var import_react61 = __toESM(require("react"));
5931
6291
  function getNewValue(value, mode, delta) {
5932
6292
  return delta === void 0 ? value : mode === "replace" ? delta : value + delta;
5933
6293
  }
5934
- var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
6294
+ var DimensionInput = (0, import_react61.memo)(function DimensionInput2({
5935
6295
  id,
5936
6296
  value,
5937
6297
  onSetValue,
@@ -5941,30 +6301,31 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
5941
6301
  disabled,
5942
6302
  trigger = "submit"
5943
6303
  }) {
5944
- const handleNudgeValue = (0, import_react59.useCallback)(
6304
+ const handleNudgeValue = (0, import_react61.useCallback)(
5945
6305
  (value2) => onSetValue(value2, "adjust"),
5946
6306
  [onSetValue]
5947
6307
  );
5948
- const handleSetValue = (0, import_react59.useCallback)(
6308
+ const handleSetValue = (0, import_react61.useCallback)(
5949
6309
  (value2) => onSetValue(value2, "replace"),
5950
6310
  [onSetValue]
5951
6311
  );
5952
- 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(
5953
6313
  InputField.NumberInput,
5954
6314
  {
5955
- 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),
5956
6316
  placeholder: value === void 0 ? placeholder : void 0,
5957
6317
  onNudge: handleNudgeValue,
5958
6318
  disabled,
5959
6319
  ...trigger === "change" ? { onChange: handleSetValue } : { onSubmit: handleSetValue }
5960
6320
  }
5961
- ), label && /* @__PURE__ */ import_react59.default.createElement(InputField.Label, null, label));
6321
+ ), label && /* @__PURE__ */ import_react61.default.createElement(InputField.Label, null, label));
5962
6322
  });
5963
6323
  // Annotate the CommonJS export names for ESM import in node:
5964
6324
  0 && (module.exports = {
5965
6325
  ActivityIndicator,
5966
6326
  ArrayController,
5967
6327
  Avatar,
6328
+ AvatarStack,
5968
6329
  Body,
5969
6330
  Button,
5970
6331
  ButtonElement,
@@ -5983,6 +6344,8 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
5983
6344
  DropdownMenu,
5984
6345
  FillInputField,
5985
6346
  FillPreviewBackground,
6347
+ FloatingWindow,
6348
+ FloatingWindowProvider,
5986
6349
  FullscreenDialog,
5987
6350
  GlobalInputBlurProvider,
5988
6351
  GradientPicker,
@@ -6040,9 +6403,11 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
6040
6403
  sketchColorToHex,
6041
6404
  sketchColorToRgba,
6042
6405
  sketchColorToRgbaString,
6406
+ useCurrentFloatingWindowInternal,
6043
6407
  useDesignSystemConfiguration,
6044
6408
  useDesignSystemTheme,
6045
6409
  useDialogContainsElement,
6410
+ useFloatingWindowManager,
6046
6411
  useGlobalInputBlur,
6047
6412
  useGlobalInputBlurListener,
6048
6413
  useGlobalInputBlurTrigger,