@jsenv/navi 0.12.18 → 0.12.20

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) => {
@@ -10219,6 +10249,10 @@ const LAYOUT_PROPS = {
10219
10249
  box: () => {},
10220
10250
  row: () => {},
10221
10251
  column: () => {},
10252
+
10253
+ absolute: applyToCssPropWhenTruthy("position", "absolute", "static"),
10254
+ relative: applyToCssPropWhenTruthy("position", "relative", "static"),
10255
+ fixed: applyToCssPropWhenTruthy("position", "fixed", "static"),
10222
10256
  };
10223
10257
  const OUTER_SPACING_PROPS = {
10224
10258
  margin: PASS_THROUGH,
@@ -10309,12 +10343,12 @@ const DIMENSION_PROPS = {
10309
10343
  },
10310
10344
  };
10311
10345
  const POSITION_PROPS = {
10312
- // For row, alignX uses auto margins for positioning
10346
+ // For row, selfAlignX uses auto margins for positioning
10313
10347
  // 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"),
10348
+ // When multiple adjacent items have the same auto margin alignment (e.g., selfAlignX="end"),
10315
10349
  // only the first item will be positioned as expected because subsequent items
10316
10350
  // will be positioned relative to the previous item's margins, not the container edge.
10317
- alignX: (value, { parentLayout }) => {
10351
+ selfAlignX: (value, { parentLayout }) => {
10318
10352
  const insideRowLayout =
10319
10353
  parentLayout === "row" || parentLayout === "inline-row";
10320
10354
 
@@ -10341,7 +10375,7 @@ const POSITION_PROPS = {
10341
10375
  }
10342
10376
  return undefined;
10343
10377
  },
10344
- alignY: (value, { parentLayout }) => {
10378
+ selfAlignY: (value, { parentLayout }) => {
10345
10379
  const inlineColumnLayout =
10346
10380
  parentLayout === "column" || parentLayout === "inline-column";
10347
10381
 
@@ -10424,6 +10458,7 @@ const TYPO_PROPS = {
10424
10458
  noWrap: applyToCssPropWhenTruthy("whiteSpace", "nowrap", "normal"),
10425
10459
  pre: applyToCssPropWhenTruthy("whiteSpace", "pre", "normal"),
10426
10460
  preWrap: applyToCssPropWhenTruthy("whiteSpace", "pre-wrap", "normal"),
10461
+ preLine: applyToCssPropWhenTruthy("whiteSpace", "pre-line", "normal"),
10427
10462
  };
10428
10463
  const VISUAL_PROPS = {
10429
10464
  outline: PASS_THROUGH,
@@ -10450,8 +10485,8 @@ const VISUAL_PROPS = {
10450
10485
  cursor: PASS_THROUGH,
10451
10486
  };
10452
10487
  const CONTENT_PROPS = {
10453
- contentAlign: applyOnTwoProps("contentAlignX", "contentAlignY"),
10454
- contentAlignX: (value, { layout }) => {
10488
+ align: applyOnTwoProps("alignX", "alignY"),
10489
+ alignX: (value, { layout }) => {
10455
10490
  if (layout === "row" || layout === "inline-row") {
10456
10491
  if (value === "stretch") {
10457
10492
  return undefined; // this is the default
@@ -10466,7 +10501,7 @@ const CONTENT_PROPS = {
10466
10501
  }
10467
10502
  return { textAlign: value };
10468
10503
  },
10469
- contentAlignY: (value, { layout }) => {
10504
+ alignY: (value, { layout }) => {
10470
10505
  if (layout === "row" || layout === "inline-row") {
10471
10506
  if (value === "start") {
10472
10507
  return undefined;
@@ -10483,7 +10518,7 @@ const CONTENT_PROPS = {
10483
10518
  }
10484
10519
  return { verticalAlign: value };
10485
10520
  },
10486
- contentSpacing: (value, { layout }) => {
10521
+ spacing: (value, { layout }) => {
10487
10522
  if (
10488
10523
  layout === "row" ||
10489
10524
  layout === "column"
@@ -10523,8 +10558,8 @@ const COPIED_ON_VISUAL_CHILD_PROP_SET = new Set([
10523
10558
  "shrink",
10524
10559
  "expandX",
10525
10560
  "expandY",
10526
- "contentAlignX",
10527
- "contentAlignY",
10561
+ "alignX",
10562
+ "alignY",
10528
10563
  ]);
10529
10564
  const HANDLED_BY_VISUAL_CHILD_PROP_SET = new Set([
10530
10565
  ...INNER_SPACING_PROP_NAME_SET,
@@ -11190,7 +11225,7 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
11190
11225
  `;
11191
11226
  const PSEUDO_CLASSES_DEFAULT = [];
11192
11227
  const PSEUDO_ELEMENTS_DEFAULT = [];
11193
- const MANAGED_BY_CSS_VARS_DEFAULT = {};
11228
+ const STYLE_CSS_VARS_DEFAULT = {};
11194
11229
  const Box = props => {
11195
11230
  const {
11196
11231
  as = "div",
@@ -11199,7 +11234,7 @@ const Box = props => {
11199
11234
  baseStyle,
11200
11235
  // style management
11201
11236
  style,
11202
- managedByCSSVars = MANAGED_BY_CSS_VARS_DEFAULT,
11237
+ styleCSSVars = STYLE_CSS_VARS_DEFAULT,
11203
11238
  basePseudoState,
11204
11239
  pseudoState,
11205
11240
  // for demo purposes it's possible to control pseudo state from props
@@ -11230,7 +11265,7 @@ const Box = props => {
11230
11265
  column
11231
11266
  } = rest;
11232
11267
  if (box === "auto") {
11233
- box = Boolean(rest.contentAlignX || rest.contentAlignY);
11268
+ box = Boolean(rest.alignX || rest.alignY);
11234
11269
  }
11235
11270
  if (box) {
11236
11271
  if (inline === undefined) {
@@ -11265,7 +11300,7 @@ const Box = props => {
11265
11300
  // Layout and alignment props
11266
11301
  parentLayout, layout,
11267
11302
  // Style context dependencies
11268
- managedByCSSVars, pseudoClasses, pseudoElements,
11303
+ styleCSSVars, pseudoClasses, pseudoElements,
11269
11304
  // Selectors
11270
11305
  visualSelector, pseudoStateSelector];
11271
11306
  let innerPseudoState;
@@ -11305,20 +11340,22 @@ const Box = props => {
11305
11340
  } else {
11306
11341
  innerPseudoState = PSEUDO_STATE_DEFAULT;
11307
11342
  }
11343
+ const boxStyles = {};
11308
11344
  const styleContext = {
11309
11345
  parentLayout,
11310
11346
  layout,
11311
- managedByCSSVars,
11347
+ styleCSSVars,
11312
11348
  pseudoState: innerPseudoState,
11313
11349
  pseudoClasses,
11314
- pseudoElements
11350
+ pseudoElements,
11351
+ remainingProps: rest,
11352
+ styles: boxStyles
11315
11353
  };
11316
- const boxStyles = {};
11317
11354
  let boxPseudoNamedStyles = PSEUDO_NAMED_STYLES_DEFAULT;
11318
11355
  const shouldForwardAllToChild = visualSelector && pseudoStateSelector;
11319
11356
  const addStyle = (value, name, stylesTarget, context) => {
11320
11357
  styleDeps.push(value); // impact box style -> add to deps
11321
- const cssVar = managedByCSSVars[name];
11358
+ const cssVar = styleCSSVars[name];
11322
11359
  const mergedValue = prepareStyleValue(stylesTarget[name], value, name, context);
11323
11360
  if (cssVar) {
11324
11361
  stylesTarget[cssVar] = mergedValue;
@@ -11332,7 +11369,7 @@ const Box = props => {
11332
11369
  addStyle(value, name, stylesTarget, context);
11333
11370
  return false;
11334
11371
  }
11335
- const cssVar = managedByCSSVars[name];
11372
+ const cssVar = styleCSSVars[name];
11336
11373
  if (cssVar) {
11337
11374
  // css var wins over visual child handling
11338
11375
  addStyle(value, name, stylesTarget, context);
@@ -11423,9 +11460,9 @@ const Box = props => {
11423
11460
  for (const key of pseudoStyleKeys) {
11424
11461
  const pseudoStyleContext = {
11425
11462
  ...styleContext,
11426
- managedByCSSVars: {
11427
- ...managedByCSSVars,
11428
- ...managedByCSSVars[key]
11463
+ styleCSSVars: {
11464
+ ...styleCSSVars,
11465
+ ...styleCSSVars[key]
11429
11466
  },
11430
11467
  pseudoName: key
11431
11468
  };
@@ -13613,8 +13650,8 @@ const INSERTED_SPACE = jsx("span", {
13613
13650
  "data-navi-space": "",
13614
13651
  children: " "
13615
13652
  });
13616
- const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13617
- if (contentSpacing === "pre") {
13653
+ const applySpacingOnTextChildren = (children, spacing) => {
13654
+ if (spacing === "pre") {
13618
13655
  return children;
13619
13656
  }
13620
13657
  if (!children) {
@@ -13641,7 +13678,7 @@ const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13641
13678
  }
13642
13679
  return false;
13643
13680
  };
13644
- const separator = contentSpacing === undefined || contentSpacing === " " ? INSERTED_SPACE : contentSpacing;
13681
+ const separator = spacing === undefined || spacing === " " ? INSERTED_SPACE : spacing;
13645
13682
  const childrenWithGap = [];
13646
13683
  let i = 0;
13647
13684
  while (true) {
@@ -13652,7 +13689,7 @@ const applyContentSpacingOnTextChildren = (children, contentSpacing) => {
13652
13689
  break;
13653
13690
  }
13654
13691
 
13655
- // Check if we should skip adding contentSpacing
13692
+ // Check if we should skip adding spacing
13656
13693
  const currentChild = childArray[i - 1];
13657
13694
  const nextChild = childArray[i];
13658
13695
  const shouldSkipSpacing = endsWithWhitespace(currentChild) || startsWithWhitespace(nextChild);
@@ -13684,19 +13721,22 @@ const Text = props => {
13684
13721
  };
13685
13722
  const TextOverflow = ({
13686
13723
  noWrap,
13687
- pre = !noWrap,
13688
13724
  children,
13689
13725
  ...rest
13690
13726
  }) => {
13691
13727
  const [OverflowPinnedElement, setOverflowPinnedElement] = useState(null);
13692
13728
  return jsx(Text, {
13729
+ column: true,
13693
13730
  as: "div",
13694
- pre: pre,
13695
13731
  nowWrap: noWrap,
13732
+ pre: !noWrap
13733
+ // For paragraph we prefer to keep lines and only hide unbreakable long sections
13734
+ ,
13735
+ preLine: rest.as === "p",
13696
13736
  ...rest,
13697
13737
  className: "navi_text_overflow",
13698
13738
  expandX: true,
13699
- contentSpacing: "pre",
13739
+ spacing: "pre",
13700
13740
  children: jsxs("span", {
13701
13741
  className: "navi_text_overflow_wrapper",
13702
13742
  children: [jsx(OverflowPinnedElementContext.Provider, {
@@ -13729,7 +13769,7 @@ const TextOverflowPinned = ({
13729
13769
  return text;
13730
13770
  };
13731
13771
  const TextBasic = ({
13732
- contentSpacing = " ",
13772
+ spacing = " ",
13733
13773
  selectRange,
13734
13774
  children,
13735
13775
  ...rest
@@ -13742,7 +13782,7 @@ const TextBasic = ({
13742
13782
  as: "span",
13743
13783
  ...rest,
13744
13784
  baseClassName: "navi_text",
13745
- children: applyContentSpacingOnTextChildren(children, contentSpacing)
13785
+ children: applySpacingOnTextChildren(children, spacing)
13746
13786
  });
13747
13787
  };
13748
13788
 
@@ -13752,6 +13792,10 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13752
13792
  box-sizing: border-box;
13753
13793
  }
13754
13794
 
13795
+ .navi_icon[data-interactive] {
13796
+ cursor: pointer;
13797
+ }
13798
+
13755
13799
  .navi_icon_char_slot {
13756
13800
  opacity: 0;
13757
13801
  cursor: default;
@@ -13789,6 +13833,15 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13789
13833
  width: auto;
13790
13834
  height: 100%;
13791
13835
  }
13836
+
13837
+ .navi_icon[data-icon-char] svg,
13838
+ .navi_icon[data-icon-char] img {
13839
+ width: 100%;
13840
+ height: 100%;
13841
+ }
13842
+ .navi_icon[data-icon-char] svg {
13843
+ overflow: visible;
13844
+ }
13792
13845
  `;
13793
13846
  const Icon = ({
13794
13847
  href,
@@ -13802,6 +13855,7 @@ const Icon = ({
13802
13855
  "aria-label": ariaLabel,
13803
13856
  role,
13804
13857
  decorative = false,
13858
+ onClick,
13805
13859
  ...props
13806
13860
  }) => {
13807
13861
  const innerChildren = href ? jsx("svg", {
@@ -13825,6 +13879,8 @@ const Icon = ({
13825
13879
  baseClassName: "navi_icon",
13826
13880
  "data-width": width,
13827
13881
  "data-height": height,
13882
+ "data-interactive": onClick ? "" : undefined,
13883
+ onClick: onClick,
13828
13884
  children: innerChildren
13829
13885
  });
13830
13886
  }
@@ -13840,10 +13896,12 @@ const Icon = ({
13840
13896
  ...ariaProps,
13841
13897
  box: box,
13842
13898
  className: withPropsClassName("navi_icon", className),
13843
- contentSpacing: "pre",
13899
+ spacing: "pre",
13844
13900
  "data-icon-char": "",
13845
13901
  "data-width": width,
13846
13902
  "data-height": height,
13903
+ "data-interactive": onClick ? "" : undefined,
13904
+ onClick: onClick,
13847
13905
  children: [jsx("span", {
13848
13906
  className: "navi_icon_char_slot",
13849
13907
  "aria-hidden": "true",
@@ -13851,7 +13909,7 @@ const Icon = ({
13851
13909
  }), jsx("span", {
13852
13910
  className: "navi_icon_foreground",
13853
13911
  children: jsx(Text, {
13854
- contentSpacing: "pre",
13912
+ spacing: "pre",
13855
13913
  children: innerChildren
13856
13914
  })
13857
13915
  })]
@@ -13863,6 +13921,7 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13863
13921
  .navi_link {
13864
13922
  --link-border-radius: 2px;
13865
13923
  --link-outline-color: var(--navi-focus-outline-color);
13924
+ --link-loader-color: var(--navi-loader-color);
13866
13925
  --link-color: rgb(0, 0, 238);
13867
13926
  --link-color-visited: light-dark(#6a1b9a, #ab47bc);
13868
13927
  --link-color-active: red;
@@ -13934,7 +13993,7 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
13934
13993
  opacity: 0.5;
13935
13994
  }
13936
13995
  `;
13937
- const LinkManagedByCSSVars = {
13996
+ const LinkStyleCSSVars = {
13938
13997
  "outlineColor": "--link-outline-color",
13939
13998
  "borderRadius": "--link-border-radius",
13940
13999
  "color": "--link-color",
@@ -13999,7 +14058,7 @@ const LinkPlain = props => {
13999
14058
  blankTargetIcon,
14000
14059
  anchorIcon,
14001
14060
  icon,
14002
- contentSpacing,
14061
+ spacing,
14003
14062
  children,
14004
14063
  ...rest
14005
14064
  } = props;
@@ -14035,9 +14094,9 @@ const LinkPlain = props => {
14035
14094
  const innerBlankTargetIcon = blankTargetIcon === undefined ? innerTarget === "_blank" : blankTargetIcon;
14036
14095
  const innerAnchorIcon = anchorIcon === undefined ? targetIsAnchor : anchorIcon;
14037
14096
  if (innerBlankTargetIcon) {
14038
- innerIcon = innerBlankTargetIcon === true ? jsx(BlankTargetLinkSvg, {}) : innerBlankTargetIcon;
14097
+ innerIcon = innerBlankTargetIcon === true ? jsx(LinkBlankTargetSvg, {}) : innerBlankTargetIcon;
14039
14098
  } else if (innerAnchorIcon) {
14040
- innerIcon = innerAnchorIcon === true ? jsx(AnchorLinkSvg, {}) : anchorIcon;
14099
+ innerIcon = innerAnchorIcon === true ? jsx(LinkAnchorSvg, {}) : anchorIcon;
14041
14100
  }
14042
14101
  }
14043
14102
  } else {
@@ -14053,11 +14112,11 @@ const LinkPlain = props => {
14053
14112
  target: innerTarget === "_self" ? undefined : target,
14054
14113
  "aria-busy": loading,
14055
14114
  inert: disabled,
14056
- contentSpacing: "pre"
14115
+ spacing: "pre"
14057
14116
  // Visual
14058
14117
  ,
14059
14118
  baseClassName: "navi_link",
14060
- managedByCSSVars: LinkManagedByCSSVars,
14119
+ styleCSSVars: LinkStyleCSSVars,
14061
14120
  pseudoClasses: LinkPseudoClasses,
14062
14121
  pseudoElements: LinkPseudoElements,
14063
14122
  basePseudoState: {
@@ -14092,40 +14151,13 @@ const LinkPlain = props => {
14092
14151
  },
14093
14152
  children: [jsx(LoaderBackground, {
14094
14153
  loading: loading,
14095
- color: "light-dark(#355fcc, #3b82f6)"
14096
- }), applyContentSpacingOnTextChildren(children, contentSpacing), innerIcon && jsx(Icon, {
14154
+ color: "var(--link-loader-color)"
14155
+ }), applySpacingOnTextChildren(children, spacing), innerIcon && jsx(Icon, {
14097
14156
  marginLeft: "xxs",
14098
14157
  children: innerIcon
14099
14158
  })]
14100
14159
  });
14101
14160
  };
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
14161
  const PhoneSvg = () => {
14130
14162
  return jsx("svg", {
14131
14163
  viewBox: "0 0 24 24",
@@ -15480,7 +15512,7 @@ const InputCheckbox = props => {
15480
15512
  })
15481
15513
  });
15482
15514
  };
15483
- const CheckboxManagedByCSSVars = {
15515
+ const CheckboxStyleCSSVars = {
15484
15516
  "outlineWidth": "--outline-width",
15485
15517
  "borderWidth": "--border-width",
15486
15518
  "borderRadius": "--border-radius",
@@ -15598,7 +15630,7 @@ const InputCheckboxBasic = props => {
15598
15630
  ref: ref,
15599
15631
  baseClassName: "navi_checkbox",
15600
15632
  pseudoStateSelector: ".navi_native_field",
15601
- managedByCSSVars: CheckboxManagedByCSSVars,
15633
+ styleCSSVars: CheckboxStyleCSSVars,
15602
15634
  pseudoClasses: CheckboxPseudoClasses,
15603
15635
  pseudoElements: CheckboxPseudoElements,
15604
15636
  basePseudoState: {
@@ -15887,7 +15919,7 @@ const InputRadio = props => {
15887
15919
  })
15888
15920
  });
15889
15921
  };
15890
- const RadioManagedByCSSVars = {
15922
+ const RadioStyleCSSVars = {
15891
15923
  "outlineWidth": "--outline-width",
15892
15924
  "borderWidth": "--border-width",
15893
15925
  "borderRadius": "--border-radius",
@@ -16031,7 +16063,7 @@ const InputRadioBasic = props => {
16031
16063
  ref: ref,
16032
16064
  baseClassName: "navi_radio",
16033
16065
  pseudoStateSelector: ".navi_native_field",
16034
- managedByCSSVars: RadioManagedByCSSVars,
16066
+ styleCSSVars: RadioStyleCSSVars,
16035
16067
  pseudoClasses: RadioPseudoClasses,
16036
16068
  pseudoElements: RadioPseudoElements,
16037
16069
  basePseudoState: {
@@ -16216,7 +16248,7 @@ const InputTextual = props => {
16216
16248
  })
16217
16249
  });
16218
16250
  };
16219
- const InputManagedByCSSVars = {
16251
+ const InputStyleCSSVars = {
16220
16252
  "outlineWidth": "--outline-width",
16221
16253
  "borderWidth": "--border-width",
16222
16254
  "borderRadius": "--border-radius",
@@ -16318,7 +16350,7 @@ const InputTextualBasic = props => {
16318
16350
  as: "span",
16319
16351
  box: true,
16320
16352
  baseClassName: "navi_input",
16321
- managedByCSSVars: InputManagedByCSSVars,
16353
+ styleCSSVars: InputStyleCSSVars,
16322
16354
  pseudoStateSelector: ".navi_native_input",
16323
16355
  visualSelector: ".navi_native_input",
16324
16356
  basePseudoState: {
@@ -16813,6 +16845,11 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
16813
16845
  --x-button-background-color: var(--button-background-color-hover);
16814
16846
  --x-button-color: var(--button-color-hover);
16815
16847
  }
16848
+ .navi_button[data-nohover] {
16849
+ --x-button-border-color: var(--button-border-color);
16850
+ --x-button-background-color: var(--button-background-color);
16851
+ --x-button-color: var(--button-color);
16852
+ }
16816
16853
  /* Active */
16817
16854
  .navi_button[data-active] {
16818
16855
  --x-button-outline-color: var(--button-border-color-active);
@@ -16872,6 +16909,9 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
16872
16909
  .navi_button[data-discrete][data-hover] {
16873
16910
  --x-button-border-color: var(--button-border-color-hover);
16874
16911
  }
16912
+ .navi_button[data-discrete][data-nohover] {
16913
+ --x-button-border-color: transparent;
16914
+ }
16875
16915
  .navi_button[data-discrete][data-readonly] {
16876
16916
  --x-button-border-color: transparent;
16877
16917
  }
@@ -16891,7 +16931,7 @@ const Button = props => {
16891
16931
  WithActionInsideForm: ButtonWithActionInsideForm
16892
16932
  });
16893
16933
  };
16894
- const ButtonManagedByCSSVars = {
16934
+ const ButtonStyleCSSVars = {
16895
16935
  "outlineWidth": "--button-outline-width",
16896
16936
  "borderWidth": "--button-border-width",
16897
16937
  "borderRadius": "--button-border-radius",
@@ -16968,7 +17008,7 @@ const ButtonBasic = props => {
16968
17008
  // style management
16969
17009
  ,
16970
17010
  baseClassName: "navi_button",
16971
- managedByCSSVars: ButtonManagedByCSSVars,
17011
+ styleCSSVars: ButtonStyleCSSVars,
16972
17012
  pseudoClasses: ButtonPseudoClasses,
16973
17013
  pseudoElements: ButtonPseudoElements,
16974
17014
  basePseudoState: {
@@ -16981,7 +17021,7 @@ const ButtonBasic = props => {
16981
17021
  children: [jsx(LoaderBackground, {
16982
17022
  loading: innerLoading,
16983
17023
  inset: -1,
16984
- color: "var(--loader-color)"
17024
+ color: "var(--button-loader-color)"
16985
17025
  }), renderButtonContentMemoized]
16986
17026
  });
16987
17027
  };
@@ -20967,8 +21007,8 @@ const TableCell = forwardRef((props, ref) => {
20967
21007
  style,
20968
21008
  cursor,
20969
21009
  bold,
20970
- alignX = column.alignX,
20971
- alignY = column.alignY,
21010
+ selfAlignX = column.selfAlignX,
21011
+ selfAlignY = column.selfAlignY,
20972
21012
  backgroundColor = column.backgroundColor || row.backgroundColor,
20973
21013
  children
20974
21014
  } = props;
@@ -21082,8 +21122,8 @@ const TableCell = forwardRef((props, ref) => {
21082
21122
  if (rowHeight !== undefined) {
21083
21123
  innerStyle.maxHeight = `${rowHeight}px`;
21084
21124
  }
21085
- const innerAlignX = alignX || isFirstRow ? "center" : "start";
21086
- const innerAlignY = alignY || isFirstColumn ? "center" : "start";
21125
+ const innerAlignX = selfAlignX || isFirstRow ? "center" : "start";
21126
+ const innerAlignY = selfAlignY || isFirstColumn ? "center" : "start";
21087
21127
  const innerBold = bold || containSelectedCell;
21088
21128
  if (innerBold) {
21089
21129
  innerStyle.fontWeight = "bold";
@@ -21195,7 +21235,7 @@ const RowNumberTableCell = props => {
21195
21235
  const isTopLeftCell = columnIndex === 0 && rowIndex === 0;
21196
21236
  return jsx(TableCell, {
21197
21237
  canSelectAll: isTopLeftCell,
21198
- alignX: "left",
21238
+ selfAlignX: "left",
21199
21239
  ...props,
21200
21240
  children: isTopLeftCell ? "" : rowIndex
21201
21241
  });
@@ -21546,26 +21586,43 @@ installImportMetaCss(import.meta);import.meta.css = /* css */`
21546
21586
  }
21547
21587
  }
21548
21588
  .navi_badge_count {
21589
+ --spacing: 0.3em;
21590
+ --size: 1em;
21591
+ --x-outer-size: calc(var(--size) + var(--spacing));
21592
+ --x-offset-top: calc(0.5 * (var(--x-outer-size) - 1em));
21593
+
21549
21594
  display: inline-block;
21550
21595
  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)));
21596
+ min-width: var(--x-outer-size);
21597
+ height: var(--x-outer-size);
21598
+ max-height: var(--x-outer-size);
21599
+ margin-top: calc(-1 * var(--x-offset-top));
21600
+ padding-right: var(--spacing);
21601
+ padding-left: var(--spacing);
21559
21602
  color: var(--color, var(--color-contrasting));
21560
21603
  text-align: center;
21561
- line-height: 1.5em;
21562
- vertical-align: middle;
21604
+ line-height: var(--x-outer-size);
21605
+ /* vertical-align: middle; */
21563
21606
  background: var(--background);
21564
21607
  background-color: var(--background-color, var(--background));
21565
21608
  border-radius: var(--border-radius, 1em);
21566
21609
  }
21610
+ .navi_badge_count[data-single-digit] {
21611
+ --spacing: 0em;
21612
+ --size: 1.3em;
21613
+ }
21614
+ .navi_badge_count[data-two-digits] {
21615
+ --spacing: 0em;
21616
+ --size: 1.6em;
21617
+ }
21618
+
21619
+ .navi_count_badge_overflow {
21620
+ position: relative;
21621
+ top: -0.4em;
21622
+ font-size: 0.8em;
21623
+ }
21567
21624
  `;
21568
- const BadgeManagedByCSSVars = {
21625
+ const BadgeStyleCSSVars = {
21569
21626
  borderWidth: "--border-width",
21570
21627
  borderRadius: "--border-radius",
21571
21628
  paddingRight: "--padding-right",
@@ -21575,43 +21632,86 @@ const BadgeManagedByCSSVars = {
21575
21632
  borderColor: "--border-color",
21576
21633
  color: "--color"
21577
21634
  };
21635
+ const BadgeCountOverflow = () => jsx("span", {
21636
+ className: "navi_count_badge_overflow",
21637
+ children: "+"
21638
+ });
21578
21639
  const BadgeCount = ({
21579
21640
  children,
21580
- bold = true,
21581
21641
  max,
21642
+ maxElement = jsx(BadgeCountOverflow, {}),
21582
21643
  ...props
21583
21644
  }) => {
21584
21645
  const defaultRef = useRef();
21585
21646
  const ref = props.ref || defaultRef;
21586
-
21647
+ const numericValue = typeof children === "string" ? parseInt(children, 10) : children;
21587
21648
  // Calculer la valeur à afficher en fonction du paramètre max
21588
21649
  const getDisplayValue = () => {
21589
21650
  if (max === undefined) {
21590
21651
  return children;
21591
21652
  }
21592
- const numericValue = typeof children === "string" ? parseInt(children, 10) : children;
21593
21653
  const numericMax = typeof max === "string" ? parseInt(max, 10) : max;
21594
21654
  if (isNaN(numericValue) || isNaN(numericMax)) {
21595
21655
  return children;
21596
21656
  }
21597
21657
  if (numericValue > numericMax) {
21598
- return `${numericMax}+`;
21658
+ return jsxs(Fragment, {
21659
+ children: [children, maxElement]
21660
+ });
21599
21661
  }
21600
21662
  return children;
21601
21663
  };
21602
21664
  const displayValue = getDisplayValue();
21603
21665
  useContrastingColor(ref);
21666
+ const digitCount = String(numericValue).length;
21604
21667
  return jsx(Text, {
21605
- ...props,
21606
21668
  ref: ref,
21607
21669
  className: "navi_badge_count",
21608
- bold: bold,
21609
- managedByCSSVars: BadgeManagedByCSSVars,
21610
- contentSpacing: "pre",
21670
+ bold: true,
21671
+ "data-single-digit": digitCount === 1 ? "" : undefined,
21672
+ "data-two-digits": digitCount === 2 ? "" : undefined,
21673
+ ...props,
21674
+ styleCSSVars: BadgeStyleCSSVars,
21675
+ spacing: "pre",
21611
21676
  children: displayValue
21612
21677
  });
21613
21678
  };
21614
21679
 
21680
+ installImportMetaCss(import.meta);import.meta.css = /* css */`
21681
+ @layer navi {
21682
+ .navi_caption {
21683
+ --color: #6b7280;
21684
+ }
21685
+
21686
+ @media (prefers-color-scheme: dark) {
21687
+ .navi_caption {
21688
+ --color: rgb(102, 102, 102);
21689
+ }
21690
+ }
21691
+ }
21692
+
21693
+ .navi_caption {
21694
+ color: var(--color);
21695
+ }
21696
+ `;
21697
+ const CaptionStyleCSSVars = {
21698
+ color: "--color"
21699
+ };
21700
+ const Caption = ({
21701
+ className,
21702
+ ...rest
21703
+ }) => {
21704
+ return jsx(Text, {
21705
+ as: "p",
21706
+ size: "xs",
21707
+ marginTop: "sm",
21708
+ marginBottom: "sm",
21709
+ className: withPropsClassName("navi_caption", className),
21710
+ ...rest,
21711
+ styleCSSVars: CaptionStyleCSSVars
21712
+ });
21713
+ };
21714
+
21615
21715
  const Code = props => {
21616
21716
  return jsx(Text, {
21617
21717
  ...props,
@@ -21619,6 +21719,57 @@ const Code = props => {
21619
21719
  });
21620
21720
  };
21621
21721
 
21722
+ const CloseSvg = () => {
21723
+ return jsx("svg", {
21724
+ viewBox: "0 0 24 24",
21725
+ fill: "none",
21726
+ xmlns: "http://www.w3.org/2000/svg",
21727
+ children: jsx("path", {
21728
+ "fill-rule": "evenodd",
21729
+ "clip-rule": "evenodd",
21730
+ 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",
21731
+ fill: "currentColor"
21732
+ })
21733
+ });
21734
+ };
21735
+
21736
+ const SuccessSvg = () => {
21737
+ return jsx("svg", {
21738
+ viewBox: "0 0 16 16",
21739
+ fill: "currentColor",
21740
+ children: jsx("path", {
21741
+ 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"
21742
+ })
21743
+ });
21744
+ };
21745
+ const ErrorSvg = () => {
21746
+ return jsx("svg", {
21747
+ viewBox: "0 0 16 16",
21748
+ fill: "currentColor",
21749
+ children: jsx("path", {
21750
+ 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"
21751
+ })
21752
+ });
21753
+ };
21754
+ const InfoSvg = () => {
21755
+ return jsx("svg", {
21756
+ viewBox: "0 0 16 16",
21757
+ fill: "currentColor",
21758
+ children: jsx("path", {
21759
+ 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"
21760
+ })
21761
+ });
21762
+ };
21763
+ const WarningSvg = () => {
21764
+ return jsx("svg", {
21765
+ viewBox: "0 0 16 16",
21766
+ fill: "currentColor",
21767
+ children: jsx("path", {
21768
+ 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"
21769
+ })
21770
+ });
21771
+ };
21772
+
21622
21773
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21623
21774
  @layer navi {
21624
21775
  .navi_message_box {
@@ -21711,17 +21862,27 @@ const MessageBoxReportTitleChildContext = createContext();
21711
21862
  const MessageBox = ({
21712
21863
  level = "info",
21713
21864
  padding = "sm",
21865
+ icon,
21714
21866
  leftStripe,
21715
21867
  children,
21716
- contentSpacing,
21868
+ onClose,
21717
21869
  ...rest
21718
21870
  }) => {
21719
21871
  const [hasTitleChild, setHasTitleChild] = useState(false);
21720
21872
  const innerLeftStripe = leftStripe === undefined ? hasTitleChild : leftStripe;
21721
- return jsx(Text, {
21873
+ if (icon === true) {
21874
+ icon = level === "info" ? jsx(InfoSvg, {}) : level === "success" ? jsx(SuccessSvg, {}) : level === "warning" ? jsx(WarningSvg, {}) : level === "error" ? jsx(ErrorSvg, {}) : null;
21875
+ } else if (typeof icon === "function") {
21876
+ const Comp = icon;
21877
+ icon = jsx(Comp, {});
21878
+ }
21879
+ return jsx(Box, {
21722
21880
  as: "div",
21723
21881
  role: level === "info" ? "status" : "alert",
21724
21882
  "data-left-stripe": innerLeftStripe ? "" : undefined,
21883
+ column: true,
21884
+ alignY: "start",
21885
+ spacing: "sm",
21725
21886
  ...rest,
21726
21887
  className: withPropsClassName("navi_message_box", rest.className),
21727
21888
  padding: padding,
@@ -21734,9 +21895,31 @@ const MessageBox = ({
21734
21895
  },
21735
21896
  children: jsx(MessageBoxLevelContext.Provider, {
21736
21897
  value: level,
21737
- children: jsx(MessageBoxReportTitleChildContext.Provider, {
21898
+ children: jsxs(MessageBoxReportTitleChildContext.Provider, {
21738
21899
  value: setHasTitleChild,
21739
- children: applyContentSpacingOnTextChildren(children, contentSpacing)
21900
+ children: [icon && jsx(Icon, {
21901
+ color: "var(--x-color)",
21902
+ children: icon
21903
+ }), jsx(Text, {
21904
+ children: children
21905
+ }), onClose && jsx(Button, {
21906
+ action: onClose,
21907
+ discrete: true,
21908
+ border: "none",
21909
+ "data-nohover": "",
21910
+ alignX: "center",
21911
+ alignY: "center",
21912
+ width: "1em",
21913
+ height: "1em",
21914
+ pseudoStyle: {
21915
+ ":hover": {
21916
+ backgroundColor: "rgba(0, 0, 0, 0.1)"
21917
+ }
21918
+ },
21919
+ children: jsx(Icon, {
21920
+ children: jsx(CloseSvg, {})
21921
+ })
21922
+ })]
21740
21923
  })
21741
21924
  })
21742
21925
  });
@@ -21788,97 +21971,97 @@ const Svg = props => {
21788
21971
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21789
21972
  @layer navi {
21790
21973
  .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;
21974
+ --layout-margin: 30px;
21975
+ --layout-padding: 20px;
21976
+ --layout-background: white;
21977
+ --layout-border-width: 2px;
21978
+ --layout-border-color: lightgrey;
21979
+ --layout-border-radius: 10px;
21980
+ --layout-min-width: 300px;
21981
+ --layout-min-height: auto;
21799
21982
  }
21800
21983
  }
21801
21984
  .navi_dialog_layout {
21802
21985
  padding-top: var(
21803
- --dialog-margin-top,
21804
- var(--dialog-margin-y, var(--dialog-margin))
21986
+ --layout-margin-top,
21987
+ var(--layout-margin-y, var(--layout-margin))
21805
21988
  );
21806
21989
  padding-right: var(
21807
- --dialog-margin-right,
21808
- var(--dialog-margin-x, var(--dialog-margin))
21990
+ --layout-margin-right,
21991
+ var(--layout-margin-x, var(--layout-margin))
21809
21992
  );
21810
21993
  padding-bottom: var(
21811
- --dialog-margin-bottom,
21812
- var(--dialog-margin-y, var(--dialog-margin))
21994
+ --layout-margin-bottom,
21995
+ var(--layout-margin-y, var(--layout-margin))
21813
21996
  );
21814
21997
  padding-left: var(
21815
- --dialog-margin-left,
21816
- var(--dialog-margin-x, var(--dialog-margin))
21998
+ --layout-margin-left,
21999
+ var(--layout-margin-x, var(--layout-margin))
21817
22000
  );
21818
22001
  }
21819
22002
 
21820
22003
  .navi_dialog_content {
21821
- min-width: var(--dialog-min-width);
21822
- min-height: var(--dialog-min-height);
22004
+ min-width: var(--layout-min-width);
22005
+ min-height: var(--layout-min-height);
21823
22006
  padding-top: var(
21824
- --dialog-padding-top,
21825
- var(--dialog-padding-y, var(--dialog-padding))
22007
+ --layout-padding-top,
22008
+ var(--layout-padding-y, var(--layout-padding))
21826
22009
  );
21827
22010
  padding-right: var(
21828
- --dialog-padding-right,
21829
- var(--dialog-padding-x, var(--dialog-padding))
22011
+ --layout-padding-right,
22012
+ var(--layout-padding-x, var(--layout-padding))
21830
22013
  );
21831
22014
  padding-bottom: var(
21832
- --dialog-padding-bottom,
21833
- var(--dialog-padding-y, var(--dialog-padding))
22015
+ --layout-padding-bottom,
22016
+ var(--layout-padding-y, var(--layout-padding))
21834
22017
  );
21835
22018
  padding-left: var(
21836
- --dialog-padding-left,
21837
- var(--dialog-padding-x, var(--dialog-padding))
22019
+ --layout-padding-left,
22020
+ var(--layout-padding-x, var(--layout-padding))
21838
22021
  );
21839
- background: var(--dialog-background);
21840
- background-color: var(--dialog-background-color, var(--dialog-background));
21841
- border-width: var(--dialog-border-width);
22022
+ background: var(--layout-background);
22023
+ background-color: var(--layout-background-color, var(--layout-background));
22024
+ border-width: var(--layout-border-width);
21842
22025
  border-style: solid;
21843
- border-color: var(--dialog-border-color);
21844
- border-radius: var(--dialog-border-radius);
22026
+ border-color: var(--layout-border-color);
22027
+ border-radius: var(--layout-border-radius);
21845
22028
  }
21846
22029
  `;
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"
22030
+ const DialogLayoutStyleCSSVars = {
22031
+ margin: "--layout-margin",
22032
+ marginTop: "--layout-margin-top",
22033
+ marginBottom: "--layout-margin-bottom",
22034
+ marginLeft: "--layout-margin-left",
22035
+ marginRight: "--layout-margin-right",
22036
+ borderRadius: "--layout-border-radius",
22037
+ borderWidth: "--layout-border-width",
22038
+ borderColor: "--layout-border-color",
22039
+ background: "--layout-background",
22040
+ backgroundColor: "--layout-background-color",
22041
+ padding: "--layout-padding",
22042
+ paddingTop: "--layout-padding-top",
22043
+ paddingBottom: "--layout-padding-bottom",
22044
+ paddingLeft: "--layout-padding-left",
22045
+ paddingRight: "--layout-padding-right",
22046
+ minWidth: "--layout-min-width",
22047
+ minHeight: "--layout-min-height"
21865
22048
  };
21866
22049
  const DialogLayout = ({
21867
22050
  children,
21868
- contentAlignX = "center",
21869
- contentAlignY = "center",
22051
+ alignX = "center",
22052
+ alignY = "center",
21870
22053
  ...props
21871
22054
  }) => {
21872
22055
  return jsx(Box, {
21873
22056
  baseClassName: "navi_dialog_layout",
21874
- managedByCSSVars: DialogManagedByCSSVars,
22057
+ CSSVars: DialogLayoutStyleCSSVars,
21875
22058
  visualSelector: ".navi_dialog_content",
21876
22059
  ...props,
21877
22060
  children: jsx(Box, {
21878
22061
  row: true,
21879
22062
  className: "navi_dialog_content",
21880
- contentAlignX: contentAlignX,
21881
- contentAlignY: contentAlignY,
22063
+ alignX: alignX,
22064
+ alignY: alignY,
21882
22065
  children: children
21883
22066
  })
21884
22067
  });
@@ -21887,26 +22070,38 @@ const DialogLayout = ({
21887
22070
  installImportMetaCss(import.meta);import.meta.css = /* css */`
21888
22071
  @layer navi {
21889
22072
  .navi_viewport_layout {
21890
- --padding: 40px;
21891
- --background: white;
22073
+ --layout-padding: 40px;
22074
+ --layout-background: white;
21892
22075
  }
21893
22076
  }
21894
22077
 
21895
22078
  .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);
22079
+ padding-top: var(
22080
+ --layout-padding-top,
22081
+ var(--layout-padding-y, var(--layout-padding))
22082
+ );
22083
+ padding-right: var(
22084
+ --layout-padding-right,
22085
+ var(--layout-padding-x, var(--layout-padding))
22086
+ );
22087
+ padding-bottom: var(
22088
+ --layout-padding-bottom,
22089
+ var(--layout-padding-y, var(--layout-padding))
22090
+ );
22091
+ padding-left: var(
22092
+ --layout-padding-left,
22093
+ var(--layout-padding-x, var(--layout-padding))
22094
+ );
22095
+ background: var(--layout-background);
21901
22096
  }
21902
22097
  `;
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"
22098
+ const ViewportLayoutStyleCSSVars = {
22099
+ padding: "--layout-padding",
22100
+ paddingTop: "--layout-padding-top",
22101
+ paddingBottom: "--layout-padding-bottom",
22102
+ paddingLeft: "--layout-padding-left",
22103
+ paddingRight: "--layout-padding-right",
22104
+ background: "--layout-background"
21910
22105
  };
21911
22106
  const ViewportLayout = props => {
21912
22107
  return jsx(Box, {
@@ -21915,7 +22110,7 @@ const ViewportLayout = props => {
21915
22110
  height: "100%",
21916
22111
  ...props,
21917
22112
  className: "navi_viewport_layout",
21918
- managedByCSSVars: ViewportManagedByCSSVars
22113
+ styleCSSVars: ViewportLayoutStyleCSSVars
21919
22114
  });
21920
22115
  };
21921
22116
 
@@ -21996,5 +22191,79 @@ const useDependenciesDiff = (inputs) => {
21996
22191
  return diffRef.current;
21997
22192
  };
21998
22193
 
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 };
22194
+ const CheckSvg = () => jsx("svg", {
22195
+ viewBox: "0 0 24 24",
22196
+ xmlns: "http://www.w3.org/2000/svg",
22197
+ children: jsx("path", {
22198
+ d: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",
22199
+ fill: "currentColor"
22200
+ })
22201
+ });
22202
+
22203
+ const ExclamationSvg = () => {
22204
+ return jsx("svg", {
22205
+ viewBox: "0 0 125 300",
22206
+ xmlns: "http://www.w3.org/2000/svg",
22207
+ children: jsx("path", {
22208
+ fill: "currentColor",
22209
+ d: "m25,1 8,196h59l8-196zm37,224a37,37 0 1,0 2,0z"
22210
+ })
22211
+ });
22212
+ };
22213
+
22214
+ const HeartSvg = () => jsx("svg", {
22215
+ viewBox: "0 0 24 24",
22216
+ xmlns: "http://www.w3.org/2000/svg",
22217
+ children: jsx("path", {
22218
+ 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",
22219
+ fill: "currentColor"
22220
+ })
22221
+ });
22222
+
22223
+ const HomeSvg = () => jsx("svg", {
22224
+ viewBox: "0 0 24 24",
22225
+ xmlns: "http://www.w3.org/2000/svg",
22226
+ children: jsx("path", {
22227
+ d: "M12 3l8 6v11h-5v-6h-6v6H4V9l8-6z",
22228
+ fill: "currentColor"
22229
+ })
22230
+ });
22231
+
22232
+ const SearchSvg = () => jsx("svg", {
22233
+ viewBox: "0 0 24 24",
22234
+ xmlns: "http://www.w3.org/2000/svg",
22235
+ children: jsx("path", {
22236
+ 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",
22237
+ fill: "currentColor"
22238
+ })
22239
+ });
22240
+
22241
+ const SettingsSvg = () => jsx("svg", {
22242
+ viewBox: "0 0 24 24",
22243
+ xmlns: "http://www.w3.org/2000/svg",
22244
+ children: jsx("path", {
22245
+ 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",
22246
+ fill: "currentColor"
22247
+ })
22248
+ });
22249
+
22250
+ const StarSvg = () => jsx("svg", {
22251
+ viewBox: "0 0 24 24",
22252
+ xmlns: "http://www.w3.org/2000/svg",
22253
+ children: jsx("path", {
22254
+ 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",
22255
+ fill: "currentColor"
22256
+ })
22257
+ });
22258
+
22259
+ const UserSvg = () => jsx("svg", {
22260
+ viewBox: "0 0 24 24",
22261
+ xmlns: "http://www.w3.org/2000/svg",
22262
+ children: jsx("path", {
22263
+ 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",
22264
+ fill: "currentColor"
22265
+ })
22266
+ });
22267
+
22268
+ 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
22269
  //# sourceMappingURL=jsenv_navi.js.map