@deadragdoll/reactnu 0.1.52 → 0.1.56

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
@@ -375,6 +375,7 @@ function MainMenuList({
375
375
  ) : isChecked ? /* @__PURE__ */ jsx3(NuGlyph, { name: "check-mark" }) : null
376
376
  }
377
377
  ) : null,
378
+ isPopupRow ? /* @__PURE__ */ jsx3("span", { "aria-hidden": "true", className: "nu-main-menu__icon", children: item.icon }) : null,
378
379
  /* @__PURE__ */ jsx3("span", { className: "nu-main-menu__label", children: renderItemLabel(item) }),
379
380
  isPopupRow ? /* @__PURE__ */ jsx3("span", { className: "nu-main-menu__shortcut", children: resolveItemShortcut(item) }) : null,
380
381
  isPopupRow ? /* @__PURE__ */ jsx3("span", { className: "nu-main-menu__submenu-arrow", children: hasChildren ? "\u25B6" : "" }) : null
@@ -1654,6 +1655,7 @@ function MdiWindowPickerDialog({
1654
1655
  items: resolvedWindows.map((windowEntry, index) => ({
1655
1656
  id: windowEntry.id,
1656
1657
  name: {
1658
+ icon: windowEntry.icon,
1657
1659
  text: `${index + 1} ${formatPickerWindowTitle(windows, windowEntry)}`
1658
1660
  },
1659
1661
  selected: windowEntry.id === activeWindowId
@@ -1769,6 +1771,7 @@ function buildStandardMdiMenuItems(bridge) {
1769
1771
  ...mdiWindows.map((windowEntry, index) => ({
1770
1772
  checked: windowEntry.id === activeWindowId,
1771
1773
  id: `mdi.window.${windowEntry.id}`,
1774
+ icon: windowEntry.icon,
1772
1775
  onSelect: () => bridge?.activateWindow(windowEntry.id),
1773
1776
  text: `${index + 1} ${windowEntry.title}`
1774
1777
  })),
@@ -2006,6 +2009,7 @@ function WindowTitleButton({
2006
2009
  import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
2007
2010
  function WindowTitleBar({
2008
2011
  draggable,
2012
+ icon,
2009
2013
  onDragStart,
2010
2014
  titleButtons,
2011
2015
  title
@@ -2021,6 +2025,7 @@ function WindowTitleBar({
2021
2025
  "--nu-window-title-controls-width": controlsWidth
2022
2026
  },
2023
2027
  children: [
2028
+ /* @__PURE__ */ jsx20("span", { "aria-hidden": true, className: "nu-window__title-icon", children: icon }),
2024
2029
  /* @__PURE__ */ jsx20("span", { className: "nu-window__title", children: renderMnemonicText(title) }),
2025
2030
  titleButtons.length > 0 ? /* @__PURE__ */ jsx20("span", { className: "nu-window__title-controls", children: titleButtons.map((button, index) => /* @__PURE__ */ jsx20(
2026
2031
  WindowTitleButton,
@@ -2121,16 +2126,23 @@ function getWindowGeometry(node) {
2121
2126
  width: rect.width
2122
2127
  };
2123
2128
  }
2129
+ function getValidAspectRatio(value) {
2130
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
2131
+ }
2124
2132
  function WindowInner({
2125
2133
  active = true,
2134
+ aspectRatio,
2126
2135
  bodyClassName,
2127
2136
  border = "single",
2128
2137
  children,
2129
2138
  className,
2130
2139
  closeable = true,
2131
2140
  draggable,
2141
+ icon,
2132
2142
  maximizable,
2133
2143
  maximized = false,
2144
+ minHeight,
2145
+ minWidth,
2134
2146
  minimizable,
2135
2147
  minimized = false,
2136
2148
  mode = "dialog",
@@ -2159,7 +2171,8 @@ function WindowInner({
2159
2171
  const menuState = useMainMenuState();
2160
2172
  const windowManager = useContext5(NuWindowContext);
2161
2173
  const isDraggable = draggable ?? mode === "window";
2162
- const isMaximizable = maximizable ?? mode === "window";
2174
+ const resolvedAspectRatio = getValidAspectRatio(aspectRatio);
2175
+ const isMaximizable = resolvedAspectRatio === void 0 && (maximizable ?? mode === "window");
2163
2176
  const isMinimizable = minimizable ?? mode === "window";
2164
2177
  const isResizable = resizable ?? mode === "window";
2165
2178
  const mdiBridge = useMemo6(
@@ -2309,22 +2322,16 @@ function WindowInner({
2309
2322
  } = getWindowGeometry(windowNode);
2310
2323
  const layerBounds = getWindowLayerBounds(windowNode);
2311
2324
  const computedStyle = window.getComputedStyle(windowNode);
2312
- const minWidth = Math.max(
2313
- Number.parseFloat(computedStyle.minWidth || "0") || 0,
2314
- 240
2315
- );
2316
- const minHeight = Math.max(
2317
- Number.parseFloat(computedStyle.minHeight || "0") || 0,
2318
- 120
2319
- );
2320
- const maxWidth = Math.max(
2321
- minWidth,
2322
- (layerBounds?.width ?? window.innerWidth) - left
2323
- );
2324
- const maxHeight = Math.max(
2325
- minHeight,
2326
- (layerBounds?.height ?? window.innerHeight) - top
2327
- );
2325
+ const minWidth2 = Number.parseFloat(computedStyle.minWidth || "0") || 0;
2326
+ const minHeight2 = Number.parseFloat(computedStyle.minHeight || "0") || 0;
2327
+ const availableWidth = (layerBounds?.width ?? window.innerWidth) - left;
2328
+ const availableHeight = (layerBounds?.height ?? window.innerHeight) - top;
2329
+ const ratioMinWidth = resolvedAspectRatio ? Math.max(minWidth2, minHeight2 * resolvedAspectRatio) : minWidth2;
2330
+ const maxWidth = resolvedAspectRatio ? Math.max(
2331
+ ratioMinWidth,
2332
+ Math.min(availableWidth, availableHeight * resolvedAspectRatio)
2333
+ ) : Math.max(minWidth2, availableWidth);
2334
+ const maxHeight = resolvedAspectRatio ? maxWidth / resolvedAspectRatio : Math.max(minHeight2, availableHeight);
2328
2335
  const hadTransform = computedStyle.transform !== "none";
2329
2336
  let didResize = false;
2330
2337
  if (hadTransform) {
@@ -2349,14 +2356,16 @@ function WindowInner({
2349
2356
  resizeFrameRef.current = window.requestAnimationFrame(flushResize);
2350
2357
  }
2351
2358
  function handlePointerMove(moveEvent) {
2352
- const nextWidth = Math.min(
2359
+ const widthDelta = moveEvent.clientX - startClientX;
2360
+ const heightDelta = moveEvent.clientY - startClientY;
2361
+ const nextWidth = resolvedAspectRatio ? Math.min(
2353
2362
  maxWidth,
2354
- Math.max(minWidth, startWidth + moveEvent.clientX - startClientX)
2355
- );
2356
- const nextHeight = Math.min(
2357
- maxHeight,
2358
- Math.max(minHeight, startHeight + moveEvent.clientY - startClientY)
2359
- );
2363
+ Math.max(
2364
+ ratioMinWidth,
2365
+ startWidth + (Math.abs(widthDelta) >= Math.abs(heightDelta * resolvedAspectRatio) ? widthDelta : heightDelta * resolvedAspectRatio)
2366
+ )
2367
+ ) : Math.min(maxWidth, Math.max(minWidth2, startWidth + widthDelta));
2368
+ const nextHeight = resolvedAspectRatio ? nextWidth / resolvedAspectRatio : Math.min(maxHeight, Math.max(minHeight2, startHeight + heightDelta));
2360
2369
  didResize = true;
2361
2370
  scheduleResize({
2362
2371
  height: nextHeight,
@@ -2396,7 +2405,11 @@ function WindowInner({
2396
2405
  "data-mode": mode,
2397
2406
  onPointerDownCapture: handleRootPointerDownCapture,
2398
2407
  ref: windowRef,
2399
- style,
2408
+ style: {
2409
+ ...style,
2410
+ minHeight: minHeight ?? style?.minHeight ?? 120,
2411
+ minWidth: minWidth ?? style?.minWidth ?? 240
2412
+ },
2400
2413
  children: [
2401
2414
  /* @__PURE__ */ jsx21(
2402
2415
  "span",
@@ -2417,6 +2430,7 @@ function WindowInner({
2417
2430
  WindowTitleBar,
2418
2431
  {
2419
2432
  draggable: isDraggable,
2433
+ icon,
2420
2434
  onDragStart: handleTitlePointerDown,
2421
2435
  title,
2422
2436
  titleButtons: resolvedTitleButtons
@@ -2543,7 +2557,7 @@ function AppBarItem(props) {
2543
2557
  }
2544
2558
 
2545
2559
  // src/windowing/WindowBar.tsx
2546
- import { jsx as jsx23 } from "react/jsx-runtime";
2560
+ import { jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
2547
2561
  function buildWindowBarGroups(items) {
2548
2562
  const groups = [];
2549
2563
  const groupsByDomain = /* @__PURE__ */ new Map();
@@ -2552,6 +2566,7 @@ function buildWindowBarGroups(items) {
2552
2566
  groups.push({
2553
2567
  active: Boolean(item.active),
2554
2568
  id: item.id,
2569
+ icon: item.icon,
2555
2570
  items: [item],
2556
2571
  label: item.title
2557
2572
  });
@@ -2563,6 +2578,7 @@ function buildWindowBarGroups(items) {
2563
2578
  active: Boolean(item.active),
2564
2579
  domain: item.domain,
2565
2580
  id: item.id,
2581
+ icon: item.icon,
2566
2582
  items: [item],
2567
2583
  label: item.title
2568
2584
  };
@@ -2572,10 +2588,16 @@ function buildWindowBarGroups(items) {
2572
2588
  }
2573
2589
  existingGroup.items.push(item);
2574
2590
  existingGroup.active = existingGroup.active || Boolean(item.active);
2591
+ if (item.active) {
2592
+ existingGroup.icon = item.icon;
2593
+ }
2575
2594
  existingGroup.label = `${item.domain} (${existingGroup.items.length})`;
2576
2595
  });
2577
2596
  return groups;
2578
2597
  }
2598
+ function getGroupIcon(group) {
2599
+ return group.items.find((item) => item.active)?.icon ?? group.icon;
2600
+ }
2579
2601
  function WindowBar({ items, onActivateWindow }) {
2580
2602
  const windowManager = useContext6(NuWindowContext);
2581
2603
  const groups = buildWindowBarGroups(items);
@@ -2616,17 +2638,23 @@ function WindowBar({ items, onActivateWindow }) {
2616
2638
  };
2617
2639
  windowManager.openDialog(dialogDefinition);
2618
2640
  }
2619
- return /* @__PURE__ */ jsx23("div", { className: "nu-window-bar", role: "group", "aria-label": "Open windows", children: groups.map((group) => /* @__PURE__ */ jsx23(
2620
- AppBarItem,
2621
- {
2622
- active: group.active,
2623
- className: "nu-window-bar__item",
2624
- interactive: true,
2625
- onClick: () => activateGroup(group),
2626
- children: group.label
2627
- },
2628
- group.id
2629
- )) });
2641
+ return /* @__PURE__ */ jsx23("div", { className: "nu-window-bar", role: "group", "aria-label": "Open windows", children: groups.map((group) => {
2642
+ const icon = getGroupIcon(group);
2643
+ return /* @__PURE__ */ jsxs13(
2644
+ AppBarItem,
2645
+ {
2646
+ active: group.active,
2647
+ className: "nu-window-bar__item",
2648
+ interactive: true,
2649
+ onClick: () => activateGroup(group),
2650
+ children: [
2651
+ icon ? /* @__PURE__ */ jsx23("span", { "aria-hidden": true, className: "nu-window-bar__icon", children: icon }) : null,
2652
+ group.label
2653
+ ]
2654
+ },
2655
+ group.id
2656
+ );
2657
+ }) });
2630
2658
  }
2631
2659
 
2632
2660
  // src/windowing/dialogHelpers.tsx
@@ -2639,7 +2667,7 @@ import {
2639
2667
  useRef as useRef6,
2640
2668
  useState as useState7
2641
2669
  } from "react";
2642
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
2670
+ import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
2643
2671
  function TextField({
2644
2672
  className,
2645
2673
  debounceMs = 0,
@@ -2690,7 +2718,7 @@ function TextField({
2690
2718
  }
2691
2719
  onChange?.(event);
2692
2720
  }
2693
- return /* @__PURE__ */ jsxs13(
2721
+ return /* @__PURE__ */ jsxs14(
2694
2722
  "label",
2695
2723
  {
2696
2724
  className: cx("nu-text-field", slotClassNames?.root, className),
@@ -2705,7 +2733,7 @@ function TextField({
2705
2733
  children: renderMnemonicText(label)
2706
2734
  }
2707
2735
  ),
2708
- /* @__PURE__ */ jsxs13(
2736
+ /* @__PURE__ */ jsxs14(
2709
2737
  "span",
2710
2738
  {
2711
2739
  className: cx("nu-text-field__slot", slotClassNames?.slot),
@@ -2797,7 +2825,7 @@ function NuView({
2797
2825
  }
2798
2826
 
2799
2827
  // src/windowing/dialogHelpers.tsx
2800
- import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
2828
+ import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
2801
2829
  function getPresetButtons(preset) {
2802
2830
  switch (preset) {
2803
2831
  case "ok-cancel":
@@ -2900,7 +2928,7 @@ function MessageBoxDialogContent({
2900
2928
  const bodyStyle = kind === "error" ? {
2901
2929
  background: "var(--nu-color-button-danger)"
2902
2930
  } : void 0;
2903
- return /* @__PURE__ */ jsx26(NuView, { padding: "cell", style: bodyStyle, children: /* @__PURE__ */ jsxs14(Stack, { gap: "md", children: [
2931
+ return /* @__PURE__ */ jsx26(NuView, { padding: "cell", style: bodyStyle, children: /* @__PURE__ */ jsxs15(Stack, { gap: "md", children: [
2904
2932
  /* @__PURE__ */ jsx26(
2905
2933
  "div",
2906
2934
  {
@@ -2910,7 +2938,7 @@ function MessageBoxDialogContent({
2910
2938
  children: message
2911
2939
  }
2912
2940
  ),
2913
- /* @__PURE__ */ jsxs14(Stack, { direction: "row", gap: "sm", justify: "center", children: [
2941
+ /* @__PURE__ */ jsxs15(Stack, { direction: "row", gap: "sm", justify: "center", children: [
2914
2942
  ok ? /* @__PURE__ */ jsx26(
2915
2943
  Button,
2916
2944
  {
@@ -2960,7 +2988,7 @@ function InputBoxDialogContent({
2960
2988
  placeholder
2961
2989
  }) {
2962
2990
  const [value, setValue] = useState8(defaultValue ?? "");
2963
- return /* @__PURE__ */ jsx26(NuView, { padding: "cell", children: /* @__PURE__ */ jsxs14(Stack, { gap: "md", children: [
2991
+ return /* @__PURE__ */ jsx26(NuView, { padding: "cell", children: /* @__PURE__ */ jsxs15(Stack, { gap: "md", children: [
2964
2992
  /* @__PURE__ */ jsx26(
2965
2993
  TextField,
2966
2994
  {
@@ -2972,7 +3000,7 @@ function InputBoxDialogContent({
2972
3000
  placeholder
2973
3001
  }
2974
3002
  ),
2975
- /* @__PURE__ */ jsxs14(Stack, { direction: "row", gap: "sm", justify: "center", children: [
3003
+ /* @__PURE__ */ jsxs15(Stack, { direction: "row", gap: "sm", justify: "center", children: [
2976
3004
  /* @__PURE__ */ jsx26(
2977
3005
  Button,
2978
3006
  {
@@ -2996,7 +3024,7 @@ function InputBoxDialogContent({
2996
3024
  }
2997
3025
 
2998
3026
  // src/windowing/NuWindowProvider.tsx
2999
- import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
3027
+ import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
3000
3028
  function getDefaultWindowStyle(mode, index) {
3001
3029
  const offset = index * 18;
3002
3030
  return {
@@ -3071,6 +3099,7 @@ function buildWindowRecord(definition, currentWindows, windowBoundsById, creatio
3071
3099
  ownerCenteredStyle,
3072
3100
  index
3073
3101
  );
3102
+ const hasAspectRatio = typeof definition.aspectRatio === "number" && Number.isFinite(definition.aspectRatio) && definition.aspectRatio > 0;
3074
3103
  return {
3075
3104
  ...definition,
3076
3105
  appModal,
@@ -3079,18 +3108,18 @@ function buildWindowRecord(definition, currentWindows, windowBoundsById, creatio
3079
3108
  creationOrder,
3080
3109
  draggable: mode === "window",
3081
3110
  id,
3082
- maximizable: definition.maximizable ?? mode === "window",
3111
+ maximizable: !hasAspectRatio && (definition.maximizable ?? mode === "window"),
3083
3112
  modalOwnerId,
3084
3113
  minimizable: definition.minimizable ?? mode === "window",
3085
3114
  mode,
3086
3115
  resizable: definition.resizable ?? mode === "window",
3087
- restoreStyle: savedWindowState.restoreStyle,
3116
+ restoreStyle: hasAspectRatio ? void 0 : savedWindowState.restoreStyle,
3088
3117
  title: resolveManagedWindowTitle(currentWindows, titleBase),
3089
3118
  titleBase,
3090
3119
  style: {
3091
3120
  ...savedWindowState.style
3092
3121
  },
3093
- maximized: savedWindowState.maximized,
3122
+ maximized: hasAspectRatio ? false : savedWindowState.maximized,
3094
3123
  minimized: savedWindowState.minimized
3095
3124
  };
3096
3125
  }
@@ -3305,7 +3334,7 @@ function NuWindowProvider({
3305
3334
  const toggleWindowMaximized = useCallback3((id) => {
3306
3335
  setWindows(
3307
3336
  (currentWindows) => currentWindows.map((windowEntry) => {
3308
- if (windowEntry.id !== id) {
3337
+ if (windowEntry.id !== id || !windowEntry.maximizable) {
3309
3338
  return windowEntry;
3310
3339
  }
3311
3340
  if (windowEntry.maximized) {
@@ -3471,21 +3500,32 @@ function NuWindowProvider({
3471
3500
  const topmostAppModalIndex = findTopmostAppModalIndex(visibleWindows);
3472
3501
  const topmostAppModalId = topmostAppModalIndex >= 0 ? visibleWindows[topmostAppModalIndex]?.id : void 0;
3473
3502
  const activeWindowId = topmostAppModalIndex >= 0 ? visibleWindows[topmostAppModalIndex]?.id : visibleWindows[visibleWindows.length - 1]?.id;
3503
+ const activeWindow = activeWindowId ? windows.find((windowEntry) => windowEntry.id === activeWindowId) : void 0;
3504
+ const activeActivationGroup = topmostAppModalIndex >= 0 ? void 0 : activeWindow?.activationGroup;
3474
3505
  const hasAppModal = topmostAppModalIndex >= 0;
3506
+ const isWindowActive = useCallback3(
3507
+ (windowEntry) => windowEntry.id === activeWindowId || activeActivationGroup !== void 0 && windowEntry.activationGroup === activeActivationGroup,
3508
+ [activeActivationGroup, activeWindowId]
3509
+ );
3475
3510
  const windowsInfo = useMemo7(
3476
3511
  () => [...windows].sort(
3477
3512
  (leftWindow, rightWindow) => leftWindow.creationOrder - rightWindow.creationOrder
3478
3513
  ).map((windowEntry) => ({
3479
- active: windowEntry.id === activeWindowId,
3514
+ active: isWindowActive(windowEntry),
3515
+ activationGroup: windowEntry.activationGroup,
3516
+ aspectRatio: windowEntry.aspectRatio,
3480
3517
  bodyClassName: windowEntry.bodyClassName,
3481
3518
  appModal: windowEntry.appModal,
3482
3519
  border: windowEntry.border,
3483
3520
  className: windowEntry.className,
3484
3521
  closeable: windowEntry.closeable,
3485
3522
  domain: windowEntry.domain,
3523
+ icon: windowEntry.icon,
3486
3524
  id: windowEntry.id,
3487
3525
  maximizable: windowEntry.maximizable,
3488
3526
  maximized: windowEntry.maximized,
3527
+ minHeight: windowEntry.minHeight,
3528
+ minWidth: windowEntry.minWidth,
3489
3529
  modal: windowEntry.modalOwnerId ?? false,
3490
3530
  minimizable: windowEntry.minimizable,
3491
3531
  minimized: windowEntry.minimized,
@@ -3496,7 +3536,7 @@ function NuWindowProvider({
3496
3536
  title: windowEntry.title,
3497
3537
  titleButtons: windowEntry.titleButtons
3498
3538
  })),
3499
- [activeWindowId, windows]
3539
+ [isWindowActive, windows]
3500
3540
  );
3501
3541
  const mdiBridge = useMemo7(
3502
3542
  () => ({
@@ -3553,10 +3593,10 @@ function NuWindowProvider({
3553
3593
  useEffect6(() => {
3554
3594
  onAppModalChange?.(hasAppModal);
3555
3595
  }, [hasAppModal, onAppModalChange]);
3556
- return /* @__PURE__ */ jsx27(NuWindowContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs15("div", { className: ["nu-window-host", className].filter(Boolean).join(" "), children: [
3596
+ return /* @__PURE__ */ jsx27(NuWindowContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs16("div", { className: ["nu-window-host", className].filter(Boolean).join(" "), children: [
3557
3597
  children,
3558
3598
  /* @__PURE__ */ jsx27("div", { className: "nu-window-layer", children: renderWindows.map((windowEntry) => {
3559
- const isActiveWindow = windowEntry.id === activeWindowId;
3599
+ const isActiveWindow = isWindowActive(windowEntry);
3560
3600
  const stackIndex = stackIndexById.get(windowEntry.id);
3561
3601
  const isTopmostAppModal = windowEntry.id === topmostAppModalId;
3562
3602
  const ownerBounds = windowEntry.modalOwnerId ? windowBoundsById[windowEntry.modalOwnerId] : void 0;
@@ -3584,7 +3624,7 @@ function NuWindowProvider({
3584
3624
  update: handleUpdate
3585
3625
  };
3586
3626
  const content = typeof windowEntry.content === "function" ? windowEntry.content(controls) : windowEntry.content;
3587
- return /* @__PURE__ */ jsxs15(Fragment3, { children: [
3627
+ return /* @__PURE__ */ jsxs16(Fragment3, { children: [
3588
3628
  isTopmostAppModal ? /* @__PURE__ */ jsx27(
3589
3629
  "div",
3590
3630
  {
@@ -3602,12 +3642,16 @@ function NuWindowProvider({
3602
3642
  Window,
3603
3643
  {
3604
3644
  active: isActiveWindow,
3645
+ aspectRatio: windowEntry.aspectRatio,
3605
3646
  bodyClassName: windowEntry.bodyClassName,
3606
3647
  border: windowEntry.border,
3607
3648
  className: windowEntry.className,
3608
3649
  closeable: windowEntry.closeable,
3609
3650
  draggable: windowEntry.draggable,
3651
+ icon: windowEntry.icon,
3610
3652
  maximizable: windowEntry.maximizable,
3653
+ minHeight: windowEntry.minHeight,
3654
+ minWidth: windowEntry.minWidth,
3611
3655
  minimizable: windowEntry.minimizable,
3612
3656
  maximized: windowEntry.maximized,
3613
3657
  minimized: windowEntry.minimized,
@@ -3638,6 +3682,7 @@ function NuWindowProvider({
3638
3682
  active: windowEntry.active,
3639
3683
  domain: windowEntry.domain,
3640
3684
  id: windowEntry.id,
3685
+ icon: windowEntry.icon,
3641
3686
  minimized: windowEntry.minimized,
3642
3687
  title: windowEntry.title
3643
3688
  })),
@@ -3648,9 +3693,9 @@ function NuWindowProvider({
3648
3693
  }
3649
3694
 
3650
3695
  // src/components/Desktop/Desktop.tsx
3651
- import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
3696
+ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
3652
3697
  function DesktopWindowRegion({ appBar, children }) {
3653
- return /* @__PURE__ */ jsxs16(Fragment4, { children: [
3698
+ return /* @__PURE__ */ jsxs17(Fragment4, { children: [
3654
3699
  /* @__PURE__ */ jsx28("div", { className: "nu-desktop__workspace", children }),
3655
3700
  appBar ? /* @__PURE__ */ jsx28("div", { className: "nu-desktop__app-bar", children: appBar }) : null
3656
3701
  ] });
@@ -3695,7 +3740,7 @@ function NuDesktopShell({
3695
3740
  appHostContext.mainMenu,
3696
3741
  appHostContext.windowBridge
3697
3742
  );
3698
- return /* @__PURE__ */ jsxs16(
3743
+ return /* @__PURE__ */ jsxs17(
3699
3744
  "div",
3700
3745
  {
3701
3746
  ...props,
@@ -3805,7 +3850,7 @@ function Dashboard({
3805
3850
 
3806
3851
  // src/components/CheckBox/CheckBox.tsx
3807
3852
  import { useId as useId3, useState as useState11 } from "react";
3808
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
3853
+ import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
3809
3854
  function CheckBox({
3810
3855
  checked,
3811
3856
  className,
@@ -3832,13 +3877,13 @@ function CheckBox({
3832
3877
  }
3833
3878
  onCheckedChange?.(event.target.checked, event);
3834
3879
  }
3835
- return /* @__PURE__ */ jsxs17(
3880
+ return /* @__PURE__ */ jsxs18(
3836
3881
  "label",
3837
3882
  {
3838
3883
  className: cx("nu-check-box", slotClassNames?.root, className),
3839
3884
  style: slotStyles?.root,
3840
3885
  children: [
3841
- /* @__PURE__ */ jsxs17(
3886
+ /* @__PURE__ */ jsxs18(
3842
3887
  "span",
3843
3888
  {
3844
3889
  className: cx("nu-check-box__main", slotClassNames?.main),
@@ -4067,7 +4112,7 @@ function usePopupPosition({
4067
4112
  }
4068
4113
 
4069
4114
  // src/components/Dropdown/Dropdown.tsx
4070
- import { jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
4115
+ import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
4071
4116
  function flattenDropdownOptions(data) {
4072
4117
  const options = [];
4073
4118
  data.forEach((group) => {
@@ -4233,7 +4278,7 @@ function Dropdown({
4233
4278
  break;
4234
4279
  }
4235
4280
  }
4236
- return /* @__PURE__ */ jsxs18(
4281
+ return /* @__PURE__ */ jsxs19(
4237
4282
  "div",
4238
4283
  {
4239
4284
  ...props,
@@ -4268,13 +4313,13 @@ function Dropdown({
4268
4313
  },
4269
4314
  style: slotStyles?.trigger,
4270
4315
  type: "button",
4271
- children: /* @__PURE__ */ jsxs18(
4316
+ children: /* @__PURE__ */ jsxs19(
4272
4317
  "span",
4273
4318
  {
4274
4319
  className: cx("nu-dropdown__slot", slotClassNames?.slot),
4275
4320
  style: slotStyles?.slot,
4276
4321
  children: [
4277
- /* @__PURE__ */ jsxs18(
4322
+ /* @__PURE__ */ jsxs19(
4278
4323
  "span",
4279
4324
  {
4280
4325
  className: cx("nu-dropdown__field", slotClassNames?.field),
@@ -4411,7 +4456,7 @@ function Dropdown({
4411
4456
  }
4412
4457
 
4413
4458
  // src/components/Frame/Frame.tsx
4414
- import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
4459
+ import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
4415
4460
  function Frame({
4416
4461
  children,
4417
4462
  className,
@@ -4432,7 +4477,7 @@ function Frame({
4432
4477
  }) {
4433
4478
  const resolvedTitleContent = titleContent ?? (title ? renderMnemonicText(title) : null);
4434
4479
  const hasTitleShell = Boolean(titleStart || resolvedTitleContent || titleEnd);
4435
- return /* @__PURE__ */ jsxs19(
4480
+ return /* @__PURE__ */ jsxs20(
4436
4481
  "section",
4437
4482
  {
4438
4483
  ...props,
@@ -4449,7 +4494,7 @@ function Frame({
4449
4494
  ...slotStyles?.root
4450
4495
  },
4451
4496
  children: [
4452
- hasTitleShell ? /* @__PURE__ */ jsxs19(
4497
+ hasTitleShell ? /* @__PURE__ */ jsxs20(
4453
4498
  "span",
4454
4499
  {
4455
4500
  className: cx("nu-frame__title", slotClassNames?.title),
@@ -4796,7 +4841,7 @@ function useNuIconGridContext() {
4796
4841
  }
4797
4842
 
4798
4843
  // src/components/IconGrid/NuIconGrid.tsx
4799
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
4844
+ import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
4800
4845
  var DRAG_THRESHOLD2 = 3;
4801
4846
  var gridRegistrations = /* @__PURE__ */ new Map();
4802
4847
  function clamp2(value, minimum, maximum) {
@@ -5010,8 +5055,8 @@ function NuIconGridItem({
5010
5055
  manager.selectIcon(icon.id);
5011
5056
  contextMenu.openAtElement(event.currentTarget);
5012
5057
  }
5013
- return /* @__PURE__ */ jsxs20(Fragment5, { children: [
5014
- /* @__PURE__ */ jsxs20(
5058
+ return /* @__PURE__ */ jsxs21(Fragment5, { children: [
5059
+ /* @__PURE__ */ jsxs21(
5015
5060
  "button",
5016
5061
  {
5017
5062
  "aria-haspopup": contextMenuItems.length > 0 ? "menu" : void 0,
@@ -5125,7 +5170,7 @@ function NuIconGrid({
5125
5170
  manager.selectIcon(null);
5126
5171
  contextMenu.openAtPoint(event.clientX, event.clientY, event.currentTarget);
5127
5172
  }
5128
- return /* @__PURE__ */ jsxs20(
5173
+ return /* @__PURE__ */ jsxs21(
5129
5174
  "div",
5130
5175
  {
5131
5176
  ...props,
@@ -5335,7 +5380,7 @@ import {
5335
5380
  useState as useState17
5336
5381
  } from "react";
5337
5382
  import { createPortal as createPortal3 } from "react-dom";
5338
- import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
5383
+ import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
5339
5384
  function flattenComboBoxOptions(data) {
5340
5385
  const options = [];
5341
5386
  data.forEach((group) => {
@@ -5495,7 +5540,7 @@ function ComboBox({
5495
5540
  break;
5496
5541
  }
5497
5542
  }
5498
- return /* @__PURE__ */ jsxs21(
5543
+ return /* @__PURE__ */ jsxs22(
5499
5544
  "div",
5500
5545
  {
5501
5546
  ...props,
@@ -5513,13 +5558,13 @@ function ComboBox({
5513
5558
  children: renderMnemonicText(label)
5514
5559
  }
5515
5560
  ),
5516
- /* @__PURE__ */ jsxs21(
5561
+ /* @__PURE__ */ jsxs22(
5517
5562
  "span",
5518
5563
  {
5519
5564
  className: cx("nu-combo-box__slot", slotClassNames?.slot),
5520
5565
  style: slotStyles?.slot,
5521
5566
  children: [
5522
- /* @__PURE__ */ jsxs21(
5567
+ /* @__PURE__ */ jsxs22(
5523
5568
  "span",
5524
5569
  {
5525
5570
  className: cx("nu-combo-box__field", slotClassNames?.field),
@@ -5658,7 +5703,7 @@ function ComboBox({
5658
5703
  import {
5659
5704
  Fragment as Fragment6
5660
5705
  } from "react";
5661
- import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
5706
+ import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
5662
5707
  var COMMAND_BUTTON_GLYPH_NAMES = /* @__PURE__ */ new Set([
5663
5708
  "check-fill",
5664
5709
  "check-mark",
@@ -5707,8 +5752,8 @@ function CommandButton({
5707
5752
  }
5708
5753
  popupMenu.openFromClick(event);
5709
5754
  }
5710
- return /* @__PURE__ */ jsxs22(Fragment6, { children: [
5711
- /* @__PURE__ */ jsxs22(
5755
+ return /* @__PURE__ */ jsxs23(Fragment6, { children: [
5756
+ /* @__PURE__ */ jsxs23(
5712
5757
  "button",
5713
5758
  {
5714
5759
  ...props,
@@ -5779,7 +5824,7 @@ function CommandButton({
5779
5824
 
5780
5825
  // src/components/CrtGlitch/CrtGlitch.tsx
5781
5826
  import { useEffect as useEffect10, useId as useId6, useRef as useRef13 } from "react";
5782
- import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
5827
+ import { jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
5783
5828
  var DEFAULT_INTERVAL_MS = 3e3;
5784
5829
  var DEFAULT_DURATION_MS = 2500;
5785
5830
  var DEFAULT_TOP_LEVEL_RATIO = 1 / 3;
@@ -5913,7 +5958,7 @@ function NuCrtGlitch({
5913
5958
  }
5914
5959
  };
5915
5960
  }, [durationMs, enabled, filterId, intervalMs, targetSelector, topLevelRatio]);
5916
- return /* @__PURE__ */ jsx40("svg", { "aria-hidden": "true", height: "0", style: { position: "absolute" }, width: "0", children: /* @__PURE__ */ jsx40("defs", { children: /* @__PURE__ */ jsxs23(
5961
+ return /* @__PURE__ */ jsx40("svg", { "aria-hidden": "true", height: "0", style: { position: "absolute" }, width: "0", children: /* @__PURE__ */ jsx40("defs", { children: /* @__PURE__ */ jsxs24(
5917
5962
  "filter",
5918
5963
  {
5919
5964
  "color-interpolation-filters": "sRGB",
@@ -6068,7 +6113,7 @@ function ListViewCheckControl({
6068
6113
  }
6069
6114
 
6070
6115
  // src/components/ListView/internals/ListViewRow.tsx
6071
- import { jsx as jsx42, jsxs as jsxs24 } from "react/jsx-runtime";
6116
+ import { jsx as jsx42, jsxs as jsxs25 } from "react/jsx-runtime";
6072
6117
  function ListViewRowInner({
6073
6118
  columns,
6074
6119
  isActive,
@@ -6099,7 +6144,7 @@ function ListViewRowInner({
6099
6144
  function handleToggleCheck() {
6100
6145
  onToggleCheck(rowId);
6101
6146
  }
6102
- return /* @__PURE__ */ jsxs24(
6147
+ return /* @__PURE__ */ jsxs25(
6103
6148
  "div",
6104
6149
  {
6105
6150
  "aria-disabled": row.disabled || void 0,
@@ -6149,7 +6194,7 @@ function ListViewRowInner({
6149
6194
  var ListViewRow = memo3(ListViewRowInner);
6150
6195
 
6151
6196
  // src/components/ListView/ListView.tsx
6152
- import { jsx as jsx43, jsxs as jsxs25 } from "react/jsx-runtime";
6197
+ import { jsx as jsx43, jsxs as jsxs26 } from "react/jsx-runtime";
6153
6198
  function ListViewInner({
6154
6199
  activeRowId: activeRowIdProp,
6155
6200
  checkedIds,
@@ -6317,7 +6362,7 @@ function ListViewInner({
6317
6362
  break;
6318
6363
  }
6319
6364
  }
6320
- return /* @__PURE__ */ jsxs25(
6365
+ return /* @__PURE__ */ jsxs26(
6321
6366
  "div",
6322
6367
  {
6323
6368
  ...props,
@@ -6328,7 +6373,7 @@ function ListViewInner({
6328
6373
  role: "grid",
6329
6374
  tabIndex: 0,
6330
6375
  children: [
6331
- /* @__PURE__ */ jsxs25(
6376
+ /* @__PURE__ */ jsxs26(
6332
6377
  "div",
6333
6378
  {
6334
6379
  className: "nu-list-view__header",
@@ -6549,7 +6594,7 @@ function getMaskedFieldState(mask, rawValue) {
6549
6594
  }
6550
6595
 
6551
6596
  // src/components/MaskedField/MaskedField.tsx
6552
- import { jsx as jsx44, jsxs as jsxs26 } from "react/jsx-runtime";
6597
+ import { jsx as jsx44, jsxs as jsxs27 } from "react/jsx-runtime";
6553
6598
  function MaskedField({
6554
6599
  "aria-invalid": ariaInvalid,
6555
6600
  className,
@@ -6621,7 +6666,7 @@ function MaskedField({
6621
6666
  }
6622
6667
  onChange?.(event);
6623
6668
  }
6624
- return /* @__PURE__ */ jsxs26(
6669
+ return /* @__PURE__ */ jsxs27(
6625
6670
  "label",
6626
6671
  {
6627
6672
  className: cx(
@@ -6641,7 +6686,7 @@ function MaskedField({
6641
6686
  children: renderMnemonicText(label)
6642
6687
  }
6643
6688
  ),
6644
- /* @__PURE__ */ jsxs26(
6689
+ /* @__PURE__ */ jsxs27(
6645
6690
  "span",
6646
6691
  {
6647
6692
  className: cx("nu-masked-field__slot", slotClassNames?.slot),
@@ -6775,7 +6820,7 @@ import {
6775
6820
  useRef as useRef16,
6776
6821
  useState as useState21
6777
6822
  } from "react";
6778
- import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
6823
+ import { jsx as jsx46, jsxs as jsxs28 } from "react/jsx-runtime";
6779
6824
  function PageControl({
6780
6825
  activePageId: activePageIdProp,
6781
6826
  className,
@@ -6860,7 +6905,7 @@ function PageControl({
6860
6905
  break;
6861
6906
  }
6862
6907
  }
6863
- return /* @__PURE__ */ jsxs27(
6908
+ return /* @__PURE__ */ jsxs28(
6864
6909
  "div",
6865
6910
  {
6866
6911
  ...props,
@@ -6923,7 +6968,7 @@ function PageControl({
6923
6968
  }
6924
6969
 
6925
6970
  // src/components/Panel/Panel.tsx
6926
- import { jsx as jsx47, jsxs as jsxs28 } from "react/jsx-runtime";
6971
+ import { jsx as jsx47, jsxs as jsxs29 } from "react/jsx-runtime";
6927
6972
  function Panel({
6928
6973
  children,
6929
6974
  className,
@@ -6934,7 +6979,7 @@ function Panel({
6934
6979
  title,
6935
6980
  ...props
6936
6981
  }) {
6937
- return /* @__PURE__ */ jsxs28(
6982
+ return /* @__PURE__ */ jsxs29(
6938
6983
  "section",
6939
6984
  {
6940
6985
  ...props,
@@ -6981,7 +7026,7 @@ import {
6981
7026
  useRef as useRef17,
6982
7027
  useState as useState22
6983
7028
  } from "react";
6984
- import { jsx as jsx48, jsxs as jsxs29 } from "react/jsx-runtime";
7029
+ import { jsx as jsx48, jsxs as jsxs30 } from "react/jsx-runtime";
6985
7030
  function collectGroupIds(entries) {
6986
7031
  const groupIds = /* @__PURE__ */ new Set();
6987
7032
  function visit(nextEntries) {
@@ -7242,7 +7287,7 @@ function PropertyGrid({
7242
7287
  }
7243
7288
  if (row.type === "group") {
7244
7289
  const isExpanded = expandedIdSet.has(row.entry.id);
7245
- return /* @__PURE__ */ jsxs29(
7290
+ return /* @__PURE__ */ jsxs30(
7246
7291
  "div",
7247
7292
  {
7248
7293
  className: "nu-property-grid__row",
@@ -7271,7 +7316,7 @@ function PropertyGrid({
7271
7316
  "--nu-property-grid-depth": row.depth
7272
7317
  },
7273
7318
  type: "button",
7274
- children: /* @__PURE__ */ jsxs29("span", { className: "nu-property-grid__lead", children: [
7319
+ children: /* @__PURE__ */ jsxs30("span", { className: "nu-property-grid__lead", children: [
7275
7320
  /* @__PURE__ */ jsx48("span", { className: "nu-property-grid__expander", children: /* @__PURE__ */ jsx48(
7276
7321
  NuGlyph,
7277
7322
  {
@@ -7289,7 +7334,7 @@ function PropertyGrid({
7289
7334
  );
7290
7335
  }
7291
7336
  const editorId = `${editorIdPrefix}-editor-${row.entry.id}`;
7292
- return /* @__PURE__ */ jsxs29(
7337
+ return /* @__PURE__ */ jsxs30(
7293
7338
  "div",
7294
7339
  {
7295
7340
  className: "nu-property-grid__row",
@@ -7316,13 +7361,13 @@ function PropertyGrid({
7316
7361
  "--nu-property-grid-depth": row.depth
7317
7362
  },
7318
7363
  type: "button",
7319
- children: /* @__PURE__ */ jsxs29("span", { className: "nu-property-grid__lead", children: [
7364
+ children: /* @__PURE__ */ jsxs30("span", { className: "nu-property-grid__lead", children: [
7320
7365
  /* @__PURE__ */ jsx48("span", { className: "nu-property-grid__expander-placeholder" }),
7321
7366
  /* @__PURE__ */ jsx48("span", { className: "nu-property-grid__label-text", children: renderMnemonicText(row.entry.label) })
7322
7367
  ] })
7323
7368
  }
7324
7369
  ),
7325
- /* @__PURE__ */ jsxs29(
7370
+ /* @__PURE__ */ jsxs30(
7326
7371
  "div",
7327
7372
  {
7328
7373
  className: "nu-property-grid__editor",
@@ -7344,7 +7389,7 @@ function PropertyGrid({
7344
7389
  }
7345
7390
 
7346
7391
  // src/components/ProgressBar/ProgressBar.tsx
7347
- import { jsx as jsx49, jsxs as jsxs30 } from "react/jsx-runtime";
7392
+ import { jsx as jsx49, jsxs as jsxs31 } from "react/jsx-runtime";
7348
7393
  function clamp3(value, min, max) {
7349
7394
  return Math.min(max, Math.max(min, value));
7350
7395
  }
@@ -7368,7 +7413,7 @@ function ProgressBar({
7368
7413
  const clampedValue = clamp3(value, min, safeMax);
7369
7414
  const percent = Math.round((clampedValue - min) / (safeMax - min) * 100);
7370
7415
  const renderedValue = valueRenderer ? valueRenderer(percent, clampedValue, min, safeMax) : `${percent}%`;
7371
- return /* @__PURE__ */ jsxs30(
7416
+ return /* @__PURE__ */ jsxs31(
7372
7417
  "div",
7373
7418
  {
7374
7419
  ...props,
@@ -7388,7 +7433,7 @@ function ProgressBar({
7388
7433
  children: renderMnemonicText(label)
7389
7434
  }
7390
7435
  ) : null,
7391
- /* @__PURE__ */ jsxs30(
7436
+ /* @__PURE__ */ jsxs31(
7392
7437
  "div",
7393
7438
  {
7394
7439
  className: cx("nu-progress-bar__track", slotClassNames?.track),
@@ -7438,7 +7483,7 @@ function ProgressBar({
7438
7483
 
7439
7484
  // src/components/RadioGroup/RadioButton.tsx
7440
7485
  import { useId as useId10, useState as useState23 } from "react";
7441
- import { jsx as jsx50, jsxs as jsxs31 } from "react/jsx-runtime";
7486
+ import { jsx as jsx50, jsxs as jsxs32 } from "react/jsx-runtime";
7442
7487
  function RadioButton({
7443
7488
  checked,
7444
7489
  className,
@@ -7462,8 +7507,8 @@ function RadioButton({
7462
7507
  }
7463
7508
  onCheckedChange?.(event.target.checked, event);
7464
7509
  }
7465
- return /* @__PURE__ */ jsxs31("label", { className: ["nu-radio-button", className].filter(Boolean).join(" "), children: [
7466
- /* @__PURE__ */ jsxs31("span", { className: "nu-radio-button__main", children: [
7510
+ return /* @__PURE__ */ jsxs32("label", { className: ["nu-radio-button", className].filter(Boolean).join(" "), children: [
7511
+ /* @__PURE__ */ jsxs32("span", { className: "nu-radio-button__main", children: [
7467
7512
  /* @__PURE__ */ jsx50(
7468
7513
  "input",
7469
7514
  {
@@ -7477,7 +7522,7 @@ function RadioButton({
7477
7522
  type: "radio"
7478
7523
  }
7479
7524
  ),
7480
- /* @__PURE__ */ jsx50("span", { "aria-hidden": "true", className: "nu-radio-button__control", children: /* @__PURE__ */ jsxs31("span", { className: "nu-radio-button__disc", children: [
7525
+ /* @__PURE__ */ jsx50("span", { "aria-hidden": "true", className: "nu-radio-button__control", children: /* @__PURE__ */ jsxs32("span", { className: "nu-radio-button__disc", children: [
7481
7526
  /* @__PURE__ */ jsx50(NuGlyph, { className: "nu-radio-button__ring", name: "radio-ring" }),
7482
7527
  resolvedChecked ? /* @__PURE__ */ jsx50(NuGlyph, { className: "nu-radio-button__fill", name: "radio-fill" }) : null
7483
7528
  ] }) }),
@@ -7489,7 +7534,7 @@ function RadioButton({
7489
7534
 
7490
7535
  // src/components/RadioGroup/RadioGroup.tsx
7491
7536
  import { useId as useId11, useState as useState24 } from "react";
7492
- import { jsx as jsx51, jsxs as jsxs32 } from "react/jsx-runtime";
7537
+ import { jsx as jsx51, jsxs as jsxs33 } from "react/jsx-runtime";
7493
7538
  function RadioGroup({
7494
7539
  className,
7495
7540
  defaultValue,
@@ -7516,7 +7561,7 @@ function RadioGroup({
7516
7561
  }
7517
7562
  onValueChange?.(nextValue);
7518
7563
  }
7519
- return /* @__PURE__ */ jsxs32(
7564
+ return /* @__PURE__ */ jsxs33(
7520
7565
  "fieldset",
7521
7566
  {
7522
7567
  ...props,
@@ -7601,7 +7646,7 @@ import {
7601
7646
  useState as useState25
7602
7647
  } from "react";
7603
7648
  import { createPortal as createPortal4 } from "react-dom";
7604
- import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
7649
+ import { jsx as jsx53, jsxs as jsxs34 } from "react/jsx-runtime";
7605
7650
  function resolveSearchBoxPortalRoot() {
7606
7651
  return document.body;
7607
7652
  }
@@ -7796,7 +7841,7 @@ function SearchBox({
7796
7841
  break;
7797
7842
  }
7798
7843
  }
7799
- return /* @__PURE__ */ jsxs33(
7844
+ return /* @__PURE__ */ jsxs34(
7800
7845
  "div",
7801
7846
  {
7802
7847
  ...props,
@@ -7805,7 +7850,7 @@ function SearchBox({
7805
7850
  style,
7806
7851
  children: [
7807
7852
  /* @__PURE__ */ jsx53("label", { className: "nu-search-box__label", htmlFor: fieldId, id: labelId, children: renderMnemonicText(label) }),
7808
- /* @__PURE__ */ jsxs33("span", { className: "nu-search-box__slot", ref: fieldRef, children: [
7853
+ /* @__PURE__ */ jsxs34("span", { className: "nu-search-box__slot", ref: fieldRef, children: [
7809
7854
  /* @__PURE__ */ jsx53("span", { "aria-hidden": "true", className: "nu-search-box__bracket", children: "[" }),
7810
7855
  /* @__PURE__ */ jsx53("span", { className: "nu-search-box__input-shell", children: /* @__PURE__ */ jsx53(
7811
7856
  "input",
@@ -7859,7 +7904,7 @@ import {
7859
7904
  useMemo as useMemo17,
7860
7905
  useState as useState26
7861
7906
  } from "react";
7862
- import { jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
7907
+ import { jsx as jsx54, jsxs as jsxs35 } from "react/jsx-runtime";
7863
7908
  function clampSpinValue(value, min, max) {
7864
7909
  let nextValue = value;
7865
7910
  if (min !== void 0) {
@@ -7972,7 +8017,7 @@ function SpinBox({
7972
8017
  () => disabled || max !== void 0 && numericValue >= max,
7973
8018
  [disabled, max, numericValue]
7974
8019
  );
7975
- return /* @__PURE__ */ jsxs34(
8020
+ return /* @__PURE__ */ jsxs35(
7976
8021
  "label",
7977
8022
  {
7978
8023
  className: cx("nu-spin-box", slotClassNames?.root, className),
@@ -7987,7 +8032,7 @@ function SpinBox({
7987
8032
  children: renderMnemonicText(label)
7988
8033
  }
7989
8034
  ),
7990
- /* @__PURE__ */ jsxs34(
8035
+ /* @__PURE__ */ jsxs35(
7991
8036
  "span",
7992
8037
  {
7993
8038
  className: cx("nu-spin-box__slot", slotClassNames?.slot),
@@ -8035,7 +8080,7 @@ function SpinBox({
8035
8080
  children: "]"
8036
8081
  }
8037
8082
  ),
8038
- /* @__PURE__ */ jsxs34(
8083
+ /* @__PURE__ */ jsxs35(
8039
8084
  "span",
8040
8085
  {
8041
8086
  className: cx("nu-spin-box__controls", slotClassNames?.controls),
@@ -8090,7 +8135,7 @@ import {
8090
8135
  useRef as useRef19,
8091
8136
  useState as useState27
8092
8137
  } from "react";
8093
- import { jsx as jsx55, jsxs as jsxs35 } from "react/jsx-runtime";
8138
+ import { jsx as jsx55, jsxs as jsxs36 } from "react/jsx-runtime";
8094
8139
  function clamp4(value, min, max) {
8095
8140
  return Math.min(max, Math.max(min, value));
8096
8141
  }
@@ -8245,7 +8290,7 @@ function Splitter({
8245
8290
  commitValue(max);
8246
8291
  }
8247
8292
  }
8248
- return /* @__PURE__ */ jsxs35(
8293
+ return /* @__PURE__ */ jsxs36(
8249
8294
  "div",
8250
8295
  {
8251
8296
  ...props,
@@ -8295,7 +8340,7 @@ import {
8295
8340
  useRef as useRef20,
8296
8341
  useState as useState28
8297
8342
  } from "react";
8298
- import { jsx as jsx56, jsxs as jsxs36 } from "react/jsx-runtime";
8343
+ import { jsx as jsx56, jsxs as jsxs37 } from "react/jsx-runtime";
8299
8344
  function clamp5(value, min, max) {
8300
8345
  return Math.min(max, Math.max(min, value));
8301
8346
  }
@@ -8431,7 +8476,7 @@ function TickBar({
8431
8476
  }
8432
8477
  onKeyDown?.(event);
8433
8478
  }
8434
- return /* @__PURE__ */ jsxs36(
8479
+ return /* @__PURE__ */ jsxs37(
8435
8480
  "div",
8436
8481
  {
8437
8482
  ...props,
@@ -8452,13 +8497,13 @@ function TickBar({
8452
8497
  children: renderMnemonicText(label)
8453
8498
  }
8454
8499
  ) : null,
8455
- /* @__PURE__ */ jsxs36(
8500
+ /* @__PURE__ */ jsxs37(
8456
8501
  "div",
8457
8502
  {
8458
8503
  className: cx("nu-tick-bar__slot", slotClassNames?.slot),
8459
8504
  style: slotStyles?.slot,
8460
8505
  children: [
8461
- /* @__PURE__ */ jsxs36(
8506
+ /* @__PURE__ */ jsxs37(
8462
8507
  "div",
8463
8508
  {
8464
8509
  "aria-describedby": hintId,
@@ -8774,7 +8819,7 @@ function collectVisibleTreeItems(items, expandedIds, depth = 0, guideMask = [],
8774
8819
 
8775
8820
  // src/components/TreeView/internals/TreeViewItem.tsx
8776
8821
  import { memo as memo4 } from "react";
8777
- import { jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
8822
+ import { jsx as jsx58, jsxs as jsxs38 } from "react/jsx-runtime";
8778
8823
  function areTreeViewGuideArraysEqual(previousArray, nextArray) {
8779
8824
  if (previousArray.length !== nextArray.length) {
8780
8825
  return false;
@@ -8848,8 +8893,8 @@ function TreeViewItemInner({
8848
8893
  handleActivate();
8849
8894
  onToggleItemCheck?.(item, !isChecked);
8850
8895
  }
8851
- return /* @__PURE__ */ jsxs37("div", { className: "nu-tree-view__row", role: "none", children: [
8852
- /* @__PURE__ */ jsxs37(
8896
+ return /* @__PURE__ */ jsxs38("div", { className: "nu-tree-view__row", role: "none", children: [
8897
+ /* @__PURE__ */ jsxs38(
8853
8898
  "div",
8854
8899
  {
8855
8900
  "aria-checked": isCheckable ? isChecked : void 0,
@@ -8868,7 +8913,7 @@ function TreeViewItemInner({
8868
8913
  ref: (node) => registerItemRef(itemId, node),
8869
8914
  role: "treeitem",
8870
8915
  children: [
8871
- /* @__PURE__ */ jsxs37("span", { "aria-hidden": "true", className: "nu-tree-view__prefix", children: [
8916
+ /* @__PURE__ */ jsxs38("span", { "aria-hidden": "true", className: "nu-tree-view__prefix", children: [
8872
8917
  guideMask.map((hasGuide, guideIndex) => /* @__PURE__ */ jsx58(
8873
8918
  "span",
8874
8919
  {
@@ -8880,7 +8925,7 @@ function TreeViewItemInner({
8880
8925
  },
8881
8926
  `${itemId}-guide-${guideIndex}`
8882
8927
  )),
8883
- /* @__PURE__ */ jsxs37(
8928
+ /* @__PURE__ */ jsxs38(
8884
8929
  "span",
8885
8930
  {
8886
8931
  className: "nu-tree-view__lead",
@@ -8928,7 +8973,7 @@ function TreeViewItemInner({
8928
8973
  }
8929
8974
  )
8930
8975
  ] }),
8931
- /* @__PURE__ */ jsxs37("span", { className: "nu-tree-view__content", children: [
8976
+ /* @__PURE__ */ jsxs38("span", { className: "nu-tree-view__content", children: [
8932
8977
  isCheckable ? /* @__PURE__ */ jsx58("span", { className: "nu-tree-view__check-slot", children: /* @__PURE__ */ jsx58(
8933
8978
  "button",
8934
8979
  {
@@ -9384,9 +9429,9 @@ function renderTreeListCellValue(item, column) {
9384
9429
 
9385
9430
  // src/components/TreeListView/internals/TreeListViewRow.tsx
9386
9431
  import { memo as memo5 } from "react";
9387
- import { Fragment as Fragment7, jsx as jsx60, jsxs as jsxs38 } from "react/jsx-runtime";
9432
+ import { Fragment as Fragment7, jsx as jsx60, jsxs as jsxs39 } from "react/jsx-runtime";
9388
9433
  function renderTreeTitleContent(item) {
9389
- return /* @__PURE__ */ jsxs38(Fragment7, { children: [
9434
+ return /* @__PURE__ */ jsxs39(Fragment7, { children: [
9390
9435
  /* @__PURE__ */ jsx60("span", { className: "nu-tree-list-view__title", children: item.title }),
9391
9436
  item.hint ? /* @__PURE__ */ jsx60("span", { className: "nu-tree-list-view__hint", children: item.hint }) : null
9392
9437
  ] });
@@ -9514,7 +9559,7 @@ function TreeListViewRowInner({
9514
9559
  handleActivate();
9515
9560
  onToggleItemCheck?.(item, !isChecked);
9516
9561
  }
9517
- return /* @__PURE__ */ jsxs38(Fragment7, { children: [
9562
+ return /* @__PURE__ */ jsxs39(Fragment7, { children: [
9518
9563
  /* @__PURE__ */ jsx60(
9519
9564
  "div",
9520
9565
  {
@@ -9543,7 +9588,7 @@ function TreeListViewRowInner({
9543
9588
  "--nu-tree-list-view-columns": templateColumns
9544
9589
  },
9545
9590
  children: columns.map(
9546
- (column, columnIndex) => column.id === treeColumnId ? /* @__PURE__ */ jsxs38(
9591
+ (column, columnIndex) => column.id === treeColumnId ? /* @__PURE__ */ jsxs39(
9547
9592
  "span",
9548
9593
  {
9549
9594
  className: [
@@ -9555,7 +9600,7 @@ function TreeListViewRowInner({
9555
9600
  "data-column-id": column.id,
9556
9601
  role: "gridcell",
9557
9602
  children: [
9558
- /* @__PURE__ */ jsxs38("span", { "aria-hidden": "true", className: "nu-tree-list-view__prefix", children: [
9603
+ /* @__PURE__ */ jsxs39("span", { "aria-hidden": "true", className: "nu-tree-list-view__prefix", children: [
9559
9604
  guideMask.map((hasGuide, guideIndex) => /* @__PURE__ */ jsx60(
9560
9605
  "span",
9561
9606
  {
@@ -9567,7 +9612,7 @@ function TreeListViewRowInner({
9567
9612
  },
9568
9613
  `${itemId}-guide-${guideIndex}`
9569
9614
  )),
9570
- /* @__PURE__ */ jsxs38(
9615
+ /* @__PURE__ */ jsxs39(
9571
9616
  "span",
9572
9617
  {
9573
9618
  className: "nu-tree-list-view__lead",
@@ -9615,7 +9660,7 @@ function TreeListViewRowInner({
9615
9660
  }
9616
9661
  )
9617
9662
  ] }),
9618
- /* @__PURE__ */ jsxs38("span", { className: "nu-tree-list-view__tree-content", children: [
9663
+ /* @__PURE__ */ jsxs39("span", { className: "nu-tree-list-view__tree-content", children: [
9619
9664
  isCheckable ? /* @__PURE__ */ jsx60("span", { className: "nu-tree-list-view__check-slot", children: /* @__PURE__ */ jsx60(
9620
9665
  "button",
9621
9666
  {
@@ -9716,7 +9761,7 @@ var TreeListViewRow = memo5(
9716
9761
  );
9717
9762
 
9718
9763
  // src/components/TreeListView/TreeListView.tsx
9719
- import { jsx as jsx61, jsxs as jsxs39 } from "react/jsx-runtime";
9764
+ import { jsx as jsx61, jsxs as jsxs40 } from "react/jsx-runtime";
9720
9765
  function TreeListViewInner({
9721
9766
  acceptsDrop,
9722
9767
  activeItemId: activeItemIdProp,
@@ -10160,7 +10205,7 @@ function TreeListViewInner({
10160
10205
  window.addEventListener("pointermove", handleColumnResizeMove);
10161
10206
  window.addEventListener("pointerup", handleColumnResizeEnd);
10162
10207
  }
10163
- return /* @__PURE__ */ jsxs39(
10208
+ return /* @__PURE__ */ jsxs40(
10164
10209
  "div",
10165
10210
  {
10166
10211
  ...props,
@@ -10180,7 +10225,7 @@ function TreeListViewInner({
10180
10225
  style: {
10181
10226
  "--nu-tree-list-view-columns": templateColumns
10182
10227
  },
10183
- children: columns.map((column, columnIndex) => /* @__PURE__ */ jsxs39(
10228
+ children: columns.map((column, columnIndex) => /* @__PURE__ */ jsxs40(
10184
10229
  "span",
10185
10230
  {
10186
10231
  className: [
@@ -10541,7 +10586,7 @@ function useNuTheme() {
10541
10586
  }
10542
10587
 
10543
10588
  // src/theme/NuThemeProvider.tsx
10544
- import { jsx as jsx62, jsxs as jsxs40 } from "react/jsx-runtime";
10589
+ import { jsx as jsx62, jsxs as jsxs41 } from "react/jsx-runtime";
10545
10590
  function NuThemeProvider({
10546
10591
  children,
10547
10592
  className,
@@ -10632,7 +10677,7 @@ function NuThemeProvider({
10632
10677
  handleThemeChange
10633
10678
  ]
10634
10679
  );
10635
- return /* @__PURE__ */ jsx62(NuThemeContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs40(
10680
+ return /* @__PURE__ */ jsx62(NuThemeContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs41(
10636
10681
  "div",
10637
10682
  {
10638
10683
  className: ["nu-theme-root", className].filter(Boolean).join(" "),