@jsenv/navi 0.12.18 → 0.12.19

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.
@@ -2090,7 +2090,7 @@ const openCallout = (
2090
2090
 
2091
2091
  addLevelEffect(() => {
2092
2092
  const levelColor = resolveCSSColor(
2093
- `var(--${level}-color)`,
2093
+ `var(--callout-${level}-color)`,
2094
2094
  calloutElement,
2095
2095
  );
2096
2096
  anchorElement.style.setProperty("--callout-color", levelColor);
@@ -2201,14 +2201,14 @@ const ARROW_SPACING = 8;
2201
2201
  import.meta.css = /* css */ `
2202
2202
  @layer navi {
2203
2203
  .navi_callout {
2204
- --success-color: #4caf50;
2205
- --info-color: #2196f3;
2206
- --warning-color: #ff9800;
2207
- --error-color: #f44336;
2204
+ --callout-success-color: #4caf50;
2205
+ --callout-info-color: #2196f3;
2206
+ --callout-warning-color: #ff9800;
2207
+ --callout-error-color: #f44336;
2208
2208
 
2209
- --background-color: white;
2210
- --icon-color: black;
2211
- --padding: 8px;
2209
+ --callout-background-color: white;
2210
+ --callout-icon-color: black;
2211
+ --callout-padding: 8px;
2212
2212
  }
2213
2213
  }
2214
2214
 
@@ -2224,9 +2224,9 @@ import.meta.css = /* css */ `
2224
2224
  transition: opacity 0.2s ease-in-out;
2225
2225
  overflow: visible;
2226
2226
 
2227
- --x-border-color: var(--x-level-color);
2228
- --x-background-color: var(--x-level-color);
2229
- --x-icon-color: var(--x-level-color);
2227
+ --x-callout-border-color: var(--x-callout-level-color);
2228
+ --x-callout-background-color: var(--callout-background-color);
2229
+ --x-callout-icon-color: var(--x-callout-level-color);
2230
2230
  }
2231
2231
 
2232
2232
  .navi_callout_frame {
@@ -2235,7 +2235,7 @@ import.meta.css = /* css */ `
2235
2235
  pointer-events: none;
2236
2236
  }
2237
2237
  .navi_callout .navi_callout_border {
2238
- fill: var(--x-border-color);
2238
+ fill: var(--x-callout-border-color);
2239
2239
  }
2240
2240
  .navi_callout_frame svg {
2241
2241
  position: absolute;
@@ -2243,7 +2243,7 @@ import.meta.css = /* css */ `
2243
2243
  overflow: visible;
2244
2244
  }
2245
2245
  .navi_callout_background {
2246
- fill: var(--x-background-color);
2246
+ fill: var(--x-callout-background-color);
2247
2247
  }
2248
2248
  .navi_callout_box {
2249
2249
  position: relative;
@@ -2254,7 +2254,7 @@ import.meta.css = /* css */ `
2254
2254
  position: relative;
2255
2255
  display: flex;
2256
2256
  max-width: 47vw;
2257
- padding: var(--padding);
2257
+ padding: var(--callout-padding);
2258
2258
  flex-direction: row;
2259
2259
  gap: 10px;
2260
2260
  }
@@ -2266,10 +2266,10 @@ import.meta.css = /* css */ `
2266
2266
  align-items: center;
2267
2267
  align-self: flex-start;
2268
2268
  justify-content: center;
2269
- background-color: var(--x-icon-color);
2269
+ background-color: var(--x-callout-icon-color);
2270
2270
  border-radius: 2px;
2271
2271
  }
2272
- .navi_callout_icon_svg {
2272
+ .navi_callout_icon svg {
2273
2273
  width: 16px;
2274
2274
  height: 12px;
2275
2275
  color: white;
@@ -2314,16 +2314,16 @@ import.meta.css = /* css */ `
2314
2314
  }
2315
2315
 
2316
2316
  .navi_callout[data-level="success"] {
2317
- --x-level-color: var(--success-color);
2317
+ --x-callout-level-color: var(--callout-success-color);
2318
2318
  }
2319
2319
  .navi_callout[data-level="info"] {
2320
- --x-level-color: var(--info-color);
2320
+ --x-callout-level-color: var(--callout-info-color);
2321
2321
  }
2322
2322
  .navi_callout[data-level="warning"] {
2323
- --x-level-color: var(--warning-color);
2323
+ --x-callout-level-color: var(--callout-warning-color);
2324
2324
  }
2325
2325
  .navi_callout[data-level="error"] {
2326
- --x-level-color: var(--error-color);
2326
+ --x-callout-level-color: var(--callout-error-color);
2327
2327
  }
2328
2328
  `;
2329
2329
 
@@ -2334,11 +2334,7 @@ const calloutTemplate = /* html */ `
2334
2334
  <div class="navi_callout_frame"></div>
2335
2335
  <div class="navi_callout_body">
2336
2336
  <div class="navi_callout_icon">
2337
- <svg
2338
- class="navi_callout_icon_svg"
2339
- viewBox="0 0 125 300"
2340
- xmlns="http://www.w3.org/2000/svg"
2341
- >
2337
+ <svg viewBox="0 0 125 300" xmlns="http://www.w3.org/2000/svg">
2342
2338
  <path
2343
2339
  fill="currentColor"
2344
2340
  d="m25,1 8,196h59l8-196zm37,224a37,37 0 1,0 2,0z"
@@ -10071,6 +10067,36 @@ const renderActionableComponent = (props, {
10071
10067
  });
10072
10068
  };
10073
10069
 
10070
+ const LinkBlankTargetSvg = () => {
10071
+ return jsx("svg", {
10072
+ viewBox: "0 0 24 24",
10073
+ xmlns: "http://www.w3.org/2000/svg",
10074
+ children: jsx("path", {
10075
+ d: "M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11",
10076
+ stroke: "currentColor",
10077
+ fill: "none",
10078
+ "stroke-width": "2",
10079
+ "stroke-linecap": "round",
10080
+ "stroke-linejoin": "round"
10081
+ })
10082
+ });
10083
+ };
10084
+ const LinkAnchorSvg = () => {
10085
+ return jsx("svg", {
10086
+ viewBox: "0 0 24 24",
10087
+ xmlns: "http://www.w3.org/2000/svg",
10088
+ children: jsxs("g", {
10089
+ children: [jsx("path", {
10090
+ d: "M13.2218 3.32234C15.3697 1.17445 18.8521 1.17445 21 3.32234C23.1479 5.47022 23.1479 8.95263 21 11.1005L17.4645 14.636C15.3166 16.7839 11.8342 16.7839 9.6863 14.636C9.48752 14.4373 9.30713 14.2271 9.14514 14.0075C8.90318 13.6796 8.97098 13.2301 9.25914 12.9419C9.73221 12.4688 10.5662 12.6561 11.0245 13.1435C11.0494 13.1699 11.0747 13.196 11.1005 13.2218C12.4673 14.5887 14.6834 14.5887 16.0503 13.2218L19.5858 9.6863C20.9526 8.31947 20.9526 6.10339 19.5858 4.73655C18.219 3.36972 16.0029 3.36972 14.636 4.73655L13.5754 5.79721C13.1849 6.18774 12.5517 6.18774 12.1612 5.79721C11.7706 5.40669 11.7706 4.77352 12.1612 4.383L13.2218 3.32234Z",
10091
+ fill: "currentColor"
10092
+ }), jsx("path", {
10093
+ d: "M6.85787 9.6863C8.90184 7.64233 12.2261 7.60094 14.3494 9.42268C14.7319 9.75083 14.7008 10.3287 14.3444 10.685C13.9253 11.1041 13.2317 11.0404 12.7416 10.707C11.398 9.79292 9.48593 9.88667 8.27209 11.1005L4.73655 14.636C3.36972 16.0029 3.36972 18.219 4.73655 19.5858C6.10339 20.9526 8.31947 20.9526 9.6863 19.5858L10.747 18.5251C11.1375 18.1346 11.7706 18.1346 12.1612 18.5251C12.5517 18.9157 12.5517 19.5488 12.1612 19.9394L11.1005 21C8.95263 23.1479 5.47022 23.1479 3.32234 21C1.17445 18.8521 1.17445 15.3697 3.32234 13.2218L6.85787 9.6863Z",
10094
+ fill: "currentColor"
10095
+ })]
10096
+ })
10097
+ });
10098
+ };
10099
+
10074
10100
  /**
10075
10101
  * Merges a component's base className with className received from props.
10076
10102
  *
@@ -10124,7 +10150,7 @@ const withPropsClassName = (baseClassName, classNameFromProps) => {
10124
10150
  * };
10125
10151
  *
10126
10152
  * // Usage:
10127
- * <MyButton margin={10} expandX alignX="center" color="white">Click me</MyButton>
10153
+ * <MyButton margin={10} expandX selfAlignX="center" color="white">Click me</MyButton>
10128
10154
  * <MyButton paddingX={20} bold style={{ border: '1px solid red' }}>Bold button</MyButton>
10129
10155
  * ```
10130
10156
  *
@@ -10147,7 +10173,7 @@ const withPropsClassName = (baseClassName, classNameFromProps) => {
10147
10173
  * @param {string|object} [config.base] - Base styles to apply first
10148
10174
  * @param {boolean} [config.layout] - Enable all layout props (shorthand for spacing, align, expansion)
10149
10175
  * @param {boolean} [config.spacing] - Enable margin/padding props
10150
- * @param {boolean} [config.align] - Enable alignment props (alignX, alignY)
10176
+ * @param {boolean} [config.align] - Enable alignment props (selfAlignX, selfAlignY)
10151
10177
  * @param {boolean} [config.expansion] - Enable expansion props (expandX, expandY)
10152
10178
  * @param {boolean} [config.typo] - Enable typography props (color, bold, italic, etc.)
10153
10179
  * @param {...object} remainingConfig - Additional configuration objects for generating separate style objects
@@ -10184,17 +10210,21 @@ const applyToCssPropWhenTruthy = (
10184
10210
  cssPropValue,
10185
10211
  cssPropValueOtherwise,
10186
10212
  ) => {
10187
- return (value) => {
10188
- if (!value) {
10189
- if (cssPropValueOtherwise === undefined) {
10190
- return null;
10191
- }
10192
- if (value === undefined) {
10193
- return null;
10194
- }
10195
- return { [cssProp]: cssPropValueOtherwise };
10213
+ return (value, styleContext) => {
10214
+ if (value) {
10215
+ return { [cssProp]: cssPropValue };
10216
+ }
10217
+ if (cssPropValueOtherwise === undefined) {
10218
+ return null;
10196
10219
  }
10197
- return { [cssProp]: cssPropValue };
10220
+ if (value === undefined) {
10221
+ return null;
10222
+ }
10223
+ if (styleContext.styles[cssProp] !== undefined) {
10224
+ // keep any value previously set
10225
+ return null;
10226
+ }
10227
+ return { [cssProp]: cssPropValueOtherwise };
10198
10228
  };
10199
10229
  };
10200
10230
  const applyOnTwoProps = (propA, propB) => {
@@ -10309,12 +10339,12 @@ const DIMENSION_PROPS = {
10309
10339
  },
10310
10340
  };
10311
10341
  const POSITION_PROPS = {
10312
- // For row, alignX uses auto margins for positioning
10342
+ // For row, selfAlignX uses auto margins for positioning
10313
10343
  // NOTE: Auto margins only work effectively for positioning individual items.
10314
- // When multiple adjacent items have the same auto margin alignment (e.g., alignX="end"),
10344
+ // When multiple adjacent items have the same auto margin alignment (e.g., selfAlignX="end"),
10315
10345
  // only the first item will be positioned as expected because subsequent items
10316
10346
  // will be positioned relative to the previous item's margins, not the container edge.
10317
- alignX: (value, { parentLayout }) => {
10347
+ selfAlignX: (value, { parentLayout }) => {
10318
10348
  const insideRowLayout =
10319
10349
  parentLayout === "row" || parentLayout === "inline-row";
10320
10350
 
@@ -10341,7 +10371,7 @@ const POSITION_PROPS = {
10341
10371
  }
10342
10372
  return undefined;
10343
10373
  },
10344
- alignY: (value, { parentLayout }) => {
10374
+ selfAlignY: (value, { parentLayout }) => {
10345
10375
  const inlineColumnLayout =
10346
10376
  parentLayout === "column" || parentLayout === "inline-column";
10347
10377
 
@@ -10424,6 +10454,7 @@ const TYPO_PROPS = {
10424
10454
  noWrap: applyToCssPropWhenTruthy("whiteSpace", "nowrap", "normal"),
10425
10455
  pre: applyToCssPropWhenTruthy("whiteSpace", "pre", "normal"),
10426
10456
  preWrap: applyToCssPropWhenTruthy("whiteSpace", "pre-wrap", "normal"),
10457
+ preLine: applyToCssPropWhenTruthy("whiteSpace", "pre-line", "normal"),
10427
10458
  };
10428
10459
  const VISUAL_PROPS = {
10429
10460
  outline: PASS_THROUGH,
@@ -10450,8 +10481,8 @@ const VISUAL_PROPS = {
10450
10481
  cursor: PASS_THROUGH,
10451
10482
  };
10452
10483
  const CONTENT_PROPS = {
10453
- contentAlign: applyOnTwoProps("contentAlignX", "contentAlignY"),
10454
- contentAlignX: (value, { layout }) => {
10484
+ align: applyOnTwoProps("alignX", "alignY"),
10485
+ alignX: (value, { layout }) => {
10455
10486
  if (layout === "row" || layout === "inline-row") {
10456
10487
  if (value === "stretch") {
10457
10488
  return undefined; // this is the default
@@ -10466,7 +10497,7 @@ const CONTENT_PROPS = {
10466
10497
  }
10467
10498
  return { textAlign: value };
10468
10499
  },
10469
- contentAlignY: (value, { layout }) => {
10500
+ alignY: (value, { layout }) => {
10470
10501
  if (layout === "row" || layout === "inline-row") {
10471
10502
  if (value === "start") {
10472
10503
  return undefined;
@@ -10483,7 +10514,7 @@ const CONTENT_PROPS = {
10483
10514
  }
10484
10515
  return { verticalAlign: value };
10485
10516
  },
10486
- contentSpacing: (value, { layout }) => {
10517
+ spacing: (value, { layout }) => {
10487
10518
  if (
10488
10519
  layout === "row" ||
10489
10520
  layout === "column"
@@ -10523,8 +10554,8 @@ const COPIED_ON_VISUAL_CHILD_PROP_SET = new Set([
10523
10554
  "shrink",
10524
10555
  "expandX",
10525
10556
  "expandY",
10526
- "contentAlignX",
10527
- "contentAlignY",
10557
+ "alignX",
10558
+ "alignY",
10528
10559
  ]);
10529
10560
  const HANDLED_BY_VISUAL_CHILD_PROP_SET = new Set([
10530
10561
  ...INNER_SPACING_PROP_NAME_SET,
@@ -11190,7 +11221,7 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
11190
11221
  `;
11191
11222
  const PSEUDO_CLASSES_DEFAULT = [];
11192
11223
  const PSEUDO_ELEMENTS_DEFAULT = [];
11193
- const MANAGED_BY_CSS_VARS_DEFAULT = {};
11224
+ const STYLE_CSS_VARS_DEFAULT = {};
11194
11225
  const Box = props => {
11195
11226
  const {
11196
11227
  as = "div",
@@ -11199,7 +11230,7 @@ const Box = props => {
11199
11230
  baseStyle,
11200
11231
  // style management
11201
11232
  style,
11202
- managedByCSSVars = MANAGED_BY_CSS_VARS_DEFAULT,
11233
+ styleCSSVars = STYLE_CSS_VARS_DEFAULT,
11203
11234
  basePseudoState,
11204
11235
  pseudoState,
11205
11236
  // for demo purposes it's possible to control pseudo state from props
@@ -11230,7 +11261,7 @@ const Box = props => {
11230
11261
  column
11231
11262
  } = rest;
11232
11263
  if (box === "auto") {
11233
- box = Boolean(rest.contentAlignX || rest.contentAlignY);
11264
+ box = Boolean(rest.alignX || rest.alignY);
11234
11265
  }
11235
11266
  if (box) {
11236
11267
  if (inline === undefined) {
@@ -11265,7 +11296,7 @@ const Box = props => {
11265
11296
  // Layout and alignment props
11266
11297
  parentLayout, layout,
11267
11298
  // Style context dependencies
11268
- managedByCSSVars, pseudoClasses, pseudoElements,
11299
+ styleCSSVars, pseudoClasses, pseudoElements,
11269
11300
  // Selectors
11270
11301
  visualSelector, pseudoStateSelector];
11271
11302
  let innerPseudoState;
@@ -11305,20 +11336,22 @@ const Box = props => {
11305
11336
  } else {
11306
11337
  innerPseudoState = PSEUDO_STATE_DEFAULT;
11307
11338
  }
11339
+ const boxStyles = {};
11308
11340
  const styleContext = {
11309
11341
  parentLayout,
11310
11342
  layout,
11311
- managedByCSSVars,
11343
+ styleCSSVars,
11312
11344
  pseudoState: innerPseudoState,
11313
11345
  pseudoClasses,
11314
- pseudoElements
11346
+ pseudoElements,
11347
+ remainingProps: rest,
11348
+ styles: boxStyles
11315
11349
  };
11316
- const boxStyles = {};
11317
11350
  let boxPseudoNamedStyles = PSEUDO_NAMED_STYLES_DEFAULT;
11318
11351
  const shouldForwardAllToChild = visualSelector && pseudoStateSelector;
11319
11352
  const addStyle = (value, name, stylesTarget, context) => {
11320
11353
  styleDeps.push(value); // impact box style -> add to deps
11321
- const cssVar = managedByCSSVars[name];
11354
+ const cssVar = styleCSSVars[name];
11322
11355
  const mergedValue = prepareStyleValue(stylesTarget[name], value, name, context);
11323
11356
  if (cssVar) {
11324
11357
  stylesTarget[cssVar] = mergedValue;
@@ -11332,7 +11365,7 @@ const Box = props => {
11332
11365
  addStyle(value, name, stylesTarget, context);
11333
11366
  return false;
11334
11367
  }
11335
- const cssVar = managedByCSSVars[name];
11368
+ const cssVar = styleCSSVars[name];
11336
11369
  if (cssVar) {
11337
11370
  // css var wins over visual child handling
11338
11371
  addStyle(value, name, stylesTarget, context);
@@ -11423,9 +11456,9 @@ const Box = props => {
11423
11456
  for (const key of pseudoStyleKeys) {
11424
11457
  const pseudoStyleContext = {
11425
11458
  ...styleContext,
11426
- managedByCSSVars: {
11427
- ...managedByCSSVars,
11428
- ...managedByCSSVars[key]
11459
+ styleCSSVars: {
11460
+ ...styleCSSVars,
11461
+ ...styleCSSVars[key]
11429
11462
  },
11430
11463
  pseudoName: key
11431
11464
  };
@@ -13613,8 +13646,8 @@ const INSERTED_SPACE = jsx("span", {
13613
13646
  "data-navi-space": "",
13614
13647
  children: " "
13615
13648
  });
13616
- const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13617
- if (contentSpacing === "pre") {
13649
+ const applySpacingOnTextChildren = (children, spacing) => {
13650
+ if (spacing === "pre") {
13618
13651
  return children;
13619
13652
  }
13620
13653
  if (!children) {
@@ -13641,7 +13674,7 @@ const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13641
13674
  }
13642
13675
  return false;
13643
13676
  };
13644
- const separator = contentSpacing === undefined || contentSpacing === " " ? INSERTED_SPACE : contentSpacing;
13677
+ const separator = spacing === undefined || spacing === " " ? INSERTED_SPACE : spacing;
13645
13678
  const childrenWithGap = [];
13646
13679
  let i = 0;
13647
13680
  while (true) {
@@ -13652,7 +13685,7 @@ const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13652
13685
  break;
13653
13686
  }
13654
13687
 
13655
- // Check if we should skip adding contentSpacing
13688
+ // Check if we should skip adding spacing
13656
13689
  const currentChild = childArray[i - 1];
13657
13690
  const nextChild = childArray[i];
13658
13691
  const shouldSkipSpacing = endsWithWhitespace(currentChild) || startsWithWhitespace(nextChild);
@@ -13684,19 +13717,22 @@ const Text = props => {
13684
13717
  };
13685
13718
  const TextOverflow = ({
13686
13719
  noWrap,
13687
- pre = !noWrap,
13688
13720
  children,
13689
13721
  ...rest
13690
13722
  }) => {
13691
13723
  const [OverflowPinnedElement, setOverflowPinnedElement] = useState(null);
13692
13724
  return jsx(Text, {
13725
+ column: true,
13693
13726
  as: "div",
13694
- pre: pre,
13695
13727
  nowWrap: noWrap,
13728
+ pre: !noWrap
13729
+ // For paragraph we prefer to keep lines and only hide unbreakable long sections
13730
+ ,
13731
+ preLine: rest.as === "p",
13696
13732
  ...rest,
13697
13733
  className: "navi_text_overflow",
13698
13734
  expandX: true,
13699
- contentSpacing: "pre",
13735
+ spacing: "pre",
13700
13736
  children: jsxs("span", {
13701
13737
  className: "navi_text_overflow_wrapper",
13702
13738
  children: [jsx(OverflowPinnedElementContext.Provider, {
@@ -13729,7 +13765,7 @@ const TextOverflowPinned = ({
13729
13765
  return text;
13730
13766
  };
13731
13767
  const TextBasic = ({
13732
- contentSpacing = " ",
13768
+ spacing = " ",
13733
13769
  selectRange,
13734
13770
  children,
13735
13771
  ...rest
@@ -13742,7 +13778,7 @@ const TextBasic = ({
13742
13778
  as: "span",
13743
13779
  ...rest,
13744
13780
  baseClassName: "navi_text",
13745
- children: applyContentSpacingOnTextChildren(children, contentSpacing)
13781
+ children: applySpacingOnTextChildren(children, spacing)
13746
13782
  });
13747
13783
  };
13748
13784
 
@@ -13789,6 +13825,15 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13789
13825
  width: auto;
13790
13826
  height: 100%;
13791
13827
  }
13828
+
13829
+ .navi_icon[data-icon-char] svg,
13830
+ .navi_icon[data-icon-char] img {
13831
+ width: 100%;
13832
+ height: 100%;
13833
+ }
13834
+ .navi_icon[data-icon-char] svg {
13835
+ overflow: visible;
13836
+ }
13792
13837
  `;
13793
13838
  const Icon = ({
13794
13839
  href,
@@ -13840,7 +13885,7 @@ const Icon = ({
13840
13885
  ...ariaProps,
13841
13886
  box: box,
13842
13887
  className: withPropsClassName("navi_icon", className),
13843
- contentSpacing: "pre",
13888
+ spacing: "pre",
13844
13889
  "data-icon-char": "",
13845
13890
  "data-width": width,
13846
13891
  "data-height": height,
@@ -13851,7 +13896,7 @@ const Icon = ({
13851
13896
  }), jsx("span", {
13852
13897
  className: "navi_icon_foreground",
13853
13898
  children: jsx(Text, {
13854
- contentSpacing: "pre",
13899
+ spacing: "pre",
13855
13900
  children: innerChildren
13856
13901
  })
13857
13902
  })]
@@ -13934,7 +13979,7 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13934
13979
  opacity: 0.5;
13935
13980
  }
13936
13981
  `;
13937
- const LinkManagedByCSSVars = {
13982
+ const LinkStyleCSSVars = {
13938
13983
  "outlineColor": "--link-outline-color",
13939
13984
  "borderRadius": "--link-border-radius",
13940
13985
  "color": "--link-color",
@@ -13999,7 +14044,7 @@ const LinkPlain = props => {
13999
14044
  blankTargetIcon,
14000
14045
  anchorIcon,
14001
14046
  icon,
14002
- contentSpacing,
14047
+ spacing,
14003
14048
  children,
14004
14049
  ...rest
14005
14050
  } = props;
@@ -14035,9 +14080,9 @@ const LinkPlain = props => {
14035
14080
  const innerBlankTargetIcon = blankTargetIcon === undefined ? innerTarget === "_blank" : blankTargetIcon;
14036
14081
  const innerAnchorIcon = anchorIcon === undefined ? targetIsAnchor : anchorIcon;
14037
14082
  if (innerBlankTargetIcon) {
14038
- innerIcon = innerBlankTargetIcon === true ? jsx(BlankTargetLinkSvg, {}) : innerBlankTargetIcon;
14083
+ innerIcon = innerBlankTargetIcon === true ? jsx(LinkBlankTargetSvg, {}) : innerBlankTargetIcon;
14039
14084
  } else if (innerAnchorIcon) {
14040
- innerIcon = innerAnchorIcon === true ? jsx(AnchorLinkSvg, {}) : anchorIcon;
14085
+ innerIcon = innerAnchorIcon === true ? jsx(LinkAnchorSvg, {}) : anchorIcon;
14041
14086
  }
14042
14087
  }
14043
14088
  } else {
@@ -14053,11 +14098,11 @@ const LinkPlain = props => {
14053
14098
  target: innerTarget === "_self" ? undefined : target,
14054
14099
  "aria-busy": loading,
14055
14100
  inert: disabled,
14056
- contentSpacing: "pre"
14101
+ spacing: "pre"
14057
14102
  // Visual
14058
14103
  ,
14059
14104
  baseClassName: "navi_link",
14060
- managedByCSSVars: LinkManagedByCSSVars,
14105
+ styleCSSVars: LinkStyleCSSVars,
14061
14106
  pseudoClasses: LinkPseudoClasses,
14062
14107
  pseudoElements: LinkPseudoElements,
14063
14108
  basePseudoState: {
@@ -14093,39 +14138,12 @@ const LinkPlain = props => {
14093
14138
  children: [jsx(LoaderBackground, {
14094
14139
  loading: loading,
14095
14140
  color: "light-dark(#355fcc, #3b82f6)"
14096
- }), applyContentSpacingOnTextChildren(children, contentSpacing), innerIcon && jsx(Icon, {
14141
+ }), applySpacingOnTextChildren(children, spacing), innerIcon && jsx(Icon, {
14097
14142
  marginLeft: "xxs",
14098
14143
  children: innerIcon
14099
14144
  })]
14100
14145
  });
14101
14146
  };
14102
- const BlankTargetLinkSvg = () => {
14103
- return jsx("svg", {
14104
- viewBox: "0 0 24 24",
14105
- xmlns: "http://www.w3.org/2000/svg",
14106
- children: jsx("path", {
14107
- d: "M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11",
14108
- stroke: "currentColor",
14109
- fill: "none",
14110
- "stroke-width": "2",
14111
- "stroke-linecap": "round",
14112
- "stroke-linejoin": "round"
14113
- })
14114
- });
14115
- };
14116
- const AnchorLinkSvg = () => {
14117
- return jsxs("svg", {
14118
- viewBox: "0 0 24 24",
14119
- xmlns: "http://www.w3.org/2000/svg",
14120
- children: [jsx("path", {
14121
- d: "M13.2218 3.32234C15.3697 1.17445 18.8521 1.17445 21 3.32234C23.1479 5.47022 23.1479 8.95263 21 11.1005L17.4645 14.636C15.3166 16.7839 11.8342 16.7839 9.6863 14.636C9.48752 14.4373 9.30713 14.2271 9.14514 14.0075C8.90318 13.6796 8.97098 13.2301 9.25914 12.9419C9.73221 12.4688 10.5662 12.6561 11.0245 13.1435C11.0494 13.1699 11.0747 13.196 11.1005 13.2218C12.4673 14.5887 14.6834 14.5887 16.0503 13.2218L19.5858 9.6863C20.9526 8.31947 20.9526 6.10339 19.5858 4.73655C18.219 3.36972 16.0029 3.36972 14.636 4.73655L13.5754 5.79721C13.1849 6.18774 12.5517 6.18774 12.1612 5.79721C11.7706 5.40669 11.7706 4.77352 12.1612 4.383L13.2218 3.32234Z",
14122
- fill: "currentColor"
14123
- }), jsx("path", {
14124
- d: "M6.85787 9.6863C8.90184 7.64233 12.2261 7.60094 14.3494 9.42268C14.7319 9.75083 14.7008 10.3287 14.3444 10.685C13.9253 11.1041 13.2317 11.0404 12.7416 10.707C11.398 9.79292 9.48593 9.88667 8.27209 11.1005L4.73655 14.636C3.36972 16.0029 3.36972 18.219 4.73655 19.5858C6.10339 20.9526 8.31947 20.9526 9.6863 19.5858L10.747 18.5251C11.1375 18.1346 11.7706 18.1346 12.1612 18.5251C12.5517 18.9157 12.5517 19.5488 12.1612 19.9394L11.1005 21C8.95263 23.1479 5.47022 23.1479 3.32234 21C1.17445 18.8521 1.17445 15.3697 3.32234 13.2218L6.85787 9.6863Z",
14125
- fill: "currentColor"
14126
- })]
14127
- });
14128
- };
14129
14147
  const PhoneSvg = () => {
14130
14148
  return jsx("svg", {
14131
14149
  viewBox: "0 0 24 24",
@@ -15480,7 +15498,7 @@ const InputCheckbox = props => {
15480
15498
  })
15481
15499
  });
15482
15500
  };
15483
- const CheckboxManagedByCSSVars = {
15501
+ const CheckboxStyleCSSVars = {
15484
15502
  "outlineWidth": "--outline-width",
15485
15503
  "borderWidth": "--border-width",
15486
15504
  "borderRadius": "--border-radius",
@@ -15598,7 +15616,7 @@ const InputCheckboxBasic = props => {
15598
15616
  ref: ref,
15599
15617
  baseClassName: "navi_checkbox",
15600
15618
  pseudoStateSelector: ".navi_native_field",
15601
- managedByCSSVars: CheckboxManagedByCSSVars,
15619
+ styleCSSVars: CheckboxStyleCSSVars,
15602
15620
  pseudoClasses: CheckboxPseudoClasses,
15603
15621
  pseudoElements: CheckboxPseudoElements,
15604
15622
  basePseudoState: {
@@ -15887,7 +15905,7 @@ const InputRadio = props => {
15887
15905
  })
15888
15906
  });
15889
15907
  };
15890
- const RadioManagedByCSSVars = {
15908
+ const RadioStyleCSSVars = {
15891
15909
  "outlineWidth": "--outline-width",
15892
15910
  "borderWidth": "--border-width",
15893
15911
  "borderRadius": "--border-radius",
@@ -16031,7 +16049,7 @@ const InputRadioBasic = props => {
16031
16049
  ref: ref,
16032
16050
  baseClassName: "navi_radio",
16033
16051
  pseudoStateSelector: ".navi_native_field",
16034
- managedByCSSVars: RadioManagedByCSSVars,
16052
+ styleCSSVars: RadioStyleCSSVars,
16035
16053
  pseudoClasses: RadioPseudoClasses,
16036
16054
  pseudoElements: RadioPseudoElements,
16037
16055
  basePseudoState: {
@@ -16216,7 +16234,7 @@ const InputTextual = props => {
16216
16234
  })
16217
16235
  });
16218
16236
  };
16219
- const InputManagedByCSSVars = {
16237
+ const InputStyleCSSVars = {
16220
16238
  "outlineWidth": "--outline-width",
16221
16239
  "borderWidth": "--border-width",
16222
16240
  "borderRadius": "--border-radius",
@@ -16318,7 +16336,7 @@ const InputTextualBasic = props => {
16318
16336
  as: "span",
16319
16337
  box: true,
16320
16338
  baseClassName: "navi_input",
16321
- managedByCSSVars: InputManagedByCSSVars,
16339
+ styleCSSVars: InputStyleCSSVars,
16322
16340
  pseudoStateSelector: ".navi_native_input",
16323
16341
  visualSelector: ".navi_native_input",
16324
16342
  basePseudoState: {
@@ -16813,6 +16831,11 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
16813
16831
  --x-button-background-color: var(--button-background-color-hover);
16814
16832
  --x-button-color: var(--button-color-hover);
16815
16833
  }
16834
+ .navi_button[data-nohover] {
16835
+ --x-button-border-color: var(--button-border-color);
16836
+ --x-button-background-color: var(--button-background-color);
16837
+ --x-button-color: var(--button-color);
16838
+ }
16816
16839
  /* Active */
16817
16840
  .navi_button[data-active] {
16818
16841
  --x-button-outline-color: var(--button-border-color-active);
@@ -16872,6 +16895,9 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
16872
16895
  .navi_button[data-discrete][data-hover] {
16873
16896
  --x-button-border-color: var(--button-border-color-hover);
16874
16897
  }
16898
+ .navi_button[data-discrete][data-nohover] {
16899
+ --x-button-border-color: transparent;
16900
+ }
16875
16901
  .navi_button[data-discrete][data-readonly] {
16876
16902
  --x-button-border-color: transparent;
16877
16903
  }
@@ -16891,7 +16917,7 @@ const Button = props => {
16891
16917
  WithActionInsideForm: ButtonWithActionInsideForm
16892
16918
  });
16893
16919
  };
16894
- const ButtonManagedByCSSVars = {
16920
+ const ButtonStyleCSSVars = {
16895
16921
  "outlineWidth": "--button-outline-width",
16896
16922
  "borderWidth": "--button-border-width",
16897
16923
  "borderRadius": "--button-border-radius",
@@ -16968,7 +16994,7 @@ const ButtonBasic = props => {
16968
16994
  // style management
16969
16995
  ,
16970
16996
  baseClassName: "navi_button",
16971
- managedByCSSVars: ButtonManagedByCSSVars,
16997
+ styleCSSVars: ButtonStyleCSSVars,
16972
16998
  pseudoClasses: ButtonPseudoClasses,
16973
16999
  pseudoElements: ButtonPseudoElements,
16974
17000
  basePseudoState: {
@@ -20967,8 +20993,8 @@ const TableCell = forwardRef((props, ref) => {
20967
20993
  style,
20968
20994
  cursor,
20969
20995
  bold,
20970
- alignX = column.alignX,
20971
- alignY = column.alignY,
20996
+ selfAlignX = column.selfAlignX,
20997
+ selfAlignY = column.selfAlignY,
20972
20998
  backgroundColor = column.backgroundColor || row.backgroundColor,
20973
20999
  children
20974
21000
  } = props;
@@ -21082,8 +21108,8 @@ const TableCell = forwardRef((props, ref) => {
21082
21108
  if (rowHeight !== undefined) {
21083
21109
  innerStyle.maxHeight = `${rowHeight}px`;
21084
21110
  }
21085
- const innerAlignX = alignX || isFirstRow ? "center" : "start";
21086
- const innerAlignY = alignY || isFirstColumn ? "center" : "start";
21111
+ const innerAlignX = selfAlignX || isFirstRow ? "center" : "start";
21112
+ const innerAlignY = selfAlignY || isFirstColumn ? "center" : "start";
21087
21113
  const innerBold = bold || containSelectedCell;
21088
21114
  if (innerBold) {
21089
21115
  innerStyle.fontWeight = "bold";
@@ -21195,7 +21221,7 @@ const RowNumberTableCell = props => {
21195
21221
  const isTopLeftCell = columnIndex === 0 && rowIndex === 0;
21196
21222
  return jsx(TableCell, {
21197
21223
  canSelectAll: isTopLeftCell,
21198
- alignX: "left",
21224
+ selfAlignX: "left",
21199
21225
  ...props,
21200
21226
  children: isTopLeftCell ? "" : rowIndex
21201
21227
  });
@@ -21546,26 +21572,43 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
21546
21572
  }
21547
21573
  }
21548
21574
  .navi_badge_count {
21575
+ --spacing: 0.3em;
21576
+ --size: 1em;
21577
+ --x-outer-size: calc(var(--size) + var(--spacing));
21578
+ --x-offset-top: calc(0.5 * (var(--x-outer-size) - 1em));
21579
+
21549
21580
  display: inline-block;
21550
21581
  box-sizing: border-box;
21551
- min-width: 1.5em;
21552
- height: 1.5em;
21553
- max-height: 1.5em;
21554
- padding-right: var(
21555
- --padding-right,
21556
- var(--padding-x, var(--padding, 0.4em))
21557
- );
21558
- padding-left: var(--padding-left, var(--padding-x, var(--padding, 0.4em)));
21582
+ min-width: var(--x-outer-size);
21583
+ height: var(--x-outer-size);
21584
+ max-height: var(--x-outer-size);
21585
+ margin-top: calc(-1 * var(--x-offset-top));
21586
+ padding-right: var(--spacing);
21587
+ padding-left: var(--spacing);
21559
21588
  color: var(--color, var(--color-contrasting));
21560
21589
  text-align: center;
21561
- line-height: 1.5em;
21562
- vertical-align: middle;
21590
+ line-height: var(--x-outer-size);
21591
+ /* vertical-align: middle; */
21563
21592
  background: var(--background);
21564
21593
  background-color: var(--background-color, var(--background));
21565
21594
  border-radius: var(--border-radius, 1em);
21566
21595
  }
21596
+ .navi_badge_count[data-single-digit] {
21597
+ --spacing: 0em;
21598
+ --size: 1.3em;
21599
+ }
21600
+ .navi_badge_count[data-two-digits] {
21601
+ --spacing: 0em;
21602
+ --size: 1.6em;
21603
+ }
21604
+
21605
+ .navi_count_badge_overflow {
21606
+ position: relative;
21607
+ top: -0.4em;
21608
+ font-size: 0.8em;
21609
+ }
21567
21610
  `;
21568
- const BadgeManagedByCSSVars = {
21611
+ const BadgeStyleCSSVars = {
21569
21612
  borderWidth: "--border-width",
21570
21613
  borderRadius: "--border-radius",
21571
21614
  paddingRight: "--padding-right",
@@ -21575,43 +21618,86 @@ const BadgeManagedByCSSVars = {
21575
21618
  borderColor: "--border-color",
21576
21619
  color: "--color"
21577
21620
  };
21621
+ const BadgeCountOverflow = () => jsx("span", {
21622
+ className: "navi_count_badge_overflow",
21623
+ children: "+"
21624
+ });
21578
21625
  const BadgeCount = ({
21579
21626
  children,
21580
- bold = true,
21581
21627
  max,
21628
+ maxElement = jsx(BadgeCountOverflow, {}),
21582
21629
  ...props
21583
21630
  }) => {
21584
21631
  const defaultRef = useRef();
21585
21632
  const ref = props.ref || defaultRef;
21586
-
21633
+ const numericValue = typeof children === "string" ? parseInt(children, 10) : children;
21587
21634
  // Calculer la valeur à afficher en fonction du paramètre max
21588
21635
  const getDisplayValue = () => {
21589
21636
  if (max === undefined) {
21590
21637
  return children;
21591
21638
  }
21592
- const numericValue = typeof children === "string" ? parseInt(children, 10) : children;
21593
21639
  const numericMax = typeof max === "string" ? parseInt(max, 10) : max;
21594
21640
  if (isNaN(numericValue) || isNaN(numericMax)) {
21595
21641
  return children;
21596
21642
  }
21597
21643
  if (numericValue > numericMax) {
21598
- return `${numericMax}+`;
21644
+ return jsxs(Fragment, {
21645
+ children: [children, maxElement]
21646
+ });
21599
21647
  }
21600
21648
  return children;
21601
21649
  };
21602
21650
  const displayValue = getDisplayValue();
21603
21651
  useContrastingColor(ref);
21652
+ const digitCount = String(numericValue).length;
21604
21653
  return jsx(Text, {
21605
- ...props,
21606
21654
  ref: ref,
21607
21655
  className: "navi_badge_count",
21608
- bold: bold,
21609
- managedByCSSVars: BadgeManagedByCSSVars,
21610
- contentSpacing: "pre",
21656
+ bold: true,
21657
+ "data-single-digit": digitCount === 1 ? "" : undefined,
21658
+ "data-two-digits": digitCount === 2 ? "" : undefined,
21659
+ ...props,
21660
+ styleCSSVars: BadgeStyleCSSVars,
21661
+ spacing: "pre",
21611
21662
  children: displayValue
21612
21663
  });
21613
21664
  };
21614
21665
 
21666
+ installImportMetaCss(import.meta);import.meta.css = /* css */`
21667
+ @layer navi {
21668
+ .navi_caption {
21669
+ --color: #6b7280;
21670
+ }
21671
+
21672
+ @media (prefers-color-scheme: dark) {
21673
+ .navi_caption {
21674
+ --color: rgb(102, 102, 102);
21675
+ }
21676
+ }
21677
+ }
21678
+
21679
+ .navi_caption {
21680
+ color: var(--color);
21681
+ }
21682
+ `;
21683
+ const CaptionStyleCSSVars = {
21684
+ color: "--color"
21685
+ };
21686
+ const Caption = ({
21687
+ className,
21688
+ ...rest
21689
+ }) => {
21690
+ return jsx(Text, {
21691
+ as: "p",
21692
+ size: "xs",
21693
+ marginTop: "sm",
21694
+ marginBottom: "sm",
21695
+ className: withPropsClassName("navi_caption", className),
21696
+ ...rest,
21697
+ styleCSSVars: CaptionStyleCSSVars
21698
+ });
21699
+ };
21700
+
21615
21701
  const Code = props => {
21616
21702
  return jsx(Text, {
21617
21703
  ...props,
@@ -21619,6 +21705,57 @@ const Code = props => {
21619
21705
  });
21620
21706
  };
21621
21707
 
21708
+ const CloseSvg = () => {
21709
+ return jsx("svg", {
21710
+ viewBox: "0 0 24 24",
21711
+ fill: "none",
21712
+ xmlns: "http://www.w3.org/2000/svg",
21713
+ children: jsx("path", {
21714
+ "fill-rule": "evenodd",
21715
+ "clip-rule": "evenodd",
21716
+ d: "M5.29289 5.29289C5.68342 4.90237 6.31658 4.90237 6.70711 5.29289L12 10.5858L17.2929 5.29289C17.6834 4.90237 18.3166 4.90237 18.7071 5.29289C19.0976 5.68342 19.0976 6.31658 18.7071 6.70711L13.4142 12L18.7071 17.2929C19.0976 17.6834 19.0976 18.3166 18.7071 18.7071C18.3166 19.0976 17.6834 19.0976 17.2929 18.7071L12 13.4142L6.70711 18.7071C6.31658 19.0976 5.68342 19.0976 5.29289 18.7071C4.90237 18.3166 4.90237 17.6834 5.29289 17.2929L10.5858 12L5.29289 6.70711C4.90237 6.31658 4.90237 5.68342 5.29289 5.29289Z",
21717
+ fill: "currentColor"
21718
+ })
21719
+ });
21720
+ };
21721
+
21722
+ const SuccessSvg = () => {
21723
+ return jsx("svg", {
21724
+ viewBox: "0 0 16 16",
21725
+ fill: "currentColor",
21726
+ children: jsx("path", {
21727
+ d: "M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm1.5 0a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm10.28-1.72-4.5 4.5a.75.75 0 0 1-1.06 0l-2-2a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l1.47 1.47 3.97-3.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"
21728
+ })
21729
+ });
21730
+ };
21731
+ const ErrorSvg = () => {
21732
+ return jsx("svg", {
21733
+ viewBox: "0 0 16 16",
21734
+ fill: "currentColor",
21735
+ children: jsx("path", {
21736
+ d: "M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"
21737
+ })
21738
+ });
21739
+ };
21740
+ const InfoSvg = () => {
21741
+ return jsx("svg", {
21742
+ viewBox: "0 0 16 16",
21743
+ fill: "currentColor",
21744
+ children: jsx("path", {
21745
+ d: "M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"
21746
+ })
21747
+ });
21748
+ };
21749
+ const WarningSvg = () => {
21750
+ return jsx("svg", {
21751
+ viewBox: "0 0 16 16",
21752
+ fill: "currentColor",
21753
+ children: jsx("path", {
21754
+ d: "M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"
21755
+ })
21756
+ });
21757
+ };
21758
+
21622
21759
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21623
21760
  @layer navi {
21624
21761
  .navi_message_box {
@@ -21711,17 +21848,27 @@ const MessageBoxReportTitleChildContext = createContext();
21711
21848
  const MessageBox = ({
21712
21849
  level = "info",
21713
21850
  padding = "sm",
21851
+ icon,
21714
21852
  leftStripe,
21715
21853
  children,
21716
- contentSpacing,
21854
+ onClose,
21717
21855
  ...rest
21718
21856
  }) => {
21719
21857
  const [hasTitleChild, setHasTitleChild] = useState(false);
21720
21858
  const innerLeftStripe = leftStripe === undefined ? hasTitleChild : leftStripe;
21721
- return jsx(Text, {
21859
+ if (icon === true) {
21860
+ icon = level === "info" ? jsx(InfoSvg, {}) : level === "success" ? jsx(SuccessSvg, {}) : level === "warning" ? jsx(WarningSvg, {}) : level === "error" ? jsx(ErrorSvg, {}) : null;
21861
+ } else if (typeof icon === "function") {
21862
+ const Comp = icon;
21863
+ icon = jsx(Comp, {});
21864
+ }
21865
+ return jsx(Box, {
21722
21866
  as: "div",
21723
21867
  role: level === "info" ? "status" : "alert",
21724
21868
  "data-left-stripe": innerLeftStripe ? "" : undefined,
21869
+ column: true,
21870
+ alignY: "start",
21871
+ spacing: "sm",
21725
21872
  ...rest,
21726
21873
  className: withPropsClassName("navi_message_box", rest.className),
21727
21874
  padding: padding,
@@ -21734,9 +21881,31 @@ const MessageBox = ({
21734
21881
  },
21735
21882
  children: jsx(MessageBoxLevelContext.Provider, {
21736
21883
  value: level,
21737
- children: jsx(MessageBoxReportTitleChildContext.Provider, {
21884
+ children: jsxs(MessageBoxReportTitleChildContext.Provider, {
21738
21885
  value: setHasTitleChild,
21739
- children: applyContentSpacingOnTextChildren(children, contentSpacing)
21886
+ children: [icon && jsx(Icon, {
21887
+ color: "var(--x-color)",
21888
+ children: icon
21889
+ }), jsx(Text, {
21890
+ children: children
21891
+ }), onClose && jsx(Button, {
21892
+ action: onClose,
21893
+ discrete: true,
21894
+ border: "none",
21895
+ "data-nohover": "",
21896
+ alignX: "center",
21897
+ alignY: "center",
21898
+ width: "1em",
21899
+ height: "1em",
21900
+ pseudoStyle: {
21901
+ ":hover": {
21902
+ backgroundColor: "rgba(0, 0, 0, 0.1)"
21903
+ }
21904
+ },
21905
+ children: jsx(Icon, {
21906
+ children: jsx(CloseSvg, {})
21907
+ })
21908
+ })]
21740
21909
  })
21741
21910
  })
21742
21911
  });
@@ -21788,97 +21957,97 @@ const Svg = props => {
21788
21957
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21789
21958
  @layer navi {
21790
21959
  .navi_dialog_layout {
21791
- --dialog-margin: 30px;
21792
- --dialog-padding: 20px;
21793
- --dialog-background: white;
21794
- --dialog-border-width: 2px;
21795
- --dialog-border-color: lightgrey;
21796
- --dialog-border-radius: 10px;
21797
- --dialog-min-width: 300px;
21798
- --dialog-min-height: auto;
21960
+ --layout-margin: 30px;
21961
+ --layout-padding: 20px;
21962
+ --layout-background: white;
21963
+ --layout-border-width: 2px;
21964
+ --layout-border-color: lightgrey;
21965
+ --layout-border-radius: 10px;
21966
+ --layout-min-width: 300px;
21967
+ --layout-min-height: auto;
21799
21968
  }
21800
21969
  }
21801
21970
  .navi_dialog_layout {
21802
21971
  padding-top: var(
21803
- --dialog-margin-top,
21804
- var(--dialog-margin-y, var(--dialog-margin))
21972
+ --layout-margin-top,
21973
+ var(--layout-margin-y, var(--layout-margin))
21805
21974
  );
21806
21975
  padding-right: var(
21807
- --dialog-margin-right,
21808
- var(--dialog-margin-x, var(--dialog-margin))
21976
+ --layout-margin-right,
21977
+ var(--layout-margin-x, var(--layout-margin))
21809
21978
  );
21810
21979
  padding-bottom: var(
21811
- --dialog-margin-bottom,
21812
- var(--dialog-margin-y, var(--dialog-margin))
21980
+ --layout-margin-bottom,
21981
+ var(--layout-margin-y, var(--layout-margin))
21813
21982
  );
21814
21983
  padding-left: var(
21815
- --dialog-margin-left,
21816
- var(--dialog-margin-x, var(--dialog-margin))
21984
+ --layout-margin-left,
21985
+ var(--layout-margin-x, var(--layout-margin))
21817
21986
  );
21818
21987
  }
21819
21988
 
21820
21989
  .navi_dialog_content {
21821
- min-width: var(--dialog-min-width);
21822
- min-height: var(--dialog-min-height);
21990
+ min-width: var(--layout-min-width);
21991
+ min-height: var(--layout-min-height);
21823
21992
  padding-top: var(
21824
- --dialog-padding-top,
21825
- var(--dialog-padding-y, var(--dialog-padding))
21993
+ --layout-padding-top,
21994
+ var(--layout-padding-y, var(--layout-padding))
21826
21995
  );
21827
21996
  padding-right: var(
21828
- --dialog-padding-right,
21829
- var(--dialog-padding-x, var(--dialog-padding))
21997
+ --layout-padding-right,
21998
+ var(--layout-padding-x, var(--layout-padding))
21830
21999
  );
21831
22000
  padding-bottom: var(
21832
- --dialog-padding-bottom,
21833
- var(--dialog-padding-y, var(--dialog-padding))
22001
+ --layout-padding-bottom,
22002
+ var(--layout-padding-y, var(--layout-padding))
21834
22003
  );
21835
22004
  padding-left: var(
21836
- --dialog-padding-left,
21837
- var(--dialog-padding-x, var(--dialog-padding))
22005
+ --layout-padding-left,
22006
+ var(--layout-padding-x, var(--layout-padding))
21838
22007
  );
21839
- background: var(--dialog-background);
21840
- background-color: var(--dialog-background-color, var(--dialog-background));
21841
- border-width: var(--dialog-border-width);
22008
+ background: var(--layout-background);
22009
+ background-color: var(--layout-background-color, var(--layout-background));
22010
+ border-width: var(--layout-border-width);
21842
22011
  border-style: solid;
21843
- border-color: var(--dialog-border-color);
21844
- border-radius: var(--dialog-border-radius);
22012
+ border-color: var(--layout-border-color);
22013
+ border-radius: var(--layout-border-radius);
21845
22014
  }
21846
22015
  `;
21847
- const DialogManagedByCSSVars = {
21848
- margin: "--dialog-margin",
21849
- marginTop: "--dialog-margin-top",
21850
- marginBottom: "--dialog-margin-bottom",
21851
- marginLeft: "--dialog-margin-left",
21852
- marginRight: "--dialog-margin-right",
21853
- borderRadius: "--dialog-border-radius",
21854
- borderWidth: "--dialog-border-width",
21855
- borderColor: "--dialog-border-color",
21856
- background: "--dialog-background",
21857
- backgroundColor: "--dialog-background-color",
21858
- padding: "--dialog-padding",
21859
- paddingTop: "--dialog-padding-top",
21860
- paddingBottom: "--dialog-padding-bottom",
21861
- paddingLeft: "--dialog-padding-left",
21862
- paddingRight: "--dialog-padding-right",
21863
- minWidth: "--dialog-min-width",
21864
- minHeight: "--dialog-min-height"
22016
+ const DialogLayoutStyleCSSVars = {
22017
+ margin: "--layout-margin",
22018
+ marginTop: "--layout-margin-top",
22019
+ marginBottom: "--layout-margin-bottom",
22020
+ marginLeft: "--layout-margin-left",
22021
+ marginRight: "--layout-margin-right",
22022
+ borderRadius: "--layout-border-radius",
22023
+ borderWidth: "--layout-border-width",
22024
+ borderColor: "--layout-border-color",
22025
+ background: "--layout-background",
22026
+ backgroundColor: "--layout-background-color",
22027
+ padding: "--layout-padding",
22028
+ paddingTop: "--layout-padding-top",
22029
+ paddingBottom: "--layout-padding-bottom",
22030
+ paddingLeft: "--layout-padding-left",
22031
+ paddingRight: "--layout-padding-right",
22032
+ minWidth: "--layout-min-width",
22033
+ minHeight: "--layout-min-height"
21865
22034
  };
21866
22035
  const DialogLayout = ({
21867
22036
  children,
21868
- contentAlignX = "center",
21869
- contentAlignY = "center",
22037
+ alignX = "center",
22038
+ alignY = "center",
21870
22039
  ...props
21871
22040
  }) => {
21872
22041
  return jsx(Box, {
21873
22042
  baseClassName: "navi_dialog_layout",
21874
- managedByCSSVars: DialogManagedByCSSVars,
22043
+ CSSVars: DialogLayoutStyleCSSVars,
21875
22044
  visualSelector: ".navi_dialog_content",
21876
22045
  ...props,
21877
22046
  children: jsx(Box, {
21878
22047
  row: true,
21879
22048
  className: "navi_dialog_content",
21880
- contentAlignX: contentAlignX,
21881
- contentAlignY: contentAlignY,
22049
+ alignX: alignX,
22050
+ alignY: alignY,
21882
22051
  children: children
21883
22052
  })
21884
22053
  });
@@ -21887,26 +22056,38 @@ const DialogLayout = ({
21887
22056
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21888
22057
  @layer navi {
21889
22058
  .navi_viewport_layout {
21890
- --padding: 40px;
21891
- --background: white;
22059
+ --layout-padding: 40px;
22060
+ --layout-background: white;
21892
22061
  }
21893
22062
  }
21894
22063
 
21895
22064
  .navi_viewport_layout {
21896
- padding-top: var(--padding-top, var(--padding-y, var(--padding)));
21897
- padding-right: var(--padding-right, var(--padding-x, var(--padding)));
21898
- padding-bottom: var(--padding-bottom, var(--padding-y, var(--padding)));
21899
- padding-left: var(--padding-left, var(--padding-x, var(--padding)));
21900
- background: var(--background);
22065
+ padding-top: var(
22066
+ --layout-padding-top,
22067
+ var(--layout-padding-y, var(--layout-padding))
22068
+ );
22069
+ padding-right: var(
22070
+ --layout-padding-right,
22071
+ var(--layout-padding-x, var(--layout-padding))
22072
+ );
22073
+ padding-bottom: var(
22074
+ --layout-padding-bottom,
22075
+ var(--layout-padding-y, var(--layout-padding))
22076
+ );
22077
+ padding-left: var(
22078
+ --layout-padding-left,
22079
+ var(--layout-padding-x, var(--layout-padding))
22080
+ );
22081
+ background: var(--layout-background);
21901
22082
  }
21902
22083
  `;
21903
- const ViewportManagedByCSSVars = {
21904
- padding: "--padding",
21905
- paddingTop: "--padding-top",
21906
- paddingBottom: "--padding-bottom",
21907
- paddingLeft: "--padding-left",
21908
- paddingRight: "--padding-right",
21909
- background: "--background"
22084
+ const ViewportLayoutStyleCSSVars = {
22085
+ padding: "--layout-padding",
22086
+ paddingTop: "--layout-padding-top",
22087
+ paddingBottom: "--layout-padding-bottom",
22088
+ paddingLeft: "--layout-padding-left",
22089
+ paddingRight: "--layout-padding-right",
22090
+ background: "--layout-background"
21910
22091
  };
21911
22092
  const ViewportLayout = props => {
21912
22093
  return jsx(Box, {
@@ -21915,7 +22096,7 @@ const ViewportLayout = props => {
21915
22096
  height: "100%",
21916
22097
  ...props,
21917
22098
  className: "navi_viewport_layout",
21918
- managedByCSSVars: ViewportManagedByCSSVars
22099
+ styleCSSVars: ViewportLayoutStyleCSSVars
21919
22100
  });
21920
22101
  };
21921
22102
 
@@ -21996,5 +22177,79 @@ const useDependenciesDiff = (inputs) => {
21996
22177
  return diffRef.current;
21997
22178
  };
21998
22179
 
21999
- export { ActionRenderer, ActiveKeyboardShortcuts, BadgeCount, Box, Button, Checkbox, CheckboxList, Code, Col, Colgroup, Details, DialogLayout, Editable, ErrorBoundaryContext, FontSizedSvg, Form, Icon, IconAndText, Image, Input, Label, Layout, Link, LinkWithIcon, MessageBox, Paragraph, Radio, RadioList, Route, RouteLink, Routes, RowNumberCol, RowNumberTableCell, SINGLE_SPACE_CONSTRAINT, SVGMaskOverlay, Select, SelectionContext, SummaryMarker, Svg, Tab, TabList, Table, TableCell, Tbody, Text, Thead, Title, Tr, UITransition, ViewportLayout, actionIntegratedVia, addCustomMessage, createAction, createSelectionKeyboardShortcuts, createUniqueValueConstraint, enableDebugActions, enableDebugOnDocumentLoading, forwardActionRequested, goBack, goForward, goTo, installCustomConstraintValidation, isCellSelected, isColumnSelected, isRowSelected, openCallout, rawUrlPart, reload, removeCustomMessage, rerunActions, resource, setBaseUrl, setupRoutes, stopLoad, stringifyTableSelectionValue, updateActions, useActionData, useActionStatus, useActiveRouteInfo, useCellsAndColumns, useDependenciesDiff, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useKeyboardShortcuts, useNavState, useRouteStatus, useRunOnMount, useSelectableElement, useSelectionController, useSignalSync, useStateArray, useUrlSearchParam, valueInLocalStorage };
22180
+ const CheckSvg = () => jsx("svg", {
22181
+ viewBox: "0 0 24 24",
22182
+ xmlns: "http://www.w3.org/2000/svg",
22183
+ children: jsx("path", {
22184
+ d: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",
22185
+ fill: "currentColor"
22186
+ })
22187
+ });
22188
+
22189
+ const ExclamationSvg = () => {
22190
+ return jsx("svg", {
22191
+ viewBox: "0 0 125 300",
22192
+ xmlns: "http://www.w3.org/2000/svg",
22193
+ children: jsx("path", {
22194
+ fill: "currentColor",
22195
+ d: "m25,1 8,196h59l8-196zm37,224a37,37 0 1,0 2,0z"
22196
+ })
22197
+ });
22198
+ };
22199
+
22200
+ const HeartSvg = () => jsx("svg", {
22201
+ viewBox: "0 0 24 24",
22202
+ xmlns: "http://www.w3.org/2000/svg",
22203
+ children: jsx("path", {
22204
+ d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z",
22205
+ fill: "currentColor"
22206
+ })
22207
+ });
22208
+
22209
+ const HomeSvg = () => jsx("svg", {
22210
+ viewBox: "0 0 24 24",
22211
+ xmlns: "http://www.w3.org/2000/svg",
22212
+ children: jsx("path", {
22213
+ d: "M12 3l8 6v11h-5v-6h-6v6H4V9l8-6z",
22214
+ fill: "currentColor"
22215
+ })
22216
+ });
22217
+
22218
+ const SearchSvg = () => jsx("svg", {
22219
+ viewBox: "0 0 24 24",
22220
+ xmlns: "http://www.w3.org/2000/svg",
22221
+ children: jsx("path", {
22222
+ d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",
22223
+ fill: "currentColor"
22224
+ })
22225
+ });
22226
+
22227
+ const SettingsSvg = () => jsx("svg", {
22228
+ viewBox: "0 0 24 24",
22229
+ xmlns: "http://www.w3.org/2000/svg",
22230
+ children: jsx("path", {
22231
+ d: "M12 15.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5zM19.43 12.98c.04-.32.07-.64.07-.98 0-.34-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11.02c-.04.32-.07.64-.07.98 0 .34.03.66.07.98L2.46 14.63c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65z",
22232
+ fill: "currentColor"
22233
+ })
22234
+ });
22235
+
22236
+ const StarSvg = () => jsx("svg", {
22237
+ viewBox: "0 0 24 24",
22238
+ xmlns: "http://www.w3.org/2000/svg",
22239
+ children: jsx("path", {
22240
+ d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
22241
+ fill: "currentColor"
22242
+ })
22243
+ });
22244
+
22245
+ const UserSvg = () => jsx("svg", {
22246
+ viewBox: "0 0 24 24",
22247
+ xmlns: "http://www.w3.org/2000/svg",
22248
+ children: jsx("path", {
22249
+ d: "M12 2C9.8 2 8 3.8 8 6s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm0 12c-2.7 0-8 1.3-8 4v2h16v-2c0-2.7-5.3-4-8-4z",
22250
+ fill: "currentColor"
22251
+ })
22252
+ });
22253
+
22254
+ export { ActionRenderer, ActiveKeyboardShortcuts, BadgeCount, Box, Button, Caption, CheckSvg, Checkbox, CheckboxList, Code, Col, Colgroup, Details, DialogLayout, Editable, ErrorBoundaryContext, ExclamationSvg, FontSizedSvg, Form, HeartSvg, HomeSvg, Icon, IconAndText, Image, Input, Label, Layout, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkWithIcon, MessageBox, Paragraph, Radio, RadioList, Route, RouteLink, Routes, RowNumberCol, RowNumberTableCell, SINGLE_SPACE_CONSTRAINT, SVGMaskOverlay, SearchSvg, Select, SelectionContext, SettingsSvg, StarSvg, SummaryMarker, Svg, Tab, TabList, Table, TableCell, Tbody, Text, Thead, Title, Tr, UITransition, UserSvg, ViewportLayout, actionIntegratedVia, addCustomMessage, createAction, createSelectionKeyboardShortcuts, createUniqueValueConstraint, enableDebugActions, enableDebugOnDocumentLoading, forwardActionRequested, goBack, goForward, goTo, installCustomConstraintValidation, isCellSelected, isColumnSelected, isRowSelected, openCallout, rawUrlPart, reload, removeCustomMessage, rerunActions, resource, setBaseUrl, setupRoutes, stopLoad, stringifyTableSelectionValue, updateActions, useActionData, useActionStatus, useActiveRouteInfo, useCellsAndColumns, useDependenciesDiff, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useKeyboardShortcuts, useNavState, useRouteStatus, useRunOnMount, useSelectableElement, useSelectionController, useSignalSync, useStateArray, useUrlSearchParam, valueInLocalStorage };
22000
22255
  //# sourceMappingURL=jsenv_navi.js.map