@jsenv/navi 0.12.17 → 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;
10219
+ }
10220
+ if (value === undefined) {
10221
+ return null;
10196
10222
  }
10197
- return { [cssProp]: cssPropValue };
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
@@ -11223,12 +11254,23 @@ const Box = props => {
11223
11254
  const defaultRef = useRef();
11224
11255
  const ref = props.ref || defaultRef;
11225
11256
  const TagName = as;
11226
- const {
11257
+ let {
11227
11258
  box,
11228
- inline = box,
11259
+ inline,
11229
11260
  row,
11230
- column = box
11261
+ column
11231
11262
  } = rest;
11263
+ if (box === "auto") {
11264
+ box = Boolean(rest.alignX || rest.alignY);
11265
+ }
11266
+ if (box) {
11267
+ if (inline === undefined) {
11268
+ inline = true;
11269
+ }
11270
+ if (column === undefined) {
11271
+ column = true;
11272
+ }
11273
+ }
11232
11274
  let layout;
11233
11275
  if (inline) {
11234
11276
  if (row) {
@@ -11254,7 +11296,7 @@ const Box = props => {
11254
11296
  // Layout and alignment props
11255
11297
  parentLayout, layout,
11256
11298
  // Style context dependencies
11257
- managedByCSSVars, pseudoClasses, pseudoElements,
11299
+ styleCSSVars, pseudoClasses, pseudoElements,
11258
11300
  // Selectors
11259
11301
  visualSelector, pseudoStateSelector];
11260
11302
  let innerPseudoState;
@@ -11294,20 +11336,22 @@ const Box = props => {
11294
11336
  } else {
11295
11337
  innerPseudoState = PSEUDO_STATE_DEFAULT;
11296
11338
  }
11339
+ const boxStyles = {};
11297
11340
  const styleContext = {
11298
11341
  parentLayout,
11299
11342
  layout,
11300
- managedByCSSVars,
11343
+ styleCSSVars,
11301
11344
  pseudoState: innerPseudoState,
11302
11345
  pseudoClasses,
11303
- pseudoElements
11346
+ pseudoElements,
11347
+ remainingProps: rest,
11348
+ styles: boxStyles
11304
11349
  };
11305
- const boxStyles = {};
11306
11350
  let boxPseudoNamedStyles = PSEUDO_NAMED_STYLES_DEFAULT;
11307
11351
  const shouldForwardAllToChild = visualSelector && pseudoStateSelector;
11308
11352
  const addStyle = (value, name, stylesTarget, context) => {
11309
11353
  styleDeps.push(value); // impact box style -> add to deps
11310
- const cssVar = managedByCSSVars[name];
11354
+ const cssVar = styleCSSVars[name];
11311
11355
  const mergedValue = prepareStyleValue(stylesTarget[name], value, name, context);
11312
11356
  if (cssVar) {
11313
11357
  stylesTarget[cssVar] = mergedValue;
@@ -11321,7 +11365,7 @@ const Box = props => {
11321
11365
  addStyle(value, name, stylesTarget, context);
11322
11366
  return false;
11323
11367
  }
11324
- const cssVar = managedByCSSVars[name];
11368
+ const cssVar = styleCSSVars[name];
11325
11369
  if (cssVar) {
11326
11370
  // css var wins over visual child handling
11327
11371
  addStyle(value, name, stylesTarget, context);
@@ -11412,9 +11456,9 @@ const Box = props => {
11412
11456
  for (const key of pseudoStyleKeys) {
11413
11457
  const pseudoStyleContext = {
11414
11458
  ...styleContext,
11415
- managedByCSSVars: {
11416
- ...managedByCSSVars,
11417
- ...managedByCSSVars[key]
11459
+ styleCSSVars: {
11460
+ ...styleCSSVars,
11461
+ ...styleCSSVars[key]
11418
11462
  },
11419
11463
  pseudoName: key
11420
11464
  };
@@ -13602,8 +13646,8 @@ const INSERTED_SPACE = jsx("span", {
13602
13646
  "data-navi-space": "",
13603
13647
  children: " "
13604
13648
  });
13605
- const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13606
- if (contentSpacing === "pre") {
13649
+ const applySpacingOnTextChildren = (children, spacing) => {
13650
+ if (spacing === "pre") {
13607
13651
  return children;
13608
13652
  }
13609
13653
  if (!children) {
@@ -13630,7 +13674,7 @@ const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13630
13674
  }
13631
13675
  return false;
13632
13676
  };
13633
- const separator = contentSpacing === undefined || contentSpacing === " " ? INSERTED_SPACE : contentSpacing;
13677
+ const separator = spacing === undefined || spacing === " " ? INSERTED_SPACE : spacing;
13634
13678
  const childrenWithGap = [];
13635
13679
  let i = 0;
13636
13680
  while (true) {
@@ -13641,7 +13685,7 @@ const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13641
13685
  break;
13642
13686
  }
13643
13687
 
13644
- // Check if we should skip adding contentSpacing
13688
+ // Check if we should skip adding spacing
13645
13689
  const currentChild = childArray[i - 1];
13646
13690
  const nextChild = childArray[i];
13647
13691
  const shouldSkipSpacing = endsWithWhitespace(currentChild) || startsWithWhitespace(nextChild);
@@ -13673,19 +13717,22 @@ const Text = props => {
13673
13717
  };
13674
13718
  const TextOverflow = ({
13675
13719
  noWrap,
13676
- pre = !noWrap,
13677
13720
  children,
13678
13721
  ...rest
13679
13722
  }) => {
13680
13723
  const [OverflowPinnedElement, setOverflowPinnedElement] = useState(null);
13681
13724
  return jsx(Text, {
13725
+ column: true,
13682
13726
  as: "div",
13683
- pre: pre,
13684
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",
13685
13732
  ...rest,
13686
13733
  className: "navi_text_overflow",
13687
13734
  expandX: true,
13688
- contentSpacing: "pre",
13735
+ spacing: "pre",
13689
13736
  children: jsxs("span", {
13690
13737
  className: "navi_text_overflow_wrapper",
13691
13738
  children: [jsx(OverflowPinnedElementContext.Provider, {
@@ -13718,7 +13765,7 @@ const TextOverflowPinned = ({
13718
13765
  return text;
13719
13766
  };
13720
13767
  const TextBasic = ({
13721
- contentSpacing = " ",
13768
+ spacing = " ",
13722
13769
  selectRange,
13723
13770
  children,
13724
13771
  ...rest
@@ -13731,7 +13778,7 @@ const TextBasic = ({
13731
13778
  as: "span",
13732
13779
  ...rest,
13733
13780
  baseClassName: "navi_text",
13734
- children: applyContentSpacingOnTextChildren(children, contentSpacing)
13781
+ children: applySpacingOnTextChildren(children, spacing)
13735
13782
  });
13736
13783
  };
13737
13784
 
@@ -13778,6 +13825,15 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13778
13825
  width: auto;
13779
13826
  height: 100%;
13780
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
+ }
13781
13837
  `;
13782
13838
  const Icon = ({
13783
13839
  href,
@@ -13829,7 +13885,7 @@ const Icon = ({
13829
13885
  ...ariaProps,
13830
13886
  box: box,
13831
13887
  className: withPropsClassName("navi_icon", className),
13832
- contentSpacing: "pre",
13888
+ spacing: "pre",
13833
13889
  "data-icon-char": "",
13834
13890
  "data-width": width,
13835
13891
  "data-height": height,
@@ -13840,7 +13896,7 @@ const Icon = ({
13840
13896
  }), jsx("span", {
13841
13897
  className: "navi_icon_foreground",
13842
13898
  children: jsx(Text, {
13843
- contentSpacing: "pre",
13899
+ spacing: "pre",
13844
13900
  children: innerChildren
13845
13901
  })
13846
13902
  })]
@@ -13923,7 +13979,7 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13923
13979
  opacity: 0.5;
13924
13980
  }
13925
13981
  `;
13926
- const LinkManagedByCSSVars = {
13982
+ const LinkStyleCSSVars = {
13927
13983
  "outlineColor": "--link-outline-color",
13928
13984
  "borderRadius": "--link-border-radius",
13929
13985
  "color": "--link-color",
@@ -13988,7 +14044,7 @@ const LinkPlain = props => {
13988
14044
  blankTargetIcon,
13989
14045
  anchorIcon,
13990
14046
  icon,
13991
- contentSpacing,
14047
+ spacing,
13992
14048
  children,
13993
14049
  ...rest
13994
14050
  } = props;
@@ -14024,15 +14080,16 @@ const LinkPlain = props => {
14024
14080
  const innerBlankTargetIcon = blankTargetIcon === undefined ? innerTarget === "_blank" : blankTargetIcon;
14025
14081
  const innerAnchorIcon = anchorIcon === undefined ? targetIsAnchor : anchorIcon;
14026
14082
  if (innerBlankTargetIcon) {
14027
- innerIcon = innerBlankTargetIcon === true ? jsx(BlankTargetLinkSvg, {}) : innerBlankTargetIcon;
14083
+ innerIcon = innerBlankTargetIcon === true ? jsx(LinkBlankTargetSvg, {}) : innerBlankTargetIcon;
14028
14084
  } else if (innerAnchorIcon) {
14029
- innerIcon = innerAnchorIcon === true ? jsx(AnchorLinkSvg, {}) : anchorIcon;
14085
+ innerIcon = innerAnchorIcon === true ? jsx(LinkAnchorSvg, {}) : anchorIcon;
14030
14086
  }
14031
14087
  }
14032
14088
  } else {
14033
14089
  innerIcon = icon;
14034
14090
  }
14035
14091
  return jsxs(Box, {
14092
+ box: "auto",
14036
14093
  ...rest,
14037
14094
  ref: ref,
14038
14095
  as: "a",
@@ -14041,11 +14098,11 @@ const LinkPlain = props => {
14041
14098
  target: innerTarget === "_self" ? undefined : target,
14042
14099
  "aria-busy": loading,
14043
14100
  inert: disabled,
14044
- contentSpacing: "pre"
14101
+ spacing: "pre"
14045
14102
  // Visual
14046
14103
  ,
14047
14104
  baseClassName: "navi_link",
14048
- managedByCSSVars: LinkManagedByCSSVars,
14105
+ styleCSSVars: LinkStyleCSSVars,
14049
14106
  pseudoClasses: LinkPseudoClasses,
14050
14107
  pseudoElements: LinkPseudoElements,
14051
14108
  basePseudoState: {
@@ -14081,39 +14138,12 @@ const LinkPlain = props => {
14081
14138
  children: [jsx(LoaderBackground, {
14082
14139
  loading: loading,
14083
14140
  color: "light-dark(#355fcc, #3b82f6)"
14084
- }), applyContentSpacingOnTextChildren(children, contentSpacing), innerIcon && jsx(Icon, {
14141
+ }), applySpacingOnTextChildren(children, spacing), innerIcon && jsx(Icon, {
14085
14142
  marginLeft: "xxs",
14086
14143
  children: innerIcon
14087
14144
  })]
14088
14145
  });
14089
14146
  };
14090
- const BlankTargetLinkSvg = () => {
14091
- return jsx("svg", {
14092
- viewBox: "0 0 24 24",
14093
- xmlns: "http://www.w3.org/2000/svg",
14094
- children: jsx("path", {
14095
- 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",
14096
- stroke: "currentColor",
14097
- fill: "none",
14098
- "stroke-width": "2",
14099
- "stroke-linecap": "round",
14100
- "stroke-linejoin": "round"
14101
- })
14102
- });
14103
- };
14104
- const AnchorLinkSvg = () => {
14105
- return jsxs("svg", {
14106
- viewBox: "0 0 24 24",
14107
- xmlns: "http://www.w3.org/2000/svg",
14108
- children: [jsx("path", {
14109
- 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",
14110
- fill: "currentColor"
14111
- }), jsx("path", {
14112
- 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",
14113
- fill: "currentColor"
14114
- })]
14115
- });
14116
- };
14117
14147
  const PhoneSvg = () => {
14118
14148
  return jsx("svg", {
14119
14149
  viewBox: "0 0 24 24",
@@ -15468,7 +15498,7 @@ const InputCheckbox = props => {
15468
15498
  })
15469
15499
  });
15470
15500
  };
15471
- const CheckboxManagedByCSSVars = {
15501
+ const CheckboxStyleCSSVars = {
15472
15502
  "outlineWidth": "--outline-width",
15473
15503
  "borderWidth": "--border-width",
15474
15504
  "borderRadius": "--border-radius",
@@ -15586,7 +15616,7 @@ const InputCheckboxBasic = props => {
15586
15616
  ref: ref,
15587
15617
  baseClassName: "navi_checkbox",
15588
15618
  pseudoStateSelector: ".navi_native_field",
15589
- managedByCSSVars: CheckboxManagedByCSSVars,
15619
+ styleCSSVars: CheckboxStyleCSSVars,
15590
15620
  pseudoClasses: CheckboxPseudoClasses,
15591
15621
  pseudoElements: CheckboxPseudoElements,
15592
15622
  basePseudoState: {
@@ -15875,7 +15905,7 @@ const InputRadio = props => {
15875
15905
  })
15876
15906
  });
15877
15907
  };
15878
- const RadioManagedByCSSVars = {
15908
+ const RadioStyleCSSVars = {
15879
15909
  "outlineWidth": "--outline-width",
15880
15910
  "borderWidth": "--border-width",
15881
15911
  "borderRadius": "--border-radius",
@@ -16019,7 +16049,7 @@ const InputRadioBasic = props => {
16019
16049
  ref: ref,
16020
16050
  baseClassName: "navi_radio",
16021
16051
  pseudoStateSelector: ".navi_native_field",
16022
- managedByCSSVars: RadioManagedByCSSVars,
16052
+ styleCSSVars: RadioStyleCSSVars,
16023
16053
  pseudoClasses: RadioPseudoClasses,
16024
16054
  pseudoElements: RadioPseudoElements,
16025
16055
  basePseudoState: {
@@ -16204,7 +16234,7 @@ const InputTextual = props => {
16204
16234
  })
16205
16235
  });
16206
16236
  };
16207
- const InputManagedByCSSVars = {
16237
+ const InputStyleCSSVars = {
16208
16238
  "outlineWidth": "--outline-width",
16209
16239
  "borderWidth": "--border-width",
16210
16240
  "borderRadius": "--border-radius",
@@ -16306,7 +16336,7 @@ const InputTextualBasic = props => {
16306
16336
  as: "span",
16307
16337
  box: true,
16308
16338
  baseClassName: "navi_input",
16309
- managedByCSSVars: InputManagedByCSSVars,
16339
+ styleCSSVars: InputStyleCSSVars,
16310
16340
  pseudoStateSelector: ".navi_native_input",
16311
16341
  visualSelector: ".navi_native_input",
16312
16342
  basePseudoState: {
@@ -16801,6 +16831,11 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
16801
16831
  --x-button-background-color: var(--button-background-color-hover);
16802
16832
  --x-button-color: var(--button-color-hover);
16803
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
+ }
16804
16839
  /* Active */
16805
16840
  .navi_button[data-active] {
16806
16841
  --x-button-outline-color: var(--button-border-color-active);
@@ -16860,6 +16895,9 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
16860
16895
  .navi_button[data-discrete][data-hover] {
16861
16896
  --x-button-border-color: var(--button-border-color-hover);
16862
16897
  }
16898
+ .navi_button[data-discrete][data-nohover] {
16899
+ --x-button-border-color: transparent;
16900
+ }
16863
16901
  .navi_button[data-discrete][data-readonly] {
16864
16902
  --x-button-border-color: transparent;
16865
16903
  }
@@ -16879,7 +16917,7 @@ const Button = props => {
16879
16917
  WithActionInsideForm: ButtonWithActionInsideForm
16880
16918
  });
16881
16919
  };
16882
- const ButtonManagedByCSSVars = {
16920
+ const ButtonStyleCSSVars = {
16883
16921
  "outlineWidth": "--button-outline-width",
16884
16922
  "borderWidth": "--button-border-width",
16885
16923
  "borderRadius": "--button-border-radius",
@@ -16945,6 +16983,7 @@ const ButtonBasic = props => {
16945
16983
  };
16946
16984
  const renderButtonContentMemoized = useCallback(renderButtonContent, []);
16947
16985
  return jsxs(Box, {
16986
+ box: "auto",
16948
16987
  ...rest,
16949
16988
  as: "button",
16950
16989
  ref: ref,
@@ -16955,7 +16994,7 @@ const ButtonBasic = props => {
16955
16994
  // style management
16956
16995
  ,
16957
16996
  baseClassName: "navi_button",
16958
- managedByCSSVars: ButtonManagedByCSSVars,
16997
+ styleCSSVars: ButtonStyleCSSVars,
16959
16998
  pseudoClasses: ButtonPseudoClasses,
16960
16999
  pseudoElements: ButtonPseudoElements,
16961
17000
  basePseudoState: {
@@ -20954,8 +20993,8 @@ const TableCell = forwardRef((props, ref) => {
20954
20993
  style,
20955
20994
  cursor,
20956
20995
  bold,
20957
- alignX = column.alignX,
20958
- alignY = column.alignY,
20996
+ selfAlignX = column.selfAlignX,
20997
+ selfAlignY = column.selfAlignY,
20959
20998
  backgroundColor = column.backgroundColor || row.backgroundColor,
20960
20999
  children
20961
21000
  } = props;
@@ -21069,8 +21108,8 @@ const TableCell = forwardRef((props, ref) => {
21069
21108
  if (rowHeight !== undefined) {
21070
21109
  innerStyle.maxHeight = `${rowHeight}px`;
21071
21110
  }
21072
- const innerAlignX = alignX || isFirstRow ? "center" : "start";
21073
- const innerAlignY = alignY || isFirstColumn ? "center" : "start";
21111
+ const innerAlignX = selfAlignX || isFirstRow ? "center" : "start";
21112
+ const innerAlignY = selfAlignY || isFirstColumn ? "center" : "start";
21074
21113
  const innerBold = bold || containSelectedCell;
21075
21114
  if (innerBold) {
21076
21115
  innerStyle.fontWeight = "bold";
@@ -21182,7 +21221,7 @@ const RowNumberTableCell = props => {
21182
21221
  const isTopLeftCell = columnIndex === 0 && rowIndex === 0;
21183
21222
  return jsx(TableCell, {
21184
21223
  canSelectAll: isTopLeftCell,
21185
- alignX: "left",
21224
+ selfAlignX: "left",
21186
21225
  ...props,
21187
21226
  children: isTopLeftCell ? "" : rowIndex
21188
21227
  });
@@ -21533,26 +21572,43 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
21533
21572
  }
21534
21573
  }
21535
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
+
21536
21580
  display: inline-block;
21537
21581
  box-sizing: border-box;
21538
- min-width: 1.5em;
21539
- height: 1.5em;
21540
- max-height: 1.5em;
21541
- padding-right: var(
21542
- --padding-right,
21543
- var(--padding-x, var(--padding, 0.4em))
21544
- );
21545
- 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);
21546
21588
  color: var(--color, var(--color-contrasting));
21547
21589
  text-align: center;
21548
- line-height: 1.5em;
21549
- vertical-align: middle;
21590
+ line-height: var(--x-outer-size);
21591
+ /* vertical-align: middle; */
21550
21592
  background: var(--background);
21551
21593
  background-color: var(--background-color, var(--background));
21552
21594
  border-radius: var(--border-radius, 1em);
21553
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
+ }
21554
21610
  `;
21555
- const BadgeManagedByCSSVars = {
21611
+ const BadgeStyleCSSVars = {
21556
21612
  borderWidth: "--border-width",
21557
21613
  borderRadius: "--border-radius",
21558
21614
  paddingRight: "--padding-right",
@@ -21562,43 +21618,86 @@ const BadgeManagedByCSSVars = {
21562
21618
  borderColor: "--border-color",
21563
21619
  color: "--color"
21564
21620
  };
21621
+ const BadgeCountOverflow = () => jsx("span", {
21622
+ className: "navi_count_badge_overflow",
21623
+ children: "+"
21624
+ });
21565
21625
  const BadgeCount = ({
21566
21626
  children,
21567
- bold = true,
21568
21627
  max,
21628
+ maxElement = jsx(BadgeCountOverflow, {}),
21569
21629
  ...props
21570
21630
  }) => {
21571
21631
  const defaultRef = useRef();
21572
21632
  const ref = props.ref || defaultRef;
21573
-
21633
+ const numericValue = typeof children === "string" ? parseInt(children, 10) : children;
21574
21634
  // Calculer la valeur à afficher en fonction du paramètre max
21575
21635
  const getDisplayValue = () => {
21576
21636
  if (max === undefined) {
21577
21637
  return children;
21578
21638
  }
21579
- const numericValue = typeof children === "string" ? parseInt(children, 10) : children;
21580
21639
  const numericMax = typeof max === "string" ? parseInt(max, 10) : max;
21581
21640
  if (isNaN(numericValue) || isNaN(numericMax)) {
21582
21641
  return children;
21583
21642
  }
21584
21643
  if (numericValue > numericMax) {
21585
- return `${numericMax}+`;
21644
+ return jsxs(Fragment, {
21645
+ children: [children, maxElement]
21646
+ });
21586
21647
  }
21587
21648
  return children;
21588
21649
  };
21589
21650
  const displayValue = getDisplayValue();
21590
21651
  useContrastingColor(ref);
21652
+ const digitCount = String(numericValue).length;
21591
21653
  return jsx(Text, {
21592
- ...props,
21593
21654
  ref: ref,
21594
21655
  className: "navi_badge_count",
21595
- bold: bold,
21596
- managedByCSSVars: BadgeManagedByCSSVars,
21597
- 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",
21598
21662
  children: displayValue
21599
21663
  });
21600
21664
  };
21601
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
+
21602
21701
  const Code = props => {
21603
21702
  return jsx(Text, {
21604
21703
  ...props,
@@ -21606,6 +21705,57 @@ const Code = props => {
21606
21705
  });
21607
21706
  };
21608
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
+
21609
21759
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21610
21760
  @layer navi {
21611
21761
  .navi_message_box {
@@ -21698,17 +21848,27 @@ const MessageBoxReportTitleChildContext = createContext();
21698
21848
  const MessageBox = ({
21699
21849
  level = "info",
21700
21850
  padding = "sm",
21851
+ icon,
21701
21852
  leftStripe,
21702
21853
  children,
21703
- contentSpacing,
21854
+ onClose,
21704
21855
  ...rest
21705
21856
  }) => {
21706
21857
  const [hasTitleChild, setHasTitleChild] = useState(false);
21707
21858
  const innerLeftStripe = leftStripe === undefined ? hasTitleChild : leftStripe;
21708
- 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, {
21709
21866
  as: "div",
21710
21867
  role: level === "info" ? "status" : "alert",
21711
21868
  "data-left-stripe": innerLeftStripe ? "" : undefined,
21869
+ column: true,
21870
+ alignY: "start",
21871
+ spacing: "sm",
21712
21872
  ...rest,
21713
21873
  className: withPropsClassName("navi_message_box", rest.className),
21714
21874
  padding: padding,
@@ -21721,9 +21881,31 @@ const MessageBox = ({
21721
21881
  },
21722
21882
  children: jsx(MessageBoxLevelContext.Provider, {
21723
21883
  value: level,
21724
- children: jsx(MessageBoxReportTitleChildContext.Provider, {
21884
+ children: jsxs(MessageBoxReportTitleChildContext.Provider, {
21725
21885
  value: setHasTitleChild,
21726
- 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
+ })]
21727
21909
  })
21728
21910
  })
21729
21911
  });
@@ -21775,97 +21957,97 @@ const Svg = props => {
21775
21957
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21776
21958
  @layer navi {
21777
21959
  .navi_dialog_layout {
21778
- --dialog-margin: 30px;
21779
- --dialog-padding: 20px;
21780
- --dialog-background: white;
21781
- --dialog-border-width: 2px;
21782
- --dialog-border-color: lightgrey;
21783
- --dialog-border-radius: 10px;
21784
- --dialog-min-width: 300px;
21785
- --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;
21786
21968
  }
21787
21969
  }
21788
21970
  .navi_dialog_layout {
21789
21971
  padding-top: var(
21790
- --dialog-margin-top,
21791
- var(--dialog-margin-y, var(--dialog-margin))
21972
+ --layout-margin-top,
21973
+ var(--layout-margin-y, var(--layout-margin))
21792
21974
  );
21793
21975
  padding-right: var(
21794
- --dialog-margin-right,
21795
- var(--dialog-margin-x, var(--dialog-margin))
21976
+ --layout-margin-right,
21977
+ var(--layout-margin-x, var(--layout-margin))
21796
21978
  );
21797
21979
  padding-bottom: var(
21798
- --dialog-margin-bottom,
21799
- var(--dialog-margin-y, var(--dialog-margin))
21980
+ --layout-margin-bottom,
21981
+ var(--layout-margin-y, var(--layout-margin))
21800
21982
  );
21801
21983
  padding-left: var(
21802
- --dialog-margin-left,
21803
- var(--dialog-margin-x, var(--dialog-margin))
21984
+ --layout-margin-left,
21985
+ var(--layout-margin-x, var(--layout-margin))
21804
21986
  );
21805
21987
  }
21806
21988
 
21807
21989
  .navi_dialog_content {
21808
- min-width: var(--dialog-min-width);
21809
- min-height: var(--dialog-min-height);
21990
+ min-width: var(--layout-min-width);
21991
+ min-height: var(--layout-min-height);
21810
21992
  padding-top: var(
21811
- --dialog-padding-top,
21812
- var(--dialog-padding-y, var(--dialog-padding))
21993
+ --layout-padding-top,
21994
+ var(--layout-padding-y, var(--layout-padding))
21813
21995
  );
21814
21996
  padding-right: var(
21815
- --dialog-padding-right,
21816
- var(--dialog-padding-x, var(--dialog-padding))
21997
+ --layout-padding-right,
21998
+ var(--layout-padding-x, var(--layout-padding))
21817
21999
  );
21818
22000
  padding-bottom: var(
21819
- --dialog-padding-bottom,
21820
- var(--dialog-padding-y, var(--dialog-padding))
22001
+ --layout-padding-bottom,
22002
+ var(--layout-padding-y, var(--layout-padding))
21821
22003
  );
21822
22004
  padding-left: var(
21823
- --dialog-padding-left,
21824
- var(--dialog-padding-x, var(--dialog-padding))
22005
+ --layout-padding-left,
22006
+ var(--layout-padding-x, var(--layout-padding))
21825
22007
  );
21826
- background: var(--dialog-background);
21827
- background-color: var(--dialog-background-color, var(--dialog-background));
21828
- 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);
21829
22011
  border-style: solid;
21830
- border-color: var(--dialog-border-color);
21831
- border-radius: var(--dialog-border-radius);
22012
+ border-color: var(--layout-border-color);
22013
+ border-radius: var(--layout-border-radius);
21832
22014
  }
21833
22015
  `;
21834
- const DialogManagedByCSSVars = {
21835
- margin: "--dialog-margin",
21836
- marginTop: "--dialog-margin-top",
21837
- marginBottom: "--dialog-margin-bottom",
21838
- marginLeft: "--dialog-margin-left",
21839
- marginRight: "--dialog-margin-right",
21840
- borderRadius: "--dialog-border-radius",
21841
- borderWidth: "--dialog-border-width",
21842
- borderColor: "--dialog-border-color",
21843
- background: "--dialog-background",
21844
- backgroundColor: "--dialog-background-color",
21845
- padding: "--dialog-padding",
21846
- paddingTop: "--dialog-padding-top",
21847
- paddingBottom: "--dialog-padding-bottom",
21848
- paddingLeft: "--dialog-padding-left",
21849
- paddingRight: "--dialog-padding-right",
21850
- minWidth: "--dialog-min-width",
21851
- 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"
21852
22034
  };
21853
22035
  const DialogLayout = ({
21854
22036
  children,
21855
- contentAlignX = "center",
21856
- contentAlignY = "center",
22037
+ alignX = "center",
22038
+ alignY = "center",
21857
22039
  ...props
21858
22040
  }) => {
21859
22041
  return jsx(Box, {
21860
22042
  baseClassName: "navi_dialog_layout",
21861
- managedByCSSVars: DialogManagedByCSSVars,
22043
+ CSSVars: DialogLayoutStyleCSSVars,
21862
22044
  visualSelector: ".navi_dialog_content",
21863
22045
  ...props,
21864
22046
  children: jsx(Box, {
21865
22047
  row: true,
21866
22048
  className: "navi_dialog_content",
21867
- contentAlignX: contentAlignX,
21868
- contentAlignY: contentAlignY,
22049
+ alignX: alignX,
22050
+ alignY: alignY,
21869
22051
  children: children
21870
22052
  })
21871
22053
  });
@@ -21874,26 +22056,38 @@ const DialogLayout = ({
21874
22056
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21875
22057
  @layer navi {
21876
22058
  .navi_viewport_layout {
21877
- --padding: 40px;
21878
- --background: white;
22059
+ --layout-padding: 40px;
22060
+ --layout-background: white;
21879
22061
  }
21880
22062
  }
21881
22063
 
21882
22064
  .navi_viewport_layout {
21883
- padding-top: var(--padding-top, var(--padding-y, var(--padding)));
21884
- padding-right: var(--padding-right, var(--padding-x, var(--padding)));
21885
- padding-bottom: var(--padding-bottom, var(--padding-y, var(--padding)));
21886
- padding-left: var(--padding-left, var(--padding-x, var(--padding)));
21887
- 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);
21888
22082
  }
21889
22083
  `;
21890
- const ViewportManagedByCSSVars = {
21891
- padding: "--padding",
21892
- paddingTop: "--padding-top",
21893
- paddingBottom: "--padding-bottom",
21894
- paddingLeft: "--padding-left",
21895
- paddingRight: "--padding-right",
21896
- 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"
21897
22091
  };
21898
22092
  const ViewportLayout = props => {
21899
22093
  return jsx(Box, {
@@ -21902,7 +22096,7 @@ const ViewportLayout = props => {
21902
22096
  height: "100%",
21903
22097
  ...props,
21904
22098
  className: "navi_viewport_layout",
21905
- managedByCSSVars: ViewportManagedByCSSVars
22099
+ styleCSSVars: ViewportLayoutStyleCSSVars
21906
22100
  });
21907
22101
  };
21908
22102
 
@@ -21983,5 +22177,79 @@ const useDependenciesDiff = (inputs) => {
21983
22177
  return diffRef.current;
21984
22178
  };
21985
22179
 
21986
- 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 };
21987
22255
  //# sourceMappingURL=jsenv_navi.js.map