@jsenv/navi 0.26.21 → 0.26.23

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.
@@ -71,7 +71,7 @@ const useActionStatus = (action) => {
71
71
  };
72
72
  };
73
73
 
74
- installImportMetaCssBuild(import.meta);import.meta.css = [/* css */`
74
+ installImportMetaCssBuild(import.meta);const css$H = /* css */`
75
75
  .action_error {
76
76
  margin-top: 0;
77
77
  margin-bottom: 20px;
@@ -79,7 +79,7 @@ installImportMetaCssBuild(import.meta);import.meta.css = [/* css */`
79
79
  background: #fdd;
80
80
  border: 1px solid red;
81
81
  }
82
- `, "@jsenv/navi/src/action/action_renderer.jsx"];
82
+ `;
83
83
  const renderIdleDefault = () => null;
84
84
  const renderLoadingDefault = () => null;
85
85
  const renderAbortedDefault = () => null;
@@ -96,6 +96,7 @@ const ActionRenderer = ({
96
96
  children,
97
97
  disabled
98
98
  }) => {
99
+ import.meta.css = [css$H, "@jsenv/navi/src/action/action_renderer.jsx"];
99
100
  if (action === undefined) {
100
101
  throw new Error("ActionRenderer requires an action to render, but none was provided.");
101
102
  }
@@ -16304,7 +16305,7 @@ installImportMetaCssBuild(import.meta);
16304
16305
  * - Centers in viewport when no anchor element provided or anchor is too big
16305
16306
  */
16306
16307
 
16307
- const css$E = /* css */`
16308
+ const css$G = /* css */`
16308
16309
  @layer navi {
16309
16310
  .navi_callout {
16310
16311
  --callout-success-color: #4caf50;
@@ -16478,7 +16479,7 @@ const openCallout = (message, {
16478
16479
  showErrorStack,
16479
16480
  debug = false
16480
16481
  } = {}) => {
16481
- import.meta.css = [css$E, "@jsenv/navi/src/field/validation/callout/callout.js"];
16482
+ import.meta.css = [css$G, "@jsenv/navi/src/field/validation/callout/callout.js"];
16482
16483
  const callout = {
16483
16484
  opened: true,
16484
16485
  close: null,
@@ -19604,7 +19605,7 @@ const setupNetworkMonitoring = () => {
19604
19605
  };
19605
19606
  setupNetworkMonitoring();
19606
19607
 
19607
- installImportMetaCssBuild(import.meta);const css$D = /* css */`
19608
+ installImportMetaCssBuild(import.meta);const css$F = /* css */`
19608
19609
  .navi_loading_indicator_fluid_container {
19609
19610
  position: relative;
19610
19611
  display: flex;
@@ -19634,7 +19635,7 @@ const LoadingIndicatorFluid = ({
19634
19635
  radius,
19635
19636
  ...rest
19636
19637
  }) => {
19637
- import.meta.css = [css$D, "@jsenv/navi/src/graphic/loading/loading_indicator_fluid.jsx"];
19638
+ import.meta.css = [css$F, "@jsenv/navi/src/graphic/loading/loading_indicator_fluid.jsx"];
19638
19639
  const ref = useRef(null);
19639
19640
  // The container dimensions can be deduced from the ref itself as the indicator is absolute inset 0
19640
19641
  const [containerWidth, setContainerWidth] = useState(0);
@@ -19645,16 +19646,16 @@ const LoadingIndicatorFluid = ({
19645
19646
  if (!indicatorEl) {
19646
19647
  return null;
19647
19648
  }
19648
- if (radius === undefined || radius === "inherit") {
19649
- const radius = getComputedStyle(indicatorEl).borderRadius;
19650
- setContainerRadius(radius);
19651
- }
19652
19649
  const {
19653
19650
  width,
19654
19651
  height
19655
19652
  } = indicatorEl.getBoundingClientRect();
19656
19653
  setContainerWidth(width);
19657
19654
  setContainerHeight(height);
19655
+ if (radius === undefined || radius === "inherit") {
19656
+ const radius = getComputedStyle(indicatorEl).borderRadius;
19657
+ setContainerRadius(radius);
19658
+ }
19658
19659
  let animationFrameId = null;
19659
19660
  // Create a resize observer to detect changes in the container's dimensions
19660
19661
  const resizeObserver = new ResizeObserver(entries => {
@@ -19775,6 +19776,7 @@ const LoadingRectangleSvg = ({
19775
19776
  style: "overflow: visible",
19776
19777
  xmlns: "http://www.w3.org/2000/svg",
19777
19778
  "shape-rendering": "geometricPrecision",
19779
+ "data-radius": radius,
19778
19780
  children: [isCircle ? jsx("circle", {
19779
19781
  cx: margin + drawableWidth / 2,
19780
19782
  cy: margin + drawableHeight / 2,
@@ -19821,7 +19823,7 @@ const LoadingRectangleSvg = ({
19821
19823
  });
19822
19824
  };
19823
19825
 
19824
- installImportMetaCssBuild(import.meta);const css$C = /* css */`
19826
+ installImportMetaCssBuild(import.meta);const css$E = /* css */`
19825
19827
  .navi_loading_outline_wrapper {
19826
19828
  position: absolute;
19827
19829
  top: var(--loading-rectangle-top, 0);
@@ -19839,7 +19841,7 @@ installImportMetaCssBuild(import.meta);const css$C = /* css */`
19839
19841
  }
19840
19842
  `;
19841
19843
  const LoadingOutline = props => {
19842
- import.meta.css = [css$C, "@jsenv/navi/src/graphic/loading/loading_outline.jsx"];
19844
+ import.meta.css = [css$E, "@jsenv/navi/src/graphic/loading/loading_outline.jsx"];
19843
19845
  if (props.containerRef) {
19844
19846
  const container = props.containerRef.current;
19845
19847
  if (!container) {
@@ -20785,7 +20787,7 @@ const selectByTextStrings = (element, range, startText, endText) => {
20785
20787
  };
20786
20788
 
20787
20789
  installImportMetaCssBuild(import.meta);// https://jsfiddle.net/v5xzJ/4/
20788
- const css$B = /* css */`
20790
+ const css$D = /* css */`
20789
20791
  @layer navi {
20790
20792
  .navi_text {
20791
20793
  &[data-skeleton] {
@@ -21184,7 +21186,7 @@ const TextDispatcher = props => {
21184
21186
  });
21185
21187
  };
21186
21188
  const TextUI = props => {
21187
- import.meta.css = [css$B, "@jsenv/navi/src/text/text.jsx"];
21189
+ import.meta.css = [css$D, "@jsenv/navi/src/text/text.jsx"];
21188
21190
  let {
21189
21191
  ref,
21190
21192
  spacing,
@@ -21356,7 +21358,7 @@ const TextWithSelectRange = ({
21356
21358
  });
21357
21359
  };
21358
21360
 
21359
- installImportMetaCssBuild(import.meta);const css$A = /* css */`
21361
+ installImportMetaCssBuild(import.meta);const css$C = /* css */`
21360
21362
  .navi_text_anchor {
21361
21363
  vertical-align: baseline;
21362
21364
  user-select: none;
@@ -21391,7 +21393,7 @@ const TextAnchor = ({
21391
21393
  textSize,
21392
21394
  lineLayout
21393
21395
  }) => {
21394
- import.meta.css = [css$A, "@jsenv/navi/src/text/text_anchor.jsx"];
21396
+ import.meta.css = [css$C, "@jsenv/navi/src/text/text_anchor.jsx"];
21395
21397
  const anchorRef = useRef();
21396
21398
  const setTopOffset = (childEl, topOffset) => {
21397
21399
  // position:relative + top shifts the element visually.
@@ -21493,7 +21495,7 @@ const computeTopOffset = ({
21493
21495
  };
21494
21496
  const charTopCanvas = document.createElement("canvas");
21495
21497
 
21496
- installImportMetaCssBuild(import.meta);const css$z = /* css */`
21498
+ installImportMetaCssBuild(import.meta);const css$B = /* css */`
21497
21499
  @layer navi {
21498
21500
  /* Ensure data attributes from box.jsx can win to update display */
21499
21501
  .navi_icon {
@@ -21566,7 +21568,7 @@ const Icon = ({
21566
21568
  lineLayout,
21567
21569
  ...props
21568
21570
  }) => {
21569
- import.meta.css = [css$z, "@jsenv/navi/src/text/icon.jsx"];
21571
+ import.meta.css = [css$B, "@jsenv/navi/src/text/icon.jsx"];
21570
21572
  const innerChildren = href ? jsx("svg", {
21571
21573
  width: "100%",
21572
21574
  height: "100%",
@@ -22518,7 +22520,7 @@ const useUIState = (uiStateController) => {
22518
22520
  return trackedUIState;
22519
22521
  };
22520
22522
 
22521
- installImportMetaCssBuild(import.meta);const css$y = /* css */`
22523
+ installImportMetaCssBuild(import.meta);const css$A = /* css */`
22522
22524
  @layer navi {
22523
22525
  .navi_button {
22524
22526
  --button-border-radius: 2px;
@@ -22804,7 +22806,7 @@ const ButtonDispatcher = props => {
22804
22806
  });
22805
22807
  };
22806
22808
  const ButtonUI = props => {
22807
- import.meta.css = [css$y, "@jsenv/navi/src/field/button.jsx"];
22809
+ import.meta.css = [css$A, "@jsenv/navi/src/field/button.jsx"];
22808
22810
  const {
22809
22811
  ref,
22810
22812
  readOnly,
@@ -23129,7 +23131,7 @@ const WarningSvg = () => {
23129
23131
  });
23130
23132
  };
23131
23133
 
23132
- installImportMetaCssBuild(import.meta);const css$x = /* css */`
23134
+ installImportMetaCssBuild(import.meta);const css$z = /* css */`
23133
23135
  @layer navi {
23134
23136
  .navi_message_box {
23135
23137
  --background-color-info: var(--navi-info-color-light);
@@ -23182,7 +23184,7 @@ const MessageBox = ({
23182
23184
  onClose,
23183
23185
  ...rest
23184
23186
  }) => {
23185
- import.meta.css = [css$x, "@jsenv/navi/src/text/message_box.jsx"];
23187
+ import.meta.css = [css$z, "@jsenv/navi/src/text/message_box.jsx"];
23186
23188
  const [hasTitleChild, setHasTitleChild] = useState(false);
23187
23189
  const innerLeftStripe = leftStripe === undefined ? hasTitleChild : leftStripe;
23188
23190
  if (icon === true) {
@@ -23241,7 +23243,7 @@ const MessageBoxPseudoClasses = [":-navi-status-info", ":-navi-status-success",
23241
23243
  const MessageBoxStatusContext = createContext();
23242
23244
  const MessageBoxReportTitleChildContext = createContext();
23243
23245
 
23244
- installImportMetaCssBuild(import.meta);const css$w = /* css */`
23246
+ installImportMetaCssBuild(import.meta);const css$y = /* css */`
23245
23247
  .navi_message_box {
23246
23248
  .navi_title {
23247
23249
  margin-top: 0;
@@ -23251,7 +23253,7 @@ installImportMetaCssBuild(import.meta);const css$w = /* css */`
23251
23253
  }
23252
23254
  `;
23253
23255
  const Title = props => {
23254
- import.meta.css = [css$w, "@jsenv/navi/src/text/title.jsx"];
23256
+ import.meta.css = [css$y, "@jsenv/navi/src/text/title.jsx"];
23255
23257
  const messageBoxStatus = useContext(MessageBoxStatusContext);
23256
23258
  const innerAs = props.as || (messageBoxStatus ? "h4" : "h1");
23257
23259
  const titleLevel = parseInt(innerAs.slice(1));
@@ -23329,7 +23331,7 @@ const useDimColorWhen = (elementRef, shouldDim) => {
23329
23331
  });
23330
23332
  };
23331
23333
 
23332
- installImportMetaCssBuild(import.meta);const css$v = /* css */`
23334
+ installImportMetaCssBuild(import.meta);const css$x = /* css */`
23333
23335
  @layer navi {
23334
23336
  .navi_link {
23335
23337
  --link-border-radius: unset;
@@ -23681,7 +23683,7 @@ Object.assign(PSEUDO_CLASSES, {
23681
23683
  }
23682
23684
  });
23683
23685
  const Link = props => {
23684
- import.meta.css = [css$v, "@jsenv/navi/src/nav/link/link.jsx"];
23686
+ import.meta.css = [css$x, "@jsenv/navi/src/nav/link/link.jsx"];
23685
23687
  return renderActionableComponent(props, {
23686
23688
  Basic: LinkBasic,
23687
23689
  WithAction: LinkWithAction
@@ -23947,7 +23949,7 @@ installImportMetaCssBuild(import.meta);/**
23947
23949
  * TabList component with support for horizontal and vertical layouts
23948
23950
  * https://dribbble.com/search/tabs
23949
23951
  */
23950
- const css$u = /* css */`
23952
+ const css$w = /* css */`
23951
23953
  @layer navi {
23952
23954
  .navi_nav {
23953
23955
  --nav-border: none;
@@ -24083,7 +24085,7 @@ const Nav = ({
24083
24085
  panelBorderConnection,
24084
24086
  ...props
24085
24087
  }) => {
24086
- import.meta.css = [css$u, "@jsenv/navi/src/nav/link/nav.jsx"];
24088
+ import.meta.css = [css$w, "@jsenv/navi/src/nav/link/nav.jsx"];
24087
24089
  children = toChildArray(children);
24088
24090
  return jsx(Box, {
24089
24091
  as: "nav",
@@ -24131,7 +24133,7 @@ const useFocusGroup = (
24131
24133
 
24132
24134
  installImportMetaCssBuild(import.meta);const rightArrowPath = "M680-480L360-160l-80-80 240-240-240-240 80-80 320 320z";
24133
24135
  const downArrowPath = "M480-280L160-600l80-80 240 240 240-240 80 80-320 320z";
24134
- const css$t = /* css */`
24136
+ const css$v = /* css */`
24135
24137
  .navi_summary_marker {
24136
24138
  width: 1em;
24137
24139
  height: 1em;
@@ -24216,7 +24218,7 @@ const SummaryMarker = ({
24216
24218
  open,
24217
24219
  loading
24218
24220
  }) => {
24219
- import.meta.css = [css$t, "@jsenv/navi/src/field/details/summary_marker.jsx"];
24221
+ import.meta.css = [css$v, "@jsenv/navi/src/field/details/summary_marker.jsx"];
24220
24222
  const showLoading = useDebounceTrue(loading, 300);
24221
24223
  const mountedRef = useRef(false);
24222
24224
  const prevOpenRef = useRef(open);
@@ -24270,7 +24272,7 @@ const SummaryMarker = ({
24270
24272
  });
24271
24273
  };
24272
24274
 
24273
- installImportMetaCssBuild(import.meta);const css$s = /* css */`
24275
+ installImportMetaCssBuild(import.meta);const css$u = /* css */`
24274
24276
  .navi_details {
24275
24277
  position: relative;
24276
24278
  z-index: 1;
@@ -24307,7 +24309,7 @@ installImportMetaCssBuild(import.meta);const css$s = /* css */`
24307
24309
  }
24308
24310
  `;
24309
24311
  const Details = props => {
24310
- import.meta.css = [css$s, "@jsenv/navi/src/field/details/details.jsx"];
24312
+ import.meta.css = [css$u, "@jsenv/navi/src/field/details/details.jsx"];
24311
24313
  const {
24312
24314
  value = "on",
24313
24315
  persists
@@ -24622,7 +24624,7 @@ const fieldPropSet = new Set([
24622
24624
  "data-testid",
24623
24625
  ]);
24624
24626
 
24625
- installImportMetaCssBuild(import.meta);const css$r = /* css */`
24627
+ installImportMetaCssBuild(import.meta);const css$t = /* css */`
24626
24628
  @layer navi {
24627
24629
  label {
24628
24630
  &[data-interactive] {
@@ -24640,7 +24642,7 @@ installImportMetaCssBuild(import.meta);const css$r = /* css */`
24640
24642
  }
24641
24643
  `;
24642
24644
  const Label = props => {
24643
- import.meta.css = [css$r, "@jsenv/navi/src/field/label.jsx"];
24645
+ import.meta.css = [css$t, "@jsenv/navi/src/field/label.jsx"];
24644
24646
  const {
24645
24647
  readOnly,
24646
24648
  disabled,
@@ -24690,7 +24692,7 @@ const reportDisabledToLabel = value => {
24690
24692
  reportDisabled?.(value);
24691
24693
  };
24692
24694
 
24693
- installImportMetaCssBuild(import.meta);const css$q = /* css */`
24695
+ installImportMetaCssBuild(import.meta);const css$s = /* css */`
24694
24696
  @layer navi {
24695
24697
  .navi_checkbox {
24696
24698
  --margin: 3px 3px 3px 4px;
@@ -25082,7 +25084,7 @@ const InputCheckboxDispatcher = props => {
25082
25084
  });
25083
25085
  };
25084
25086
  const InputCheckboxUI = props => {
25085
- import.meta.css = [css$q, "@jsenv/navi/src/field/input_checkbox.jsx"];
25087
+ import.meta.css = [css$s, "@jsenv/navi/src/field/input_checkbox.jsx"];
25086
25088
  const {
25087
25089
  ref,
25088
25090
  /* eslint-disable no-unused-vars */
@@ -25483,7 +25485,7 @@ forwardRef((props, ref) => {
25483
25485
  });
25484
25486
  });
25485
25487
 
25486
- installImportMetaCssBuild(import.meta);const css$p = /* css */`
25488
+ installImportMetaCssBuild(import.meta);const css$r = /* css */`
25487
25489
  @layer navi {
25488
25490
  .navi_radio {
25489
25491
  --margin: 3px 3px 0 5px;
@@ -25837,7 +25839,7 @@ const InputRadioDispatcher = props => {
25837
25839
  });
25838
25840
  };
25839
25841
  const InputRadioUI = props => {
25840
- import.meta.css = [css$p, "@jsenv/navi/src/field/input_radio.jsx"];
25842
+ import.meta.css = [css$r, "@jsenv/navi/src/field/input_radio.jsx"];
25841
25843
  const {
25842
25844
  ref,
25843
25845
  /* eslint-disable no-unused-vars */
@@ -26067,7 +26069,7 @@ const InputRadioWithAction = () => {
26067
26069
  throw new Error(`<Input type="radio" /> with an action make no sense. Use <RadioList action={something} /> instead`);
26068
26070
  };
26069
26071
 
26070
- installImportMetaCssBuild(import.meta);const css$o = /* css */`
26072
+ installImportMetaCssBuild(import.meta);const css$q = /* css */`
26071
26073
  @layer navi {
26072
26074
  .navi_input_range {
26073
26075
  --border-radius: 6px;
@@ -26329,7 +26331,7 @@ const InputRangeDispatcher = props => {
26329
26331
  });
26330
26332
  };
26331
26333
  const InputRangeUI = props => {
26332
- import.meta.css = [css$o, "@jsenv/navi/src/field/input_range.jsx"];
26334
+ import.meta.css = [css$q, "@jsenv/navi/src/field/input_range.jsx"];
26333
26335
  const {
26334
26336
  ref,
26335
26337
  onInput,
@@ -26606,7 +26608,7 @@ const SearchSvg = () => jsx("svg", {
26606
26608
  })
26607
26609
  });
26608
26610
 
26609
- installImportMetaCssBuild(import.meta);const css$n = /* css */`
26611
+ installImportMetaCssBuild(import.meta);const css$p = /* css */`
26610
26612
  @layer navi {
26611
26613
  .navi_separator {
26612
26614
  --size: 1px;
@@ -26646,7 +26648,7 @@ const Separator = ({
26646
26648
  vertical,
26647
26649
  ...props
26648
26650
  }) => {
26649
- import.meta.css = [css$n, "@jsenv/navi/src/layout/separator.jsx"];
26651
+ import.meta.css = [css$p, "@jsenv/navi/src/layout/separator.jsx"];
26650
26652
  return jsx(Box, {
26651
26653
  as: vertical ? "span" : "hr",
26652
26654
  ...props,
@@ -27058,7 +27060,7 @@ const RenderWindowContext = createContext(null);
27058
27060
  // Carries the separator element/function down to each ListItem so separators
27059
27061
  // are only rendered between items that actually mount (post-filter, post-window).
27060
27062
  const SeparatorContext = createContext(null);
27061
- const css$m = /* css */`
27063
+ const css$o = /* css */`
27062
27064
  @layer navi {
27063
27065
  .navi_list_container {
27064
27066
  --list-outline-width: 1px;
@@ -27485,7 +27487,7 @@ const ListDispatcher = props => {
27485
27487
  });
27486
27488
  };
27487
27489
  const ListUI = props => {
27488
- import.meta.css = [css$m, "@jsenv/navi/src/field/list/list.jsx"];
27490
+ import.meta.css = [css$o, "@jsenv/navi/src/field/list/list.jsx"];
27489
27491
  const {
27490
27492
  ref,
27491
27493
  renderBudget = RENDER_BUDGET_DEFAULT,
@@ -28964,7 +28966,7 @@ installImportMetaCssBuild(import.meta);/**
28964
28966
  * - <InputCheckbox /> for type="checkbox"
28965
28967
  * - <InputRadio /> for type="radio"
28966
28968
  */
28967
- const css$l = /* css */`
28969
+ const css$n = /* css */`
28968
28970
  @layer navi {
28969
28971
  .navi_input {
28970
28972
  --border-radius: 2px;
@@ -29218,7 +29220,7 @@ const InputTextualDispatcher = props => {
29218
29220
  };
29219
29221
  const InputNativeContext = createContext(null);
29220
29222
  const InputTextualUI = props => {
29221
- import.meta.css = [css$l, "@jsenv/navi/src/field/input_textual.jsx"];
29223
+ import.meta.css = [css$n, "@jsenv/navi/src/field/input_textual.jsx"];
29222
29224
  const {
29223
29225
  ref,
29224
29226
  type,
@@ -29839,7 +29841,7 @@ installImportMetaCssBuild(import.meta);/**
29839
29841
  * This means an editable thing MUST have a parent with position relative that wraps the content and the eventual editable input
29840
29842
  *
29841
29843
  */
29842
- const css$k = /* css */`
29844
+ const css$m = /* css */`
29843
29845
  .navi_editable_wrapper {
29844
29846
  --inset-top: 0px;
29845
29847
  --inset-right: 0px;
@@ -29888,7 +29890,7 @@ const useEditionController = () => {
29888
29890
  };
29889
29891
  };
29890
29892
  const Editable = props => {
29891
- import.meta.css = [css$k, "@jsenv/navi/src/field/edition/editable.jsx"];
29893
+ import.meta.css = [css$m, "@jsenv/navi/src/field/edition/editable.jsx"];
29892
29894
  let {
29893
29895
  children,
29894
29896
  action,
@@ -30302,7 +30304,7 @@ const FormWithAction = props => {
30302
30304
  // form.dispatchEvent(customEvent);
30303
30305
  // };
30304
30306
 
30305
- installImportMetaCssBuild(import.meta);const css$j = /* css */`
30307
+ installImportMetaCssBuild(import.meta);const css$l = /* css */`
30306
30308
  .navi_group {
30307
30309
  --border-width: 1px;
30308
30310
 
@@ -30399,7 +30401,7 @@ const Group = ({
30399
30401
  vertical = row,
30400
30402
  ...props
30401
30403
  }) => {
30402
- import.meta.css = [css$j, "@jsenv/navi/src/field/group.jsx"];
30404
+ import.meta.css = [css$l, "@jsenv/navi/src/field/group.jsx"];
30403
30405
  if (typeof borderWidth === "string") {
30404
30406
  borderWidth = parseFloat(borderWidth);
30405
30407
  }
@@ -30590,7 +30592,7 @@ const useCleanup = () => {
30590
30592
  return cleanupMethods;
30591
30593
  };
30592
30594
 
30593
- installImportMetaCssBuild(import.meta);const css$i = /* css */`
30595
+ installImportMetaCssBuild(import.meta);const css$k = /* css */`
30594
30596
  .navi_dialog {
30595
30597
  &[open] {
30596
30598
  display: flex;
@@ -30603,7 +30605,7 @@ installImportMetaCssBuild(import.meta);const css$i = /* css */`
30603
30605
  }
30604
30606
  `;
30605
30607
  const Dialog = props => {
30606
- import.meta.css = [css$i, "@jsenv/navi/src/popup/dialog.jsx"];
30608
+ import.meta.css = [css$k, "@jsenv/navi/src/popup/dialog.jsx"];
30607
30609
  const {
30608
30610
  children,
30609
30611
  scrollTrap,
@@ -30714,7 +30716,7 @@ const requestDialogClose = (popoverElement, {
30714
30716
  });
30715
30717
  };
30716
30718
 
30717
- installImportMetaCssBuild(import.meta);const css$h = /* css */`
30719
+ installImportMetaCssBuild(import.meta);const css$j = /* css */`
30718
30720
  .navi_popover_backdrop {
30719
30721
  position: fixed;
30720
30722
  inset: 0;
@@ -30730,7 +30732,7 @@ installImportMetaCssBuild(import.meta);const css$h = /* css */`
30730
30732
  }
30731
30733
  `;
30732
30734
  const Popover = props => {
30733
- import.meta.css = [css$h, "@jsenv/navi/src/popup/popover.jsx"];
30735
+ import.meta.css = [css$j, "@jsenv/navi/src/popup/popover.jsx"];
30734
30736
  const {
30735
30737
  scrollTrap,
30736
30738
  pointerTrap,
@@ -30932,7 +30934,7 @@ const requestPopoverClose = (popoverElement, {
30932
30934
  });
30933
30935
  };
30934
30936
 
30935
- installImportMetaCssBuild(import.meta);const css$g = /* css */`
30937
+ installImportMetaCssBuild(import.meta);const css$i = /* css */`
30936
30938
  @layer navi {
30937
30939
  .navi_select {
30938
30940
  --select-border-radius: 2px;
@@ -31280,7 +31282,7 @@ const SelectDispatcher = props => {
31280
31282
  });
31281
31283
  };
31282
31284
  const SelectUI = props => {
31283
- import.meta.css = [css$g, "@jsenv/navi/src/field/select.jsx"];
31285
+ import.meta.css = [css$i, "@jsenv/navi/src/field/select.jsx"];
31284
31286
  const {
31285
31287
  placeholder = "Select…",
31286
31288
  trigger,
@@ -32472,7 +32474,7 @@ const Z_INDEX_DROP_PREVIEW = Z_INDEX_STICKY_CORNER + 1;
32472
32474
 
32473
32475
  const Z_INDEX_TABLE_UI = Z_INDEX_STICKY_CORNER + 1;
32474
32476
 
32475
- installImportMetaCssBuild(import.meta);const css$f = /* css */`
32477
+ installImportMetaCssBuild(import.meta);const css$h = /* css */`
32476
32478
  .navi_table_drag_clone_container {
32477
32479
  position: absolute;
32478
32480
  top: var(--table-visual-top);
@@ -32652,7 +32654,7 @@ const moveItem = (array, indexA, indexB) => {
32652
32654
  return newArray;
32653
32655
  };
32654
32656
  const TableDragCloneContainer = forwardRef((props, ref) => {
32655
- import.meta.css = [css$f, "@jsenv/navi/src/field/table/drag/table_drag.jsx"];
32657
+ import.meta.css = [css$h, "@jsenv/navi/src/field/table/drag/table_drag.jsx"];
32656
32658
  const {
32657
32659
  tableId
32658
32660
  } = props;
@@ -32950,7 +32952,7 @@ installImportMetaCssBuild(import.meta);const ROW_MIN_HEIGHT = 30;
32950
32952
  const ROW_MAX_HEIGHT = 100;
32951
32953
  const COLUMN_MIN_WIDTH = 50;
32952
32954
  const COLUMN_MAX_WIDTH = 500;
32953
- const css$e = /* css */`
32955
+ const css$g = /* css */`
32954
32956
  @layer navi {
32955
32957
  .navi_table {
32956
32958
  --table-resizer-handle-color: #063b7c;
@@ -33110,7 +33112,7 @@ const css$e = /* css */`
33110
33112
 
33111
33113
  // Column resize components
33112
33114
  const TableColumnResizer = props => {
33113
- import.meta.css = [css$e, "@jsenv/navi/src/field/table/resize/table_resize.jsx"];
33115
+ import.meta.css = [css$g, "@jsenv/navi/src/field/table/resize/table_resize.jsx"];
33114
33116
  const defaultRef = useRef();
33115
33117
  const ref = props.ref || defaultRef;
33116
33118
  return jsxs("div", {
@@ -33577,7 +33579,7 @@ const findPreviousTableRow = currentRow => {
33577
33579
  return currentIndex > 0 ? allRows[currentIndex - 1] : null;
33578
33580
  };
33579
33581
 
33580
- installImportMetaCssBuild(import.meta);const css$d = /* css */`
33582
+ installImportMetaCssBuild(import.meta);const css$f = /* css */`
33581
33583
  @layer navi {
33582
33584
  .navi_table {
33583
33585
  --selection-border-color: var(--navi-selection-border-color, #0078d4);
@@ -33679,7 +33681,7 @@ const useTableSelectionController = ({
33679
33681
  onSelectionChange,
33680
33682
  selectionColor
33681
33683
  }) => {
33682
- import.meta.css = [css$d, "@jsenv/navi/src/field/table/selection/table_selection.jsx"];
33684
+ import.meta.css = [css$f, "@jsenv/navi/src/field/table/selection/table_selection.jsx"];
33683
33685
  const selectionController = useSelectionController({
33684
33686
  elementRef: tableRef,
33685
33687
  layout: "grid",
@@ -34150,7 +34152,7 @@ const useTableStickyContextValue = ({
34150
34152
  };
34151
34153
 
34152
34154
  installImportMetaCssBuild(import.meta);// TODO: sticky left/top frontier should likely use "followPosition"
34153
- const css$c = /* css */`
34155
+ const css$e = /* css */`
34154
34156
  @layer navi {
34155
34157
  .navi_table {
34156
34158
  --sticky-frontier-color: #c0c0c0;
@@ -34393,7 +34395,7 @@ const css$c = /* css */`
34393
34395
  const TableStickyFrontier = ({
34394
34396
  tableRef
34395
34397
  }) => {
34396
- import.meta.css = [css$c, "@jsenv/navi/src/field/table/sticky/table_sticky.jsx"];
34398
+ import.meta.css = [css$e, "@jsenv/navi/src/field/table/sticky/table_sticky.jsx"];
34397
34399
  const stickyLeftFrontierGhostRef = useRef();
34398
34400
  const stickyLeftFrontierPreviewRef = useRef();
34399
34401
  const stickyTopFrontierGhostRef = useRef();
@@ -34622,7 +34624,7 @@ const initMoveStickyFrontierViaPointer = (pointerdownEvent, {
34622
34624
  * inset 0 -1px 0 0 color; // Bottom border
34623
34625
  */
34624
34626
 
34625
- const css$b = /* css */ `
34627
+ const css$d = /* css */ `
34626
34628
  .navi_table_root {
34627
34629
  position: relative;
34628
34630
  max-width: var(--table-max-width, none);
@@ -34825,7 +34827,7 @@ const css$b = /* css */ `
34825
34827
  }
34826
34828
  `;
34827
34829
 
34828
- installImportMetaCssBuild(import.meta);const css$a = /* css */`
34830
+ installImportMetaCssBuild(import.meta);const css$c = /* css */`
34829
34831
  .navi_table_ui {
34830
34832
  position: fixed;
34831
34833
  inset: 0;
@@ -34836,7 +34838,7 @@ installImportMetaCssBuild(import.meta);const css$a = /* css */`
34836
34838
  }
34837
34839
  `;
34838
34840
  const TableUI = forwardRef((props, ref) => {
34839
- import.meta.css = [css$a, "@jsenv/navi/src/field/table/table_ui.jsx"];
34841
+ import.meta.css = [css$c, "@jsenv/navi/src/field/table/table_ui.jsx"];
34840
34842
  const {
34841
34843
  tableRef,
34842
34844
  tableId,
@@ -34942,7 +34944,7 @@ const RowIndexContext = createContext();
34942
34944
  const TableSectionContext = createContext();
34943
34945
  const useIsInTableHead = () => useContext(TableSectionContext) === "head";
34944
34946
  const Table = props => {
34945
- import.meta.css = [css$b, "@jsenv/navi/src/field/table/table.jsx"];
34947
+ import.meta.css = [css$d, "@jsenv/navi/src/field/table/table.jsx"];
34946
34948
  const tableDefaultRef = useRef();
34947
34949
  const tableDefaultId = `table-${useId()}`;
34948
34950
  const {
@@ -35763,7 +35765,7 @@ const normalizeKey = (key) => {
35763
35765
  return key;
35764
35766
  };
35765
35767
 
35766
- installImportMetaCssBuild(import.meta);import.meta.css = [/* css */`
35768
+ installImportMetaCssBuild(import.meta);const css$b = /* css */`
35767
35769
  .navi_shortcut_container[data-visually-hidden] {
35768
35770
  /* Visually hidden container - doesn't affect layout */
35769
35771
  position: absolute;
@@ -35797,10 +35799,11 @@ installImportMetaCssBuild(import.meta);import.meta.css = [/* css */`
35797
35799
  opacity: 0;
35798
35800
  pointer-events: none;
35799
35801
  }
35800
- `, "@jsenv/navi/src/keyboard/active_keyboard_shortcuts.jsx"];
35802
+ `;
35801
35803
  const ActiveKeyboardShortcuts = ({
35802
35804
  visible
35803
35805
  }) => {
35806
+ import.meta.css = [css$b, "@jsenv/navi/src/keyboard/active_keyboard_shortcuts.jsx"];
35804
35807
  const activeShortcuts = activeShortcutsSignal.value;
35805
35808
  return jsx("div", {
35806
35809
  className: "navi_shortcut_container",
@@ -35839,7 +35842,7 @@ const KeyboardShortcutAriaElement = ({
35839
35842
  });
35840
35843
  };
35841
35844
 
35842
- installImportMetaCssBuild(import.meta);const css$9 = /* css */`
35845
+ installImportMetaCssBuild(import.meta);const css$a = /* css */`
35843
35846
  @layer navi {
35844
35847
  .navi_clipboard_container {
35845
35848
  --height: 1.5em;
@@ -35871,7 +35874,7 @@ const ButtonCopyToClipboard = ({
35871
35874
  children,
35872
35875
  ...props
35873
35876
  }) => {
35874
- import.meta.css = [css$9, "@jsenv/navi/src/field/button_copy_to_clipboard.jsx"];
35877
+ import.meta.css = [css$a, "@jsenv/navi/src/field/button_copy_to_clipboard.jsx"];
35875
35878
  const [copied, setCopied] = useState(false);
35876
35879
  const renderedRef = useRef();
35877
35880
  useEffect(() => {
@@ -35952,7 +35955,7 @@ const Address = ({
35952
35955
  });
35953
35956
  };
35954
35957
 
35955
- installImportMetaCssBuild(import.meta);const css$8 = /* css */`
35958
+ installImportMetaCssBuild(import.meta);const css$9 = /* css */`
35956
35959
  @layer navi {
35957
35960
  }
35958
35961
  .navi_badge {
@@ -35986,7 +35989,7 @@ const Badge = ({
35986
35989
  className,
35987
35990
  ...props
35988
35991
  }) => {
35989
- import.meta.css = [css$8, "@jsenv/navi/src/text/badge.jsx"];
35992
+ import.meta.css = [css$9, "@jsenv/navi/src/text/badge.jsx"];
35990
35993
  const defaultRef = useRef();
35991
35994
  const ref = props.ref || defaultRef;
35992
35995
  useAccentColorAttributes(ref, null);
@@ -36076,7 +36079,7 @@ const formatNumber = (value, { lang } = {}) => {
36076
36079
  return new Intl.NumberFormat(lang).format(value);
36077
36080
  };
36078
36081
 
36079
- installImportMetaCssBuild(import.meta);const css$7 = /* css */`
36082
+ installImportMetaCssBuild(import.meta);const css$8 = /* css */`
36080
36083
  @layer navi {
36081
36084
  }
36082
36085
  .navi_text.navi_badge_count {
@@ -36189,7 +36192,7 @@ const BadgeCount = ({
36189
36192
  lineLayout,
36190
36193
  ...props
36191
36194
  }) => {
36192
- import.meta.css = [css$7, "@jsenv/navi/src/text/badge_count.jsx"];
36195
+ import.meta.css = [css$8, "@jsenv/navi/src/text/badge_count.jsx"];
36193
36196
  const defaultRef = useRef();
36194
36197
  const ref = props.ref || defaultRef;
36195
36198
  useAccentColorAttributes(ref, null);
@@ -36328,7 +36331,7 @@ const BadgeCountCircle = ({
36328
36331
  });
36329
36332
  };
36330
36333
 
36331
- installImportMetaCssBuild(import.meta);const css$6 = /* css */`
36334
+ installImportMetaCssBuild(import.meta);const css$7 = /* css */`
36332
36335
  @layer navi {
36333
36336
  .navi_caption {
36334
36337
  --color: #6b7280;
@@ -36349,7 +36352,7 @@ const Caption = ({
36349
36352
  className,
36350
36353
  ...rest
36351
36354
  }) => {
36352
- import.meta.css = [css$6, "@jsenv/navi/src/text/caption.jsx"];
36355
+ import.meta.css = [css$7, "@jsenv/navi/src/text/caption.jsx"];
36353
36356
  return jsx(Text, {
36354
36357
  as: "small",
36355
36358
  size: "0.8em" // We use em to be relative to the parent (we want to be smaller than the surrounding text)
@@ -36826,7 +36829,7 @@ const interpolate = (template, values) => {
36826
36829
  });
36827
36830
  };
36828
36831
 
36829
- installImportMetaCssBuild(import.meta);const css$5 = /* css */`
36832
+ installImportMetaCssBuild(import.meta);const css$6 = /* css */`
36830
36833
  @layer navi {
36831
36834
  .navi_quantity {
36832
36835
  --unit-color: color-mix(in srgb, currentColor 50%, white);
@@ -36931,7 +36934,7 @@ const Quantity = ({
36931
36934
  bold = true,
36932
36935
  ...props
36933
36936
  }) => {
36934
- import.meta.css = [css$5, "@jsenv/navi/src/text/quantity.jsx"];
36937
+ import.meta.css = [css$6, "@jsenv/navi/src/text/quantity.jsx"];
36935
36938
  const value = parseQuantityValue(children);
36936
36939
  const valueRounded = integer && typeof value === "number" ? Math.round(value) : value;
36937
36940
  const valueFormatted = typeof valueRounded === "number" ? formatNumber(valueRounded, {
@@ -37020,7 +37023,7 @@ const parseQuantityValue = children => {
37020
37023
  return Number.isNaN(parsed) ? children : parsed;
37021
37024
  };
37022
37025
 
37023
- installImportMetaCssBuild(import.meta);const css$4 = /* css */`
37026
+ installImportMetaCssBuild(import.meta);const css$5 = /* css */`
37024
37027
  @layer navi {
37025
37028
  .navi_meter {
37026
37029
  --loader-color: var(--navi-loader-color);
@@ -37158,7 +37161,7 @@ const Meter = ({
37158
37161
  style,
37159
37162
  ...rest
37160
37163
  }) => {
37161
- import.meta.css = [css$4, "@jsenv/navi/src/text/meter.jsx"];
37164
+ import.meta.css = [css$5, "@jsenv/navi/src/text/meter.jsx"];
37162
37165
  const defaultRef = useRef();
37163
37166
  const ref = rest.ref || defaultRef;
37164
37167
  value = Number(value);
@@ -37285,7 +37288,7 @@ const Paragraph = props => {
37285
37288
  });
37286
37289
  };
37287
37290
 
37288
- installImportMetaCssBuild(import.meta);const css$3 = /* css */`
37291
+ installImportMetaCssBuild(import.meta);const css$4 = /* css */`
37289
37292
  @keyframes navi_image_shimmer {
37290
37293
  0% {
37291
37294
  background-position: -200% 0;
@@ -37340,7 +37343,7 @@ const Image = ({
37340
37343
  placeholderDark = false,
37341
37344
  ...rest
37342
37345
  }) => {
37343
- import.meta.css = [css$3, "@jsenv/navi/src/graphic/image.jsx"];
37346
+ import.meta.css = [css$4, "@jsenv/navi/src/graphic/image.jsx"];
37344
37347
  const loadedRef = useRef();
37345
37348
  let resolvedPlaceholder = placeholderColor;
37346
37349
  if (resolvedPlaceholder === undefined) {
@@ -37423,7 +37426,7 @@ installImportMetaCssBuild(import.meta);/**
37423
37426
  * @param {ReactNode[]} props.children - SVG elements (first is base, rest are overlays)
37424
37427
  * @returns {ReactElement} A composed SVG with all elements properly masked
37425
37428
  */
37426
- import.meta.css = [/* css */`
37429
+ const css$3 = /* css */`
37427
37430
  .svg_mask_content * {
37428
37431
  color: black !important;
37429
37432
  opacity: 1 !important;
@@ -37432,11 +37435,12 @@ import.meta.css = [/* css */`
37432
37435
  stroke: black !important;
37433
37436
  stroke-opacity: 1 !important;
37434
37437
  }
37435
- `, "@jsenv/navi/src/graphic/svg_mask_overlay.jsx"];
37438
+ `;
37436
37439
  const SVGMaskOverlay = ({
37437
37440
  viewBox,
37438
37441
  children
37439
37442
  }) => {
37443
+ import.meta.css = [css$3, "@jsenv/navi/src/graphic/svg_mask_overlay.jsx"];
37440
37444
  if (!Array.isArray(children)) {
37441
37445
  return children;
37442
37446
  }