xmlui 0.12.16 → 0.12.17

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.
Files changed (40) hide show
  1. package/dist/lib/{AppRoot-DxPN3IhT.js → AppRoot-CkAW1HHI.js} +730 -524
  2. package/dist/lib/AppRoot.css +2 -2
  3. package/dist/lib/compiled-runtime.d.ts +9 -2
  4. package/dist/lib/compiled-runtime.js +1 -1
  5. package/dist/lib/{extractParam-DlVzewYK.js → extractParam-CGckz_NP.js} +1 -1
  6. package/dist/lib/{initMock-qSARW6AY.js → initMock-DvFj3cun.js} +2 -2
  7. package/dist/lib/{parser-kl5gouy9.js → parser-DiBsM1dk.js} +840 -296
  8. package/dist/lib/testing.d.ts +2 -1
  9. package/dist/lib/testing.js +3 -3
  10. package/dist/lib/{xmlui-parser-D_XJdENb.js → xmlui-parser-CN1VIdSi.js} +1 -1
  11. package/dist/lib/xmlui-parser.d.ts +99 -98
  12. package/dist/lib/xmlui-parser.js +3 -3
  13. package/dist/lib/{xmlui-serializer-DA9F6dF0.js → xmlui-serializer-BKSvNa3u.js} +2 -2
  14. package/dist/lib/xmlui.d.ts +30 -22
  15. package/dist/lib/xmlui.js +8 -8
  16. package/dist/metadata/TextBox-CXf1fJ0t.cjs +1 -0
  17. package/dist/metadata/{TextBox-Bn8aoH-R.js → TextBox-D7Acm5Ef.js} +1211 -587
  18. package/dist/metadata/behaviors.cjs +1 -1
  19. package/dist/metadata/behaviors.js +1 -1
  20. package/dist/metadata/{initMock-BrR3U4Ld.js → initMock-BcSsdxIt.js} +1 -1
  21. package/dist/metadata/{initMock-C7je94z9.cjs → initMock-C7PbmB5M.cjs} +1 -1
  22. package/dist/metadata/metadata-utils.cjs +1 -1
  23. package/dist/metadata/metadata-utils.js +1 -1
  24. package/dist/metadata/transform-CkTQ-Bfe.cjs +1 -0
  25. package/dist/metadata/{transform-stXt5Y3w.js → transform-D0SWbm8g.js} +344 -231
  26. package/dist/metadata/xmlui-metadata.cjs +1 -1
  27. package/dist/metadata/xmlui-metadata.js +2 -2
  28. package/dist/metadata/xmlui.css +2 -2
  29. package/dist/nodejs/bin/index.mjs +588 -265
  30. package/dist/nodejs/index.cjs +588 -265
  31. package/dist/nodejs/index.mjs +588 -265
  32. package/dist/nodejs/server.cjs +483 -85
  33. package/dist/nodejs/server.mjs +483 -85
  34. package/dist/nodejs/vite-xmlui-plugin.cjs +588 -265
  35. package/dist/nodejs/vite-xmlui-plugin.mjs +588 -265
  36. package/dist/standalone/xmlui-standalone.es.d.ts +35 -23
  37. package/dist/standalone/xmlui-standalone.umd.js +10 -10
  38. package/package.json +1 -1
  39. package/dist/metadata/TextBox-BiqMyomC.cjs +0 -1
  40. package/dist/metadata/transform-_9WMqBx2.cjs +0 -1
@@ -4,12 +4,12 @@ import * as React from "react";
4
4
  import React__default, { forwardRef, useState, useEffect, useContext, createContext, useMemo, useInsertionEffect, useLayoutEffect, useRef, memo, useCallback, useId, cloneElement, useImperativeHandle, isValidElement, startTransition, Fragment as Fragment$1, useReducer, useDeferredValue, createElement, useTransition, Children } from "react";
5
5
  import { useQuery, useInfiniteQuery, QueryClientProvider, QueryClient } from "@tanstack/react-query";
6
6
  import produce, { createDraft, finishDraft, enableMapSet } from "immer";
7
- import { p as parseLayoutProperty, f as toCssPropertyNames, l as layoutOptionKeys, s as shallowCompare, u as useEvent, g as capitalizeFirstLetter$1, i as isComponentDefChildren, N as NotAComponentDefError, t as toCssVar$1, r as resolveAndCleanProps, n as normalizePath, h as THEME_VAR_PREFIX$2, S as StyleParser, j as generatedId, k as asyncThrottle, m as asOptionalBoolean, q as partitionObject, e as extractParam, v as randomUUID, w as processStatementQueue, x as readCookie, G as GenericBackendError, y as shouldKeep, z as createContextVariableError, a as parseParameterString, d as delay$1, A as toCssPropertyName, B as removeNullProperties, C as asyncWait, c as evalBinding, P as PropsTrasform, D as debounce$1, E as distinct, F as findByField, H as toHashObject, I as pluralize$1, J as humanReadableDateTimeTillNow, K as ensureMainThread, L as evalArrow, M as evalIdentifier, O as evalLiteral, Q as allowedNewConstructors, R as setExprValue, U as evalMemberAccessCore, V as isBannedFunction, W as getRootIdScope, X as evalPreOrPostCore, Y as evalAssignmentCore, Z as evalBinaryCore, _ as evalUnaryCore, $ as evalCalculatedMemberAccessCore, a0 as evalTemplateLiteralCore, a1 as getExprValue, a2 as isPromise, a3 as hoistFunctionDeclarations, a4 as StatementQueue, a5 as mapStatementsToQueueItems, a6 as toStatementItems, T as ThrowStatementError, a7 as reportEngineError, a8 as StatementExecutionError, a9 as releaseLoopScope, aa as createLoopScope, ab as guard, ac as provideTryBody, ad as createTryScope, ae as innermostTryScope, af as innermostLoopScope, ag as provideFinallyErrorBody, ah as provideFinallyBody, ai as innermostBlockScope, aj as provideCatchBody, ak as provideLoopBody, al as mapToItem, am as closing, an as ScriptParseError, ao as createValueExtractor, ap as collectVariableDependencies, aq as pickFromObject, ar as resolveResponsiveWhen, as as getFileExtension, at as formatFileSizeInBytes } from "./extractParam-DlVzewYK.js";
7
+ import { p as parseLayoutProperty, f as toCssPropertyNames, l as layoutOptionKeys, s as shallowCompare, u as useEvent, g as capitalizeFirstLetter$1, i as isComponentDefChildren, N as NotAComponentDefError, t as toCssVar$1, r as resolveAndCleanProps, n as normalizePath, h as THEME_VAR_PREFIX$2, S as StyleParser, j as generatedId, k as asyncThrottle, m as asOptionalBoolean, q as partitionObject, e as extractParam, v as randomUUID, w as processStatementQueue, x as readCookie, G as GenericBackendError, y as shouldKeep, z as createContextVariableError, a as parseParameterString, d as delay$1, A as toCssPropertyName, B as removeNullProperties, C as asyncWait, c as evalBinding, P as PropsTrasform, D as debounce$1, E as distinct, F as findByField, H as toHashObject, I as pluralize$1, J as humanReadableDateTimeTillNow, K as ensureMainThread, L as evalArrow, M as evalIdentifier, O as evalLiteral, Q as allowedNewConstructors, R as setExprValue, U as evalMemberAccessCore, V as isBannedFunction, W as getRootIdScope, X as evalPreOrPostCore, Y as evalAssignmentCore, Z as evalBinaryCore, _ as evalUnaryCore, $ as evalCalculatedMemberAccessCore, a0 as evalTemplateLiteralCore, a1 as getExprValue, a2 as isPromise, a3 as hoistFunctionDeclarations, a4 as StatementQueue, a5 as mapStatementsToQueueItems, a6 as toStatementItems, T as ThrowStatementError, a7 as reportEngineError, a8 as StatementExecutionError, a9 as releaseLoopScope, aa as createLoopScope, ab as guard, ac as provideTryBody, ad as createTryScope, ae as innermostTryScope, af as innermostLoopScope, ag as provideFinallyErrorBody, ah as provideFinallyBody, ai as innermostBlockScope, aj as provideCatchBody, ak as provideLoopBody, al as mapToItem, am as closing, an as ScriptParseError, ao as createValueExtractor, ap as collectVariableDependencies, aq as pickFromObject, ar as resolveResponsiveWhen, as as getFileExtension, at as formatFileSizeInBytes } from "./extractParam-CGckz_NP.js";
8
8
  import classnames from "classnames";
9
9
  import { isEmpty, noop as noop$2, omitBy, isUndefined, isPlainObject as isPlainObject$1, isNil, unset, set, get, debounce, isEqual, union, uniq, orderBy, isObject, isArray, groupBy, sortBy, omit, throttle, isNumber, cloneDeep, isNaN as isNaN$1, merge, defaultTo, capitalize as capitalize$1, setWith, keyBy } from "lodash-es";
10
- import { K as MediaBreakpointKeys, W as T_ARROW_EXPRESSION, au as isArrowExpressionObject$1, ac as T_ARROW_EXPRESSION_STATEMENT, av as T_VAR_DECLARATION, ax as T_REACTIVE_VAR_DECLARATION, ai as T_NEW_EXPRESSION, aj as T_AWAIT_EXPRESSION, am as T_POSTFIX_OP_EXPRESSION, R as T_PREFIX_OP_EXPRESSION, ag as T_ASSIGNMENT_EXPRESSION, ak as T_SPREAD_EXPRESSION, aq as T_OBJECT_LITERAL, ar as T_ARRAY_LITERAL, at as T_TEMPLATE_LITERAL_EXPRESSION, ah as T_LITERAL, al as T_FUNCTION_INVOCATION_EXPRESSION, an as T_CONDITIONAL_EXPRESSION, as as T_SEQUENCE_EXPRESSION, ap as T_UNARY_EXPRESSION, ao as T_BINARY_EXPRESSION, L as T_CALCULATED_MEMBER_ACCESS_EXPRESSION, O as T_MEMBER_ACCESS_EXPRESSION, Q as T_IDENTIFIER, P as Parser, aw as T_DESTRUCTURE, ad as T_BLOCK_STATEMENT, a3 as T_EXPRESSION_STATEMENT, a8 as T_RETURN_STATEMENT, Y as T_EMPTY_STATEMENT, Z as T_SWITCH_STATEMENT, _ as T_TRY_STATEMENT, $ as T_THROW_STATEMENT, a0 as T_FOR_OF_STATEMENT, a1 as T_FOR_IN_STATEMENT, a2 as T_FOR_STATEMENT, X as createXmlUiTreeNodeId, a4 as T_BREAK_STATEMENT, a5 as T_CONTINUE_STATEMENT, a6 as T_DO_WHILE_STATEMENT, a7 as T_WHILE_STATEMENT, a9 as T_IF_STATEMENT, aa as T_CONST_STATEMENT, ab as T_LET_STATEMENT, ae as T_VAR_STATEMENT, V as T_FUNCTION_DECLARATION, af as T_ASYNC_FUNCTION_DECLARATION, ay as isParsedCodeDeclaration } from "./parser-kl5gouy9.js";
10
+ import { K as MediaBreakpointKeys, W as T_ARROW_EXPRESSION, au as isArrowExpressionObject$1, ac as T_ARROW_EXPRESSION_STATEMENT, av as T_VAR_DECLARATION, ax as T_REACTIVE_VAR_DECLARATION, ai as T_NEW_EXPRESSION, aj as T_AWAIT_EXPRESSION, am as T_POSTFIX_OP_EXPRESSION, R as T_PREFIX_OP_EXPRESSION, ag as T_ASSIGNMENT_EXPRESSION, ak as T_SPREAD_EXPRESSION, aq as T_OBJECT_LITERAL, ar as T_ARRAY_LITERAL, at as T_TEMPLATE_LITERAL_EXPRESSION, ah as T_LITERAL, al as T_FUNCTION_INVOCATION_EXPRESSION, an as T_CONDITIONAL_EXPRESSION, as as T_SEQUENCE_EXPRESSION, ap as T_UNARY_EXPRESSION, ao as T_BINARY_EXPRESSION, L as T_CALCULATED_MEMBER_ACCESS_EXPRESSION, O as T_MEMBER_ACCESS_EXPRESSION, Q as T_IDENTIFIER, P as Parser, aw as T_DESTRUCTURE, ad as T_BLOCK_STATEMENT, a3 as T_EXPRESSION_STATEMENT, a8 as T_RETURN_STATEMENT, Y as T_EMPTY_STATEMENT, Z as T_SWITCH_STATEMENT, _ as T_TRY_STATEMENT, $ as T_THROW_STATEMENT, a0 as T_FOR_OF_STATEMENT, a1 as T_FOR_IN_STATEMENT, a2 as T_FOR_STATEMENT, X as createXmlUiTreeNodeId, a4 as T_BREAK_STATEMENT, a5 as T_CONTINUE_STATEMENT, a6 as T_DO_WHILE_STATEMENT, a7 as T_WHILE_STATEMENT, a9 as T_IF_STATEMENT, aa as T_CONST_STATEMENT, ab as T_LET_STATEMENT, ae as T_VAR_STATEMENT, V as T_FUNCTION_DECLARATION, af as T_ASYNC_FUNCTION_DECLARATION, ay as isParsedCodeDeclaration } from "./parser-DiBsM1dk.js";
11
11
  import Color from "color";
12
- import { g as PART_LABELED_ITEM, h as PART_LABEL, i as PART_ICON, f as PART_INPUT, j as PART_CONTENT$2, k as PART_HEADER, x as xmlUiMarkupToComponent, a as errReportComponent, l as PART_CONCISE_VALIDATION_FEEDBACK$5, m as PART_AVATAR, n as PART_TITLE$1, o as PART_SUBTITLE, P as PART_START_ADORNMENT, d as PART_END_ADORNMENT, p as PART_CLEAR_BUTTON$1, q as PART_YEAR, r as PART_MONTH, s as PART_DAY } from "./xmlui-parser-D_XJdENb.js";
12
+ import { g as PART_LABELED_ITEM, h as PART_LABEL, i as PART_ICON, f as PART_INPUT, j as PART_CONTENT$2, k as PART_HEADER, x as xmlUiMarkupToComponent, a as errReportComponent, l as PART_CONCISE_VALIDATION_FEEDBACK$5, m as PART_AVATAR, n as PART_TITLE$1, o as PART_SUBTITLE, P as PART_START_ADORNMENT, d as PART_END_ADORNMENT, p as PART_CLEAR_BUTTON$1, q as PART_YEAR, r as PART_MONTH, s as PART_DAY } from "./xmlui-parser-CN1VIdSi.js";
13
13
  import * as InnerRadioGroup from "@radix-ui/react-radio-group";
14
14
  import { useContextSelector, createContext as createContext$1 } from "use-context-selector";
15
15
  import { OverlayScrollbarsComponent } from "overlayscrollbars-react";
@@ -139,7 +139,7 @@ function isInsideLayout(context, ...types) {
139
139
  }
140
140
  function stripDirectChildProps(context) {
141
141
  if (!context) return void 0;
142
- const { ignoreLayoutProps, wrapChild, ...rest } = context;
142
+ const { ignoreLayoutProps, wrapChild, extraClassName, ...rest } = context;
143
143
  return rest;
144
144
  }
145
145
  const keyPrefix$1 = "xmlui";
@@ -301,7 +301,15 @@ const labelPositionMd = [
301
301
  description: "The right side of the input (left-to-right) or the left side of the input (right-to-left)"
302
302
  },
303
303
  { value: "top", description: "The top of the input" },
304
- { value: "bottom", description: "The bottom of the input" }
304
+ { value: "bottom", description: "The bottom of the input" },
305
+ {
306
+ value: "before",
307
+ description: "The label is placed directly before the input with fit-content width. Similar to 'start' but the label does not stretch."
308
+ },
309
+ {
310
+ value: "after",
311
+ description: "The label is placed directly after the input with fit-content width. Similar to 'end' but the label does not stretch."
312
+ }
305
313
  ];
306
314
  const triggerPositionValues = ["start", "end"];
307
315
  const triggerPositionNames = [...triggerPositionValues];
@@ -515,25 +523,27 @@ function getElementRef(element) {
515
523
  return element.props.ref || element.ref;
516
524
  }
517
525
  const themeVars$12 = `'{"textColor-label-formItem": "var(--xmlui-textColor-label-formItem)", "fontFamily-label-formItem": "var(--xmlui-fontFamily-label-formItem)", "fontSize-label-formItem": "var(--xmlui-fontSize-label-formItem)", "fontWeight-label-formItem": "var(--xmlui-fontWeight-label-formItem)", "fontStyle-label-formItem": "var(--xmlui-fontStyle-label-formItem)", "textTransform-label-formItem": "var(--xmlui-textTransform-label-formItem)", "textColor-label-formItem--required": "var(--xmlui-textColor-label-formItem--required)", "fontSize-label-formItem--required": "var(--xmlui-fontSize-label-formItem--required)", "fontWeight-label-formItem--required": "var(--xmlui-fontWeight-label-formItem--required)", "fontStyle-label-formItem--required": "var(--xmlui-fontStyle-label-formItem--required)", "textTransform-label-formItem--required": "var(--xmlui-textTransform-label-formItem--required)", "textColor-requiredMark-formItem": "var(--xmlui-textColor-requiredMark-formItem)", "textColor-optionalTag-formItem": "var(--xmlui-textColor-optionalTag-formItem)"}'`;
518
- const container$7 = "_container_2lidb_14";
519
- const top$2 = "_top_2lidb_21";
520
- const end = "_end_2lidb_26";
521
- const bottom$2 = "_bottom_2lidb_32";
522
- const start = "_start_2lidb_37";
523
- const shrinkToLabel = "_shrinkToLabel_2lidb_43";
524
- const inputLabel = "_inputLabel_2lidb_46";
525
- const labelBreak = "_labelBreak_2lidb_59";
526
- const required = "_required_2lidb_64";
527
- const disabled$d = "_disabled_2lidb_71";
528
- const requiredMark = "_requiredMark_2lidb_75";
529
- const optionalTag = "_optionalTag_2lidb_79";
530
- const itemWithLabel = "_itemWithLabel_2lidb_83";
531
- const wrapper$g = "_wrapper_2lidb_88";
532
- const validationResultWrapper = "_validationResultWrapper_2lidb_96";
533
- const validationAnchor = "_validationAnchor_2lidb_99";
534
- const validationMessageAbsolute = "_validationMessageAbsolute_2lidb_102";
535
- const helperTextContainer = "_helperTextContainer_2lidb_109";
536
- const labelWrapper$1 = "_labelWrapper_2lidb_112";
526
+ const container$7 = "_container_1jzhh_14";
527
+ const top$2 = "_top_1jzhh_21";
528
+ const end = "_end_1jzhh_26";
529
+ const bottom$2 = "_bottom_1jzhh_32";
530
+ const start = "_start_1jzhh_37";
531
+ const before = "_before_1jzhh_43";
532
+ const after = "_after_1jzhh_51";
533
+ const shrinkToLabel = "_shrinkToLabel_1jzhh_59";
534
+ const inputLabel = "_inputLabel_1jzhh_62";
535
+ const labelBreak = "_labelBreak_1jzhh_75";
536
+ const required = "_required_1jzhh_80";
537
+ const disabled$d = "_disabled_1jzhh_87";
538
+ const requiredMark = "_requiredMark_1jzhh_91";
539
+ const optionalTag = "_optionalTag_1jzhh_95";
540
+ const itemWithLabel = "_itemWithLabel_1jzhh_99";
541
+ const wrapper$g = "_wrapper_1jzhh_105";
542
+ const validationResultWrapper = "_validationResultWrapper_1jzhh_113";
543
+ const validationAnchor = "_validationAnchor_1jzhh_116";
544
+ const validationMessageAbsolute = "_validationMessageAbsolute_1jzhh_119";
545
+ const helperTextContainer = "_helperTextContainer_1jzhh_126";
546
+ const labelWrapper$1 = "_labelWrapper_1jzhh_129";
537
547
  const styles$1k = {
538
548
  themeVars: themeVars$12,
539
549
  container: container$7,
@@ -541,6 +551,8 @@ const styles$1k = {
541
551
  end,
542
552
  bottom: bottom$2,
543
553
  start,
554
+ before,
555
+ after,
544
556
  shrinkToLabel,
545
557
  inputLabel,
546
558
  labelBreak,
@@ -1799,17 +1811,17 @@ function simpleStringify(value) {
1799
1811
  function prefixLines(text2, prefix) {
1800
1812
  return text2.split("\n").map((line) => `${prefix}${line}`).join("\n");
1801
1813
  }
1802
- function formatDiff(path, before, after) {
1803
- const beforeJson = simpleStringify(before);
1804
- const afterJson = simpleStringify(after);
1814
+ function formatDiff(path, before2, after2) {
1815
+ const beforeJson = simpleStringify(before2);
1816
+ const afterJson = simpleStringify(after2);
1805
1817
  const diffPretty = `path: ${path}
1806
1818
  ${prefixLines(beforeJson, "- ")}
1807
1819
  ${prefixLines(afterJson, "+ ")}`;
1808
1820
  return {
1809
1821
  path,
1810
1822
  type: "update",
1811
- before,
1812
- after,
1823
+ before: before2,
1824
+ after: after2,
1813
1825
  beforeJson,
1814
1826
  afterJson,
1815
1827
  diffText: `path: ${path}
@@ -2176,16 +2188,20 @@ const MemoizedItem = memo(
2176
2188
  node,
2177
2189
  renderChild: renderChild2,
2178
2190
  layoutContext,
2179
- contextVars = EMPTY_OBJECT
2191
+ contextVars = EMPTY_OBJECT,
2192
+ vars: vars2,
2193
+ functions
2180
2194
  }) => {
2181
2195
  const shallowMemoedContextVars = useShallowCompareMemoize(contextVars);
2182
2196
  const nodeWithContextVars = useMemo(
2183
2197
  () => ({
2184
2198
  type: "Container",
2185
2199
  contextVars: shallowMemoedContextVars,
2200
+ ...vars2 ? { vars: vars2 } : void 0,
2201
+ ...functions ? { functions } : void 0,
2186
2202
  children: Array.isArray(node) ? node : [node]
2187
2203
  }),
2188
- [node, shallowMemoedContextVars]
2204
+ [node, shallowMemoedContextVars, vars2, functions]
2189
2205
  );
2190
2206
  return /* @__PURE__ */ jsx(Fragment, { children: renderChild2(nodeWithContextVars, layoutContext) });
2191
2207
  }
@@ -3267,6 +3283,30 @@ const RadioGroup = forwardRef(function RadioGroup2({
3267
3283
  },
3268
3284
  [updateValue, readOnly2]
3269
3285
  );
3286
+ const handleKeyDown = useCallback(
3287
+ (e) => {
3288
+ if (readOnly2 || !enabled2) return;
3289
+ const isVerticalKey = e.key === "ArrowDown" || e.key === "ArrowUp";
3290
+ const isHorizontalKey = e.key === "ArrowRight" || e.key === "ArrowLeft";
3291
+ if (!isVerticalKey && !isHorizontalKey) return;
3292
+ if (orientation === "horizontal" && isVerticalKey) return;
3293
+ if (orientation === "vertical" && isHorizontalKey) return;
3294
+ const isNext = e.key === "ArrowDown" || e.key === "ArrowRight";
3295
+ const radios = Array.from(
3296
+ radioGroupRef.current?.querySelectorAll('[role="radio"]:not(:disabled)') ?? []
3297
+ );
3298
+ if (radios.length === 0) return;
3299
+ const focused22 = e.target;
3300
+ const currentIndex = radios.indexOf(focused22);
3301
+ if (currentIndex === -1) return;
3302
+ const nextIndex = isNext ? (currentIndex + 1) % radios.length : (currentIndex - 1 + radios.length) % radios.length;
3303
+ const nextValue = radios[nextIndex].getAttribute("value");
3304
+ if (nextValue != null) {
3305
+ onInputChange(nextValue);
3306
+ }
3307
+ },
3308
+ [readOnly2, enabled2, orientation, onInputChange]
3309
+ );
3270
3310
  const handleOnFocus = useCallback(
3271
3311
  (ev) => {
3272
3312
  setFocused(true);
@@ -3306,6 +3346,7 @@ const RadioGroup = forwardRef(function RadioGroup2({
3306
3346
  id,
3307
3347
  onBlur: handleOnBlur,
3308
3348
  onFocus: handleOnFocus,
3349
+ onKeyDown: handleKeyDown,
3309
3350
  onValueChange: onInputChange,
3310
3351
  value,
3311
3352
  disabled: !enabled2,
@@ -3595,7 +3636,8 @@ const defaultProps$1e = {
3595
3636
  shrinkToLabel: false,
3596
3637
  cloneStyle: false,
3597
3638
  requireLabelMode: "markRequired",
3598
- isInputTemplateUsed: false
3639
+ isInputTemplateUsed: false,
3640
+ compactInlineLabel: false
3599
3641
  };
3600
3642
  const numberRegex = /^[0-9]+$/;
3601
3643
  const ItemWithLabel = forwardRef(function ItemWithLabel2({
@@ -3604,7 +3646,7 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3604
3646
  style: style2 = {},
3605
3647
  className,
3606
3648
  label: label2,
3607
- labelBreak: labelBreak2 = defaultProps$1e.labelBreak,
3649
+ labelBreak: labelBreak2,
3608
3650
  labelWidth,
3609
3651
  enabled: enabled2 = defaultProps$1e.enabled,
3610
3652
  required: required2 = defaultProps$1e.required,
@@ -3622,6 +3664,7 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3622
3664
  testId,
3623
3665
  cloneStyle = defaultProps$1e.cloneStyle,
3624
3666
  requireLabelMode = defaultProps$1e.requireLabelMode,
3667
+ compactInlineLabel = defaultProps$1e.compactInlineLabel,
3625
3668
  ...rest
3626
3669
  }, ref) {
3627
3670
  const generatedId2 = useId();
@@ -3630,6 +3673,14 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3630
3673
  (value) => value?.itemLabelPosition
3631
3674
  );
3632
3675
  const resolvedLabelPosition = labelPosition ?? formItemLabelPosition ?? "top";
3676
+ const formItemLabelWidth = useFormContextPart(
3677
+ (value) => value?.itemLabelWidth
3678
+ );
3679
+ const resolvedLabelWidthProp = labelWidth ?? formItemLabelWidth;
3680
+ const formItemLabelBreak = useFormContextPart(
3681
+ (value) => value?.itemLabelBreak
3682
+ );
3683
+ const resolvedLabelBreak = labelBreak2 ?? formItemLabelBreak ?? defaultProps$1e.labelBreak;
3633
3684
  const isInHorizontalStack = layoutContext?.orientation === "horizontal";
3634
3685
  const [inputElement, setInputElement] = useState(null);
3635
3686
  const [inputHeight, setInputHeight] = useState(void 0);
@@ -3647,7 +3698,8 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3647
3698
  return () => observer.disconnect();
3648
3699
  }
3649
3700
  }, [inputElement]);
3650
- const labelWrapperHeight = resolvedLabelPosition === "start" || resolvedLabelPosition === "end" ? inputHeight : "auto";
3701
+ const labelWrapperHeight = resolvedLabelPosition === "start" || resolvedLabelPosition === "end" || resolvedLabelPosition === "before" || resolvedLabelPosition === "after" ? inputHeight : "auto";
3702
+ const resolvedLabelWidth = resolvedLabelWidthProp !== void 0 ? numberRegex.test(resolvedLabelWidthProp) ? `${resolvedLabelWidthProp}px` : resolvedLabelWidthProp : compactInlineLabel && (resolvedLabelPosition === "before" || resolvedLabelPosition === "after") ? "fit-content" : void 0;
3651
3703
  const isRadioGroup = React__default.isValidElement(children) && children.type === ThemedRadioGroup;
3652
3704
  if (label2 === void 0 && !validationResult) {
3653
3705
  return /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: /* @__PURE__ */ jsx(Slot, { ...rest, style: style2, className, id: inputId, ref, children }) });
@@ -3668,8 +3720,10 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3668
3720
  className: classnames(styles$1k.container, {
3669
3721
  [styles$1k.top]: resolvedLabelPosition === "top",
3670
3722
  [styles$1k.bottom]: resolvedLabelPosition === "bottom",
3671
- [styles$1k.start]: resolvedLabelPosition === "start",
3672
- [styles$1k.end]: resolvedLabelPosition === "end",
3723
+ [styles$1k.start]: resolvedLabelPosition === "start" || !compactInlineLabel && resolvedLabelPosition === "before",
3724
+ [styles$1k.end]: resolvedLabelPosition === "end" || !compactInlineLabel && resolvedLabelPosition === "after",
3725
+ [styles$1k.before]: compactInlineLabel && resolvedLabelPosition === "before",
3726
+ [styles$1k.after]: compactInlineLabel && resolvedLabelPosition === "after",
3673
3727
  [styles$1k.shrinkToLabel]: shrinkToLabel2
3674
3728
  }),
3675
3729
  dir: rest?.direction,
@@ -3693,13 +3747,13 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3693
3747
  }),
3694
3748
  style: {
3695
3749
  ...labelStyle,
3696
- width: labelWidth && numberRegex.test(labelWidth) ? `${labelWidth}px` : labelWidth,
3697
- flexShrink: labelWidth !== void 0 ? 0 : void 0
3750
+ width: resolvedLabelWidth,
3751
+ flexShrink: resolvedLabelWidthProp !== void 0 ? 0 : void 0
3698
3752
  },
3699
3753
  className: classnames(styles$1k.inputLabel, {
3700
3754
  [styles$1k.required]: required2,
3701
3755
  [styles$1k.disabled]: !enabled2,
3702
- [styles$1k.labelBreak]: labelBreak2
3756
+ [styles$1k.labelBreak]: resolvedLabelBreak
3703
3757
  }),
3704
3758
  children: [
3705
3759
  label2,
@@ -3741,8 +3795,10 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3741
3795
  className: classnames(styles$1k.container, {
3742
3796
  [styles$1k.top]: resolvedLabelPosition === "top",
3743
3797
  [styles$1k.bottom]: resolvedLabelPosition === "bottom",
3744
- [styles$1k.start]: resolvedLabelPosition === "start",
3745
- [styles$1k.end]: resolvedLabelPosition === "end",
3798
+ [styles$1k.start]: resolvedLabelPosition === "start" || !compactInlineLabel && resolvedLabelPosition === "before",
3799
+ [styles$1k.end]: resolvedLabelPosition === "end" || !compactInlineLabel && resolvedLabelPosition === "after",
3800
+ [styles$1k.before]: compactInlineLabel && resolvedLabelPosition === "before",
3801
+ [styles$1k.after]: compactInlineLabel && resolvedLabelPosition === "after",
3746
3802
  [styles$1k.shrinkToLabel]: shrinkToLabel2
3747
3803
  }),
3748
3804
  dir: rest?.direction,
@@ -3761,13 +3817,13 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3761
3817
  onClick: onLabelClick || (() => document.getElementById(inputId)?.focus()),
3762
3818
  style: {
3763
3819
  ...labelStyle,
3764
- width: labelWidth && numberRegex.test(labelWidth) ? `${labelWidth}px` : labelWidth,
3765
- flexShrink: labelWidth !== void 0 ? 0 : void 0
3820
+ width: resolvedLabelWidth,
3821
+ flexShrink: resolvedLabelWidthProp !== void 0 ? 0 : void 0
3766
3822
  },
3767
3823
  className: classnames(styles$1k.inputLabel, {
3768
3824
  [styles$1k.required]: required2,
3769
3825
  [styles$1k.disabled]: !enabled2,
3770
- [styles$1k.labelBreak]: labelBreak2
3826
+ [styles$1k.labelBreak]: resolvedLabelBreak
3771
3827
  }),
3772
3828
  children: [
3773
3829
  label2,
@@ -9259,26 +9315,24 @@ const localLinkComponentRenderer = wrapComponent(
9259
9315
  }
9260
9316
  );
9261
9317
  const themeVars$O = `'{"Input:borderRadius-Checkbox": "var(--xmlui-borderRadius-Checkbox)", "Input:borderColor-Checkbox": "var(--xmlui-borderColor-Checkbox)", "Input:backgroundColor-Checkbox": "var(--xmlui-backgroundColor-Checkbox)", "Input:outlineWidth-Checkbox--focus": "var(--xmlui-outlineWidth-Checkbox--focus)", "Input:outlineColor-Checkbox--focus": "var(--xmlui-outlineColor-Checkbox--focus)", "Input:outlineStyle-Checkbox--focus": "var(--xmlui-outlineStyle-Checkbox--focus)", "Input:outlineOffset-Checkbox--focus": "var(--xmlui-outlineOffset-Checkbox--focus)", "Input:borderRadius-Checkbox--error": "var(--xmlui-borderRadius-Checkbox--error)", "Input:borderColor-Checkbox--error": "var(--xmlui-borderColor-Checkbox--error)", "Input:backgroundColor-Checkbox--error": "var(--xmlui-backgroundColor-Checkbox--error)", "Input:outlineWidth-Checkbox--error--focus": "var(--xmlui-outlineWidth-Checkbox--error--focus)", "Input:outlineColor-Checkbox--error--focus": "var(--xmlui-outlineColor-Checkbox--error--focus)", "Input:outlineStyle-Checkbox--error--focus": "var(--xmlui-outlineStyle-Checkbox--error--focus)", "Input:outlineOffset-Checkbox--error--focus": "var(--xmlui-outlineOffset-Checkbox--error--focus)", "Input:borderRadius-Checkbox--warning": "var(--xmlui-borderRadius-Checkbox--warning)", "Input:borderColor-Checkbox--warning": "var(--xmlui-borderColor-Checkbox--warning)", "Input:backgroundColor-Checkbox--warning": "var(--xmlui-backgroundColor-Checkbox--warning)", "Input:outlineWidth-Checkbox--warning--focus": "var(--xmlui-outlineWidth-Checkbox--warning--focus)", "Input:outlineColor-Checkbox--warning--focus": "var(--xmlui-outlineColor-Checkbox--warning--focus)", "Input:outlineStyle-Checkbox--warning--focus": "var(--xmlui-outlineStyle-Checkbox--warning--focus)", "Input:outlineOffset-Checkbox--warning--focus": "var(--xmlui-outlineOffset-Checkbox--warning--focus)", "Input:borderRadius-Checkbox--success": "var(--xmlui-borderRadius-Checkbox--success)", "Input:borderColor-Checkbox--success": "var(--xmlui-borderColor-Checkbox--success)", "Input:backgroundColor-Checkbox--success": "var(--xmlui-backgroundColor-Checkbox--success)", "Input:outlineWidth-Checkbox--success--focus": "var(--xmlui-outlineWidth-Checkbox--success--focus)", "Input:outlineColor-Checkbox--success--focus": "var(--xmlui-outlineColor-Checkbox--success--focus)", "Input:outlineStyle-Checkbox--success--focus": "var(--xmlui-outlineStyle-Checkbox--success--focus)", "Input:outlineOffset-Checkbox--success--focus": "var(--xmlui-outlineOffset-Checkbox--success--focus)", "Input:borderColor-Checkbox--hover": "var(--xmlui-borderColor-Checkbox--hover)", "Input:backgroundColor-Checkbox--disabled": "var(--xmlui-backgroundColor-Checkbox--disabled)", "Input:borderColor-Checkbox--disabled": "var(--xmlui-borderColor-Checkbox--disabled)", "Input:borderColor-checked-Checkbox": "var(--xmlui-borderColor-checked-Checkbox)", "Input:backgroundColor-checked-Checkbox": "var(--xmlui-backgroundColor-checked-Checkbox)", "Input:borderColor-checked-Checkbox--error": "var(--xmlui-borderColor-checked-Checkbox--error)", "Input:backgroundColor-checked-Checkbox--error": "var(--xmlui-backgroundColor-checked-Checkbox--error)", "Input:borderColor-checked-Checkbox--warning": "var(--xmlui-borderColor-checked-Checkbox--warning)", "Input:backgroundColor-checked-Checkbox--warning": "var(--xmlui-backgroundColor-checked-Checkbox--warning)", "Input:borderColor-checked-Checkbox--success": "var(--xmlui-borderColor-checked-Checkbox--success)", "Input:backgroundColor-checked-Checkbox--success": "var(--xmlui-backgroundColor-checked-Checkbox--success)", "backgroundColor-indicator-Checkbox": "var(--xmlui-backgroundColor-indicator-Checkbox)", "Input:borderColor-Switch--hover": "var(--xmlui-borderColor-Switch--hover)", "Input:backgroundColor-Switch--disabled": "var(--xmlui-backgroundColor-Switch--disabled)", "Input:borderColor-Switch--disabled": "var(--xmlui-borderColor-Switch--disabled)", "Input:borderColor-checked-Switch": "var(--xmlui-borderColor-checked-Switch)", "Input:backgroundColor-checked-Switch": "var(--xmlui-backgroundColor-checked-Switch)", "Input:borderColor-checked-Switch--error": "var(--xmlui-borderColor-checked-Switch--error)", "Input:backgroundColor-checked-Switch--error": "var(--xmlui-backgroundColor-checked-Switch--error)", "Input:borderColor-checked-Switch--warning": "var(--xmlui-borderColor-checked-Switch--warning)", "Input:backgroundColor-checked-Switch--warning": "var(--xmlui-backgroundColor-checked-Switch--warning)", "Input:borderColor-checked-Switch--success": "var(--xmlui-borderColor-checked-Switch--success)", "Input:backgroundColor-checked-Switch--success": "var(--xmlui-backgroundColor-checked-Switch--success)", "Input:backgroundColor-Switch": "var(--xmlui-backgroundColor-Switch)", "Input:borderColor-Switch": "var(--xmlui-borderColor-Switch)", "backgroundColor-indicator-Switch": "var(--xmlui-backgroundColor-indicator-Switch)", "backgroundColor-checked-Switch": "var(--xmlui-backgroundColor-checked-Switch)", "backgroundColor-indicator-checked-Switch": "var(--xmlui-backgroundColor-indicator-checked-Switch)", "backgroundColor-Switch-indicator--disabled": "var(--xmlui-backgroundColor-Switch-indicator--disabled)", "Input:outlineWidth-Switch--focus": "var(--xmlui-outlineWidth-Switch--focus)", "Input:outlineColor-Switch--focus": "var(--xmlui-outlineColor-Switch--focus)", "Input:outlineStyle-Switch--focus": "var(--xmlui-outlineStyle-Switch--focus)", "Input:outlineOffset-Switch--focus": "var(--xmlui-outlineOffset-Switch--focus)", "Input:borderColor-Switch--error": "var(--xmlui-borderColor-Switch--error)", "Input:borderColor-Switch--warning": "var(--xmlui-borderColor-Switch--warning)", "Input:borderColor-Switch--success": "var(--xmlui-borderColor-Switch--success)"}'`;
9262
- const resetAppearance = "_resetAppearance_xjsdj_14";
9263
- const label = "_label_xjsdj_21";
9264
- const inputContainer = "_inputContainer_xjsdj_24";
9265
- const checkbox = "_checkbox_xjsdj_31";
9266
- const forceHover = "_forceHover_xjsdj_62";
9267
- const error$d = "_error_xjsdj_65";
9268
- const warning$c = "_warning_xjsdj_76";
9269
- const valid$d = "_valid_xjsdj_87";
9270
- const noTransition = "_noTransition_xjsdj_177";
9318
+ const resetAppearance = "_resetAppearance_xdymb_14";
9319
+ const label = "_label_xdymb_21";
9320
+ const inputContainer = "_inputContainer_xdymb_24";
9321
+ const checkbox = "_checkbox_xdymb_31";
9322
+ const error$d = "_error_xdymb_62";
9323
+ const warning$c = "_warning_xdymb_73";
9324
+ const valid$d = "_valid_xdymb_84";
9325
+ const noTransition = "_noTransition_xdymb_174";
9271
9326
  const styles$14 = {
9272
9327
  themeVars: themeVars$O,
9273
9328
  resetAppearance,
9274
9329
  label,
9275
9330
  inputContainer,
9276
9331
  checkbox,
9277
- forceHover,
9278
9332
  error: error$d,
9279
9333
  warning: warning$c,
9280
9334
  valid: valid$d,
9281
- "switch": "_switch_xjsdj_146",
9335
+ "switch": "_switch_xdymb_143",
9282
9336
  noTransition
9283
9337
  };
9284
9338
  const defaultProps$15 = {
@@ -9309,7 +9363,6 @@ const Toggle = forwardRef(function Toggle2({
9309
9363
  autoFocus,
9310
9364
  registerComponentApi,
9311
9365
  inputRenderer,
9312
- forceHover: forceHover2 = false,
9313
9366
  tabIndex,
9314
9367
  "aria-label": ariaLabel,
9315
9368
  ...rest
@@ -9436,7 +9489,6 @@ const Toggle = forwardRef(function Toggle2({
9436
9489
  [styles$14.error]: validationStatus === "error",
9437
9490
  [styles$14.warning]: validationStatus === "warning",
9438
9491
  [styles$14.valid]: validationStatus === "valid",
9439
- [styles$14.forceHover]: forceHover2,
9440
9492
  [styles$14.noTransition]: suppressTransition
9441
9493
  }
9442
9494
  )
@@ -9464,7 +9516,6 @@ const Toggle = forwardRef(function Toggle2({
9464
9516
  variant,
9465
9517
  indeterminate,
9466
9518
  autoFocus,
9467
- forceHover2,
9468
9519
  suppressTransition
9469
9520
  ]);
9470
9521
  return inputRenderer ? /* @__PURE__ */ jsxs("label", { className: classnames(styles$14.label, classes?.[COMPONENT_PART_KEY]), children: [
@@ -10685,7 +10736,7 @@ function ApiInterceptorProvider({
10685
10736
  return;
10686
10737
  }
10687
10738
  void (async () => {
10688
- const { initMock } = await import("./initMock-qSARW6AY.js");
10739
+ const { initMock } = await import("./initMock-DvFj3cun.js");
10689
10740
  const apiInstance2 = await initMock(interceptor);
10690
10741
  setApiInstance(apiInstance2);
10691
10742
  setInitialized(true);
@@ -10702,7 +10753,7 @@ function ApiInterceptorProvider({
10702
10753
  if (process.env.VITE_MOCK_ENABLED) {
10703
10754
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
10704
10755
  useWorker ? import("./apiInterceptorWorker-CDO-h2U4.js") : Promise.resolve({ createApiInterceptorWorker: () => null }),
10705
- import("./initMock-qSARW6AY.js")
10756
+ import("./initMock-DvFj3cun.js")
10706
10757
  ]);
10707
10758
  if (interceptor || forceInitialize) {
10708
10759
  const apiInstance2 = await initMock(interceptor || {});
@@ -10739,7 +10790,7 @@ function ApiInterceptorProvider({
10739
10790
  void (async () => {
10740
10791
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
10741
10792
  import("./apiInterceptorWorker-CDO-h2U4.js"),
10742
- import("./initMock-qSARW6AY.js")
10793
+ import("./initMock-DvFj3cun.js")
10743
10794
  ]);
10744
10795
  const apiInstance2 = await initMock(interceptor);
10745
10796
  await createApiInterceptorWorker(apiInstance2, parentInterceptorWorker);
@@ -13458,27 +13509,28 @@ const navLinkStyles = {
13458
13509
  iconAlignEnd
13459
13510
  };
13460
13511
  const themeVars$I = `'{"width-navPanel-App": "var(--xmlui-width-navPanel-App)", "width-navPanel-collapsed-App": "var(--xmlui-width-navPanel-collapsed-App)", "backgroundColor-navPanel-App": "var(--xmlui-backgroundColor-navPanel-App)", "boxShadow-header-App": "var(--xmlui-boxShadow-header-App)", "boxShadow-navPanel-App": "var(--xmlui-boxShadow-navPanel-App)", "backgroundColor-content-App": "var(--xmlui-backgroundColor-content-App)", "borderLeft-content-App": "var(--xmlui-borderLeft-content-App)", "borderRight-navPanelWrapper-App": "var(--xmlui-borderRight-navPanelWrapper-App)", "maxWidth-content-App": "var(--xmlui-maxWidth-content-App)", "maxWidth-content-App--withToc": "var(--xmlui-maxWidth-content-App--withToc)", "maxWidth-App": "var(--xmlui-maxWidth-App)", "backgroundColor-AppHeader": "var(--xmlui-backgroundColor-AppHeader)", "borderBottom-AppHeader": "var(--xmlui-borderBottom-AppHeader)", "scroll-padding-block-Pages": "var(--xmlui-scroll-padding-block-Pages)"}'`;
13461
- const appContainer = "_appContainer_x4udf_14";
13462
- const vertical$4 = "_vertical_x4udf_25";
13463
- const mainContentArea = "_mainContentArea_x4udf_28";
13464
- const noScrollbarGutters = "_noScrollbarGutters_x4udf_31";
13465
- const scrollWholePage = "_scrollWholePage_x4udf_34";
13466
- const navPanelWrapper = "_navPanelWrapper_x4udf_37";
13467
- const navPanelWrapperCollapsed = "_navPanelWrapperCollapsed_x4udf_42";
13468
- const footerWrapper = "_footerWrapper_x4udf_47";
13469
- const horizontal$4 = "_horizontal_x4udf_50";
13470
- const sticky = "_sticky_x4udf_56";
13471
- const headerWrapper$1 = "_headerWrapper_x4udf_65";
13472
- const desktop = "_desktop_x4udf_81";
13473
- const pagesContainer = "_pagesContainer_x4udf_112";
13474
- const pageContentContainer = "_pageContentContainer_x4udf_123";
13475
- const verticalFullHeader = "_verticalFullHeader_x4udf_150";
13476
- const noFooter = "_noFooter_x4udf_156";
13477
- const nonSticky = "_nonSticky_x4udf_209";
13478
- const mainContentRow = "_mainContentRow_x4udf_240";
13479
- const withToc = "_withToc_x4udf_369";
13480
- const navPanelCollapsed = "_navPanelCollapsed_x4udf_372";
13481
- const withDefaultContentPadding = "_withDefaultContentPadding_x4udf_378";
13512
+ const appContainer = "_appContainer_1rig9_14";
13513
+ const vertical$4 = "_vertical_1rig9_25";
13514
+ const mainContentArea = "_mainContentArea_1rig9_28";
13515
+ const noScrollbarGutters = "_noScrollbarGutters_1rig9_31";
13516
+ const scrollWholePage = "_scrollWholePage_1rig9_34";
13517
+ const navPanelWrapper = "_navPanelWrapper_1rig9_37";
13518
+ const navPanelWrapperCollapsed = "_navPanelWrapperCollapsed_1rig9_42";
13519
+ const footerWrapper = "_footerWrapper_1rig9_47";
13520
+ const horizontal$4 = "_horizontal_1rig9_50";
13521
+ const sticky = "_sticky_1rig9_56";
13522
+ const headerWrapper$1 = "_headerWrapper_1rig9_65";
13523
+ const desktop = "_desktop_1rig9_81";
13524
+ const pagesContainer = "_pagesContainer_1rig9_112";
13525
+ const pageContentContainer = "_pageContentContainer_1rig9_123";
13526
+ const verticalFullHeader = "_verticalFullHeader_1rig9_150";
13527
+ const noFooter = "_noFooter_1rig9_156";
13528
+ const nonSticky = "_nonSticky_1rig9_209";
13529
+ const mainContentRow = "_mainContentRow_1rig9_240";
13530
+ const fitContent = "_fitContent_1rig9_258";
13531
+ const withToc = "_withToc_1rig9_385";
13532
+ const navPanelCollapsed = "_navPanelCollapsed_1rig9_388";
13533
+ const withDefaultContentPadding = "_withDefaultContentPadding_1rig9_394";
13482
13534
  const styles$X = {
13483
13535
  themeVars: themeVars$I,
13484
13536
  appContainer,
@@ -13499,6 +13551,7 @@ const styles$X = {
13499
13551
  noFooter,
13500
13552
  nonSticky,
13501
13553
  mainContentRow,
13554
+ fitContent,
13502
13555
  withToc,
13503
13556
  navPanelCollapsed,
13504
13557
  withDefaultContentPadding
@@ -14302,6 +14355,7 @@ const AppPagesSlot = createSlot("AppPagesSlot", styles$X.pagesContainer);
14302
14355
  const defaultProps$Y = {
14303
14356
  scrollWholePage: true,
14304
14357
  noScrollbarGutters: false,
14358
+ fitContent: false,
14305
14359
  defaultTone: void 0,
14306
14360
  defaultTheme: void 0,
14307
14361
  autoDetectTone: false,
@@ -14332,6 +14386,7 @@ function App({
14332
14386
  loggedInUser,
14333
14387
  scrollWholePage: scrollWholePage2 = defaultProps$Y.scrollWholePage,
14334
14388
  noScrollbarGutters: noScrollbarGutters2 = defaultProps$Y.noScrollbarGutters,
14389
+ fitContent: fitContent2 = defaultProps$Y.fitContent,
14335
14390
  onReady = defaultProps$Y.onReady,
14336
14391
  onMessageReceived = defaultProps$Y.onMessageReceived,
14337
14392
  onKeyDown = defaultProps$Y.onKeyDown,
@@ -14564,7 +14619,8 @@ function App({
14564
14619
  classes?.[COMPONENT_PART_KEY],
14565
14620
  styles$X.appContainer,
14566
14621
  {
14567
- [styles$X.scrollWholePage]: scrollWholePage2,
14622
+ [styles$X.scrollWholePage]: scrollWholePage2 && !fitContent2,
14623
+ [styles$X.fitContent]: fitContent2,
14568
14624
  [styles$X.noScrollbarGutters]: noScrollbarGutters2,
14569
14625
  [styles$X.noFooter]: !footerSticky,
14570
14626
  "media-large": mediaSize.largeScreen,
@@ -14631,6 +14687,7 @@ function App({
14631
14687
  }),
14632
14688
  style: styleWithHelpers,
14633
14689
  ref: shouldContainerScroll ? pageScrollRef : void 0,
14690
+ "data-xmlui-app-fit-content": fitContent2 ? "true" : void 0,
14634
14691
  ...rest,
14635
14692
  children: config.useVerticalFullHeaderStructure ? /* @__PURE__ */ jsxs(Fragment, { children: [
14636
14693
  renderHeaderSlot(),
@@ -16155,17 +16212,15 @@ function hierarchyToNative(hierarchyData, fieldConfig) {
16155
16212
  treeItemsById
16156
16213
  };
16157
16214
  }
16158
- const TreeRow = memo(({ index, data }) => {
16215
+ const TreeRow = memo(({ index, data, isSelected, isFocused }) => {
16159
16216
  const {
16160
16217
  nodes,
16161
16218
  toggleNode,
16162
- selectedId,
16163
16219
  itemRenderer,
16164
16220
  itemClickExpands,
16165
16221
  onItemClick,
16166
16222
  onSelection,
16167
16223
  lookupEventHandler,
16168
- focusedIndex,
16169
16224
  treeContainerRef,
16170
16225
  iconCollapsed,
16171
16226
  iconExpanded,
@@ -16175,8 +16230,6 @@ const TreeRow = memo(({ index, data }) => {
16175
16230
  spinnerDelay
16176
16231
  } = data;
16177
16232
  const treeItem = nodes[index];
16178
- const isFocused = focusedIndex === index && focusedIndex >= 0;
16179
- const isSelected = String(selectedId) === String(treeItem.key);
16180
16233
  const nodeWithState = treeItem;
16181
16234
  const isLoading = nodeWithState.loadingState === "loading";
16182
16235
  const [showSpinner, setShowSpinner] = useState(false);
@@ -16331,6 +16384,16 @@ const TreeRow = memo(({ index, data }) => {
16331
16384
  }
16332
16385
  ) });
16333
16386
  });
16387
+ const TreeMemoizedRow = memo(
16388
+ ({ index, data, isSelected, isFocused }) => /* @__PURE__ */ jsx(TreeRow, { index, data, isSelected, isFocused }),
16389
+ (prev, next) => {
16390
+ if (prev.data !== next.data) return false;
16391
+ if (prev.index !== next.index) return false;
16392
+ if (prev.isSelected !== next.isSelected) return false;
16393
+ if (prev.isFocused !== next.isFocused) return false;
16394
+ return true;
16395
+ }
16396
+ );
16334
16397
  const emptyTreeData = {
16335
16398
  treeData: [],
16336
16399
  treeItemsById: {}
@@ -17146,13 +17209,11 @@ const TreeComponent = memo((props) => {
17146
17209
  return {
17147
17210
  nodes: flatTreeData,
17148
17211
  toggleNode,
17149
- selectedId: effectiveSelectedId,
17150
17212
  itemRenderer,
17151
17213
  itemClickExpands,
17152
17214
  onItemClick,
17153
17215
  onSelection: (node) => setSelectedNodeById(node.key),
17154
17216
  lookupEventHandler,
17155
- focusedIndex,
17156
17217
  onKeyDown: handleKeyDown,
17157
17218
  treeContainerRef,
17158
17219
  iconCollapsed,
@@ -17165,13 +17226,11 @@ const TreeComponent = memo((props) => {
17165
17226
  }, [
17166
17227
  flatTreeData,
17167
17228
  toggleNode,
17168
- effectiveSelectedId,
17169
17229
  itemRenderer,
17170
17230
  itemClickExpands,
17171
17231
  onItemClick,
17172
17232
  setSelectedNodeById,
17173
17233
  lookupEventHandler,
17174
- focusedIndex,
17175
17234
  handleKeyDown,
17176
17235
  iconCollapsed,
17177
17236
  iconExpanded,
@@ -17989,7 +18048,9 @@ const TreeComponent = memo((props) => {
17989
18048
  children: /* @__PURE__ */ jsx(Virtualizer, { ref: listRef, itemSize: measuredItemSize || itemHeight, children: flatTreeData.map((node, index) => {
17990
18049
  const isFirstItem = index === 0;
17991
18050
  const shouldMeasure = isFirstItem && fixedItemSize;
17992
- return shouldMeasure ? /* @__PURE__ */ jsx("div", { ref: firstItemRef, children: /* @__PURE__ */ jsx(TreeRow, { index, data: itemData }) }, node.key) : /* @__PURE__ */ jsx(TreeRow, { index, data: itemData }, node.key);
18051
+ const isSelected = String(effectiveSelectedId) === String(node.key);
18052
+ const isFocused = focusedIndex === index && focusedIndex >= 0;
18053
+ return shouldMeasure ? /* @__PURE__ */ jsx("div", { ref: firstItemRef, children: /* @__PURE__ */ jsx(TreeMemoizedRow, { index, data: itemData, isSelected, isFocused }) }, node.key) : /* @__PURE__ */ jsx(TreeMemoizedRow, { index, data: itemData, isSelected, isFocused }, node.key);
17993
18054
  }) })
17994
18055
  }
17995
18056
  );
@@ -18397,6 +18458,57 @@ const TreeMd = createMetadata({
18397
18458
  [`outlineOffset-${COMP$17}--focus`]: "$outlineOffset--focus"
18398
18459
  }
18399
18460
  });
18461
+ const defaultItemTemplate = {
18462
+ type: "HStack",
18463
+ props: {
18464
+ verticalAlignment: "center",
18465
+ gap: "$space-4"
18466
+ },
18467
+ children: [
18468
+ {
18469
+ type: "Icon",
18470
+ when: "{$item.icon}",
18471
+ props: {
18472
+ name: "{$item.icon}"
18473
+ }
18474
+ },
18475
+ {
18476
+ type: "Text",
18477
+ props: {
18478
+ value: "{$item.name}"
18479
+ }
18480
+ }
18481
+ ]
18482
+ };
18483
+ function TreeWithStableRenderer({ renderChild: renderChild2, itemTemplate, ...treeProps }) {
18484
+ const renderChildRef = useRef(renderChild2);
18485
+ renderChildRef.current = renderChild2;
18486
+ const stableRenderChildRef = useRef(
18487
+ (node, ctx) => renderChildRef.current(node, ctx)
18488
+ );
18489
+ const stableItemRenderer = useMemo(
18490
+ () => (flatTreeNode) => {
18491
+ const itemContext = {
18492
+ id: flatTreeNode.id,
18493
+ name: flatTreeNode.displayName,
18494
+ depth: flatTreeNode.depth,
18495
+ isExpanded: flatTreeNode.isExpanded,
18496
+ hasChildren: flatTreeNode.hasChildren,
18497
+ ...flatTreeNode
18498
+ };
18499
+ return /* @__PURE__ */ jsx(
18500
+ MemoizedItem,
18501
+ {
18502
+ node: itemTemplate ?? defaultItemTemplate,
18503
+ contextVars: { $item: itemContext },
18504
+ renderChild: stableRenderChildRef.current
18505
+ }
18506
+ );
18507
+ },
18508
+ [itemTemplate]
18509
+ );
18510
+ return /* @__PURE__ */ jsx(TreeComponent, { ...treeProps, itemRenderer: stableItemRenderer });
18511
+ }
18400
18512
  const treeComponentRenderer = wrapComponent(
18401
18513
  COMP$17,
18402
18514
  TreeComponent,
@@ -18438,33 +18550,13 @@ const treeComponentRenderer = wrapComponent(
18438
18550
  "itemTemplate"
18439
18551
  ],
18440
18552
  customRender(_props, { node, extractValue, renderChild: renderChild2, classes, lookupEventHandler, registerComponentApi }) {
18441
- const defaultItemTemplate = {
18442
- type: "HStack",
18443
- props: {
18444
- verticalAlignment: "center",
18445
- gap: "$space-4"
18446
- },
18447
- children: [
18448
- {
18449
- type: "Icon",
18450
- when: "{$item.icon}",
18451
- props: {
18452
- name: "{$item.icon}"
18453
- }
18454
- },
18455
- {
18456
- type: "Text",
18457
- props: {
18458
- value: "{$item.name}"
18459
- }
18460
- }
18461
- ]
18462
- };
18463
18553
  return /* @__PURE__ */ jsx(
18464
- TreeComponent,
18554
+ TreeWithStableRenderer,
18465
18555
  {
18466
18556
  registerComponentApi,
18467
18557
  classes,
18558
+ renderChild: renderChild2,
18559
+ itemTemplate: node.props.itemTemplate,
18468
18560
  data: extractValue(node.props.data),
18469
18561
  dataFormat: extractValue(node.props.dataFormat),
18470
18562
  idField: extractValue(node.props.idField),
@@ -18519,40 +18611,7 @@ const treeComponentRenderer = wrapComponent(
18519
18611
  onPasteAction: lookupEventHandler("pasteAction"),
18520
18612
  onDeleteAction: lookupEventHandler("deleteAction"),
18521
18613
  overflow: extractValue(node.props.overflow),
18522
- lookupEventHandler: node.events?.contextMenu ? lookupEventHandler : void 0,
18523
- itemRenderer: (flatTreeNode) => {
18524
- const itemContext = {
18525
- id: flatTreeNode.id,
18526
- // $item.id - Internal unique identifier
18527
- name: flatTreeNode.displayName,
18528
- // $item.name - Primary display text
18529
- depth: flatTreeNode.depth,
18530
- // $item.depth - Nesting level (0-based)
18531
- isExpanded: flatTreeNode.isExpanded,
18532
- // $item.isExpanded - Expansion state
18533
- hasChildren: flatTreeNode.hasChildren,
18534
- // $item.hasChildren - Children indicator
18535
- // - icon, iconExpanded, iconCollapsed (from icon fields)
18536
- // - uid, path, parentIds, selectable, children (TreeNode internals)
18537
- // - All original source data properties (custom fields)
18538
- ...flatTreeNode
18539
- };
18540
- return node.props.itemTemplate ? /* @__PURE__ */ jsx(
18541
- MemoizedItem,
18542
- {
18543
- node: node.props.itemTemplate,
18544
- contextVars: { $item: itemContext },
18545
- renderChild: renderChild2
18546
- }
18547
- ) : /* @__PURE__ */ jsx(
18548
- MemoizedItem,
18549
- {
18550
- node: defaultItemTemplate,
18551
- contextVars: { $item: itemContext },
18552
- renderChild: renderChild2
18553
- }
18554
- );
18555
- }
18614
+ lookupEventHandler: node.events?.contextMenu ? lookupEventHandler : void 0
18556
18615
  }
18557
18616
  );
18558
18617
  }
@@ -18611,39 +18670,42 @@ const MessageListenerMd = createMetadata({
18611
18670
  }
18612
18671
  });
18613
18672
  const messageListenerComponentRenderer = wrapComponent(COMP$15, MessageListenerNative, MessageListenerMd, {});
18614
- const themeVars$B = `'{"textColor-pagination-Table": "var(--xmlui-textColor-pagination-Table)", "backgroundColor-Table": "var(--xmlui-backgroundColor-Table)", "textColor-Table": "var(--xmlui-textColor-Table)", "backgroundColor-row-Table": "var(--xmlui-backgroundColor-row-Table)", "backgroundColor-row-Table--hover": "var(--xmlui-backgroundColor-row-Table--hover)", "backgroundColor-selected-Table": "var(--xmlui-backgroundColor-selected-Table)", "backgroundColor-selected-Table--hover": "var(--xmlui-backgroundColor-selected-Table--hover)", "backgroundColor-evenRow-Table": "var(--xmlui-backgroundColor-evenRow-Table)", "backgroundColor-oddRow-Table": "var(--xmlui-backgroundColor-oddRow-Table)", "backgroundColor-heading-Table": "var(--xmlui-backgroundColor-heading-Table)", "backgroundColor-heading-Table--hover": "var(--xmlui-backgroundColor-heading-Table--hover)", "backgroundColor-heading-Table--active": "var(--xmlui-backgroundColor-heading-Table--active)", "padding-heading-Table": "var(--xmlui-padding-heading-Table)", "paddingHorizontal-heading-Table": "var(--xmlui-paddingHorizontal-heading-Table, var(--xmlui-padding-heading-Table))", "paddingVertical-heading-Table": "var(--xmlui-paddingVertical-heading-Table, var(--xmlui-padding-heading-Table))", "paddingLeft-heading-Table": "var(--xmlui-paddingLeft-heading-Table, var(--xmlui-paddingHorizontal-heading-Table, var(--xmlui-padding-heading-Table)))", "paddingRight-heading-Table": "var(--xmlui-paddingRight-heading-Table, var(--xmlui-paddingHorizontal-heading-Table, var(--xmlui-padding-heading-Table)))", "paddingTop-heading-Table": "var(--xmlui-paddingTop-heading-Table, var(--xmlui-paddingVertical-heading-Table, var(--xmlui-padding-heading-Table)))", "paddingBottom-heading-Table": "var(--xmlui-paddingBottom-heading-Table, var(--xmlui-paddingVertical-heading-Table, var(--xmlui-padding-heading-Table)))", "padding-cell-Table": "var(--xmlui-padding-cell-Table)", "paddingHorizontal-cell-Table": "var(--xmlui-paddingHorizontal-cell-Table, var(--xmlui-padding-cell-Table))", "paddingVertical-cell-Table": "var(--xmlui-paddingVertical-cell-Table, var(--xmlui-padding-cell-Table))", "paddingLeft-cell-Table": "var(--xmlui-paddingLeft-cell-Table, var(--xmlui-paddingHorizontal-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingRight-cell-Table": "var(--xmlui-paddingRight-cell-Table, var(--xmlui-paddingHorizontal-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingTop-cell-Table": "var(--xmlui-paddingTop-cell-Table, var(--xmlui-paddingVertical-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingBottom-cell-Table": "var(--xmlui-paddingBottom-cell-Table, var(--xmlui-paddingVertical-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingHorizontal-cell-first-Table": "var(--xmlui-paddingHorizontal-cell-first-Table)", "paddingHorizontal-cell-last-Table": "var(--xmlui-paddingHorizontal-cell-last-Table)", "border-cell-Table": "var(--xmlui-border-cell-Table)", "borderHorizontal-cell-Table": "var(--xmlui-borderHorizontal-cell-Table, var(--xmlui-border-cell-Table))", "borderVertical-cell-Table": "var(--xmlui-borderVertical-cell-Table, var(--xmlui-border-cell-Table))", "borderLeft-cell-Table": "var(--xmlui-borderLeft-cell-Table, var(--xmlui-borderHorizontal-cell-Table, var(--xmlui-border-cell-Table)))", "borderRight-cell-Table": "var(--xmlui-borderRight-cell-Table, var(--xmlui-borderHorizontal-cell-Table, var(--xmlui-border-cell-Table)))", "borderTop-cell-Table": "var(--xmlui-borderTop-cell-Table, var(--xmlui-borderVertical-cell-Table, var(--xmlui-border-cell-Table)))", "borderBottom-cell-Table": "var(--xmlui-borderBottom-cell-Table)", "borderWidth-cell-Table": "var(--xmlui-borderWidth-cell-Table)", "borderHorizontalWidth-cell-Table": "var(--xmlui-borderHorizontalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table))", "borderLeftWidth-cell-Table": "var(--xmlui-borderLeftWidth-cell-Table, var(--xmlui-borderHorizontalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderRightWidth-cell-Table": "var(--xmlui-borderRightWidth-cell-Table, var(--xmlui-borderHorizontalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderVerticalWidth-cell-Table": "var(--xmlui-borderVerticalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table))", "borderTopWidth-cell-Table": "var(--xmlui-borderTopWidth-cell-Table, var(--xmlui-borderVerticalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderBottomWidth-cell-Table": "var(--xmlui-borderBottomWidth-cell-Table, var(--xmlui-borderVerticalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderStyle-cell-Table": "var(--xmlui-borderStyle-cell-Table)", "borderHorizontalStyle-cell-Table": "var(--xmlui-borderHorizontalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table))", "borderLeftStyle-cell-Table": "var(--xmlui-borderLeftStyle-cell-Table, var(--xmlui-borderHorizontalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderRightStyle-cell-Table": "var(--xmlui-borderRightStyle-cell-Table, var(--xmlui-borderHorizontalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderVerticalStyle-cell-Table": "var(--xmlui-borderVerticalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table))", "borderTopStyle-cell-Table": "var(--xmlui-borderTopStyle-cell-Table, var(--xmlui-borderVerticalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderBottomStyle-cell-Table": "var(--xmlui-borderBottomStyle-cell-Table, var(--xmlui-borderVerticalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderColor-cell-Table": "var(--xmlui-borderColor-cell-Table)", "borderHorizontalColor-cell-Table": "var(--xmlui-borderHorizontalColor-cell-Table, var(--xmlui-borderColor-cell-Table))", "borderLeftColor-cell-Table": "var(--xmlui-borderLeftColor-cell-Table, var(--xmlui-borderHorizontalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderRightColor-cell-Table": "var(--xmlui-borderRightColor-cell-Table, var(--xmlui-borderHorizontalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderVerticalColor-cell-Table": "var(--xmlui-borderVerticalColor-cell-Table, var(--xmlui-borderColor-cell-Table))", "borderTopColor-cell-Table": "var(--xmlui-borderTopColor-cell-Table, var(--xmlui-borderVerticalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderBottomColor-cell-Table": "var(--xmlui-borderBottomColor-cell-Table, var(--xmlui-borderVerticalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderStartStartRadius-cell-Table": "var(--xmlui-borderStartStartRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "borderStartEndRadius-cell-Table": "var(--xmlui-borderStartEndRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "borderEndStartRadius-cell-Table": "var(--xmlui-borderEndStartRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "borderEndEndRadius-cell-Table": "var(--xmlui-borderEndEndRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "border-Table": "var(--xmlui-border-Table)", "borderHorizontal-Table": "var(--xmlui-borderHorizontal-Table, var(--xmlui-border-Table))", "borderVertical-Table": "var(--xmlui-borderVertical-Table, var(--xmlui-border-Table))", "borderLeft-Table": "var(--xmlui-borderLeft-Table, var(--xmlui-borderHorizontal-Table, var(--xmlui-border-Table)))", "borderRight-Table": "var(--xmlui-borderRight-Table, var(--xmlui-borderHorizontal-Table, var(--xmlui-border-Table)))", "borderTop-Table": "var(--xmlui-borderTop-Table, var(--xmlui-borderVertical-Table, var(--xmlui-border-Table)))", "borderBottom-Table": "var(--xmlui-borderBottom-Table, var(--xmlui-borderVertical-Table, var(--xmlui-border-Table)))", "borderWidth-Table": "var(--xmlui-borderWidth-Table)", "borderHorizontalWidth-Table": "var(--xmlui-borderHorizontalWidth-Table, var(--xmlui-borderWidth-Table))", "borderLeftWidth-Table": "var(--xmlui-borderLeftWidth-Table, var(--xmlui-borderHorizontalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderRightWidth-Table": "var(--xmlui-borderRightWidth-Table, var(--xmlui-borderHorizontalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderVerticalWidth-Table": "var(--xmlui-borderVerticalWidth-Table, var(--xmlui-borderWidth-Table))", "borderTopWidth-Table": "var(--xmlui-borderTopWidth-Table, var(--xmlui-borderVerticalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderBottomWidth-Table": "var(--xmlui-borderBottomWidth-Table, var(--xmlui-borderVerticalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderStyle-Table": "var(--xmlui-borderStyle-Table)", "borderHorizontalStyle-Table": "var(--xmlui-borderHorizontalStyle-Table, var(--xmlui-borderStyle-Table))", "borderLeftStyle-Table": "var(--xmlui-borderLeftStyle-Table, var(--xmlui-borderHorizontalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderRightStyle-Table": "var(--xmlui-borderRightStyle-Table, var(--xmlui-borderHorizontalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderVerticalStyle-Table": "var(--xmlui-borderVerticalStyle-Table, var(--xmlui-borderStyle-Table))", "borderTopStyle-Table": "var(--xmlui-borderTopStyle-Table, var(--xmlui-borderVerticalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderBottomStyle-Table": "var(--xmlui-borderBottomStyle-Table, var(--xmlui-borderVerticalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderColor-Table": "var(--xmlui-borderColor-Table)", "borderHorizontalColor-Table": "var(--xmlui-borderHorizontalColor-Table, var(--xmlui-borderColor-Table))", "borderLeftColor-Table": "var(--xmlui-borderLeftColor-Table, var(--xmlui-borderHorizontalColor-Table, var(--xmlui-borderColor-Table)))", "borderRightColor-Table": "var(--xmlui-borderRightColor-Table, var(--xmlui-borderHorizontalColor-Table, var(--xmlui-borderColor-Table)))", "borderVerticalColor-Table": "var(--xmlui-borderVerticalColor-Table, var(--xmlui-borderColor-Table))", "borderTopColor-Table": "var(--xmlui-borderTopColor-Table, var(--xmlui-borderVerticalColor-Table, var(--xmlui-borderColor-Table)))", "borderBottomColor-Table": "var(--xmlui-borderBottomColor-Table, var(--xmlui-borderVerticalColor-Table, var(--xmlui-borderColor-Table)))", "borderStartStartRadius-Table": "var(--xmlui-borderStartStartRadius-Table, var(--xmlui-borderRadius-Table))", "borderStartEndRadius-Table": "var(--xmlui-borderStartEndRadius-Table, var(--xmlui-borderRadius-Table))", "borderEndStartRadius-Table": "var(--xmlui-borderEndStartRadius-Table, var(--xmlui-borderRadius-Table))", "borderEndEndRadius-Table": "var(--xmlui-borderEndEndRadius-Table, var(--xmlui-borderRadius-Table))", "backgroundColor-pagination-Table": "var(--xmlui-backgroundColor-pagination-Table)", "textColor-heading-Table": "var(--xmlui-textColor-heading-Table)", "fontWeight-row-Table": "var(--xmlui-fontWeight-row-Table)", "fontSize-row-Table": "var(--xmlui-fontSize-row-Table)", "fontSize-checkbox-Table": "var(--xmlui-fontSize-checkbox-Table)", "fontWeight-heading-Table": "var(--xmlui-fontWeight-heading-Table)", "fontSize-heading-Table": "var(--xmlui-fontSize-heading-Table)", "textTransform-heading-Table": "var(--xmlui-textTransform-heading-Table)", "borderRadius-Table": "var(--xmlui-borderRadius-Table)", "outlineWidth-heading-Table--focus": "var(--xmlui-outlineWidth-heading-Table--focus)", "outlineColor-heading-Table--focus": "var(--xmlui-outlineColor-heading-Table--focus)", "outlineStyle-heading-Table--focus": "var(--xmlui-outlineStyle-heading-Table--focus)", "outlineOffset-heading-Table--focus": "var(--xmlui-outlineOffset-heading-Table--focus)", "borderBottom-last-row-Table": "var(--xmlui-borderBottom-last-row-Table)", "backgroundColor-pinnedCell-Table": "var(--xmlui-backgroundColor-pinnedCell-Table)"}'`;
18615
- const wrapper$a = "_wrapper_xjp6g_14";
18616
- const noScroll = "_noScroll_xjp6g_43";
18617
- const clickableHeader = "_clickableHeader_xjp6g_46";
18618
- const headerContent$1 = "_headerContent_xjp6g_60";
18619
- const orderingIndicator = "_orderingIndicator_xjp6g_63";
18620
- const activeOrdering = "_activeOrdering_xjp6g_68";
18621
- const alwaysShow = "_alwaysShow_xjp6g_68";
18622
- const headerRow = "_headerRow_xjp6g_105";
18623
- const columnCell = "_columnCell_xjp6g_112";
18624
- const cell = "_cell_xjp6g_113";
18625
- const alignTop = "_alignTop_xjp6g_122";
18626
- const alignCenter$1 = "_alignCenter_xjp6g_126";
18627
- const alignBottom = "_alignBottom_xjp6g_130";
18628
- const table = "_table_xjp6g_134";
18629
- const row$1 = "_row_xjp6g_144";
18630
- const checkBoxWrapper = "_checkBoxWrapper_xjp6g_150";
18631
- const showInHeader = "_showInHeader_xjp6g_155";
18632
- const showInRow = "_showInRow_xjp6g_155";
18633
- const selected$3 = "_selected_xjp6g_160";
18634
- const allSelected = "_allSelected_xjp6g_160";
18635
- const cellContent = "_cellContent_xjp6g_191";
18636
- const evenRow = "_evenRow_xjp6g_206";
18637
- const oddRow = "_oddRow_xjp6g_209";
18638
- const focused$3 = "_focused_xjp6g_224";
18639
- const disabled$7 = "_disabled_xjp6g_236";
18640
- const noBottomBorder = "_noBottomBorder_xjp6g_243";
18641
- const headerWrapper = "_headerWrapper_xjp6g_256";
18642
- const noRows$1 = "_noRows_xjp6g_273";
18643
- const loadingWrapper$1 = "_loadingWrapper_xjp6g_312";
18644
- const forceHoverWrapper = "_forceHoverWrapper_xjp6g_325";
18645
- const resizer$1 = "_resizer_xjp6g_328";
18646
- const isResizing = "_isResizing_xjp6g_349";
18673
+ const themeVars$B = `'{"textColor-pagination-Table": "var(--xmlui-textColor-pagination-Table)", "backgroundColor-Table": "var(--xmlui-backgroundColor-Table)", "textColor-Table": "var(--xmlui-textColor-Table)", "backgroundColor-row-Table": "var(--xmlui-backgroundColor-row-Table)", "backgroundColor-row-Table--hover": "var(--xmlui-backgroundColor-row-Table--hover)", "backgroundColor-selected-Table": "var(--xmlui-backgroundColor-selected-Table)", "backgroundColor-selected-Table--hover": "var(--xmlui-backgroundColor-selected-Table--hover)", "backgroundColor-evenRow-Table": "var(--xmlui-backgroundColor-evenRow-Table)", "backgroundColor-oddRow-Table": "var(--xmlui-backgroundColor-oddRow-Table)", "backgroundColor-heading-Table": "var(--xmlui-backgroundColor-heading-Table)", "backgroundColor-heading-Table--hover": "var(--xmlui-backgroundColor-heading-Table--hover)", "backgroundColor-heading-Table--active": "var(--xmlui-backgroundColor-heading-Table--active)", "padding-heading-Table": "var(--xmlui-padding-heading-Table)", "paddingHorizontal-heading-Table": "var(--xmlui-paddingHorizontal-heading-Table, var(--xmlui-padding-heading-Table))", "paddingVertical-heading-Table": "var(--xmlui-paddingVertical-heading-Table, var(--xmlui-padding-heading-Table))", "paddingLeft-heading-Table": "var(--xmlui-paddingLeft-heading-Table, var(--xmlui-paddingHorizontal-heading-Table, var(--xmlui-padding-heading-Table)))", "paddingRight-heading-Table": "var(--xmlui-paddingRight-heading-Table, var(--xmlui-paddingHorizontal-heading-Table, var(--xmlui-padding-heading-Table)))", "paddingTop-heading-Table": "var(--xmlui-paddingTop-heading-Table, var(--xmlui-paddingVertical-heading-Table, var(--xmlui-padding-heading-Table)))", "paddingBottom-heading-Table": "var(--xmlui-paddingBottom-heading-Table, var(--xmlui-paddingVertical-heading-Table, var(--xmlui-padding-heading-Table)))", "padding-cell-Table": "var(--xmlui-padding-cell-Table)", "paddingHorizontal-cell-Table": "var(--xmlui-paddingHorizontal-cell-Table, var(--xmlui-padding-cell-Table))", "paddingVertical-cell-Table": "var(--xmlui-paddingVertical-cell-Table, var(--xmlui-padding-cell-Table))", "paddingLeft-cell-Table": "var(--xmlui-paddingLeft-cell-Table, var(--xmlui-paddingHorizontal-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingRight-cell-Table": "var(--xmlui-paddingRight-cell-Table, var(--xmlui-paddingHorizontal-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingTop-cell-Table": "var(--xmlui-paddingTop-cell-Table, var(--xmlui-paddingVertical-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingBottom-cell-Table": "var(--xmlui-paddingBottom-cell-Table, var(--xmlui-paddingVertical-cell-Table, var(--xmlui-padding-cell-Table)))", "paddingHorizontal-cell-first-Table": "var(--xmlui-paddingHorizontal-cell-first-Table)", "paddingHorizontal-cell-last-Table": "var(--xmlui-paddingHorizontal-cell-last-Table)", "border-cell-Table": "var(--xmlui-border-cell-Table)", "borderHorizontal-cell-Table": "var(--xmlui-borderHorizontal-cell-Table, var(--xmlui-border-cell-Table))", "borderVertical-cell-Table": "var(--xmlui-borderVertical-cell-Table, var(--xmlui-border-cell-Table))", "borderLeft-cell-Table": "var(--xmlui-borderLeft-cell-Table, var(--xmlui-borderHorizontal-cell-Table, var(--xmlui-border-cell-Table)))", "borderRight-cell-Table": "var(--xmlui-borderRight-cell-Table, var(--xmlui-borderHorizontal-cell-Table, var(--xmlui-border-cell-Table)))", "borderTop-cell-Table": "var(--xmlui-borderTop-cell-Table, var(--xmlui-borderVertical-cell-Table, var(--xmlui-border-cell-Table)))", "borderBottom-cell-Table": "var(--xmlui-borderBottom-cell-Table)", "borderWidth-cell-Table": "var(--xmlui-borderWidth-cell-Table)", "borderHorizontalWidth-cell-Table": "var(--xmlui-borderHorizontalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table))", "borderLeftWidth-cell-Table": "var(--xmlui-borderLeftWidth-cell-Table, var(--xmlui-borderHorizontalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderRightWidth-cell-Table": "var(--xmlui-borderRightWidth-cell-Table, var(--xmlui-borderHorizontalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderVerticalWidth-cell-Table": "var(--xmlui-borderVerticalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table))", "borderTopWidth-cell-Table": "var(--xmlui-borderTopWidth-cell-Table, var(--xmlui-borderVerticalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderBottomWidth-cell-Table": "var(--xmlui-borderBottomWidth-cell-Table, var(--xmlui-borderVerticalWidth-cell-Table, var(--xmlui-borderWidth-cell-Table)))", "borderStyle-cell-Table": "var(--xmlui-borderStyle-cell-Table)", "borderHorizontalStyle-cell-Table": "var(--xmlui-borderHorizontalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table))", "borderLeftStyle-cell-Table": "var(--xmlui-borderLeftStyle-cell-Table, var(--xmlui-borderHorizontalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderRightStyle-cell-Table": "var(--xmlui-borderRightStyle-cell-Table, var(--xmlui-borderHorizontalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderVerticalStyle-cell-Table": "var(--xmlui-borderVerticalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table))", "borderTopStyle-cell-Table": "var(--xmlui-borderTopStyle-cell-Table, var(--xmlui-borderVerticalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderBottomStyle-cell-Table": "var(--xmlui-borderBottomStyle-cell-Table, var(--xmlui-borderVerticalStyle-cell-Table, var(--xmlui-borderStyle-cell-Table)))", "borderColor-cell-Table": "var(--xmlui-borderColor-cell-Table)", "borderHorizontalColor-cell-Table": "var(--xmlui-borderHorizontalColor-cell-Table, var(--xmlui-borderColor-cell-Table))", "borderLeftColor-cell-Table": "var(--xmlui-borderLeftColor-cell-Table, var(--xmlui-borderHorizontalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderRightColor-cell-Table": "var(--xmlui-borderRightColor-cell-Table, var(--xmlui-borderHorizontalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderVerticalColor-cell-Table": "var(--xmlui-borderVerticalColor-cell-Table, var(--xmlui-borderColor-cell-Table))", "borderTopColor-cell-Table": "var(--xmlui-borderTopColor-cell-Table, var(--xmlui-borderVerticalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderBottomColor-cell-Table": "var(--xmlui-borderBottomColor-cell-Table, var(--xmlui-borderVerticalColor-cell-Table, var(--xmlui-borderColor-cell-Table)))", "borderStartStartRadius-cell-Table": "var(--xmlui-borderStartStartRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "borderStartEndRadius-cell-Table": "var(--xmlui-borderStartEndRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "borderEndStartRadius-cell-Table": "var(--xmlui-borderEndStartRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "borderEndEndRadius-cell-Table": "var(--xmlui-borderEndEndRadius-cell-Table, var(--xmlui-borderRadius-cell-Table))", "border-Table": "var(--xmlui-border-Table)", "borderHorizontal-Table": "var(--xmlui-borderHorizontal-Table, var(--xmlui-border-Table))", "borderVertical-Table": "var(--xmlui-borderVertical-Table, var(--xmlui-border-Table))", "borderLeft-Table": "var(--xmlui-borderLeft-Table, var(--xmlui-borderHorizontal-Table, var(--xmlui-border-Table)))", "borderRight-Table": "var(--xmlui-borderRight-Table, var(--xmlui-borderHorizontal-Table, var(--xmlui-border-Table)))", "borderTop-Table": "var(--xmlui-borderTop-Table, var(--xmlui-borderVertical-Table, var(--xmlui-border-Table)))", "borderBottom-Table": "var(--xmlui-borderBottom-Table, var(--xmlui-borderVertical-Table, var(--xmlui-border-Table)))", "borderWidth-Table": "var(--xmlui-borderWidth-Table)", "borderHorizontalWidth-Table": "var(--xmlui-borderHorizontalWidth-Table, var(--xmlui-borderWidth-Table))", "borderLeftWidth-Table": "var(--xmlui-borderLeftWidth-Table, var(--xmlui-borderHorizontalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderRightWidth-Table": "var(--xmlui-borderRightWidth-Table, var(--xmlui-borderHorizontalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderVerticalWidth-Table": "var(--xmlui-borderVerticalWidth-Table, var(--xmlui-borderWidth-Table))", "borderTopWidth-Table": "var(--xmlui-borderTopWidth-Table, var(--xmlui-borderVerticalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderBottomWidth-Table": "var(--xmlui-borderBottomWidth-Table, var(--xmlui-borderVerticalWidth-Table, var(--xmlui-borderWidth-Table)))", "borderStyle-Table": "var(--xmlui-borderStyle-Table)", "borderHorizontalStyle-Table": "var(--xmlui-borderHorizontalStyle-Table, var(--xmlui-borderStyle-Table))", "borderLeftStyle-Table": "var(--xmlui-borderLeftStyle-Table, var(--xmlui-borderHorizontalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderRightStyle-Table": "var(--xmlui-borderRightStyle-Table, var(--xmlui-borderHorizontalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderVerticalStyle-Table": "var(--xmlui-borderVerticalStyle-Table, var(--xmlui-borderStyle-Table))", "borderTopStyle-Table": "var(--xmlui-borderTopStyle-Table, var(--xmlui-borderVerticalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderBottomStyle-Table": "var(--xmlui-borderBottomStyle-Table, var(--xmlui-borderVerticalStyle-Table, var(--xmlui-borderStyle-Table)))", "borderColor-Table": "var(--xmlui-borderColor-Table)", "borderHorizontalColor-Table": "var(--xmlui-borderHorizontalColor-Table, var(--xmlui-borderColor-Table))", "borderLeftColor-Table": "var(--xmlui-borderLeftColor-Table, var(--xmlui-borderHorizontalColor-Table, var(--xmlui-borderColor-Table)))", "borderRightColor-Table": "var(--xmlui-borderRightColor-Table, var(--xmlui-borderHorizontalColor-Table, var(--xmlui-borderColor-Table)))", "borderVerticalColor-Table": "var(--xmlui-borderVerticalColor-Table, var(--xmlui-borderColor-Table))", "borderTopColor-Table": "var(--xmlui-borderTopColor-Table, var(--xmlui-borderVerticalColor-Table, var(--xmlui-borderColor-Table)))", "borderBottomColor-Table": "var(--xmlui-borderBottomColor-Table, var(--xmlui-borderVerticalColor-Table, var(--xmlui-borderColor-Table)))", "borderStartStartRadius-Table": "var(--xmlui-borderStartStartRadius-Table, var(--xmlui-borderRadius-Table))", "borderStartEndRadius-Table": "var(--xmlui-borderStartEndRadius-Table, var(--xmlui-borderRadius-Table))", "borderEndStartRadius-Table": "var(--xmlui-borderEndStartRadius-Table, var(--xmlui-borderRadius-Table))", "borderEndEndRadius-Table": "var(--xmlui-borderEndEndRadius-Table, var(--xmlui-borderRadius-Table))", "backgroundColor-pagination-Table": "var(--xmlui-backgroundColor-pagination-Table)", "textColor-heading-Table": "var(--xmlui-textColor-heading-Table)", "fontWeight-row-Table": "var(--xmlui-fontWeight-row-Table)", "fontSize-row-Table": "var(--xmlui-fontSize-row-Table)", "fontSize-checkbox-Table": "var(--xmlui-fontSize-checkbox-Table)", "backgroundColor-selectionCell-Table": "var(--xmlui-backgroundColor-selectionCell-Table)", "backgroundColor-selectionCell-Table--hover": "var(--xmlui-backgroundColor-selectionCell-Table--hover)", "fontWeight-heading-Table": "var(--xmlui-fontWeight-heading-Table)", "fontSize-heading-Table": "var(--xmlui-fontSize-heading-Table)", "textTransform-heading-Table": "var(--xmlui-textTransform-heading-Table)", "borderRadius-Table": "var(--xmlui-borderRadius-Table)", "outlineWidth-heading-Table--focus": "var(--xmlui-outlineWidth-heading-Table--focus)", "outlineColor-heading-Table--focus": "var(--xmlui-outlineColor-heading-Table--focus)", "outlineStyle-heading-Table--focus": "var(--xmlui-outlineStyle-heading-Table--focus)", "outlineOffset-heading-Table--focus": "var(--xmlui-outlineOffset-heading-Table--focus)", "borderBottom-last-row-Table": "var(--xmlui-borderBottom-last-row-Table)", "backgroundColor-pinnedCell-Table": "var(--xmlui-backgroundColor-pinnedCell-Table)", "backgroundColor-pinnedCell-Table--hover": "var(--xmlui-backgroundColor-pinnedCell-Table--hover)", "Input:borderColor-Checkbox--hover": "var(--xmlui-borderColor-Checkbox--hover)"}'`;
18674
+ const wrapper$a = "_wrapper_1n82x_14";
18675
+ const noScroll = "_noScroll_1n82x_43";
18676
+ const clickableHeader = "_clickableHeader_1n82x_46";
18677
+ const headerContent$1 = "_headerContent_1n82x_60";
18678
+ const orderingIndicator = "_orderingIndicator_1n82x_63";
18679
+ const activeOrdering = "_activeOrdering_1n82x_68";
18680
+ const alwaysShow = "_alwaysShow_1n82x_68";
18681
+ const headerRow = "_headerRow_1n82x_105";
18682
+ const columnCell = "_columnCell_1n82x_112";
18683
+ const cell = "_cell_1n82x_113";
18684
+ const alignTop = "_alignTop_1n82x_122";
18685
+ const alignCenter$1 = "_alignCenter_1n82x_126";
18686
+ const alignBottom = "_alignBottom_1n82x_130";
18687
+ const table = "_table_1n82x_138";
18688
+ const row$1 = "_row_1n82x_148";
18689
+ const checkBoxWrapper = "_checkBoxWrapper_1n82x_154";
18690
+ const showInHeader = "_showInHeader_1n82x_159";
18691
+ const showInRow = "_showInRow_1n82x_159";
18692
+ const selected$3 = "_selected_1n82x_164";
18693
+ const allSelected = "_allSelected_1n82x_164";
18694
+ const cellContent = "_cellContent_1n82x_195";
18695
+ const evenRow = "_evenRow_1n82x_212";
18696
+ const oddRow = "_oddRow_1n82x_216";
18697
+ const focused$3 = "_focused_1n82x_236";
18698
+ const disabled$7 = "_disabled_1n82x_252";
18699
+ const noBottomBorder = "_noBottomBorder_1n82x_259";
18700
+ const headerWrapper = "_headerWrapper_1n82x_272";
18701
+ const noRows$1 = "_noRows_1n82x_289";
18702
+ const loadingWrapper$1 = "_loadingWrapper_1n82x_328";
18703
+ const selectionToggle = "_selectionToggle_1n82x_343";
18704
+ const toleranceCompact = "_toleranceCompact_1n82x_346";
18705
+ const toleranceComfortable = "_toleranceComfortable_1n82x_352";
18706
+ const toleranceSpacious = "_toleranceSpacious_1n82x_358";
18707
+ const resizer$1 = "_resizer_1n82x_368";
18708
+ const isResizing = "_isResizing_1n82x_389";
18647
18709
  const styles$R = {
18648
18710
  themeVars: themeVars$B,
18649
18711
  wrapper: wrapper$a,
@@ -18675,7 +18737,10 @@ const styles$R = {
18675
18737
  headerWrapper,
18676
18738
  noRows: noRows$1,
18677
18739
  loadingWrapper: loadingWrapper$1,
18678
- forceHoverWrapper,
18740
+ selectionToggle,
18741
+ toleranceCompact,
18742
+ toleranceComfortable,
18743
+ toleranceSpacious,
18679
18744
  resizer: resizer$1,
18680
18745
  isResizing
18681
18746
  };
@@ -19603,6 +19668,7 @@ const CheckboxMd = createMetadata({
19603
19668
  }
19604
19669
  },
19605
19670
  themeVars: parseScssVar(styles$14.themeVars),
19671
+ compactInlineLabel: true,
19606
19672
  limitThemeVarsToComponent: true,
19607
19673
  defaultThemeVars: {
19608
19674
  [`borderColor-${COMP$14}`]: `$borderColor-Input-default`,
@@ -20262,8 +20328,43 @@ const SimpleSelect = forwardRef(
20262
20328
  } = props;
20263
20329
  const composedRef = forwardRef ? composeRefs(triggerRef, forwardedRef) : triggerRef;
20264
20330
  const [open, setOpen] = useState(false);
20331
+ useEffect(() => {
20332
+ if (!open || modal) return;
20333
+ const body2 = document.body;
20334
+ const LOCK_ATTR = "data-scroll-locked";
20335
+ let didDecrement = false;
20336
+ const decrement = () => {
20337
+ const count = parseInt(body2.getAttribute(LOCK_ATTR) || "0", 10);
20338
+ if (count > 0 && !didDecrement) {
20339
+ didDecrement = true;
20340
+ if (count <= 1) {
20341
+ body2.removeAttribute(LOCK_ATTR);
20342
+ } else {
20343
+ body2.setAttribute(LOCK_ATTR, String(count - 1));
20344
+ }
20345
+ }
20346
+ };
20347
+ const raf = requestAnimationFrame(decrement);
20348
+ const handler = (e) => {
20349
+ const viewport = body2.querySelector("[data-radix-select-viewport]");
20350
+ if (!viewport || !viewport.contains(e.target)) {
20351
+ e.stopPropagation();
20352
+ }
20353
+ };
20354
+ document.addEventListener("wheel", handler, true);
20355
+ document.addEventListener("touchmove", handler, true);
20356
+ return () => {
20357
+ cancelAnimationFrame(raf);
20358
+ if (didDecrement) {
20359
+ const count = parseInt(body2.getAttribute(LOCK_ATTR) || "0", 10);
20360
+ body2.setAttribute(LOCK_ATTR, String(count + 1));
20361
+ }
20362
+ document.removeEventListener("wheel", handler, true);
20363
+ document.removeEventListener("touchmove", handler, true);
20364
+ };
20365
+ }, [open, modal]);
20265
20366
  const stringValue = useMemo(() => {
20266
- return value != void 0 ? String(value) : void 0;
20367
+ return value != null && value !== "" ? String(value) : "";
20267
20368
  }, [value]);
20268
20369
  const handleValueChange = useCallback(
20269
20370
  (val) => {
@@ -20639,6 +20740,32 @@ const Select = forwardRef(function Select2({
20639
20740
  updateState({ value: initialValue }, { initial: true });
20640
20741
  }
20641
20742
  }, [initialValue, updateState]);
20743
+ const isInsideForm = useIsInsideForm();
20744
+ const hasValidatedInitialValueRef = useRef(false);
20745
+ useEffect(() => {
20746
+ if (!isInsideForm) return;
20747
+ if (hasValidatedInitialValueRef.current) return;
20748
+ if (options2.length === 0) return;
20749
+ if (value === void 0 || value === null) return;
20750
+ hasValidatedInitialValueRef.current = true;
20751
+ if (!multiSelect) {
20752
+ if (value !== "") {
20753
+ const isValid2 = options2.some((opt) => `${opt.value}` === `${value}`);
20754
+ if (!isValid2) {
20755
+ updateState({ value: void 0 }, { formOnly: true });
20756
+ }
20757
+ }
20758
+ } else {
20759
+ if (Array.isArray(value) && value.length > 0) {
20760
+ const validValues = value.filter(
20761
+ (v) => options2.some((opt) => String(opt.value) === String(v))
20762
+ );
20763
+ if (validValues.length !== value.length) {
20764
+ updateState({ value: validValues });
20765
+ }
20766
+ }
20767
+ }
20768
+ }, [isInsideForm, options2, value, multiSelect, updateState]);
20642
20769
  useEffect(() => {
20643
20770
  const current = referenceElement;
20644
20771
  const currentObserver = observer.current;
@@ -22198,32 +22325,32 @@ function defaultIsRowUnselectable(_) {
22198
22325
  }
22199
22326
  const SELECT_COLUMN_WIDTH = 42;
22200
22327
  const DEFAULT_PAGE_SIZES = [10];
22201
- const getCheckboxTolerancePixels = (tolerance) => {
22202
- switch (tolerance) {
22203
- case "none":
22204
- return 0;
22205
- case "compact":
22206
- return 8;
22207
- case "comfortable":
22208
- return 12;
22209
- case "spacious":
22210
- return 16;
22211
- default:
22212
- return 8;
22213
- }
22214
- };
22215
- const isWithinCheckboxBoundary = (pointX, pointY, checkboxRect, tolerancePixels) => {
22216
- const distanceToLeft = Math.abs(pointX - checkboxRect.left);
22217
- const distanceToRight = Math.abs(pointX - checkboxRect.right);
22218
- const distanceToTop = Math.abs(pointY - checkboxRect.top);
22219
- const distanceToBottom = Math.abs(pointY - checkboxRect.bottom);
22220
- const withinHorizontalBounds = pointX >= checkboxRect.left && pointX <= checkboxRect.right;
22221
- const withinVerticalBounds = pointY >= checkboxRect.top && pointY <= checkboxRect.bottom;
22222
- const withinCheckbox = withinHorizontalBounds && withinVerticalBounds;
22223
- const nearHorizontalBoundary = withinVerticalBounds && (distanceToLeft <= tolerancePixels || distanceToRight <= tolerancePixels);
22224
- const nearVerticalBoundary = withinHorizontalBounds && (distanceToTop <= tolerancePixels || distanceToBottom <= tolerancePixels);
22225
- return withinCheckbox || nearHorizontalBoundary || nearVerticalBoundary;
22226
- };
22328
+ function SelectionToggle({
22329
+ checkboxTolerance,
22330
+ ariaLabel,
22331
+ value,
22332
+ indeterminate,
22333
+ onDidChange,
22334
+ alwaysVisibleClassName
22335
+ }) {
22336
+ const wrapperClassName = classnames(styles$R.checkBoxWrapper, alwaysVisibleClassName, {
22337
+ [styles$R.toleranceCompact]: checkboxTolerance === "compact",
22338
+ [styles$R.toleranceComfortable]: checkboxTolerance === "comfortable",
22339
+ [styles$R.toleranceSpacious]: checkboxTolerance === "spacious"
22340
+ });
22341
+ return /* @__PURE__ */ jsx("div", { className: wrapperClassName, children: /* @__PURE__ */ jsx(
22342
+ ThemedToggle,
22343
+ {
22344
+ ...{
22345
+ "aria-label": ariaLabel,
22346
+ className: styles$R.selectionToggle,
22347
+ value,
22348
+ indeterminate,
22349
+ onDidChange
22350
+ }
22351
+ }
22352
+ ) });
22353
+ }
22227
22354
  const getCommonPinningStyles = (column, isHeader = false) => {
22228
22355
  const isPinned = column.getIsPinned();
22229
22356
  return {
@@ -22235,7 +22362,7 @@ const getCommonPinningStyles = (column, isHeader = false) => {
22235
22362
  left: isPinned === "left" ? `${column.getStart("left")}px` : void 0,
22236
22363
  right: isPinned === "right" ? `${column.getAfter("right")}px` : void 0,
22237
22364
  position: isPinned ? "sticky" : "relative",
22238
- backgroundColor: isPinned ? isHeader ? "var(--xmlui-backgroundColor-heading-Table)" : "var(--xmlui-backgroundColor-pinnedCell-Table)" : void 0,
22365
+ backgroundColor: isPinned ? isHeader ? toCssVar("$backgroundColor-heading-Table") : column.id === "select" ? `var(--checkbox-cell-bg, ${toCssVar("$backgroundColor-selectionCell-Table")})` : `var(--pinned-cell-bg, ${toCssVar("$backgroundColor-pinnedCell-Table")})` : void 0,
22239
22366
  zIndex: isPinned ? 1 : void 0
22240
22367
  };
22241
22368
  };
@@ -22501,9 +22628,6 @@ const Table = memo(forwardRef(
22501
22628
  }
22502
22629
  }, [autoFocus]);
22503
22630
  const [visibleItems2, setVisibleItems] = useState(EMPTY_ARRAY);
22504
- const [hoveredRowId, setHoveredRowId] = useState(null);
22505
- const [headerCheckboxHovered, setHeaderCheckboxHovered] = useState(false);
22506
- const tolerancePixels = getCheckboxTolerancePixels(checkboxTolerance);
22507
22631
  const {
22508
22632
  toggleRow,
22509
22633
  checkAllRows,
@@ -22661,11 +22785,8 @@ const Table = memo(forwardRef(
22661
22785
  }
22662
22786
  });
22663
22787
  }, [getThemeVar, safeColumns]);
22664
- const columnsWithSelectColumn = useMemo(() => {
22665
- if (hideSelectionCheckboxes) {
22666
- return columnsWithCustomCell;
22667
- }
22668
- const selectColumn = {
22788
+ const selectColumn = useMemo(() => {
22789
+ return {
22669
22790
  id: "select",
22670
22791
  size: SELECT_COLUMN_WIDTH,
22671
22792
  enableResizing: false,
@@ -22674,68 +22795,59 @@ const Table = memo(forwardRef(
22674
22795
  pinTo: "left"
22675
22796
  },
22676
22797
  header: ({ table: table22 }) => enableMultiRowSelection && !hideSelectionCheckboxesHeader ? /* @__PURE__ */ jsx(
22677
- ThemedToggle,
22798
+ SelectionToggle,
22678
22799
  {
22679
- ...{
22680
- "aria-label": "Select all rows",
22681
- className: classnames(styles$R.checkBoxWrapper, {
22682
- [styles$R.showInHeader]: alwaysShowSelectionCheckboxesHeader,
22683
- [styles$R.forceHoverWrapper]: headerCheckboxHovered
22684
- }),
22685
- value: table22.getIsAllRowsSelected(),
22686
- indeterminate: table22.getIsSomeRowsSelected(),
22687
- forceHover: headerCheckboxHovered,
22688
- onDidChange: () => {
22689
- const allSelected2 = table22.getRowModel().rows.every(
22690
- (row2) => rowDisabledPredicate(row2.original) || rowUnselectablePredicate(row2.original) || row2.getIsSelected()
22691
- );
22692
- checkAllRows(!allSelected2);
22693
- }
22800
+ checkboxTolerance,
22801
+ ariaLabel: "Select all rows",
22802
+ alwaysVisibleClassName: alwaysShowSelectionCheckboxesHeader ? styles$R.showInHeader : void 0,
22803
+ value: table22.getIsAllRowsSelected(),
22804
+ indeterminate: table22.getIsSomeRowsSelected(),
22805
+ onDidChange: () => {
22806
+ const allSelected2 = table22.getRowModel().rows.every(
22807
+ (row2) => rowDisabledPredicate(row2.original) || rowUnselectablePredicate(row2.original) || row2.getIsSelected()
22808
+ );
22809
+ checkAllRows(!allSelected2);
22694
22810
  }
22695
22811
  }
22696
22812
  ) : null,
22697
22813
  cell: ({ row: row2 }) => {
22698
22814
  return /* @__PURE__ */ jsx(Fragment, { children: row2.getCanSelect() && /* @__PURE__ */ jsx(
22699
- ThemedToggle,
22815
+ SelectionToggle,
22700
22816
  {
22701
- ...{
22702
- "aria-label": `Select ${row2.original[idKey]}`,
22703
- className: classnames(styles$R.checkBoxWrapper, {
22704
- [styles$R.forceHoverWrapper]: hoveredRowId === row2.id,
22705
- [styles$R.showInRow]: alwaysShowSelectionCheckboxes
22706
- }),
22707
- value: row2.getIsSelected(),
22708
- indeterminate: row2.getIsSomeSelected(),
22709
- forceHover: hoveredRowId === row2.id,
22710
- onDidChange: () => {
22711
- if (!enableMultiRowSelection && row2.getIsSelected()) {
22712
- checkAllRows(false);
22713
- } else {
22714
- toggleRow(row2.original, { metaKey: true });
22715
- }
22817
+ checkboxTolerance,
22818
+ ariaLabel: `Select ${row2.original[idKey]}`,
22819
+ alwaysVisibleClassName: alwaysShowSelectionCheckboxes ? styles$R.showInRow : void 0,
22820
+ value: row2.getIsSelected(),
22821
+ indeterminate: row2.getIsSomeSelected(),
22822
+ onDidChange: () => {
22823
+ if (!enableMultiRowSelection && row2.getIsSelected()) {
22824
+ checkAllRows(false);
22825
+ } else {
22826
+ toggleRow(row2.original, { metaKey: true });
22716
22827
  }
22717
22828
  }
22718
22829
  }
22719
22830
  ) });
22720
22831
  }
22721
22832
  };
22722
- return rowsSelectable ? [selectColumn, ...columnsWithCustomCell] : columnsWithCustomCell;
22723
22833
  }, [
22724
22834
  idKey,
22725
- rowsSelectable,
22726
- columnsWithCustomCell,
22727
22835
  enableMultiRowSelection,
22728
22836
  alwaysShowSelectionCheckboxesHeader,
22729
22837
  checkAllRows,
22730
22838
  toggleRow,
22839
+ checkboxTolerance,
22731
22840
  rowDisabledPredicate,
22732
22841
  rowUnselectablePredicate,
22733
- hoveredRowId,
22734
- headerCheckboxHovered,
22735
- hideSelectionCheckboxes,
22736
22842
  hideSelectionCheckboxesHeader,
22737
22843
  alwaysShowSelectionCheckboxes
22738
22844
  ]);
22845
+ const columnsWithSelectColumn = useMemo(() => {
22846
+ if (hideSelectionCheckboxes) {
22847
+ return columnsWithCustomCell;
22848
+ }
22849
+ return rowsSelectable ? [selectColumn, ...columnsWithCustomCell] : columnsWithCustomCell;
22850
+ }, [rowsSelectable, columnsWithCustomCell, hideSelectionCheckboxes, selectColumn]);
22739
22851
  const [pagination2, setPagination] = useState({
22740
22852
  pageSize: effectiveIsPaginated ? effectivePageSize : Number.MAX_VALUE,
22741
22853
  pageIndex: currentPageIndex
@@ -22970,8 +23082,6 @@ const Table = memo(forwardRef(
22970
23082
  toggleRow,
22971
23083
  checkAllRows,
22972
23084
  enableMultiRowSelection,
22973
- tolerancePixels,
22974
- setHoveredRowId,
22975
23085
  lookupEventHandler,
22976
23086
  rowDoubleClick,
22977
23087
  striped,
@@ -23002,6 +23112,7 @@ const Table = memo(forwardRef(
23002
23112
  "td",
23003
23113
  {
23004
23114
  className: classnames(styles$R.cell, alignmentClass, columnClassName),
23115
+ "data-column-id": cell2.column.id,
23005
23116
  style: {
23006
23117
  width: size,
23007
23118
  "--column-width": `${size}px`,
@@ -23077,23 +23188,15 @@ const Table = memo(forwardRef(
23077
23188
  return;
23078
23189
  }
23079
23190
  wrapperRef.current?.focus();
23080
- const currentRow = event.currentTarget;
23081
- const checkbox2 = currentRow.querySelector(
23082
- 'input[type="checkbox"]'
23083
- );
23084
- if (checkbox2) {
23085
- const checkboxRect = checkbox2.getBoundingClientRect();
23086
- const clickX = event.clientX;
23087
- const clickY = event.clientY;
23191
+ const isSelectColumn = target2.closest("td")?.getAttribute("data-column-id") === "select";
23192
+ if (isSelectColumn) {
23088
23193
  const rs = rowStateRef.current;
23089
- if (isWithinCheckboxBoundary(clickX, clickY, checkboxRect, rs.tolerancePixels)) {
23090
- if (!rs.enableMultiRowSelection && row2.getIsSelected()) {
23091
- rs.checkAllRows(false);
23092
- } else {
23093
- rs.toggleRow(row2.original, { metaKey: true });
23094
- }
23095
- return;
23194
+ if (!rs.enableMultiRowSelection && row2.getIsSelected()) {
23195
+ rs.checkAllRows(false);
23196
+ } else {
23197
+ rs.toggleRow(row2.original, { metaKey: true });
23096
23198
  }
23199
+ return;
23097
23200
  }
23098
23201
  rowStateRef.current.toggleRow(row2.original, event);
23099
23202
  },
@@ -23108,35 +23211,6 @@ const Table = memo(forwardRef(
23108
23211
  }
23109
23212
  }
23110
23213
  },
23111
- onMouseMove: (event) => {
23112
- const currentRow = event.currentTarget;
23113
- const checkbox2 = currentRow.querySelector(
23114
- 'input[type="checkbox"]'
23115
- );
23116
- if (checkbox2) {
23117
- const checkboxRect = checkbox2.getBoundingClientRect();
23118
- const mouseX = event.clientX;
23119
- const mouseY = event.clientY;
23120
- const shouldShowHover = isWithinCheckboxBoundary(
23121
- mouseX,
23122
- mouseY,
23123
- checkboxRect,
23124
- rowStateRef.current.tolerancePixels
23125
- );
23126
- if (shouldShowHover) {
23127
- rowStateRef.current.setHoveredRowId(row2.id);
23128
- currentRow.style.cursor = "pointer";
23129
- } else {
23130
- rowStateRef.current.setHoveredRowId(null);
23131
- currentRow.style.cursor = "";
23132
- }
23133
- }
23134
- },
23135
- onMouseLeave: (event) => {
23136
- const currentRow = event.currentTarget;
23137
- currentRow.style.cursor = "";
23138
- rowStateRef.current.setHoveredRowId(null);
23139
- },
23140
23214
  onContextMenu: rowStateRef.current.lookupEventHandler ? (event) => {
23141
23215
  event.preventDefault();
23142
23216
  const handler = rowStateRef.current.lookupEventHandler("contextMenu", {
@@ -23260,7 +23334,7 @@ const Table = memo(forwardRef(
23260
23334
  queueMicrotask(() => {
23261
23335
  recalculateStarSizes();
23262
23336
  });
23263
- }, [recalculateStarSizes, safeColumns]);
23337
+ }, [recalculateStarSizes, safeColumns, columnsWithCustomCell, rowsSelectable, hideSelectionCheckboxes]);
23264
23338
  useIsomorphicLayoutEffect(() => {
23265
23339
  registerComponentApi(selectionApi);
23266
23340
  }, [registerComponentApi, selectionApi]);
@@ -23332,81 +23406,20 @@ const Table = memo(forwardRef(
23332
23406
  }),
23333
23407
  onClick: (event) => {
23334
23408
  const target2 = event.target;
23409
+ if (target2.tagName.toLowerCase() === "input" && target2.getAttribute("type") === "checkbox") {
23410
+ return;
23411
+ }
23335
23412
  const headerCell = target2.closest("th");
23336
- if (headerCell && rowsSelectable && enableMultiRowSelection) {
23337
- const header2 = headerGroup.headers.find((h) => {
23338
- const headerElement = headerCell;
23339
- return headerElement?.getAttribute("data-column-id") === h.id || h.id === "select";
23340
- });
23341
- if (header2 && header2.id === "select") {
23342
- const clickX = event.clientX;
23343
- const clickY = event.clientY;
23344
- const checkbox2 = headerCell.querySelector(
23345
- 'input[type="checkbox"]'
23413
+ if (headerCell && rowsSelectable && enableMultiRowSelection && !hideSelectionCheckboxesHeader) {
23414
+ const headerId = headerCell.getAttribute("data-column-id");
23415
+ if (headerId === "select") {
23416
+ const allSelected2 = table2.getRowModel().rows.every(
23417
+ (row2) => rowDisabledPredicate(row2.original) || rowUnselectablePredicate(row2.original) || row2.getIsSelected()
23346
23418
  );
23347
- if (checkbox2) {
23348
- const checkboxRect = checkbox2.getBoundingClientRect();
23349
- if (isWithinCheckboxBoundary(
23350
- clickX,
23351
- clickY,
23352
- checkboxRect,
23353
- tolerancePixels
23354
- )) {
23355
- event.preventDefault();
23356
- event.stopPropagation();
23357
- const allSelected2 = table2.getRowModel().rows.every(
23358
- (row2) => rowDisabledPredicate(row2.original) || rowUnselectablePredicate(row2.original) || row2.getIsSelected()
23359
- );
23360
- checkAllRows(!allSelected2);
23361
- }
23362
- }
23419
+ checkAllRows(!allSelected2);
23363
23420
  }
23364
23421
  }
23365
23422
  },
23366
- onMouseMove: (event) => {
23367
- if (rowsSelectable && enableMultiRowSelection) {
23368
- const target2 = event.target;
23369
- const headerCell = target2.closest("th");
23370
- if (headerCell) {
23371
- const header2 = headerGroup.headers.find((h) => {
23372
- const headerElement = headerCell;
23373
- return headerElement?.getAttribute("data-column-id") === h.id || h.id === "select";
23374
- });
23375
- if (header2 && header2.id === "select") {
23376
- const mouseX = event.clientX;
23377
- const mouseY = event.clientY;
23378
- const checkbox2 = headerCell.querySelector(
23379
- 'input[type="checkbox"]'
23380
- );
23381
- if (checkbox2) {
23382
- const checkboxRect = checkbox2.getBoundingClientRect();
23383
- const shouldShowHover = isWithinCheckboxBoundary(
23384
- mouseX,
23385
- mouseY,
23386
- checkboxRect,
23387
- tolerancePixels
23388
- );
23389
- if (shouldShowHover && !headerCheckboxHovered) {
23390
- setHeaderCheckboxHovered(true);
23391
- event.currentTarget.style.cursor = "pointer";
23392
- } else if (!shouldShowHover && headerCheckboxHovered) {
23393
- setHeaderCheckboxHovered(false);
23394
- event.currentTarget.style.cursor = "";
23395
- }
23396
- }
23397
- } else if (headerCheckboxHovered) {
23398
- setHeaderCheckboxHovered(false);
23399
- event.currentTarget.style.cursor = "";
23400
- }
23401
- }
23402
- }
23403
- },
23404
- onMouseLeave: (event) => {
23405
- if (headerCheckboxHovered) {
23406
- setHeaderCheckboxHovered(false);
23407
- event.currentTarget.style.cursor = "";
23408
- }
23409
- },
23410
23423
  children: headerGroup.headers.map((header2, headerIndex) => {
23411
23424
  const { width, ...style22 } = header2.column.columnDef.meta?.style || {};
23412
23425
  const size = header2.getSize();
@@ -23941,8 +23954,6 @@ const TableMd = createMetadata({
23941
23954
  [`textTransform-heading-${COMP$11}`]: "uppercase",
23942
23955
  [`fontSize-row-${COMP$11}`]: "$fontSize-sm",
23943
23956
  [`fontSize-checkbox-${COMP$11}`]: "$fontSize",
23944
- // [`backgroundColor-${COMP}`]: "transparent",
23945
- // [`backgroundColor-row-${COMP}`]: "inherit",
23946
23957
  [`backgroundColor-selected-${COMP$11}--hover`]: `$backgroundColor-row-${COMP$11}--hover`,
23947
23958
  [`backgroundColor-pagination-${COMP$11}`]: `$backgroundColor-${COMP$11}`,
23948
23959
  [`textColor-pagination-${COMP$11}`]: "$color-secondary",
@@ -23960,7 +23971,10 @@ const TableMd = createMetadata({
23960
23971
  [`userSelect-row-${COMP$11}`]: "none",
23961
23972
  [`backgroundColor-evenRow-${COMP$11}`]: `$backgroundColor-row-${COMP$11}`,
23962
23973
  [`backgroundColor-oddRow-${COMP$11}`]: `$color-surface-100`,
23963
- [`backgroundColor-pinnedCell-${COMP$11}`]: "$color-surface-50"
23974
+ [`backgroundColor-pinnedCell-${COMP$11}`]: "$color-surface-50",
23975
+ [`backgroundColor-pinnedCell-${COMP$11}--hover`]: `$backgroundColor-row-${COMP$11}--hover`,
23976
+ [`backgroundColor-selectionCell-${COMP$11}`]: "$backgroundColor-pinnedCell-Table",
23977
+ [`backgroundColor-selectionCell-${COMP$11}--hover`]: `$backgroundColor-row-${COMP$11}--hover`
23964
23978
  }
23965
23979
  });
23966
23980
  const TableWithColumns = memo(
@@ -25058,15 +25072,15 @@ const cardComponentRenderer = wrapComponent(
25058
25072
  }
25059
25073
  );
25060
25074
  const themeVars$s = `'{"padding-ModalDialog": "var(--xmlui-padding-ModalDialog)", "paddingHorizontal-ModalDialog": "var(--xmlui-paddingHorizontal-ModalDialog, var(--xmlui-padding-ModalDialog))", "paddingVertical-ModalDialog": "var(--xmlui-paddingVertical-ModalDialog, var(--xmlui-padding-ModalDialog))", "paddingLeft-ModalDialog": "var(--xmlui-paddingLeft-ModalDialog, var(--xmlui-paddingHorizontal-ModalDialog, var(--xmlui-padding-ModalDialog)))", "paddingRight-ModalDialog": "var(--xmlui-paddingRight-ModalDialog, var(--xmlui-paddingHorizontal-ModalDialog, var(--xmlui-padding-ModalDialog)))", "paddingTop-ModalDialog": "var(--xmlui-paddingTop-ModalDialog, var(--xmlui-paddingVertical-ModalDialog, var(--xmlui-padding-ModalDialog)))", "paddingBottom-ModalDialog": "var(--xmlui-paddingBottom-ModalDialog, var(--xmlui-paddingVertical-ModalDialog, var(--xmlui-padding-ModalDialog)))", "padding-overlay-ModalDialog": "var(--xmlui-padding-overlay-ModalDialog)", "paddingHorizontal-overlay-ModalDialog": "var(--xmlui-paddingHorizontal-overlay-ModalDialog, var(--xmlui-padding-overlay-ModalDialog))", "paddingVertical-overlay-ModalDialog": "var(--xmlui-paddingVertical-overlay-ModalDialog, var(--xmlui-padding-overlay-ModalDialog))", "paddingLeft-overlay-ModalDialog": "var(--xmlui-paddingLeft-overlay-ModalDialog, var(--xmlui-paddingHorizontal-overlay-ModalDialog, var(--xmlui-padding-overlay-ModalDialog)))", "paddingRight-overlay-ModalDialog": "var(--xmlui-paddingRight-overlay-ModalDialog, var(--xmlui-paddingHorizontal-overlay-ModalDialog, var(--xmlui-padding-overlay-ModalDialog)))", "paddingTop-overlay-ModalDialog": "var(--xmlui-paddingTop-overlay-ModalDialog, var(--xmlui-paddingVertical-overlay-ModalDialog, var(--xmlui-padding-overlay-ModalDialog)))", "paddingBottom-overlay-ModalDialog": "var(--xmlui-paddingBottom-overlay-ModalDialog, var(--xmlui-paddingVertical-overlay-ModalDialog, var(--xmlui-padding-overlay-ModalDialog)))", "textColor-title-ModalDialog": "var(--xmlui-textColor-title-ModalDialog)", "fontFamily-title-ModalDialog": "var(--xmlui-fontFamily-title-ModalDialog)", "fontSize-title-ModalDialog": "var(--xmlui-fontSize-title-ModalDialog)", "fontStyle-title-ModalDialog": "var(--xmlui-fontStyle-title-ModalDialog)", "fontVariant-title-ModalDialog": "var(--xmlui-fontVariant-title-ModalDialog)", "fontWeight-title-ModalDialog": "var(--xmlui-fontWeight-title-ModalDialog)", "fontStretch-title-ModalDialog": "var(--xmlui-fontStretch-title-ModalDialog)", "textDecorationLine-title-ModalDialog": "var(--xmlui-textDecorationLine-title-ModalDialog)", "textDecorationColor-title-ModalDialog": "var(--xmlui-textDecorationColor-title-ModalDialog)", "textDecorationStyle-title-ModalDialog": "var(--xmlui-textDecorationStyle-title-ModalDialog)", "textDecorationThickness-title-ModalDialog": "var(--xmlui-textDecorationThickness-title-ModalDialog)", "textUnderlineOffset-title-ModalDialog": "var(--xmlui-textUnderlineOffset-title-ModalDialog)", "lineHeight-title-ModalDialog": "var(--xmlui-lineHeight-title-ModalDialog)", "backgroundColor-title-ModalDialog": "var(--xmlui-backgroundColor-title-ModalDialog)", "textTransform-title-ModalDialog": "var(--xmlui-textTransform-title-ModalDialog)", "letterSpacing-title-ModalDialog": "var(--xmlui-letterSpacing-title-ModalDialog)", "wordSpacing-title-ModalDialog": "var(--xmlui-wordSpacing-title-ModalDialog)", "textShadow-title-ModalDialog": "var(--xmlui-textShadow-title-ModalDialog)", "textIndent-title-ModalDialog": "var(--xmlui-textIndent-title-ModalDialog)", "textAlign-title-ModalDialog": "var(--xmlui-textAlign-title-ModalDialog)", "textAlignLast-title-ModalDialog": "var(--xmlui-textAlignLast-title-ModalDialog)", "wordBreak-title-ModalDialog": "var(--xmlui-wordBreak-title-ModalDialog)", "wordWrap-title-ModalDialog": "var(--xmlui-wordWrap-title-ModalDialog)", "direction-title-ModalDialog": "var(--xmlui-direction-title-ModalDialog)", "writingMode-title-ModalDialog": "var(--xmlui-writingMode-title-ModalDialog)", "lineBreak-title-ModalDialog": "var(--xmlui-lineBreak-title-ModalDialog)", "Dialog:backgroundColor-ModalDialog": "var(--xmlui-backgroundColor-ModalDialog)", "Dialog:backgroundColor-overlay-ModalDialog": "var(--xmlui-backgroundColor-overlay-ModalDialog)", "Dialog:borderRadius-ModalDialog": "var(--xmlui-borderRadius-ModalDialog)", "Dialog:fontFamily-ModalDialog": "var(--xmlui-fontFamily-ModalDialog)", "Dialog:textColor-ModalDialog": "var(--xmlui-textColor-ModalDialog)", "Dialog:minWidth-ModalDialog": "var(--xmlui-minWidth-ModalDialog)", "Dialog:maxWidth-ModalDialog": "var(--xmlui-maxWidth-ModalDialog)", "Dialog:maxHeight-ModalDialog": "var(--xmlui-maxHeight-ModalDialog)", "Dialog:marginBottom-title-ModalDialog": "var(--xmlui-marginBottom-title-ModalDialog)"}'`;
25061
- const overlay$2 = "_overlay_wrfrc_14";
25062
- const fullScreen = "_fullScreen_wrfrc_22";
25063
- const content$2 = "_content_wrfrc_28";
25064
- const overlayBg$1 = "_overlayBg_wrfrc_37";
25065
- const nested = "_nested_wrfrc_43";
25066
- const contentAnimation = "_contentAnimation_wrfrc_74";
25067
- const dialogTitle = "_dialogTitle_wrfrc_80";
25068
- const innerContent = "_innerContent_wrfrc_109";
25069
- const closeButton$2 = "_closeButton_wrfrc_135";
25075
+ const overlay$2 = "_overlay_nc6kd_14";
25076
+ const fullScreen = "_fullScreen_nc6kd_22";
25077
+ const content$2 = "_content_nc6kd_28";
25078
+ const overlayBg$1 = "_overlayBg_nc6kd_37";
25079
+ const nested = "_nested_nc6kd_43";
25080
+ const contentAnimation = "_contentAnimation_nc6kd_74";
25081
+ const dialogTitle = "_dialogTitle_nc6kd_80";
25082
+ const innerContent = "_innerContent_nc6kd_109";
25083
+ const closeButton$2 = "_closeButton_nc6kd_135";
25070
25084
  const styles$I = {
25071
25085
  themeVars: themeVars$s,
25072
25086
  overlay: overlay$2,
@@ -25419,7 +25433,9 @@ const modalViewComponentRenderer = wrapComponent(
25419
25433
  ...contextVars,
25420
25434
  $param: openParams?.[0],
25421
25435
  $params: openParams
25422
- }
25436
+ },
25437
+ vars: node._savedVarDefs,
25438
+ functions: node._savedFunctionDefs
25423
25439
  }
25424
25440
  );
25425
25441
  }
@@ -27021,6 +27037,7 @@ const queueComponentRenderer = wrapComponent(COMP$N, QueueWithContextVar, QueueM
27021
27037
  }
27022
27038
  )
27023
27039
  });
27040
+ const warnedLayoutForwardTypes = /* @__PURE__ */ new Set();
27024
27041
  const CompoundComponent = forwardRef(
27025
27042
  ({
27026
27043
  node,
@@ -27042,6 +27059,9 @@ const CompoundComponent = forwardRef(
27042
27059
  contextVars,
27043
27060
  // Extract contextVars to prevent it from being passed to DOM elements
27044
27061
  globalVars,
27062
+ // Strip XMLUI-internal props that must never be forwarded to inner DOM elements
27063
+ logInteraction: _logInteraction,
27064
+ classes: _classes,
27045
27065
  ...restProps
27046
27066
  }, forwardedRef) => {
27047
27067
  const resolvedPropsInner = useMemo(() => {
@@ -27133,8 +27153,20 @@ const CompoundComponent = forwardRef(
27133
27153
  children: node.children
27134
27154
  };
27135
27155
  }, [hasTemplateProps, node.children, node.props, renderChild2]);
27136
- const safeLayoutContext = layoutContext ? { ...layoutContext, wrapChild: void 0 } : layoutContext;
27156
+ const extraClassName = restProps.className;
27157
+ const safeLayoutContext = extraClassName ? { ...layoutContext ?? {}, wrapChild: void 0, extraClassName } : layoutContext ? { ...layoutContext, wrapChild: void 0 } : layoutContext;
27137
27158
  const ret = renderChild2(nodeWithPropsAndEvents, safeLayoutContext, memoedParentRenderContext);
27159
+ if (process.env.NODE_ENV !== "production" && extraClassName) {
27160
+ if (compound.type === "Fragment") {
27161
+ const usedLayoutProps = layoutOptionKeys.filter((key) => key in node.props);
27162
+ if (usedLayoutProps.length > 0 && !warnedLayoutForwardTypes.has(node.type)) {
27163
+ warnedLayoutForwardTypes.add(node.type);
27164
+ console.warn(
27165
+ `[XMLUI] Component '${node.type}' has layout props (${usedLayoutProps.join(", ")}) but its template has multiple root children — layout props cannot be forwarded. Wrap the template content in a single root element to enable layout forwarding.`
27166
+ );
27167
+ }
27168
+ }
27169
+ }
27138
27170
  if (forwardedRef && ret && isValidElement(ret)) {
27139
27171
  return React__default.cloneElement(ret, {
27140
27172
  ref: composeRefs(forwardedRef, ret.ref),
@@ -27257,7 +27289,8 @@ function useListData({
27257
27289
  if (groupBy$1 === void 0) {
27258
27290
  return EMPTY_OBJECT;
27259
27291
  }
27260
- return groupBy(cappedItems, (item2) => item2[groupBy$1]);
27292
+ const iteratee = typeof groupBy$1 === "function" ? groupBy$1 : (item2) => item2[groupBy$1];
27293
+ return groupBy(cappedItems, iteratee);
27261
27294
  }, [cappedItems, groupBy$1]);
27262
27295
  const sections = useMemo(() => {
27263
27296
  if (groupBy$1 === void 0) {
@@ -28054,7 +28087,7 @@ const ListMd = createMetadata({
28054
28087
  defaultValue: false
28055
28088
  },
28056
28089
  groupBy: d(
28057
- "This property sets which data item property is used to group the list items. If not set, no grouping is done."
28090
+ "This property sets which data item property is used to group the list items. Accepts a field name string or a function that receives an item and returns the group key. If not set, no grouping is done."
28058
28091
  ),
28059
28092
  orderBy: d(
28060
28093
  `This optioanl property enables the ordering of list items by specifying an attribute in the data.`
@@ -28113,6 +28146,9 @@ const ListMd = createMetadata({
28113
28146
  syncWithVar: d(
28114
28147
  `The name of a global variable to synchronize the list's selection state with. The named variable must reference an object; the list will read from and write to its 'selectedIds' property. When provided, this takes precedence over \`initiallySelected\`.`
28115
28148
  ),
28149
+ refreshOn: d(
28150
+ `Bind this property to a global variable (or expression) whose change should force all visible list items to re-render and pick up the latest reactive state. When not set, items re-render on every XMLUI reactive cycle (safe but less optimal). When set, items only re-render when the bound value changes, which eliminates spurious re-renders from unrelated global-variable updates (e.g. focus events).`
28151
+ ),
28116
28152
  rowUnselectablePredicate: {
28117
28153
  description: `This property defines a predicate function with a return value that determines if the row should be unselectable. The function retrieves the item to display and should return a Boolean-like value. This property only has an effect when the \`rowsSelectable\` property is set to \`true\`.`
28118
28154
  },
@@ -28279,6 +28315,29 @@ const ListMd = createMetadata({
28279
28315
  }
28280
28316
  });
28281
28317
  const VALID_IDENTIFIER_RE$1 = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
28318
+ const ListMemoizedItem = memo(
28319
+ ({ node, renderChild: renderChild2, layoutContext, contextVars }) => /* @__PURE__ */ jsx(
28320
+ MemoizedItem,
28321
+ {
28322
+ node,
28323
+ renderChild: renderChild2,
28324
+ layoutContext,
28325
+ contextVars
28326
+ }
28327
+ ),
28328
+ (prev, next) => {
28329
+ if (prev.renderVersion !== next.renderVersion) return false;
28330
+ if (prev.node !== next.node) return false;
28331
+ const prevVars = prev.contextVars ?? EMPTY_OBJECT;
28332
+ const nextVars = next.contextVars ?? EMPTY_OBJECT;
28333
+ const keys = Object.keys(nextVars);
28334
+ if (keys.length !== Object.keys(prevVars).length) return false;
28335
+ for (const k of keys) {
28336
+ if (prevVars[k] !== nextVars[k]) return false;
28337
+ }
28338
+ return true;
28339
+ }
28340
+ );
28282
28341
  const ListWithSelection = memo(function ListWithSelection2({
28283
28342
  extractValue,
28284
28343
  node,
@@ -28294,10 +28353,30 @@ const ListWithSelection = memo(function ListWithSelection2({
28294
28353
  const itemTemplate = node.props.itemTemplate;
28295
28354
  const hideEmptyGroups = extractValue.asOptionalBoolean(node.props.hideEmptyGroups, true);
28296
28355
  const selectionContext = useSelectionContext();
28356
+ const renderChildRef = useRef(renderChild2);
28357
+ renderChildRef.current = renderChild2;
28358
+ const layoutContextRef = useRef(layoutContext);
28359
+ layoutContextRef.current = layoutContext;
28360
+ const stableRenderChildFnRef = useRef(
28361
+ (node2, ctx) => renderChildRef.current(node2, ctx)
28362
+ );
28363
+ const refreshOn = extractValue(node.props.refreshOn);
28364
+ const prevRefreshOnRef = useRef(refreshOn);
28365
+ const renderVersionRef = useRef(0);
28366
+ const shouldForceRefresh = node.props.refreshOn === void 0 || prevRefreshOnRef.current !== refreshOn;
28367
+ if (shouldForceRefresh) {
28368
+ prevRefreshOnRef.current = refreshOn;
28369
+ renderVersionRef.current++;
28370
+ }
28297
28371
  const syncVarName = extractValue.asOptionalString(node.props.syncWithVar);
28298
28372
  const lookupActionRef = useRef(lookupAction);
28299
28373
  lookupActionRef.current = lookupAction;
28300
28374
  const syncAdapterHolderRef = useRef(null);
28375
+ const pendingOwnWriteRef = useRef(false);
28376
+ const pendingOwnWriteVersionRef = useRef(0);
28377
+ const ownWriteCountRef = useRef(0);
28378
+ const pendingOwnWrite = pendingOwnWriteRef.current;
28379
+ pendingOwnWriteRef.current = false;
28301
28380
  let syncAdapter;
28302
28381
  if (syncVarName !== void 0) {
28303
28382
  if (!VALID_IDENTIFIER_RE$1.test(syncVarName)) {
@@ -28310,14 +28389,31 @@ const ListWithSelection = memo(function ListWithSelection2({
28310
28389
  syncAdapterHolderRef.current = {
28311
28390
  value: currentSyncVarValue,
28312
28391
  update: ({ selectedIds }) => {
28313
- const valueJson = JSON.stringify(selectedIds);
28314
- const expr = `{${syncVarName} = {selectedIds: ${valueJson}}}`;
28315
- const handler = lookupActionRef.current?.(expr, { ephemeral: true });
28316
- handler?.();
28392
+ pendingOwnWriteRef.current = true;
28393
+ const thisVersion = ++ownWriteCountRef.current;
28394
+ pendingOwnWriteVersionRef.current = thisVersion;
28395
+ const windowKey = `__listSync_${syncVarName}`;
28396
+ window[windowKey] = { selectedIds, __v: thisVersion };
28397
+ const handler = lookupActionRef.current?.(
28398
+ `{${syncVarName} = window.${windowKey}}`,
28399
+ { ephemeral: true }
28400
+ );
28401
+ startTransition(() => {
28402
+ handler?.();
28403
+ });
28317
28404
  }
28318
28405
  };
28319
- } else {
28320
- syncAdapterHolderRef.current.value = currentSyncVarValue;
28406
+ } else if (currentSyncVarValue !== syncAdapterHolderRef.current.value) {
28407
+ const isOwnWrite = pendingOwnWrite || pendingOwnWriteVersionRef.current > 0 && currentSyncVarValue?.__v === pendingOwnWriteVersionRef.current;
28408
+ if (isOwnWrite) {
28409
+ syncAdapterHolderRef.current.value = currentSyncVarValue;
28410
+ } else {
28411
+ pendingOwnWriteVersionRef.current = 0;
28412
+ syncAdapterHolderRef.current = {
28413
+ value: currentSyncVarValue,
28414
+ update: syncAdapterHolderRef.current.update
28415
+ };
28416
+ }
28321
28417
  }
28322
28418
  } else {
28323
28419
  syncAdapterHolderRef.current = null;
@@ -28327,6 +28423,58 @@ const ListWithSelection = memo(function ListWithSelection2({
28327
28423
  syncAdapterHolderRef.current = null;
28328
28424
  }
28329
28425
  syncAdapter = syncAdapterHolderRef.current;
28426
+ const stableItemRenderer = useMemo(
28427
+ () => itemTemplate ? (item2, key, rowIndex, count, isSelected) => /* @__PURE__ */ jsx(
28428
+ ListMemoizedItem,
28429
+ {
28430
+ node: itemTemplate,
28431
+ renderChild: stableRenderChildFnRef.current,
28432
+ layoutContext: layoutContextRef.current,
28433
+ renderVersion: renderVersionRef.current,
28434
+ contextVars: {
28435
+ $item: item2,
28436
+ $itemIndex: rowIndex,
28437
+ $isFirst: rowIndex === 0,
28438
+ $isLast: rowIndex === count - 1,
28439
+ $isSelected: isSelected
28440
+ }
28441
+ },
28442
+ key
28443
+ ) : void 0,
28444
+ // idKey is included because it is captured by itemTemplate renders via $item[idKey].
28445
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28446
+ [itemTemplate, idKey]
28447
+ );
28448
+ const stableSectionRenderer = useMemo(
28449
+ () => node.props.groupBy ? (item2, key) => (item2.items?.length ?? 0) > 0 || !hideEmptyGroups ? /* @__PURE__ */ jsx(
28450
+ MemoizedSection,
28451
+ {
28452
+ node: node.props.groupHeaderTemplate ?? { type: "Fragment" },
28453
+ renderChild: stableRenderChildFnRef.current,
28454
+ item: item2
28455
+ },
28456
+ key
28457
+ ) : null : void 0,
28458
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28459
+ [node.props.groupBy, node.props.groupHeaderTemplate, hideEmptyGroups]
28460
+ );
28461
+ const stableSectionFooterRenderer = useMemo(
28462
+ () => node.props.groupFooterTemplate ? (item2, key) => (item2.items?.length ?? 0) > 0 || !hideEmptyGroups ? /* @__PURE__ */ jsx(
28463
+ MemoizedItem,
28464
+ {
28465
+ node: node.props.groupFooterTemplate ?? { type: "Fragment" },
28466
+ renderChild: stableRenderChildFnRef.current,
28467
+ contextVars: {
28468
+ $group: item2
28469
+ }
28470
+ },
28471
+ key
28472
+ ) : null : void 0,
28473
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28474
+ [node.props.groupFooterTemplate, hideEmptyGroups]
28475
+ );
28476
+ const groupByExtracted = extractValue(node.props.groupBy);
28477
+ const groupByResolved = isArrowExpressionObject$1(groupByExtracted) ? lookupSyncCallback(node.props.groupBy) : groupByExtracted;
28330
28478
  const listContent = /* @__PURE__ */ jsx(
28331
28479
  ListNative,
28332
28480
  {
@@ -28335,7 +28483,7 @@ const ListWithSelection = memo(function ListWithSelection2({
28335
28483
  loading: extractValue.asOptionalBoolean(node.props.loading),
28336
28484
  items: extractValue(node.props.items) || extractValue(node.props.data),
28337
28485
  limit: extractValue(node.props.limit),
28338
- groupBy: extractValue(node.props.groupBy),
28486
+ groupBy: groupByResolved,
28339
28487
  orderBy: extractValue(node.props.orderBy),
28340
28488
  availableGroups: extractValue(node.props.availableGroups),
28341
28489
  scrollAnchor: node.props.scrollAnchor,
@@ -28368,44 +28516,9 @@ const ListWithSelection = memo(function ListWithSelection2({
28368
28516
  onDeleteAction: lookupEventHandler("deleteAction"),
28369
28517
  rowDoubleClick: lookupEventHandler("rowDoubleClick"),
28370
28518
  keyBindings: extractValue(node.props.keyBindings),
28371
- itemRenderer: itemTemplate && ((item2, key, rowIndex, count, isSelected) => {
28372
- return /* @__PURE__ */ jsx(
28373
- MemoizedItem,
28374
- {
28375
- node: itemTemplate,
28376
- renderChild: renderChild2,
28377
- layoutContext,
28378
- contextVars: {
28379
- $item: item2,
28380
- $itemIndex: rowIndex,
28381
- $isFirst: rowIndex === 0,
28382
- $isLast: rowIndex === count - 1,
28383
- $isSelected: isSelected
28384
- }
28385
- },
28386
- key
28387
- );
28388
- }),
28389
- sectionRenderer: node.props.groupBy ? (item2, key) => (item2.items?.length ?? 0) > 0 || !hideEmptyGroups ? /* @__PURE__ */ jsx(
28390
- MemoizedSection,
28391
- {
28392
- node: node.props.groupHeaderTemplate ?? { type: "Fragment" },
28393
- renderChild: renderChild2,
28394
- item: item2
28395
- },
28396
- key
28397
- ) : null : void 0,
28398
- sectionFooterRenderer: node.props.groupFooterTemplate ? (item2, key) => (item2.items?.length ?? 0) > 0 || !hideEmptyGroups ? /* @__PURE__ */ jsx(
28399
- MemoizedItem,
28400
- {
28401
- node: node.props.groupFooterTemplate ?? { type: "Fragment" },
28402
- renderChild: renderChild2,
28403
- contextVars: {
28404
- $group: item2
28405
- }
28406
- },
28407
- key
28408
- ) : null : void 0
28519
+ itemRenderer: stableItemRenderer,
28520
+ sectionRenderer: stableSectionRenderer,
28521
+ sectionFooterRenderer: stableSectionFooterRenderer
28409
28522
  }
28410
28523
  );
28411
28524
  if (selectionContext === null) {
@@ -29008,6 +29121,8 @@ const TileGridWithSync = memo(
29008
29121
  const prevRefreshOnRef = useRef(refreshOn);
29009
29122
  const renderVersionRef = useRef(0);
29010
29123
  const pendingOwnWriteRef = useRef(false);
29124
+ const pendingOwnWriteVersionRef = useRef(0);
29125
+ const ownWriteCountRef = useRef(0);
29011
29126
  const pendingOwnWrite = pendingOwnWriteRef.current;
29012
29127
  pendingOwnWriteRef.current = false;
29013
29128
  const shouldForceRefresh = node.props.refreshOn === void 0 || prevRefreshOnRef.current !== refreshOn;
@@ -29028,20 +29143,26 @@ const TileGridWithSync = memo(
29028
29143
  value: currentValue,
29029
29144
  update: ({ selectedIds }) => {
29030
29145
  const windowKey = `__tgSync_${syncVarName}`;
29031
- window[windowKey] = selectedIds;
29146
+ pendingOwnWriteRef.current = true;
29147
+ const thisVersion = ++ownWriteCountRef.current;
29148
+ pendingOwnWriteVersionRef.current = thisVersion;
29149
+ window[windowKey] = { selectedIds, __v: thisVersion };
29032
29150
  const handler = lookupActionRef.current?.(
29033
- `{${syncVarName} = {selectedIds: window.${windowKey}}}`,
29151
+ `{${syncVarName} = {selectedIds: window.${windowKey}.selectedIds, __v: window.${windowKey}.__v}}`,
29034
29152
  { ephemeral: true }
29035
29153
  );
29036
- pendingOwnWriteRef.current = true;
29037
29154
  startTransition(() => {
29038
29155
  handler?.();
29039
29156
  });
29040
29157
  }
29041
29158
  };
29042
29159
  } else if (currentValue !== syncAdapterHolderRef.current.value) {
29043
- if (pendingOwnWrite) {
29160
+ const isOwnWrite = pendingOwnWrite || pendingOwnWriteVersionRef.current > 0 && currentValue?.__v === pendingOwnWriteVersionRef.current;
29161
+ if (isOwnWrite) {
29044
29162
  syncAdapterHolderRef.current.value = currentValue;
29163
+ if (currentValue?.__v === pendingOwnWriteVersionRef.current) {
29164
+ pendingOwnWriteVersionRef.current = 0;
29165
+ }
29045
29166
  } else {
29046
29167
  syncAdapterHolderRef.current = {
29047
29168
  value: currentValue,
@@ -32202,12 +32323,14 @@ const datePickerComponentRenderer = wrapComponent(
32202
32323
  }
32203
32324
  );
32204
32325
  const themeVars$g = `'{"gap-Form": "var(--xmlui-gap-Form)", "gap-buttonRow-Form": "var(--xmlui-gap-buttonRow-Form)", "marginTop-buttonRow-Form": "var(--xmlui-marginTop-buttonRow-Form)", "paddingTop-buttonRow-Form": "var(--xmlui-paddingTop-buttonRow-Form)", "backgroundColor-Form": "var(--xmlui-backgroundColor-Form)", "backgroundColor-buttonRow-Form": "var(--xmlui-backgroundColor-buttonRow-Form)"}'`;
32205
- const formWrapper = "_formWrapper_1daax_14";
32206
- const buttonRow = "_buttonRow_1daax_20";
32207
- const stickyButtonRow = "_stickyButtonRow_1daax_28";
32326
+ const formWrapper = "_formWrapper_1rntd_14";
32327
+ const stickyForm = "_stickyForm_1rntd_20";
32328
+ const buttonRow = "_buttonRow_1rntd_23";
32329
+ const stickyButtonRow = "_stickyButtonRow_1rntd_31";
32208
32330
  const styles$v = {
32209
32331
  themeVars: themeVars$g,
32210
32332
  formWrapper,
32333
+ stickyForm,
32211
32334
  buttonRow,
32212
32335
  stickyButtonRow
32213
32336
  };
@@ -33276,7 +33399,7 @@ const Form = forwardRef(function({
33276
33399
  ...rest,
33277
33400
  noValidate: true,
33278
33401
  style: style2,
33279
- className: classnames(styles$v.formWrapper, classes?.[COMPONENT_PART_KEY], className),
33402
+ className: classnames(styles$v.formWrapper, { [styles$v.stickyForm]: stickyButtonRow2 }, classes?.[COMPONENT_PART_KEY], className),
33280
33403
  onSubmit: doSubmit,
33281
33404
  onReset: doReset,
33282
33405
  id,
@@ -37517,6 +37640,11 @@ const AppMd = createMetadata({
37517
37640
  valueType: "boolean",
37518
37641
  defaultValue: defaultProps$Y.scrollWholePage
37519
37642
  },
37643
+ fitContent: {
37644
+ description: `When \`true\`, the app sizes itself to its content's natural height rather than filling its container's viewport. Intended for embedding an app inside an iframe or as a block within a larger page: the host page becomes the sole scroll container. This overrides \`scrollWholePage\`'s viewport pinning.`,
37645
+ valueType: "boolean",
37646
+ defaultValue: defaultProps$Y.fitContent
37647
+ },
37520
37648
  noScrollbarGutters: {
37521
37649
  description: "This boolean property specifies whether the scrollbar gutters should be hidden.",
37522
37650
  valueType: "boolean",
@@ -37660,11 +37788,13 @@ function AppNode({ node, extractValue, renderChild: renderChild2, classes, looku
37660
37788
  const applyDefaultContentPadding = !Pages2 && !hasExplicitPadding;
37661
37789
  const footerSticky = Footer3?.props?.sticky !== void 0 ? extractValue.asOptionalBoolean(Footer3.props.sticky, true) : true;
37662
37790
  const scrollWholePage2 = extractValue.asOptionalBoolean(node.props.scrollWholePage, true);
37791
+ const fitContent2 = extractValue.asOptionalBoolean(node.props.fitContent, false);
37663
37792
  const contentLayoutContext = !scrollWholePage2 ? { type: "Stack", orientation: "vertical" } : void 0;
37664
37793
  return /* @__PURE__ */ jsxs(
37665
37794
  App,
37666
37795
  {
37667
37796
  scrollWholePage: scrollWholePage2,
37797
+ fitContent: fitContent2,
37668
37798
  noScrollbarGutters: extractValue.asOptionalBoolean(node.props.noScrollbarGutters, false),
37669
37799
  classes,
37670
37800
  layout: extractValue(node.props.layout),
@@ -38482,6 +38612,7 @@ const formSectionRenderer = createUserDefinedComponentRenderer(
38482
38612
  const COMP$s = "Switch";
38483
38613
  const SwitchMd = createMetadata({
38484
38614
  status: "stable",
38615
+ compactInlineLabel: true,
38485
38616
  description: "`Switch` enables users to toggle between two states: on and off.",
38486
38617
  parts: {
38487
38618
  label: {
@@ -41793,6 +41924,7 @@ async function callApi({ state, appContext, lookupAction, getCurrentState, apiIn
41793
41924
  uid: actionUid,
41794
41925
  onProgress,
41795
41926
  omitTransactionId,
41927
+ onMockExecute,
41796
41928
  onResponseHeaders,
41797
41929
  //operation
41798
41930
  headers,
@@ -41861,40 +41993,61 @@ async function callApi({ state, appContext, lookupAction, getCurrentState, apiIn
41861
41993
  resolvedBody = rawBody || body2;
41862
41994
  }
41863
41995
  try {
41864
- const operation = {
41865
- headers,
41866
- url,
41867
- queryParams,
41868
- rawBody,
41869
- method,
41870
- body: body2,
41871
- payloadType,
41872
- credentials
41873
- };
41874
- const _onProgress = lookupAction(onProgress, uid, {
41875
- eventName: "progress"
41876
- });
41877
- const apiTraceId = getCurrentTrace();
41878
- traceApiCall(appContext, "api:start", resolvedUrl, resolvedMethod, {
41879
- transactionId: clientTxId,
41880
- body: resolvedBody
41881
- });
41882
- const result = await new RestApiProxy(appContext, apiInstance).execute({
41883
- operation,
41884
- params: stateContext,
41885
- transactionId: clientTxId,
41886
- omitTransactionId,
41887
- resolveBindingExpressions,
41888
- onProgress: _onProgress,
41889
- onResponseHeaders
41890
- });
41891
- traceApiCall(appContext, "api:complete", resolvedUrl, resolvedMethod, {
41892
- transactionId: clientTxId,
41893
- body: resolvedBody,
41894
- result,
41895
- status: getLastApiStatus(clientTxId),
41896
- _traceId: apiTraceId
41897
- });
41996
+ let result;
41997
+ if (onMockExecute) {
41998
+ const resolvedMockQueryParams = extractParam(stateContext, queryParams, appContext) || {};
41999
+ const resolvedMockBody = rawBody ? extractParam(stateContext, rawBody, appContext) : body2 ? extractParam(stateContext, body2, appContext) : void 0;
42000
+ const resolvedMockHeaders = extractParam(stateContext, headers, appContext) || {};
42001
+ const mockFn = lookupAction(onMockExecute, uid, {
42002
+ eventName: "mockExecute",
42003
+ context: {
42004
+ ...getCurrentState(),
42005
+ $pathParams: {},
42006
+ $queryParams: resolvedMockQueryParams,
42007
+ $requestBody: resolvedMockBody,
42008
+ $cookies: {},
42009
+ $requestHeaders: resolvedMockHeaders,
42010
+ $param: stateContext["$param"],
42011
+ $params: stateContext["$params"]
42012
+ }
42013
+ });
42014
+ result = await mockFn?.();
42015
+ } else {
42016
+ const operation = {
42017
+ headers,
42018
+ url,
42019
+ queryParams,
42020
+ rawBody,
42021
+ method,
42022
+ body: body2,
42023
+ payloadType,
42024
+ credentials
42025
+ };
42026
+ const _onProgress = lookupAction(onProgress, uid, {
42027
+ eventName: "progress"
42028
+ });
42029
+ const apiTraceId = getCurrentTrace();
42030
+ traceApiCall(appContext, "api:start", resolvedUrl, resolvedMethod, {
42031
+ transactionId: clientTxId,
42032
+ body: resolvedBody
42033
+ });
42034
+ result = await new RestApiProxy(appContext, apiInstance).execute({
42035
+ operation,
42036
+ params: stateContext,
42037
+ transactionId: clientTxId,
42038
+ omitTransactionId,
42039
+ resolveBindingExpressions,
42040
+ onProgress: _onProgress,
42041
+ onResponseHeaders
42042
+ });
42043
+ traceApiCall(appContext, "api:complete", resolvedUrl, resolvedMethod, {
42044
+ transactionId: clientTxId,
42045
+ body: resolvedBody,
42046
+ result,
42047
+ status: getLastApiStatus(clientTxId),
42048
+ _traceId: apiTraceId
42049
+ });
42050
+ }
41898
42051
  const onSuccessFn = typeof onSuccess === "function" ? onSuccess : lookupAction(onSuccess, uid, { eventName: "success", context: getCurrentState() });
41899
42052
  const onSuccessResult = await onSuccessFn?.(result, stateContext["$param"]);
41900
42053
  updateQueriesWithResult(
@@ -42845,6 +42998,7 @@ const labelBehavior = {
42845
42998
  isInputTemplateUsed: !!componentNode.props?.inputTemplate,
42846
42999
  direction,
42847
43000
  layoutContext,
43001
+ compactInlineLabel: !!metadata?.compactInlineLabel,
42848
43002
  children: node
42849
43003
  }
42850
43004
  );
@@ -42947,7 +43101,7 @@ function VariantWrapper({
42947
43101
  }
42948
43102
  variantSpec[selector][cssProperty] = cssVarValue;
42949
43103
  }
42950
- const customVariantClassName = useStyles(variantSpec, { layer: "themes" });
43104
+ const customVariantClassName = useStyles(variantSpec, { layer: "dynamic" });
42951
43105
  const isItemWithLabel = children.type === ItemWithLabel;
42952
43106
  if (isItemWithLabel && children.props?.children) {
42953
43107
  const innerChild = children.props.children;
@@ -43139,7 +43293,9 @@ function FormBindingWrapper({
43139
43293
  const childRegisterComponentApi = children?.props?.registerComponentApi;
43140
43294
  const onStateChange = useCallback(
43141
43295
  ({ value: value2 }, options2) => {
43142
- childUpdateState?.({ value: value2 }, options2);
43296
+ if (!options2?.formOnly) {
43297
+ childUpdateState?.({ value: value2 }, options2);
43298
+ }
43143
43299
  if (!isInsideForm) return;
43144
43300
  if (!options2?.initial) {
43145
43301
  dispatch(fieldChanged(formItemId, value2));
@@ -44686,15 +44842,15 @@ function DataLoader({
44686
44842
  const loaded = useCallback(
44687
44843
  (data, pageInfo) => {
44688
44844
  if (xsVerbose) {
44689
- const before = prevDataRef.current;
44690
- const after = data;
44845
+ const before2 = prevDataRef.current;
44846
+ const after2 = data;
44691
44847
  const dataSourceId = loader.props.id || loader.uid || loader.props.url || "DataSource";
44692
44848
  const path = `DataSource:${dataSourceId}`;
44693
44849
  xsLog("state:changes", {
44694
44850
  uid: dataSourceId,
44695
44851
  eventName: `DataSource:${dataSourceId}`,
44696
44852
  instanceId: instanceIdRef.current,
44697
- diff: [formatDiff(path, before, after)]
44853
+ diff: [formatDiff(path, before2, after2)]
44698
44854
  });
44699
44855
  prevDataRef.current = data;
44700
44856
  pendingTraceIdRef.current = void 0;
@@ -47453,22 +47609,22 @@ const redirectRenderer = wrapComponent(COMP$m, Navigate, RedirectMd, {
47453
47609
  }
47454
47610
  )
47455
47611
  });
47456
- const themeVars$7 = `'{"padding-trigger-Tabs": "var(--xmlui-padding-trigger-Tabs)", "paddingHorizontal-trigger-Tabs": "var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs))", "paddingVertical-trigger-Tabs": "var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs))", "paddingLeft-trigger-Tabs": "var(--xmlui-paddingLeft-trigger-Tabs, var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "paddingRight-trigger-Tabs": "var(--xmlui-paddingRight-trigger-Tabs, var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "paddingTop-trigger-Tabs": "var(--xmlui-paddingTop-trigger-Tabs, var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "paddingBottom-trigger-Tabs": "var(--xmlui-paddingBottom-trigger-Tabs, var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "backgroundColor-Tabs": "var(--xmlui-backgroundColor-Tabs)", "borderColor-Tabs": "var(--xmlui-borderColor-Tabs)", "borderWidth-Tabs": "var(--xmlui-borderWidth-Tabs)", "borderColor-active-Tabs": "var(--xmlui-borderColor-active-Tabs)", "backgroundColor-trigger-Tabs": "var(--xmlui-backgroundColor-trigger-Tabs)", "borderRadius-trigger-Tabs": "var(--xmlui-borderRadius-trigger-Tabs)", "border-trigger-Tabs": "var(--xmlui-border-trigger-Tabs)", "textColor-trigger-Tabs": "var(--xmlui-textColor-trigger-Tabs)", "textColor-trigger-Tabs--active": "var(--xmlui-textColor-trigger-Tabs--active)", "textColor-trigger-Tabs--hover": "var(--xmlui-textColor-trigger-Tabs--hover)", "backgroundColor-trigger-Tabs--hover": "var(--xmlui-backgroundColor-trigger-Tabs--hover)", "backgroundColor-trigger-Tabs--active": "var(--xmlui-backgroundColor-trigger-Tabs--active)", "backgroundColor-list-Tabs": "var(--xmlui-backgroundColor-list-Tabs)", "borderRadius-list-Tabs": "var(--xmlui-borderRadius-list-Tabs)", "border-list-Tabs": "var(--xmlui-border-list-Tabs)", "gap-list-Tabs": "var(--xmlui-gap-list-Tabs)"}'`;
47457
- const tabs = "_tabs_1coc2_14";
47458
- const filler = "_filler_1coc2_26";
47459
- const tabTrigger = "_tabTrigger_1coc2_39";
47460
- const distributeEvenly = "_distributeEvenly_1coc2_46";
47461
- const tabsList = "_tabsList_1coc2_97";
47462
- const alignStart = "_alignStart_1coc2_115";
47463
- const alignEnd = "_alignEnd_1coc2_118";
47464
- const alignCenter = "_alignCenter_1coc2_121";
47465
- const alignStretch = "_alignStretch_1coc2_124";
47466
- const tabsContent = "_tabsContent_1coc2_130";
47467
- const accordionView = "_accordionView_1coc2_134";
47468
- const accordionRoot = "_accordionRoot_1coc2_137";
47469
- const accordionInterleaved = "_accordionInterleaved_1coc2_142";
47470
- const accordionList = "_accordionList_1coc2_147";
47471
- const accordionTrigger = "_accordionTrigger_1coc2_159";
47612
+ const themeVars$7 = `'{"padding-trigger-Tabs": "var(--xmlui-padding-trigger-Tabs)", "paddingHorizontal-trigger-Tabs": "var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs))", "paddingVertical-trigger-Tabs": "var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs))", "paddingLeft-trigger-Tabs": "var(--xmlui-paddingLeft-trigger-Tabs, var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "paddingRight-trigger-Tabs": "var(--xmlui-paddingRight-trigger-Tabs, var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "paddingTop-trigger-Tabs": "var(--xmlui-paddingTop-trigger-Tabs, var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "paddingBottom-trigger-Tabs": "var(--xmlui-paddingBottom-trigger-Tabs, var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)))", "backgroundColor-Tabs": "var(--xmlui-backgroundColor-Tabs)", "borderColor-Tabs": "var(--xmlui-borderColor-Tabs)", "borderWidth-Tabs": "var(--xmlui-borderWidth-Tabs)", "borderColor-active-Tabs": "var(--xmlui-borderColor-active-Tabs)", "backgroundColor-trigger-Tabs": "var(--xmlui-backgroundColor-trigger-Tabs)", "borderRadius-trigger-Tabs": "var(--xmlui-borderRadius-trigger-Tabs)", "border-trigger-Tabs": "var(--xmlui-border-trigger-Tabs)", "textColor-trigger-Tabs": "var(--xmlui-textColor-trigger-Tabs)", "textColor-trigger-Tabs--active": "var(--xmlui-textColor-trigger-Tabs--active)", "textColor-trigger-Tabs--hover": "var(--xmlui-textColor-trigger-Tabs--hover)", "backgroundColor-trigger-Tabs--hover": "var(--xmlui-backgroundColor-trigger-Tabs--hover)", "backgroundColor-trigger-Tabs--active": "var(--xmlui-backgroundColor-trigger-Tabs--active)", "backgroundColor-list-Tabs": "var(--xmlui-backgroundColor-list-Tabs)", "borderRadius-list-Tabs": "var(--xmlui-borderRadius-list-Tabs)", "border-list-Tabs": "var(--xmlui-border-list-Tabs)", "gap-list-Tabs": "var(--xmlui-gap-list-Tabs)", "paddingTop-TabItem": "var(--xmlui-paddingTop-TabItem)"}'`;
47613
+ const tabs = "_tabs_unyqa_14";
47614
+ const filler = "_filler_unyqa_26";
47615
+ const tabTrigger = "_tabTrigger_unyqa_39";
47616
+ const distributeEvenly = "_distributeEvenly_unyqa_46";
47617
+ const tabsList = "_tabsList_unyqa_97";
47618
+ const alignStart = "_alignStart_unyqa_115";
47619
+ const alignEnd = "_alignEnd_unyqa_118";
47620
+ const alignCenter = "_alignCenter_unyqa_121";
47621
+ const alignStretch = "_alignStretch_unyqa_124";
47622
+ const tabsContent = "_tabsContent_unyqa_130";
47623
+ const accordionView = "_accordionView_unyqa_135";
47624
+ const accordionRoot = "_accordionRoot_unyqa_138";
47625
+ const accordionInterleaved = "_accordionInterleaved_unyqa_143";
47626
+ const accordionList = "_accordionList_unyqa_148";
47627
+ const accordionTrigger = "_accordionTrigger_unyqa_160";
47472
47628
  const styles$h = {
47473
47629
  themeVars: themeVars$7,
47474
47630
  tabs,
@@ -47493,9 +47649,10 @@ const TabContext = createContext({
47493
47649
  unRegister: (innerId) => {
47494
47650
  },
47495
47651
  activeTabId: "",
47496
- getTabItems: () => []
47652
+ getTabItems: () => [],
47653
+ keepMounted: false
47497
47654
  });
47498
- function useTabContextValue() {
47655
+ function useTabContextValue(keepMounted = false) {
47499
47656
  const [tabItems, setTabItems] = useState(EMPTY_ARRAY);
47500
47657
  const tabItemsRef = useRef(EMPTY_ARRAY);
47501
47658
  tabItemsRef.current = tabItems;
@@ -47528,9 +47685,10 @@ function useTabContextValue() {
47528
47685
  unRegister,
47529
47686
  activeTabId,
47530
47687
  setActiveTabId,
47531
- getTabItems
47688
+ getTabItems,
47689
+ keepMounted
47532
47690
  };
47533
- }, [register, unRegister, activeTabId, getTabItems]);
47691
+ }, [register, unRegister, activeTabId, getTabItems, keepMounted]);
47534
47692
  return {
47535
47693
  tabItems,
47536
47694
  tabContextValue
@@ -47544,7 +47702,8 @@ const defaultProps$c = {
47544
47702
  orientation: "horizontal",
47545
47703
  tabAlignment: "start",
47546
47704
  accordionView: false,
47547
- distributeEvenly: false
47705
+ distributeEvenly: false,
47706
+ keepMounted: void 0
47548
47707
  };
47549
47708
  const Tabs = forwardRef(function Tabs2({
47550
47709
  activeTab = defaultProps$c.activeTab,
@@ -47561,9 +47720,13 @@ const Tabs = forwardRef(function Tabs2({
47561
47720
  distributeEvenly: distributeEvenly2 = defaultProps$c.distributeEvenly,
47562
47721
  onDidChange = noop$1,
47563
47722
  onContextMenu,
47723
+ keepMounted = defaultProps$c.keepMounted,
47724
+ gap,
47564
47725
  ...rest
47565
47726
  }, forwardedRef) {
47566
- const { tabItems, tabContextValue } = useTabContextValue();
47727
+ const isInsideForm = useIsInsideForm();
47728
+ const resolvedKeepMounted = keepMounted ?? isInsideForm;
47729
+ const { tabItems, tabContextValue } = useTabContextValue(resolvedKeepMounted);
47567
47730
  const _id = useId();
47568
47731
  const tabsId = id || _id;
47569
47732
  const validActiveTab = useMemo(() => {
@@ -47630,7 +47793,7 @@ const Tabs = forwardRef(function Tabs2({
47630
47793
  id: tabsId,
47631
47794
  ref: forwardedRef,
47632
47795
  className: classnames(styles$h.tabs, styles$h.accordionView, classes?.[COMPONENT_PART_KEY], className),
47633
- style: style2,
47796
+ style: { ...style2, ...gap !== void 0 ? { "--paddingTop-TabItem": gap } : {} },
47634
47797
  children: /* @__PURE__ */ jsx(
47635
47798
  Root$2,
47636
47799
  {
@@ -47726,7 +47889,7 @@ const Tabs = forwardRef(function Tabs2({
47726
47889
  }
47727
47890
  },
47728
47891
  orientation,
47729
- style: style2,
47892
+ style: { ...style2, ...gap !== void 0 ? { "--paddingTop-TabItem": gap } : {} },
47730
47893
  children: [
47731
47894
  /* @__PURE__ */ jsxs(
47732
47895
  List,
@@ -47798,6 +47961,14 @@ const TabsMd = createMetadata({
47798
47961
  },
47799
47962
  headerTemplate: {
47800
47963
  ...dComponent(`This property declares the template for the clickable tab area.`)
47964
+ },
47965
+ keepMounted: {
47966
+ description: `When enabled, all tab panels remain mounted in the DOM even when not active — inactive panels are hidden with \`display: none\`. This ensures that form fields inside non-visible tabs stay registered with an enclosing Form. Defaults to \`true\` when the Tabs component is inside a Form, \`false\` otherwise.`,
47967
+ valueType: "boolean"
47968
+ },
47969
+ gap: {
47970
+ description: `Sets the gap (padding) between the tab header strip and the active tab panel content. Accepts any valid CSS length (e.g. \`"8px"\`, \`"1rem"\`). When set, this overrides the \`paddingTop-TabItem\` theme variable.`,
47971
+ valueType: "string"
47801
47972
  }
47802
47973
  },
47803
47974
  events: {
@@ -47836,7 +48007,8 @@ const TabsMd = createMetadata({
47836
48007
  [`textColor-trigger-${COMP$l}`]: "$color-primary-600",
47837
48008
  [`textColor-trigger-${COMP$l}--active`]: "$color-primary-900",
47838
48009
  [`textColor-trigger-${COMP$l}--hover`]: "$color-primary-900",
47839
- [`gap-list-${COMP$l}`]: "0px"
48010
+ [`gap-list-${COMP$l}`]: "0px",
48011
+ [`paddingTop-TabItem`]: "$gap-normal"
47840
48012
  }
47841
48013
  });
47842
48014
  const ThemedTabs = React__default.forwardRef(
@@ -47858,7 +48030,7 @@ const tabsComponentRenderer = wrapComponent(
47858
48030
  TabsMd,
47859
48031
  {
47860
48032
  exposeRegisterApi: true,
47861
- exclude: ["activeTab", "orientation", "tabAlignment", "accordionView", "headerTemplate"],
48033
+ exclude: ["activeTab", "orientation", "tabAlignment", "accordionView", "headerTemplate", "keepMounted", "gap"],
47862
48034
  events: [],
47863
48035
  customRender(_props, { extractValue, node, renderChild: renderChild2, classes, registerComponentApi, lookupEventHandler }) {
47864
48036
  return /* @__PURE__ */ jsx(
@@ -47880,6 +48052,8 @@ const tabsComponentRenderer = wrapComponent(
47880
48052
  orientation: extractValue(node.props?.orientation),
47881
48053
  tabAlignment: extractValue(node.props?.tabAlignment),
47882
48054
  accordionView: extractValue(node.props?.accordionView),
48055
+ keepMounted: extractValue.asOptionalBoolean(node.props?.keepMounted),
48056
+ gap: extractValue.asOptionalString(node.props?.gap),
47883
48057
  onDidChange: lookupEventHandler("didChange"),
47884
48058
  onContextMenu: lookupEventHandler("contextMenu"),
47885
48059
  registerComponentApi,
@@ -48649,7 +48823,7 @@ const AccordionMd = createMetadata({
48649
48823
  const accordionComponentRenderer = wrapComponent(COMP$h, AccordionComponent, AccordionMd);
48650
48824
  const TabItemComponent = forwardRef(function TabItemComponent2({ children, label: label2, headerRenderer, style: style2, id, className, classes, activated, ...rest }, forwardedRef) {
48651
48825
  const innerId = useId();
48652
- const { register, unRegister, activeTabId, getTabItems } = useTabContext();
48826
+ const { register, unRegister, activeTabId, getTabItems, keepMounted } = useTabContext();
48653
48827
  useEffect(() => {
48654
48828
  register({
48655
48829
  label: label2,
@@ -48669,7 +48843,8 @@ const TabItemComponent = forwardRef(function TabItemComponent2({ children, label
48669
48843
  activated();
48670
48844
  }
48671
48845
  }, [activeTabId, innerId, activated]);
48672
- if (activeTabId !== innerId) return null;
48846
+ const isActive = activeTabId === innerId;
48847
+ if (!isActive && !keepMounted) return null;
48673
48848
  const tabItems = getTabItems();
48674
48849
  const tabIndex = tabItems?.findIndex((item2) => item2.innerId === innerId) ?? 0;
48675
48850
  const contentOrder = tabIndex * 2 + 1;
@@ -48679,9 +48854,14 @@ const TabItemComponent = forwardRef(function TabItemComponent2({ children, label
48679
48854
  ...rest,
48680
48855
  key: innerId,
48681
48856
  value: innerId,
48857
+ forceMount: keepMounted ? true : void 0,
48682
48858
  className: classnames(styles$h.tabsContent, classes?.[COMPONENT_PART_KEY], className),
48683
48859
  ref: forwardedRef,
48684
- style: { ...style2, order: contentOrder }
48860
+ style: {
48861
+ ...style2,
48862
+ order: contentOrder,
48863
+ ...keepMounted && !isActive ? { display: "none" } : {}
48864
+ }
48685
48865
  },
48686
48866
  children
48687
48867
  );
@@ -49508,7 +49688,7 @@ function evaluateCondition(conditionExpr, statusData, progress, result, executio
49508
49688
  return false;
49509
49689
  }
49510
49690
  }
49511
- function APICallNative({ registerComponentApi, node, uid, updateState, onSuccess, onStatusUpdate, onTimeout }) {
49691
+ function APICallNative({ registerComponentApi, node, uid, updateState, onSuccess, onStatusUpdate, onTimeout, hasMockExecute }) {
49512
49692
  const deferredStateRef = useRef({
49513
49693
  isPolling: false,
49514
49694
  statusData: null,
@@ -49774,6 +49954,7 @@ function APICallNative({ registerComponentApi, node, uid, updateState, onSuccess
49774
49954
  onProgress: node.events?.progress,
49775
49955
  onBeforeRequest: node.events?.beforeRequest,
49776
49956
  onSuccess: onSuccess ?? node.events?.success,
49957
+ onMockExecute: node.events?.mockExecute,
49777
49958
  onResponseHeaders: (h) => {
49778
49959
  capturedResponseHeaders = h;
49779
49960
  lastResponseHeadersRef.current = h;
@@ -50143,6 +50324,11 @@ const APICallMd = createMetadata({
50143
50324
  signature: "() => void",
50144
50325
  parameters: {}
50145
50326
  },
50327
+ mockExecute: {
50328
+ description: "When defined, this event handler replaces the actual API request. The handler receives the resolved request properties as context variables: `$pathParams`, `$queryParams`, `$requestBody`, `$cookies`, `$requestHeaders`. When triggered via the `execute()` method, `$param` and `$params` are also available. The return value of the handler becomes the result of the API call.",
50329
+ signature: "() => any",
50330
+ parameters: {}
50331
+ },
50146
50332
  progress: dInternal()
50147
50333
  },
50148
50334
  contextVars: {
@@ -50152,6 +50338,21 @@ const APICallMd = createMetadata({
50152
50338
  $params: {
50153
50339
  description: "Array of all parameters passed to `execute()` method (access with `$params[0]`, `$params[1]`, etc.)"
50154
50340
  },
50341
+ $pathParams: {
50342
+ description: "Path parameters extracted from the request URL (available in `mockExecute`)"
50343
+ },
50344
+ $queryParams: {
50345
+ description: "Resolved query parameters (available in `mockExecute`)"
50346
+ },
50347
+ $requestBody: {
50348
+ description: "Resolved request body (available in `mockExecute`)"
50349
+ },
50350
+ $cookies: {
50351
+ description: "Request cookies (available in `mockExecute`)"
50352
+ },
50353
+ $requestHeaders: {
50354
+ description: "Resolved request headers (available in `mockExecute`)"
50355
+ },
50155
50356
  $result: {
50156
50357
  description: "Response data (available in `completedNotificationMessage`)"
50157
50358
  },
@@ -50237,7 +50438,8 @@ const apiCallRenderer = createComponentRenderer(
50237
50438
  updateState,
50238
50439
  onSuccess: lookupEventHandler("success"),
50239
50440
  onStatusUpdate: lookupEventHandler("statusUpdate"),
50240
- onTimeout: lookupEventHandler("timeout")
50441
+ onTimeout: lookupEventHandler("timeout"),
50442
+ hasMockExecute: !!node.events?.mockExecute
50241
50443
  }
50242
50444
  );
50243
50445
  }
@@ -55237,7 +55439,7 @@ function IconProvider({ children, icons }) {
55237
55439
  /* @__PURE__ */ jsx("svg", { style: { display: "none" }, ref: spriteRootRef })
55238
55440
  ] });
55239
55441
  }
55240
- const version = "0.12.16";
55442
+ const version = "0.12.17";
55241
55443
  function createPubSubService() {
55242
55444
  const subscriptions = /* @__PURE__ */ new Map();
55243
55445
  const publishTopic = (topic, data) => {
@@ -59324,6 +59526,8 @@ const getWrappedWithContainer = (node) => {
59324
59526
  return node;
59325
59527
  }
59326
59528
  const wrappedNode = { ...node, props: { ...node.props } };
59529
+ if (node.vars) wrappedNode._savedVarDefs = node.vars;
59530
+ if (node.functions) wrappedNode._savedFunctionDefs = node.functions;
59327
59531
  delete wrappedNode.loaders;
59328
59532
  delete wrappedNode.vars;
59329
59533
  delete wrappedNode.functions;
@@ -59540,7 +59744,7 @@ function ApiBoundComponent({
59540
59744
  }
59541
59745
  return JSON.stringify(eventData);
59542
59746
  };
59543
- const { success, error: error2, progress, beforeRequest } = actionComponent.events || {};
59747
+ const { success, error: error2, progress, beforeRequest, mockExecute } = actionComponent.events || {};
59544
59748
  switch (type) {
59545
59749
  case "FileUpload": {
59546
59750
  const {
@@ -59633,6 +59837,7 @@ function ApiBoundComponent({
59633
59837
  onProgress: ${prepareEvent(progress)},
59634
59838
  onBeforeRequest: ${prepareEvent(beforeRequest)},
59635
59839
  onSuccess: ${prepareEvent(success)},
59840
+ onMockExecute: ${prepareEvent(mockExecute)},
59636
59841
  updates: ${JSON.stringify(updates)},
59637
59842
  optimisticValue: ${JSON.stringify(optimisticValue)},
59638
59843
  payloadType: ${JSON.stringify(payloadType)},
@@ -60073,7 +60278,8 @@ const ComponentAdapter = forwardRef(function ComponentAdapter2({
60073
60278
  return { "&": stableLayoutCss, ...stableResponsiveStyleObject };
60074
60279
  }, [stableLayoutCss, stableResponsiveStyleObject]);
60075
60280
  const layoutClassName = useStyles(combinedStyleObject);
60076
- const className = [themeClassName, layoutClassName].filter(Boolean).join(" ");
60281
+ const extraClassName = layoutContextRef?.current?.extraClassName;
60282
+ const className = [themeClassName, layoutClassName, extraClassName].filter(Boolean).join(" ");
60077
60283
  const memoedClasses = useMemo(() => ({ [COMPONENT_PART_KEY]: className }), [className]);
60078
60284
  const { inspectId, refreshInspection } = useInspector(safeNode, uid);
60079
60285
  const currentWhenValue = resolveResponsiveWhen(
@@ -61039,30 +61245,30 @@ function AppContent({
61039
61245
  const update = useCallback(
61040
61246
  (bucket, patch) => {
61041
61247
  setAppState((prev) => {
61042
- const before = prev[bucket];
61043
- const after = {
61248
+ const before2 = prev[bucket];
61249
+ const after2 = {
61044
61250
  ...prev[bucket] || {},
61045
61251
  ...patch
61046
61252
  };
61047
61253
  const next = {
61048
61254
  ...prev,
61049
- [bucket]: after
61255
+ [bucket]: after2
61050
61256
  };
61051
61257
  if (xsVerbose && typeof window !== "undefined") {
61052
61258
  const w = window;
61053
61259
  const lastInteraction = w._xsLastInteraction;
61054
61260
  const traceId = w._xsCurrentTrace || (!w._xsStartupComplete ? w._xsStartupTrace : void 0) || (lastInteraction && Date.now() - lastInteraction.ts < 2e3 ? lastInteraction.id : void 0);
61055
61261
  const perfTs = typeof performance !== "undefined" ? performance.now() : void 0;
61056
- const beforeJson = simpleStringify(before);
61057
- const afterJson = simpleStringify(after);
61262
+ const beforeJson = simpleStringify(before2);
61263
+ const afterJson = simpleStringify(after2);
61058
61264
  const diffPretty = `path: AppState:${bucket}
61059
61265
  ${prefixLines(beforeJson, "- ")}
61060
61266
  ${prefixLines(afterJson, "+ ")}`;
61061
61267
  const diff = {
61062
61268
  path: `AppState:${bucket}`,
61063
61269
  type: "update",
61064
- before,
61065
- after,
61270
+ before: before2,
61271
+ after: after2,
61066
61272
  beforeJson,
61067
61273
  afterJson,
61068
61274
  diffText: `path: AppState:${bucket}