xmlui 0.12.16 → 0.12.18

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 (42) hide show
  1. package/dist/lib/{AppRoot-DxPN3IhT.js → AppRoot-BNS2fGLn.js} +1132 -853
  2. package/dist/lib/AppRoot.css +2 -2
  3. package/dist/lib/compiled-runtime.d.ts +32 -4
  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-CAH6z4DK.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 +111 -99
  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 +42 -23
  15. package/dist/lib/xmlui.js +9 -10
  16. package/dist/metadata/{TextBox-Bn8aoH-R.js → TextBox-Bx2Jce9R.js} +1507 -809
  17. package/dist/metadata/TextBox-zzBNba9a.cjs +1 -0
  18. package/dist/metadata/behaviors.cjs +1 -1
  19. package/dist/metadata/behaviors.js +1 -1
  20. package/dist/metadata/{initMock-BrR3U4Ld.js → initMock-B1g1QewS.js} +1 -1
  21. package/dist/metadata/{initMock-C7je94z9.cjs → initMock-fcISr114.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 +633 -274
  30. package/dist/nodejs/index.cjs +622 -270
  31. package/dist/nodejs/index.d.cts +4 -1
  32. package/dist/nodejs/index.d.mts +4 -1
  33. package/dist/nodejs/index.mjs +622 -270
  34. package/dist/nodejs/server.cjs +483 -85
  35. package/dist/nodejs/server.mjs +483 -85
  36. package/dist/nodejs/vite-xmlui-plugin.cjs +588 -265
  37. package/dist/nodejs/vite-xmlui-plugin.mjs +588 -265
  38. package/dist/standalone/xmlui-standalone.es.d.ts +47 -24
  39. package/dist/standalone/xmlui-standalone.umd.js +8 -8
  40. package/package.json +5 -3
  41. package/dist/metadata/TextBox-BiqMyomC.cjs +0 -1
  42. package/dist/metadata/transform-_9WMqBx2.cjs +0 -1
@@ -1,15 +1,14 @@
1
- import "./AppRoot.css";
2
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
2
  import * as React from "react";
4
3
  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
4
  import { useQuery, useInfiniteQuery, QueryClientProvider, QueryClient } from "@tanstack/react-query";
6
5
  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";
6
+ 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
7
  import classnames from "classnames";
9
8
  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";
9
+ 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
10
  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";
11
+ 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
12
  import * as InnerRadioGroup from "@radix-ui/react-radio-group";
14
13
  import { useContextSelector, createContext as createContext$1 } from "use-context-selector";
15
14
  import { OverlayScrollbarsComponent } from "overlayscrollbars-react";
@@ -47,7 +46,7 @@ import { Root as Root$2, List, Trigger as Trigger$1, Content as Content$1 } from
47
46
  import scrollIntoView from "scroll-into-view-if-needed";
48
47
  import * as RAccordion from "@radix-ui/react-accordion";
49
48
  import QRCodeLib from "react-qr-code";
50
- function getDefaultExportFromCjs(x) {
49
+ import './AppRoot.css';function getDefaultExportFromCjs(x) {
51
50
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
52
51
  }
53
52
  var client = {};
@@ -139,7 +138,7 @@ function isInsideLayout(context, ...types) {
139
138
  }
140
139
  function stripDirectChildProps(context) {
141
140
  if (!context) return void 0;
142
- const { ignoreLayoutProps, wrapChild, ...rest } = context;
141
+ const { ignoreLayoutProps, wrapChild, extraClassName, ...rest } = context;
143
142
  return rest;
144
143
  }
145
144
  const keyPrefix$1 = "xmlui";
@@ -301,7 +300,15 @@ const labelPositionMd = [
301
300
  description: "The right side of the input (left-to-right) or the left side of the input (right-to-left)"
302
301
  },
303
302
  { value: "top", description: "The top of the input" },
304
- { value: "bottom", description: "The bottom of the input" }
303
+ { value: "bottom", description: "The bottom of the input" },
304
+ {
305
+ value: "before",
306
+ description: "The label is placed directly before the input with fit-content width. Similar to 'start' but the label does not stretch."
307
+ },
308
+ {
309
+ value: "after",
310
+ description: "The label is placed directly after the input with fit-content width. Similar to 'end' but the label does not stretch."
311
+ }
305
312
  ];
306
313
  const triggerPositionValues = ["start", "end"];
307
314
  const triggerPositionNames = [...triggerPositionValues];
@@ -515,25 +522,27 @@ function getElementRef(element) {
515
522
  return element.props.ref || element.ref;
516
523
  }
517
524
  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";
525
+ const container$7 = "_container_1jzhh_14";
526
+ const top$2 = "_top_1jzhh_21";
527
+ const end = "_end_1jzhh_26";
528
+ const bottom$2 = "_bottom_1jzhh_32";
529
+ const start = "_start_1jzhh_37";
530
+ const before = "_before_1jzhh_43";
531
+ const after = "_after_1jzhh_51";
532
+ const shrinkToLabel = "_shrinkToLabel_1jzhh_59";
533
+ const inputLabel = "_inputLabel_1jzhh_62";
534
+ const labelBreak = "_labelBreak_1jzhh_75";
535
+ const required = "_required_1jzhh_80";
536
+ const disabled$d = "_disabled_1jzhh_87";
537
+ const requiredMark = "_requiredMark_1jzhh_91";
538
+ const optionalTag = "_optionalTag_1jzhh_95";
539
+ const itemWithLabel = "_itemWithLabel_1jzhh_99";
540
+ const wrapper$g = "_wrapper_1jzhh_105";
541
+ const validationResultWrapper = "_validationResultWrapper_1jzhh_113";
542
+ const validationAnchor = "_validationAnchor_1jzhh_116";
543
+ const validationMessageAbsolute = "_validationMessageAbsolute_1jzhh_119";
544
+ const helperTextContainer = "_helperTextContainer_1jzhh_126";
545
+ const labelWrapper$1 = "_labelWrapper_1jzhh_129";
537
546
  const styles$1k = {
538
547
  themeVars: themeVars$12,
539
548
  container: container$7,
@@ -541,6 +550,8 @@ const styles$1k = {
541
550
  end,
542
551
  bottom: bottom$2,
543
552
  start,
553
+ before,
554
+ after,
544
555
  shrinkToLabel,
545
556
  inputLabel,
546
557
  labelBreak,
@@ -1799,17 +1810,17 @@ function simpleStringify(value) {
1799
1810
  function prefixLines(text2, prefix) {
1800
1811
  return text2.split("\n").map((line) => `${prefix}${line}`).join("\n");
1801
1812
  }
1802
- function formatDiff(path, before, after) {
1803
- const beforeJson = simpleStringify(before);
1804
- const afterJson = simpleStringify(after);
1813
+ function formatDiff(path, before2, after2) {
1814
+ const beforeJson = simpleStringify(before2);
1815
+ const afterJson = simpleStringify(after2);
1805
1816
  const diffPretty = `path: ${path}
1806
1817
  ${prefixLines(beforeJson, "- ")}
1807
1818
  ${prefixLines(afterJson, "+ ")}`;
1808
1819
  return {
1809
1820
  path,
1810
1821
  type: "update",
1811
- before,
1812
- after,
1822
+ before: before2,
1823
+ after: after2,
1813
1824
  beforeJson,
1814
1825
  afterJson,
1815
1826
  diffText: `path: ${path}
@@ -2176,16 +2187,20 @@ const MemoizedItem = memo(
2176
2187
  node,
2177
2188
  renderChild: renderChild2,
2178
2189
  layoutContext,
2179
- contextVars = EMPTY_OBJECT
2190
+ contextVars = EMPTY_OBJECT,
2191
+ vars: vars2,
2192
+ functions
2180
2193
  }) => {
2181
2194
  const shallowMemoedContextVars = useShallowCompareMemoize(contextVars);
2182
2195
  const nodeWithContextVars = useMemo(
2183
2196
  () => ({
2184
2197
  type: "Container",
2185
2198
  contextVars: shallowMemoedContextVars,
2199
+ ...vars2 ? { vars: vars2 } : void 0,
2200
+ ...functions ? { functions } : void 0,
2186
2201
  children: Array.isArray(node) ? node : [node]
2187
2202
  }),
2188
- [node, shallowMemoedContextVars]
2203
+ [node, shallowMemoedContextVars, vars2, functions]
2189
2204
  );
2190
2205
  return /* @__PURE__ */ jsx(Fragment, { children: renderChild2(nodeWithContextVars, layoutContext) });
2191
2206
  }
@@ -3267,6 +3282,30 @@ const RadioGroup = forwardRef(function RadioGroup2({
3267
3282
  },
3268
3283
  [updateValue, readOnly2]
3269
3284
  );
3285
+ const handleKeyDown = useCallback(
3286
+ (e) => {
3287
+ if (readOnly2 || !enabled2) return;
3288
+ const isVerticalKey = e.key === "ArrowDown" || e.key === "ArrowUp";
3289
+ const isHorizontalKey = e.key === "ArrowRight" || e.key === "ArrowLeft";
3290
+ if (!isVerticalKey && !isHorizontalKey) return;
3291
+ if (orientation === "horizontal" && isVerticalKey) return;
3292
+ if (orientation === "vertical" && isHorizontalKey) return;
3293
+ const isNext = e.key === "ArrowDown" || e.key === "ArrowRight";
3294
+ const radios = Array.from(
3295
+ radioGroupRef.current?.querySelectorAll('[role="radio"]:not(:disabled)') ?? []
3296
+ );
3297
+ if (radios.length === 0) return;
3298
+ const focused22 = e.target;
3299
+ const currentIndex = radios.indexOf(focused22);
3300
+ if (currentIndex === -1) return;
3301
+ const nextIndex = isNext ? (currentIndex + 1) % radios.length : (currentIndex - 1 + radios.length) % radios.length;
3302
+ const nextValue = radios[nextIndex].getAttribute("value");
3303
+ if (nextValue != null) {
3304
+ onInputChange(nextValue);
3305
+ }
3306
+ },
3307
+ [readOnly2, enabled2, orientation, onInputChange]
3308
+ );
3270
3309
  const handleOnFocus = useCallback(
3271
3310
  (ev) => {
3272
3311
  setFocused(true);
@@ -3306,6 +3345,7 @@ const RadioGroup = forwardRef(function RadioGroup2({
3306
3345
  id,
3307
3346
  onBlur: handleOnBlur,
3308
3347
  onFocus: handleOnFocus,
3348
+ onKeyDown: handleKeyDown,
3309
3349
  onValueChange: onInputChange,
3310
3350
  value,
3311
3351
  disabled: !enabled2,
@@ -3595,7 +3635,8 @@ const defaultProps$1e = {
3595
3635
  shrinkToLabel: false,
3596
3636
  cloneStyle: false,
3597
3637
  requireLabelMode: "markRequired",
3598
- isInputTemplateUsed: false
3638
+ isInputTemplateUsed: false,
3639
+ compactInlineLabel: false
3599
3640
  };
3600
3641
  const numberRegex = /^[0-9]+$/;
3601
3642
  const ItemWithLabel = forwardRef(function ItemWithLabel2({
@@ -3604,7 +3645,7 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3604
3645
  style: style2 = {},
3605
3646
  className,
3606
3647
  label: label2,
3607
- labelBreak: labelBreak2 = defaultProps$1e.labelBreak,
3648
+ labelBreak: labelBreak2,
3608
3649
  labelWidth,
3609
3650
  enabled: enabled2 = defaultProps$1e.enabled,
3610
3651
  required: required2 = defaultProps$1e.required,
@@ -3622,6 +3663,7 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3622
3663
  testId,
3623
3664
  cloneStyle = defaultProps$1e.cloneStyle,
3624
3665
  requireLabelMode = defaultProps$1e.requireLabelMode,
3666
+ compactInlineLabel = defaultProps$1e.compactInlineLabel,
3625
3667
  ...rest
3626
3668
  }, ref) {
3627
3669
  const generatedId2 = useId();
@@ -3630,6 +3672,14 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3630
3672
  (value) => value?.itemLabelPosition
3631
3673
  );
3632
3674
  const resolvedLabelPosition = labelPosition ?? formItemLabelPosition ?? "top";
3675
+ const formItemLabelWidth = useFormContextPart(
3676
+ (value) => value?.itemLabelWidth
3677
+ );
3678
+ const resolvedLabelWidthProp = labelWidth ?? formItemLabelWidth;
3679
+ const formItemLabelBreak = useFormContextPart(
3680
+ (value) => value?.itemLabelBreak
3681
+ );
3682
+ const resolvedLabelBreak = labelBreak2 ?? formItemLabelBreak ?? defaultProps$1e.labelBreak;
3633
3683
  const isInHorizontalStack = layoutContext?.orientation === "horizontal";
3634
3684
  const [inputElement, setInputElement] = useState(null);
3635
3685
  const [inputHeight, setInputHeight] = useState(void 0);
@@ -3647,7 +3697,8 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3647
3697
  return () => observer.disconnect();
3648
3698
  }
3649
3699
  }, [inputElement]);
3650
- const labelWrapperHeight = resolvedLabelPosition === "start" || resolvedLabelPosition === "end" ? inputHeight : "auto";
3700
+ const labelWrapperHeight = resolvedLabelPosition === "start" || resolvedLabelPosition === "end" || resolvedLabelPosition === "before" || resolvedLabelPosition === "after" ? inputHeight : "auto";
3701
+ const resolvedLabelWidth = resolvedLabelWidthProp !== void 0 ? numberRegex.test(resolvedLabelWidthProp) ? `${resolvedLabelWidthProp}px` : resolvedLabelWidthProp : compactInlineLabel && (resolvedLabelPosition === "before" || resolvedLabelPosition === "after") ? "fit-content" : void 0;
3651
3702
  const isRadioGroup = React__default.isValidElement(children) && children.type === ThemedRadioGroup;
3652
3703
  if (label2 === void 0 && !validationResult) {
3653
3704
  return /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: /* @__PURE__ */ jsx(Slot, { ...rest, style: style2, className, id: inputId, ref, children }) });
@@ -3668,8 +3719,10 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3668
3719
  className: classnames(styles$1k.container, {
3669
3720
  [styles$1k.top]: resolvedLabelPosition === "top",
3670
3721
  [styles$1k.bottom]: resolvedLabelPosition === "bottom",
3671
- [styles$1k.start]: resolvedLabelPosition === "start",
3672
- [styles$1k.end]: resolvedLabelPosition === "end",
3722
+ [styles$1k.start]: resolvedLabelPosition === "start" || !compactInlineLabel && resolvedLabelPosition === "before",
3723
+ [styles$1k.end]: resolvedLabelPosition === "end" || !compactInlineLabel && resolvedLabelPosition === "after",
3724
+ [styles$1k.before]: compactInlineLabel && resolvedLabelPosition === "before",
3725
+ [styles$1k.after]: compactInlineLabel && resolvedLabelPosition === "after",
3673
3726
  [styles$1k.shrinkToLabel]: shrinkToLabel2
3674
3727
  }),
3675
3728
  dir: rest?.direction,
@@ -3693,13 +3746,13 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3693
3746
  }),
3694
3747
  style: {
3695
3748
  ...labelStyle,
3696
- width: labelWidth && numberRegex.test(labelWidth) ? `${labelWidth}px` : labelWidth,
3697
- flexShrink: labelWidth !== void 0 ? 0 : void 0
3749
+ width: resolvedLabelWidth,
3750
+ flexShrink: resolvedLabelWidthProp !== void 0 ? 0 : void 0
3698
3751
  },
3699
3752
  className: classnames(styles$1k.inputLabel, {
3700
3753
  [styles$1k.required]: required2,
3701
3754
  [styles$1k.disabled]: !enabled2,
3702
- [styles$1k.labelBreak]: labelBreak2
3755
+ [styles$1k.labelBreak]: resolvedLabelBreak
3703
3756
  }),
3704
3757
  children: [
3705
3758
  label2,
@@ -3741,8 +3794,10 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3741
3794
  className: classnames(styles$1k.container, {
3742
3795
  [styles$1k.top]: resolvedLabelPosition === "top",
3743
3796
  [styles$1k.bottom]: resolvedLabelPosition === "bottom",
3744
- [styles$1k.start]: resolvedLabelPosition === "start",
3745
- [styles$1k.end]: resolvedLabelPosition === "end",
3797
+ [styles$1k.start]: resolvedLabelPosition === "start" || !compactInlineLabel && resolvedLabelPosition === "before",
3798
+ [styles$1k.end]: resolvedLabelPosition === "end" || !compactInlineLabel && resolvedLabelPosition === "after",
3799
+ [styles$1k.before]: compactInlineLabel && resolvedLabelPosition === "before",
3800
+ [styles$1k.after]: compactInlineLabel && resolvedLabelPosition === "after",
3746
3801
  [styles$1k.shrinkToLabel]: shrinkToLabel2
3747
3802
  }),
3748
3803
  dir: rest?.direction,
@@ -3761,13 +3816,13 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
3761
3816
  onClick: onLabelClick || (() => document.getElementById(inputId)?.focus()),
3762
3817
  style: {
3763
3818
  ...labelStyle,
3764
- width: labelWidth && numberRegex.test(labelWidth) ? `${labelWidth}px` : labelWidth,
3765
- flexShrink: labelWidth !== void 0 ? 0 : void 0
3819
+ width: resolvedLabelWidth,
3820
+ flexShrink: resolvedLabelWidthProp !== void 0 ? 0 : void 0
3766
3821
  },
3767
3822
  className: classnames(styles$1k.inputLabel, {
3768
3823
  [styles$1k.required]: required2,
3769
3824
  [styles$1k.disabled]: !enabled2,
3770
- [styles$1k.labelBreak]: labelBreak2
3825
+ [styles$1k.labelBreak]: resolvedLabelBreak
3771
3826
  }),
3772
3827
  children: [
3773
3828
  label2,
@@ -9259,26 +9314,24 @@ const localLinkComponentRenderer = wrapComponent(
9259
9314
  }
9260
9315
  );
9261
9316
  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";
9317
+ const resetAppearance = "_resetAppearance_xdymb_14";
9318
+ const label = "_label_xdymb_21";
9319
+ const inputContainer = "_inputContainer_xdymb_24";
9320
+ const checkbox = "_checkbox_xdymb_31";
9321
+ const error$d = "_error_xdymb_62";
9322
+ const warning$c = "_warning_xdymb_73";
9323
+ const valid$d = "_valid_xdymb_84";
9324
+ const noTransition = "_noTransition_xdymb_174";
9271
9325
  const styles$14 = {
9272
9326
  themeVars: themeVars$O,
9273
9327
  resetAppearance,
9274
9328
  label,
9275
9329
  inputContainer,
9276
9330
  checkbox,
9277
- forceHover,
9278
9331
  error: error$d,
9279
9332
  warning: warning$c,
9280
9333
  valid: valid$d,
9281
- "switch": "_switch_xjsdj_146",
9334
+ "switch": "_switch_xdymb_143",
9282
9335
  noTransition
9283
9336
  };
9284
9337
  const defaultProps$15 = {
@@ -9309,7 +9362,6 @@ const Toggle = forwardRef(function Toggle2({
9309
9362
  autoFocus,
9310
9363
  registerComponentApi,
9311
9364
  inputRenderer,
9312
- forceHover: forceHover2 = false,
9313
9365
  tabIndex,
9314
9366
  "aria-label": ariaLabel,
9315
9367
  ...rest
@@ -9436,7 +9488,6 @@ const Toggle = forwardRef(function Toggle2({
9436
9488
  [styles$14.error]: validationStatus === "error",
9437
9489
  [styles$14.warning]: validationStatus === "warning",
9438
9490
  [styles$14.valid]: validationStatus === "valid",
9439
- [styles$14.forceHover]: forceHover2,
9440
9491
  [styles$14.noTransition]: suppressTransition
9441
9492
  }
9442
9493
  )
@@ -9464,7 +9515,6 @@ const Toggle = forwardRef(function Toggle2({
9464
9515
  variant,
9465
9516
  indeterminate,
9466
9517
  autoFocus,
9467
- forceHover2,
9468
9518
  suppressTransition
9469
9519
  ]);
9470
9520
  return inputRenderer ? /* @__PURE__ */ jsxs("label", { className: classnames(styles$14.label, classes?.[COMPONENT_PART_KEY]), children: [
@@ -10685,7 +10735,7 @@ function ApiInterceptorProvider({
10685
10735
  return;
10686
10736
  }
10687
10737
  void (async () => {
10688
- const { initMock } = await import("./initMock-qSARW6AY.js");
10738
+ const { initMock } = await import("./initMock-CAH6z4DK.js");
10689
10739
  const apiInstance2 = await initMock(interceptor);
10690
10740
  setApiInstance(apiInstance2);
10691
10741
  setInitialized(true);
@@ -10702,7 +10752,7 @@ function ApiInterceptorProvider({
10702
10752
  if (process.env.VITE_MOCK_ENABLED) {
10703
10753
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
10704
10754
  useWorker ? import("./apiInterceptorWorker-CDO-h2U4.js") : Promise.resolve({ createApiInterceptorWorker: () => null }),
10705
- import("./initMock-qSARW6AY.js")
10755
+ import("./initMock-CAH6z4DK.js")
10706
10756
  ]);
10707
10757
  if (interceptor || forceInitialize) {
10708
10758
  const apiInstance2 = await initMock(interceptor || {});
@@ -10739,7 +10789,7 @@ function ApiInterceptorProvider({
10739
10789
  void (async () => {
10740
10790
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
10741
10791
  import("./apiInterceptorWorker-CDO-h2U4.js"),
10742
- import("./initMock-qSARW6AY.js")
10792
+ import("./initMock-CAH6z4DK.js")
10743
10793
  ]);
10744
10794
  const apiInstance2 = await initMock(interceptor);
10745
10795
  await createApiInterceptorWorker(apiInstance2, parentInterceptorWorker);
@@ -13458,27 +13508,28 @@ const navLinkStyles = {
13458
13508
  iconAlignEnd
13459
13509
  };
13460
13510
  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";
13511
+ const appContainer = "_appContainer_1rig9_14";
13512
+ const vertical$4 = "_vertical_1rig9_25";
13513
+ const mainContentArea = "_mainContentArea_1rig9_28";
13514
+ const noScrollbarGutters = "_noScrollbarGutters_1rig9_31";
13515
+ const scrollWholePage = "_scrollWholePage_1rig9_34";
13516
+ const navPanelWrapper = "_navPanelWrapper_1rig9_37";
13517
+ const navPanelWrapperCollapsed = "_navPanelWrapperCollapsed_1rig9_42";
13518
+ const footerWrapper = "_footerWrapper_1rig9_47";
13519
+ const horizontal$4 = "_horizontal_1rig9_50";
13520
+ const sticky = "_sticky_1rig9_56";
13521
+ const headerWrapper$1 = "_headerWrapper_1rig9_65";
13522
+ const desktop = "_desktop_1rig9_81";
13523
+ const pagesContainer = "_pagesContainer_1rig9_112";
13524
+ const pageContentContainer = "_pageContentContainer_1rig9_123";
13525
+ const verticalFullHeader = "_verticalFullHeader_1rig9_150";
13526
+ const noFooter = "_noFooter_1rig9_156";
13527
+ const nonSticky = "_nonSticky_1rig9_209";
13528
+ const mainContentRow = "_mainContentRow_1rig9_240";
13529
+ const fitContent = "_fitContent_1rig9_258";
13530
+ const withToc = "_withToc_1rig9_385";
13531
+ const navPanelCollapsed = "_navPanelCollapsed_1rig9_388";
13532
+ const withDefaultContentPadding = "_withDefaultContentPadding_1rig9_394";
13482
13533
  const styles$X = {
13483
13534
  themeVars: themeVars$I,
13484
13535
  appContainer,
@@ -13499,6 +13550,7 @@ const styles$X = {
13499
13550
  noFooter,
13500
13551
  nonSticky,
13501
13552
  mainContentRow,
13553
+ fitContent,
13502
13554
  withToc,
13503
13555
  navPanelCollapsed,
13504
13556
  withDefaultContentPadding
@@ -14302,6 +14354,7 @@ const AppPagesSlot = createSlot("AppPagesSlot", styles$X.pagesContainer);
14302
14354
  const defaultProps$Y = {
14303
14355
  scrollWholePage: true,
14304
14356
  noScrollbarGutters: false,
14357
+ fitContent: false,
14305
14358
  defaultTone: void 0,
14306
14359
  defaultTheme: void 0,
14307
14360
  autoDetectTone: false,
@@ -14332,6 +14385,7 @@ function App({
14332
14385
  loggedInUser,
14333
14386
  scrollWholePage: scrollWholePage2 = defaultProps$Y.scrollWholePage,
14334
14387
  noScrollbarGutters: noScrollbarGutters2 = defaultProps$Y.noScrollbarGutters,
14388
+ fitContent: fitContent2 = defaultProps$Y.fitContent,
14335
14389
  onReady = defaultProps$Y.onReady,
14336
14390
  onMessageReceived = defaultProps$Y.onMessageReceived,
14337
14391
  onKeyDown = defaultProps$Y.onKeyDown,
@@ -14564,7 +14618,8 @@ function App({
14564
14618
  classes?.[COMPONENT_PART_KEY],
14565
14619
  styles$X.appContainer,
14566
14620
  {
14567
- [styles$X.scrollWholePage]: scrollWholePage2,
14621
+ [styles$X.scrollWholePage]: scrollWholePage2 && !fitContent2,
14622
+ [styles$X.fitContent]: fitContent2,
14568
14623
  [styles$X.noScrollbarGutters]: noScrollbarGutters2,
14569
14624
  [styles$X.noFooter]: !footerSticky,
14570
14625
  "media-large": mediaSize.largeScreen,
@@ -14631,6 +14686,7 @@ function App({
14631
14686
  }),
14632
14687
  style: styleWithHelpers,
14633
14688
  ref: shouldContainerScroll ? pageScrollRef : void 0,
14689
+ "data-xmlui-app-fit-content": fitContent2 ? "true" : void 0,
14634
14690
  ...rest,
14635
14691
  children: config.useVerticalFullHeaderStructure ? /* @__PURE__ */ jsxs(Fragment, { children: [
14636
14692
  renderHeaderSlot(),
@@ -16155,17 +16211,15 @@ function hierarchyToNative(hierarchyData, fieldConfig) {
16155
16211
  treeItemsById
16156
16212
  };
16157
16213
  }
16158
- const TreeRow = memo(({ index, data }) => {
16214
+ const TreeRow = memo(({ index, data, isSelected, isFocused }) => {
16159
16215
  const {
16160
16216
  nodes,
16161
16217
  toggleNode,
16162
- selectedId,
16163
16218
  itemRenderer,
16164
16219
  itemClickExpands,
16165
16220
  onItemClick,
16166
16221
  onSelection,
16167
16222
  lookupEventHandler,
16168
- focusedIndex,
16169
16223
  treeContainerRef,
16170
16224
  iconCollapsed,
16171
16225
  iconExpanded,
@@ -16175,8 +16229,6 @@ const TreeRow = memo(({ index, data }) => {
16175
16229
  spinnerDelay
16176
16230
  } = data;
16177
16231
  const treeItem = nodes[index];
16178
- const isFocused = focusedIndex === index && focusedIndex >= 0;
16179
- const isSelected = String(selectedId) === String(treeItem.key);
16180
16232
  const nodeWithState = treeItem;
16181
16233
  const isLoading = nodeWithState.loadingState === "loading";
16182
16234
  const [showSpinner, setShowSpinner] = useState(false);
@@ -16331,6 +16383,16 @@ const TreeRow = memo(({ index, data }) => {
16331
16383
  }
16332
16384
  ) });
16333
16385
  });
16386
+ const TreeMemoizedRow = memo(
16387
+ ({ index, data, isSelected, isFocused }) => /* @__PURE__ */ jsx(TreeRow, { index, data, isSelected, isFocused }),
16388
+ (prev, next) => {
16389
+ if (prev.data !== next.data) return false;
16390
+ if (prev.index !== next.index) return false;
16391
+ if (prev.isSelected !== next.isSelected) return false;
16392
+ if (prev.isFocused !== next.isFocused) return false;
16393
+ return true;
16394
+ }
16395
+ );
16334
16396
  const emptyTreeData = {
16335
16397
  treeData: [],
16336
16398
  treeItemsById: {}
@@ -17146,13 +17208,11 @@ const TreeComponent = memo((props) => {
17146
17208
  return {
17147
17209
  nodes: flatTreeData,
17148
17210
  toggleNode,
17149
- selectedId: effectiveSelectedId,
17150
17211
  itemRenderer,
17151
17212
  itemClickExpands,
17152
17213
  onItemClick,
17153
17214
  onSelection: (node) => setSelectedNodeById(node.key),
17154
17215
  lookupEventHandler,
17155
- focusedIndex,
17156
17216
  onKeyDown: handleKeyDown,
17157
17217
  treeContainerRef,
17158
17218
  iconCollapsed,
@@ -17165,13 +17225,11 @@ const TreeComponent = memo((props) => {
17165
17225
  }, [
17166
17226
  flatTreeData,
17167
17227
  toggleNode,
17168
- effectiveSelectedId,
17169
17228
  itemRenderer,
17170
17229
  itemClickExpands,
17171
17230
  onItemClick,
17172
17231
  setSelectedNodeById,
17173
17232
  lookupEventHandler,
17174
- focusedIndex,
17175
17233
  handleKeyDown,
17176
17234
  iconCollapsed,
17177
17235
  iconExpanded,
@@ -17989,7 +18047,9 @@ const TreeComponent = memo((props) => {
17989
18047
  children: /* @__PURE__ */ jsx(Virtualizer, { ref: listRef, itemSize: measuredItemSize || itemHeight, children: flatTreeData.map((node, index) => {
17990
18048
  const isFirstItem = index === 0;
17991
18049
  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);
18050
+ const isSelected = String(effectiveSelectedId) === String(node.key);
18051
+ const isFocused = focusedIndex === index && focusedIndex >= 0;
18052
+ 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
18053
  }) })
17994
18054
  }
17995
18055
  );
@@ -18397,6 +18457,57 @@ const TreeMd = createMetadata({
18397
18457
  [`outlineOffset-${COMP$17}--focus`]: "$outlineOffset--focus"
18398
18458
  }
18399
18459
  });
18460
+ const defaultItemTemplate = {
18461
+ type: "HStack",
18462
+ props: {
18463
+ verticalAlignment: "center",
18464
+ gap: "$space-4"
18465
+ },
18466
+ children: [
18467
+ {
18468
+ type: "Icon",
18469
+ when: "{$item.icon}",
18470
+ props: {
18471
+ name: "{$item.icon}"
18472
+ }
18473
+ },
18474
+ {
18475
+ type: "Text",
18476
+ props: {
18477
+ value: "{$item.name}"
18478
+ }
18479
+ }
18480
+ ]
18481
+ };
18482
+ function TreeWithStableRenderer({ renderChild: renderChild2, itemTemplate, ...treeProps }) {
18483
+ const renderChildRef = useRef(renderChild2);
18484
+ renderChildRef.current = renderChild2;
18485
+ const stableRenderChildRef = useRef(
18486
+ (node, ctx) => renderChildRef.current(node, ctx)
18487
+ );
18488
+ const stableItemRenderer = useMemo(
18489
+ () => (flatTreeNode) => {
18490
+ const itemContext = {
18491
+ id: flatTreeNode.id,
18492
+ name: flatTreeNode.displayName,
18493
+ depth: flatTreeNode.depth,
18494
+ isExpanded: flatTreeNode.isExpanded,
18495
+ hasChildren: flatTreeNode.hasChildren,
18496
+ ...flatTreeNode
18497
+ };
18498
+ return /* @__PURE__ */ jsx(
18499
+ MemoizedItem,
18500
+ {
18501
+ node: itemTemplate ?? defaultItemTemplate,
18502
+ contextVars: { $item: itemContext },
18503
+ renderChild: stableRenderChildRef.current
18504
+ }
18505
+ );
18506
+ },
18507
+ [itemTemplate]
18508
+ );
18509
+ return /* @__PURE__ */ jsx(TreeComponent, { ...treeProps, itemRenderer: stableItemRenderer });
18510
+ }
18400
18511
  const treeComponentRenderer = wrapComponent(
18401
18512
  COMP$17,
18402
18513
  TreeComponent,
@@ -18438,33 +18549,13 @@ const treeComponentRenderer = wrapComponent(
18438
18549
  "itemTemplate"
18439
18550
  ],
18440
18551
  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
18552
  return /* @__PURE__ */ jsx(
18464
- TreeComponent,
18553
+ TreeWithStableRenderer,
18465
18554
  {
18466
18555
  registerComponentApi,
18467
18556
  classes,
18557
+ renderChild: renderChild2,
18558
+ itemTemplate: node.props.itemTemplate,
18468
18559
  data: extractValue(node.props.data),
18469
18560
  dataFormat: extractValue(node.props.dataFormat),
18470
18561
  idField: extractValue(node.props.idField),
@@ -18519,40 +18610,7 @@ const treeComponentRenderer = wrapComponent(
18519
18610
  onPasteAction: lookupEventHandler("pasteAction"),
18520
18611
  onDeleteAction: lookupEventHandler("deleteAction"),
18521
18612
  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
- }
18613
+ lookupEventHandler: node.events?.contextMenu ? lookupEventHandler : void 0
18556
18614
  }
18557
18615
  );
18558
18616
  }
@@ -18611,39 +18669,42 @@ const MessageListenerMd = createMetadata({
18611
18669
  }
18612
18670
  });
18613
18671
  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";
18672
+ 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)"}'`;
18673
+ const wrapper$a = "_wrapper_1n82x_14";
18674
+ const noScroll = "_noScroll_1n82x_43";
18675
+ const clickableHeader = "_clickableHeader_1n82x_46";
18676
+ const headerContent$1 = "_headerContent_1n82x_60";
18677
+ const orderingIndicator = "_orderingIndicator_1n82x_63";
18678
+ const activeOrdering = "_activeOrdering_1n82x_68";
18679
+ const alwaysShow = "_alwaysShow_1n82x_68";
18680
+ const headerRow = "_headerRow_1n82x_105";
18681
+ const columnCell = "_columnCell_1n82x_112";
18682
+ const cell = "_cell_1n82x_113";
18683
+ const alignTop = "_alignTop_1n82x_122";
18684
+ const alignCenter$1 = "_alignCenter_1n82x_126";
18685
+ const alignBottom = "_alignBottom_1n82x_130";
18686
+ const table = "_table_1n82x_138";
18687
+ const row$1 = "_row_1n82x_148";
18688
+ const checkBoxWrapper = "_checkBoxWrapper_1n82x_154";
18689
+ const showInHeader = "_showInHeader_1n82x_159";
18690
+ const showInRow = "_showInRow_1n82x_159";
18691
+ const selected$3 = "_selected_1n82x_164";
18692
+ const allSelected = "_allSelected_1n82x_164";
18693
+ const cellContent = "_cellContent_1n82x_195";
18694
+ const evenRow = "_evenRow_1n82x_212";
18695
+ const oddRow = "_oddRow_1n82x_216";
18696
+ const focused$3 = "_focused_1n82x_236";
18697
+ const disabled$7 = "_disabled_1n82x_252";
18698
+ const noBottomBorder = "_noBottomBorder_1n82x_259";
18699
+ const headerWrapper = "_headerWrapper_1n82x_272";
18700
+ const noRows$1 = "_noRows_1n82x_289";
18701
+ const loadingWrapper$1 = "_loadingWrapper_1n82x_328";
18702
+ const selectionToggle = "_selectionToggle_1n82x_343";
18703
+ const toleranceCompact = "_toleranceCompact_1n82x_346";
18704
+ const toleranceComfortable = "_toleranceComfortable_1n82x_352";
18705
+ const toleranceSpacious = "_toleranceSpacious_1n82x_358";
18706
+ const resizer$1 = "_resizer_1n82x_368";
18707
+ const isResizing = "_isResizing_1n82x_389";
18647
18708
  const styles$R = {
18648
18709
  themeVars: themeVars$B,
18649
18710
  wrapper: wrapper$a,
@@ -18675,7 +18736,10 @@ const styles$R = {
18675
18736
  headerWrapper,
18676
18737
  noRows: noRows$1,
18677
18738
  loadingWrapper: loadingWrapper$1,
18678
- forceHoverWrapper,
18739
+ selectionToggle,
18740
+ toleranceCompact,
18741
+ toleranceComfortable,
18742
+ toleranceSpacious,
18679
18743
  resizer: resizer$1,
18680
18744
  isResizing
18681
18745
  };
@@ -19603,6 +19667,7 @@ const CheckboxMd = createMetadata({
19603
19667
  }
19604
19668
  },
19605
19669
  themeVars: parseScssVar(styles$14.themeVars),
19670
+ compactInlineLabel: true,
19606
19671
  limitThemeVarsToComponent: true,
19607
19672
  defaultThemeVars: {
19608
19673
  [`borderColor-${COMP$14}`]: `$borderColor-Input-default`,
@@ -20042,47 +20107,47 @@ const styles$Q = {
20042
20107
  paginationListVertical
20043
20108
  };
20044
20109
  const themeVars$z = `'{"border-Select": "var(--xmlui-border-Select)", "borderHorizontal-Select": "var(--xmlui-borderHorizontal-Select, var(--xmlui-border-Select))", "borderVertical-Select": "var(--xmlui-borderVertical-Select, var(--xmlui-border-Select))", "borderLeft-Select": "var(--xmlui-borderLeft-Select, var(--xmlui-borderHorizontal-Select, var(--xmlui-border-Select)))", "borderRight-Select": "var(--xmlui-borderRight-Select, var(--xmlui-borderHorizontal-Select, var(--xmlui-border-Select)))", "borderTop-Select": "var(--xmlui-borderTop-Select, var(--xmlui-borderVertical-Select, var(--xmlui-border-Select)))", "borderBottom-Select": "var(--xmlui-borderBottom-Select, var(--xmlui-borderVertical-Select, var(--xmlui-border-Select)))", "borderWidth-Select": "var(--xmlui-borderWidth-Select)", "borderHorizontalWidth-Select": "var(--xmlui-borderHorizontalWidth-Select, var(--xmlui-borderWidth-Select))", "borderLeftWidth-Select": "var(--xmlui-borderLeftWidth-Select, var(--xmlui-borderHorizontalWidth-Select, var(--xmlui-borderWidth-Select)))", "borderRightWidth-Select": "var(--xmlui-borderRightWidth-Select, var(--xmlui-borderHorizontalWidth-Select, var(--xmlui-borderWidth-Select)))", "borderVerticalWidth-Select": "var(--xmlui-borderVerticalWidth-Select, var(--xmlui-borderWidth-Select))", "borderTopWidth-Select": "var(--xmlui-borderTopWidth-Select, var(--xmlui-borderVerticalWidth-Select, var(--xmlui-borderWidth-Select)))", "borderBottomWidth-Select": "var(--xmlui-borderBottomWidth-Select, var(--xmlui-borderVerticalWidth-Select, var(--xmlui-borderWidth-Select)))", "borderStyle-Select": "var(--xmlui-borderStyle-Select)", "borderHorizontalStyle-Select": "var(--xmlui-borderHorizontalStyle-Select, var(--xmlui-borderStyle-Select))", "borderLeftStyle-Select": "var(--xmlui-borderLeftStyle-Select, var(--xmlui-borderHorizontalStyle-Select, var(--xmlui-borderStyle-Select)))", "borderRightStyle-Select": "var(--xmlui-borderRightStyle-Select, var(--xmlui-borderHorizontalStyle-Select, var(--xmlui-borderStyle-Select)))", "borderVerticalStyle-Select": "var(--xmlui-borderVerticalStyle-Select, var(--xmlui-borderStyle-Select))", "borderTopStyle-Select": "var(--xmlui-borderTopStyle-Select, var(--xmlui-borderVerticalStyle-Select, var(--xmlui-borderStyle-Select)))", "borderBottomStyle-Select": "var(--xmlui-borderBottomStyle-Select, var(--xmlui-borderVerticalStyle-Select, var(--xmlui-borderStyle-Select)))", "borderColor-Select": "var(--xmlui-borderColor-Select)", "borderHorizontalColor-Select": "var(--xmlui-borderHorizontalColor-Select, var(--xmlui-borderColor-Select))", "borderLeftColor-Select": "var(--xmlui-borderLeftColor-Select, var(--xmlui-borderHorizontalColor-Select, var(--xmlui-borderColor-Select)))", "borderRightColor-Select": "var(--xmlui-borderRightColor-Select, var(--xmlui-borderHorizontalColor-Select, var(--xmlui-borderColor-Select)))", "borderVerticalColor-Select": "var(--xmlui-borderVerticalColor-Select, var(--xmlui-borderColor-Select))", "borderTopColor-Select": "var(--xmlui-borderTopColor-Select, var(--xmlui-borderVerticalColor-Select, var(--xmlui-borderColor-Select)))", "borderBottomColor-Select": "var(--xmlui-borderBottomColor-Select, var(--xmlui-borderVerticalColor-Select, var(--xmlui-borderColor-Select)))", "borderStartStartRadius-Select": "var(--xmlui-borderStartStartRadius-Select, var(--xmlui-borderRadius-Select))", "borderStartEndRadius-Select": "var(--xmlui-borderStartEndRadius-Select, var(--xmlui-borderRadius-Select))", "borderEndStartRadius-Select": "var(--xmlui-borderEndStartRadius-Select, var(--xmlui-borderRadius-Select))", "borderEndEndRadius-Select": "var(--xmlui-borderEndEndRadius-Select, var(--xmlui-borderRadius-Select))", "padding-Select": "var(--xmlui-padding-Select)", "paddingHorizontal-Select": "var(--xmlui-paddingHorizontal-Select, var(--xmlui-padding-Select))", "paddingVertical-Select": "var(--xmlui-paddingVertical-Select, var(--xmlui-padding-Select))", "paddingLeft-Select": "var(--xmlui-paddingLeft-Select, var(--xmlui-paddingHorizontal-Select, var(--xmlui-padding-Select)))", "paddingRight-Select": "var(--xmlui-paddingRight-Select, var(--xmlui-paddingHorizontal-Select, var(--xmlui-padding-Select)))", "paddingTop-Select": "var(--xmlui-paddingTop-Select, var(--xmlui-paddingVertical-Select, var(--xmlui-padding-Select)))", "paddingBottom-Select": "var(--xmlui-paddingBottom-Select, var(--xmlui-paddingVertical-Select, var(--xmlui-padding-Select)))", "padding-item-Select": "var(--xmlui-padding-item-Select)", "paddingHorizontal-item-Select": "var(--xmlui-paddingHorizontal-item-Select, var(--xmlui-padding-item-Select))", "paddingVertical-item-Select": "var(--xmlui-paddingVertical-item-Select, var(--xmlui-padding-item-Select))", "paddingLeft-item-Select": "var(--xmlui-paddingLeft-item-Select, var(--xmlui-paddingHorizontal-item-Select, var(--xmlui-padding-item-Select)))", "paddingRight-item-Select": "var(--xmlui-paddingRight-item-Select, var(--xmlui-paddingHorizontal-item-Select, var(--xmlui-padding-item-Select)))", "paddingTop-item-Select": "var(--xmlui-paddingTop-item-Select, var(--xmlui-paddingVertical-item-Select, var(--xmlui-padding-item-Select)))", "paddingBottom-item-Select": "var(--xmlui-paddingBottom-item-Select, var(--xmlui-paddingVertical-item-Select, var(--xmlui-padding-item-Select)))", "Input:borderRadius-Select": "var(--xmlui-borderRadius-Select)", "Input:borderColor-Select": "var(--xmlui-borderColor-Select)", "Input:borderWidth-Select": "var(--xmlui-borderWidth-Select)", "Input:borderStyle-Select": "var(--xmlui-borderStyle-Select)", "Input:fontSize-Select": "var(--xmlui-fontSize-Select)", "Input:backgroundColor-Select": "var(--xmlui-backgroundColor-Select)", "Input:boxShadow-Select": "var(--xmlui-boxShadow-Select)", "Input:textColor-Select": "var(--xmlui-textColor-Select)", "Input:borderColor-Select--hover": "var(--xmlui-borderColor-Select--hover)", "Input:backgroundColor-Select--hover": "var(--xmlui-backgroundColor-Select--hover)", "Input:boxShadow-Select--hover": "var(--xmlui-boxShadow-Select--hover)", "Input:textColor-Select--hover": "var(--xmlui-textColor-Select--hover)", "Input:outlineWidth-Select--focus": "var(--xmlui-outlineWidth-Select--focus)", "Input:outlineColor-Select--focus": "var(--xmlui-outlineColor-Select--focus)", "Input:outlineStyle-Select--focus": "var(--xmlui-outlineStyle-Select--focus)", "Input:outlineOffset-Select--focus": "var(--xmlui-outlineOffset-Select--focus)", "Input:textColor-placeholder-Select": "var(--xmlui-textColor-placeholder-Select)", "Input:fontSize-placeholder-Select": "var(--xmlui-fontSize-placeholder-Select)", "Input:borderRadius-Select--error": "var(--xmlui-borderRadius-Select--error)", "Input:borderColor-Select--error": "var(--xmlui-borderColor-Select--error)", "Input:borderWidth-Select--error": "var(--xmlui-borderWidth-Select--error)", "Input:borderStyle-Select--error": "var(--xmlui-borderStyle-Select--error)", "Input:fontSize-Select--error": "var(--xmlui-fontSize-Select--error)", "Input:backgroundColor-Select--error": "var(--xmlui-backgroundColor-Select--error)", "Input:boxShadow-Select--error": "var(--xmlui-boxShadow-Select--error)", "Input:textColor-Select--error": "var(--xmlui-textColor-Select--error)", "Input:borderColor-Select--error--hover": "var(--xmlui-borderColor-Select--error--hover)", "Input:backgroundColor-Select--error--hover": "var(--xmlui-backgroundColor-Select--error--hover)", "Input:boxShadow-Select--error--hover": "var(--xmlui-boxShadow-Select--error--hover)", "Input:textColor-Select--error--hover": "var(--xmlui-textColor-Select--error--hover)", "Input:outlineWidth-Select--error--focus": "var(--xmlui-outlineWidth-Select--error--focus)", "Input:outlineColor-Select--error--focus": "var(--xmlui-outlineColor-Select--error--focus)", "Input:outlineStyle-Select--error--focus": "var(--xmlui-outlineStyle-Select--error--focus)", "Input:outlineOffset-Select--error--focus": "var(--xmlui-outlineOffset-Select--error--focus)", "Input:textColor-placeholder-Select--error": "var(--xmlui-textColor-placeholder-Select--error)", "Input:fontSize-placeholder-Select--error": "var(--xmlui-fontSize-placeholder-Select--error)", "Input:borderRadius-Select--warning": "var(--xmlui-borderRadius-Select--warning)", "Input:borderColor-Select--warning": "var(--xmlui-borderColor-Select--warning)", "Input:borderWidth-Select--warning": "var(--xmlui-borderWidth-Select--warning)", "Input:borderStyle-Select--warning": "var(--xmlui-borderStyle-Select--warning)", "Input:fontSize-Select--warning": "var(--xmlui-fontSize-Select--warning)", "Input:backgroundColor-Select--warning": "var(--xmlui-backgroundColor-Select--warning)", "Input:boxShadow-Select--warning": "var(--xmlui-boxShadow-Select--warning)", "Input:textColor-Select--warning": "var(--xmlui-textColor-Select--warning)", "Input:borderColor-Select--warning--hover": "var(--xmlui-borderColor-Select--warning--hover)", "Input:backgroundColor-Select--warning--hover": "var(--xmlui-backgroundColor-Select--warning--hover)", "Input:boxShadow-Select--warning--hover": "var(--xmlui-boxShadow-Select--warning--hover)", "Input:textColor-Select--warning--hover": "var(--xmlui-textColor-Select--warning--hover)", "Input:outlineWidth-Select--warning--focus": "var(--xmlui-outlineWidth-Select--warning--focus)", "Input:outlineColor-Select--warning--focus": "var(--xmlui-outlineColor-Select--warning--focus)", "Input:outlineStyle-Select--warning--focus": "var(--xmlui-outlineStyle-Select--warning--focus)", "Input:outlineOffset-Select--warning--focus": "var(--xmlui-outlineOffset-Select--warning--focus)", "Input:textColor-placeholder-Select--warning": "var(--xmlui-textColor-placeholder-Select--warning)", "Input:fontSize-placeholder-Select--warning": "var(--xmlui-fontSize-placeholder-Select--warning)", "Input:borderRadius-Select--success": "var(--xmlui-borderRadius-Select--success)", "Input:borderColor-Select--success": "var(--xmlui-borderColor-Select--success)", "Input:borderWidth-Select--success": "var(--xmlui-borderWidth-Select--success)", "Input:borderStyle-Select--success": "var(--xmlui-borderStyle-Select--success)", "Input:fontSize-Select--success": "var(--xmlui-fontSize-Select--success)", "Input:backgroundColor-Select--success": "var(--xmlui-backgroundColor-Select--success)", "Input:boxShadow-Select--success": "var(--xmlui-boxShadow-Select--success)", "Input:textColor-Select--success": "var(--xmlui-textColor-Select--success)", "Input:borderColor-Select--success--hover": "var(--xmlui-borderColor-Select--success--hover)", "Input:backgroundColor-Select--success--hover": "var(--xmlui-backgroundColor-Select--success--hover)", "Input:boxShadow-Select--success--hover": "var(--xmlui-boxShadow-Select--success--hover)", "Input:textColor-Select--success--hover": "var(--xmlui-textColor-Select--success--hover)", "Input:outlineWidth-Select--success--focus": "var(--xmlui-outlineWidth-Select--success--focus)", "Input:outlineColor-Select--success--focus": "var(--xmlui-outlineColor-Select--success--focus)", "Input:outlineStyle-Select--success--focus": "var(--xmlui-outlineStyle-Select--success--focus)", "Input:outlineOffset-Select--success--focus": "var(--xmlui-outlineOffset-Select--success--focus)", "Input:textColor-placeholder-Select--success": "var(--xmlui-textColor-placeholder-Select--success)", "Input:fontSize-placeholder-Select--success": "var(--xmlui-fontSize-placeholder-Select--success)", "Input:backgroundColor-Select--disabled": "var(--xmlui-backgroundColor-Select--disabled)", "Input:textColor-Select--disabled": "var(--xmlui-textColor-Select--disabled)", "Input:borderColor-Select--disabled": "var(--xmlui-borderColor-Select--disabled)", "paddingVertical-Select-badge": "var(--xmlui-paddingVertical-Select-badge)", "paddingHorizontal-Select-badge": "var(--xmlui-paddingHorizontal-Select-badge)", "borderRadius-Select-badge": "var(--xmlui-borderRadius-Select-badge)", "Input:fontSize-Select-badge": "var(--xmlui-fontSize-Select-badge)", "Input:backgroundColor-Select-badge": "var(--xmlui-backgroundColor-Select-badge)", "Input:textColor-Select-badge": "var(--xmlui-textColor-Select-badge)", "Input:backgroundColor-Select-badge--hover": "var(--xmlui-backgroundColor-Select-badge--hover)", "Input:textColor-Select-badge--hover": "var(--xmlui-textColor-Select-badge--hover)", "Input:backgroundColor-Select-badge--active": "var(--xmlui-backgroundColor-Select-badge--active)", "Input:textColor-Select-badge--active": "var(--xmlui-textColor-Select-badge--active)", "Input:backgroundColor-menu-Select": "var(--xmlui-backgroundColor-menu-Select)", "Input:borderRadius-menu-Select": "var(--xmlui-borderRadius-menu-Select)", "Input:boxShadow-menu-Select": "var(--xmlui-boxShadow-menu-Select)", "Input:borderWidth-menu-Select": "var(--xmlui-borderWidth-menu-Select)", "Input:borderColor-menu-Select": "var(--xmlui-borderColor-menu-Select)", "backgroundColor-item-Select": "var(--xmlui-backgroundColor-item-Select)", "backgroundColor-item-Select--active": "var(--xmlui-backgroundColor-item-Select--active)", "backgroundColor-item-Select--hover": "var(--xmlui-backgroundColor-item-Select--hover)", "textColor-item-Select--disabled": "var(--xmlui-textColor-item-Select--disabled)", "opacity-text-item-Select--disabled": "var(--xmlui-opacity-text-item-Select--disabled)", "textColor-indicator-Select": "var(--xmlui-textColor-indicator-Select)", "minHeight-Select": "var(--xmlui-minHeight-Select)", "minWidth-Select": "var(--xmlui-minWidth-Select)", "minHeight-item-Select": "var(--xmlui-minHeight-item-Select)"}'`;
20045
- const selectTrigger = "_selectTrigger_1w1m2_17";
20046
- const error$b = "_error_1w1m2_57";
20047
- const warning$b = "_warning_1w1m2_83";
20048
- const valid$b = "_valid_1w1m2_109";
20049
- const disabled$6 = "_disabled_1w1m2_135";
20050
- const placeholder$2 = "_placeholder_1w1m2_147";
20051
- const actions$1 = "_actions_1w1m2_164";
20052
- const action$1 = "_action_1w1m2_164";
20053
- const badgeListContainer = "_badgeListContainer_1w1m2_179";
20054
- const badgeList$1 = "_badgeList_1w1m2_179";
20055
- const inputWrapper$1 = "_inputWrapper_1w1m2_192";
20056
- const badge$2 = "_badge_1w1m2_179";
20057
- const selectContent = "_selectContent_1w1m2_227";
20058
- const command$1 = "_command_1w1m2_246";
20059
- const commandInputContainer = "_commandInputContainer_1w1m2_253";
20060
- const commandInput$1 = "_commandInput_1w1m2_253";
20061
- const commandList$1 = "_commandList_1w1m2_272";
20062
- const groupHeader = "_groupHeader_1w1m2_280";
20063
- const multiSelectOption = "_multiSelectOption_1w1m2_292";
20064
- const multiSelectOptionContent = "_multiSelectOptionContent_1w1m2_307";
20065
- const highlighted$1 = "_highlighted_1w1m2_316";
20066
- const disabledOption$1 = "_disabledOption_1w1m2_322";
20067
- const selectValue = "_selectValue_1w1m2_337";
20068
- const selectDropdownContent = "_selectDropdownContent_1w1m2_347";
20069
- const fadeIn = "_fadeIn_1w1m2_1";
20070
- const zoomIn = "_zoomIn_1w1m2_1";
20071
- const fadeOut = "_fadeOut_1w1m2_1";
20072
- const zoomOut = "_zoomOut_1w1m2_1";
20073
- const slideInFromTop = "_slideInFromTop_1w1m2_1";
20074
- const slideInFromRight = "_slideInFromRight_1w1m2_1";
20075
- const slideInFromLeft = "_slideInFromLeft_1w1m2_1";
20076
- const slideInFromBottom = "_slideInFromBottom_1w1m2_1";
20077
- const selectViewport = "_selectViewport_1w1m2_379";
20078
- const selectScrollUpButton = "_selectScrollUpButton_1w1m2_383";
20079
- const selectScrollDownButton = "_selectScrollDownButton_1w1m2_391";
20080
- const selectEmpty = "_selectEmpty_1w1m2_399";
20081
- const selectOption = "_selectOption_1w1m2_412";
20082
- const selectOptionContent = "_selectOptionContent_1w1m2_436";
20083
- const selectOptionIndicator = "_selectOptionIndicator_1w1m2_450";
20084
- const loading = "_loading_1w1m2_460";
20085
- const srOnly$1 = "_srOnly_1w1m2_463";
20110
+ const selectTrigger = "_selectTrigger_sfiq6_17";
20111
+ const error$b = "_error_sfiq6_57";
20112
+ const warning$b = "_warning_sfiq6_83";
20113
+ const valid$b = "_valid_sfiq6_109";
20114
+ const disabled$6 = "_disabled_sfiq6_135";
20115
+ const placeholder$2 = "_placeholder_sfiq6_147";
20116
+ const actions$1 = "_actions_sfiq6_164";
20117
+ const action$1 = "_action_sfiq6_164";
20118
+ const badgeListContainer = "_badgeListContainer_sfiq6_179";
20119
+ const badgeList$1 = "_badgeList_sfiq6_179";
20120
+ const inputWrapper$1 = "_inputWrapper_sfiq6_192";
20121
+ const badge$2 = "_badge_sfiq6_179";
20122
+ const selectContent = "_selectContent_sfiq6_227";
20123
+ const command$1 = "_command_sfiq6_246";
20124
+ const commandInputContainer = "_commandInputContainer_sfiq6_253";
20125
+ const commandInput$1 = "_commandInput_sfiq6_253";
20126
+ const commandList$1 = "_commandList_sfiq6_272";
20127
+ const groupHeader = "_groupHeader_sfiq6_280";
20128
+ const multiSelectOption = "_multiSelectOption_sfiq6_292";
20129
+ const multiSelectOptionContent = "_multiSelectOptionContent_sfiq6_307";
20130
+ const highlighted$1 = "_highlighted_sfiq6_316";
20131
+ const disabledOption$1 = "_disabledOption_sfiq6_322";
20132
+ const selectValue = "_selectValue_sfiq6_337";
20133
+ const selectDropdownContent = "_selectDropdownContent_sfiq6_347";
20134
+ const fadeIn = "_fadeIn_sfiq6_1";
20135
+ const zoomIn = "_zoomIn_sfiq6_1";
20136
+ const fadeOut = "_fadeOut_sfiq6_1";
20137
+ const zoomOut = "_zoomOut_sfiq6_1";
20138
+ const slideInFromTop = "_slideInFromTop_sfiq6_1";
20139
+ const slideInFromRight = "_slideInFromRight_sfiq6_1";
20140
+ const slideInFromLeft = "_slideInFromLeft_sfiq6_1";
20141
+ const slideInFromBottom = "_slideInFromBottom_sfiq6_1";
20142
+ const selectViewport = "_selectViewport_sfiq6_381";
20143
+ const selectScrollUpButton = "_selectScrollUpButton_sfiq6_385";
20144
+ const selectScrollDownButton = "_selectScrollDownButton_sfiq6_394";
20145
+ const selectEmpty = "_selectEmpty_sfiq6_403";
20146
+ const selectOption = "_selectOption_sfiq6_416";
20147
+ const selectOptionContent = "_selectOptionContent_sfiq6_440";
20148
+ const selectOptionIndicator = "_selectOptionIndicator_sfiq6_454";
20149
+ const loading = "_loading_sfiq6_464";
20150
+ const srOnly$1 = "_srOnly_sfiq6_467";
20086
20151
  const styles$P = {
20087
20152
  themeVars: themeVars$z,
20088
20153
  selectTrigger,
@@ -20252,6 +20317,7 @@ const SimpleSelect = forwardRef(
20252
20317
  valueRenderer,
20253
20318
  options: options2,
20254
20319
  children,
20320
+ scrollIndicators = true,
20255
20321
  validationIcon,
20256
20322
  validationStatus,
20257
20323
  invalidMessages,
@@ -20262,8 +20328,60 @@ const SimpleSelect = forwardRef(
20262
20328
  } = props;
20263
20329
  const composedRef = forwardRef ? composeRefs(triggerRef, forwardedRef) : triggerRef;
20264
20330
  const [open, setOpen] = useState(false);
20331
+ const contentRef = useRef(null);
20332
+ useEffect(() => {
20333
+ if (!open || modal) return;
20334
+ const body2 = document.body;
20335
+ const LOCK_ATTR = "data-scroll-locked";
20336
+ let didDecrement = false;
20337
+ const decrement = () => {
20338
+ const count = parseInt(body2.getAttribute(LOCK_ATTR) || "0", 10);
20339
+ if (count > 0 && !didDecrement) {
20340
+ didDecrement = true;
20341
+ if (count <= 1) {
20342
+ body2.removeAttribute(LOCK_ATTR);
20343
+ } else {
20344
+ body2.setAttribute(LOCK_ATTR, String(count - 1));
20345
+ }
20346
+ }
20347
+ };
20348
+ const raf = requestAnimationFrame(decrement);
20349
+ const handler = (e) => {
20350
+ const viewport = body2.querySelector("[data-radix-select-viewport]");
20351
+ if (!viewport || !viewport.contains(e.target)) {
20352
+ e.stopPropagation();
20353
+ }
20354
+ };
20355
+ document.addEventListener("wheel", handler, true);
20356
+ document.addEventListener("touchmove", handler, true);
20357
+ return () => {
20358
+ cancelAnimationFrame(raf);
20359
+ if (didDecrement) {
20360
+ const count = parseInt(body2.getAttribute(LOCK_ATTR) || "0", 10);
20361
+ body2.setAttribute(LOCK_ATTR, String(count + 1));
20362
+ }
20363
+ document.removeEventListener("wheel", handler, true);
20364
+ document.removeEventListener("touchmove", handler, true);
20365
+ };
20366
+ }, [open, modal]);
20367
+ useEffect(() => {
20368
+ if (!open) return;
20369
+ const el = contentRef.current;
20370
+ if (!el) return;
20371
+ let rafId = requestAnimationFrame(() => {
20372
+ rafId = requestAnimationFrame(() => {
20373
+ el.style.height = `${el.clientHeight}px`;
20374
+ });
20375
+ });
20376
+ return () => {
20377
+ cancelAnimationFrame(rafId);
20378
+ if (contentRef.current) {
20379
+ contentRef.current.style.height = "auto";
20380
+ }
20381
+ };
20382
+ }, [open]);
20265
20383
  const stringValue = useMemo(() => {
20266
- return value != void 0 ? String(value) : void 0;
20384
+ return value != null && value !== "" ? String(value) : "";
20267
20385
  }, [value]);
20268
20386
  const handleValueChange = useCallback(
20269
20387
  (val) => {
@@ -20365,13 +20483,14 @@ const SimpleSelect = forwardRef(
20365
20483
  /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsxs(
20366
20484
  Content,
20367
20485
  {
20486
+ ref: contentRef,
20368
20487
  collisionPadding: 0,
20369
20488
  className: classnames(contentClassName, styles$P.selectDropdownContent),
20370
20489
  position: "popper",
20371
20490
  align: "start",
20372
20491
  style: { height: "auto", maxHeight: height, minWidth: panelWidth },
20373
20492
  children: [
20374
- /* @__PURE__ */ jsx(ScrollUpButton, { className: styles$P.selectScrollUpButton, children: /* @__PURE__ */ jsx(ThemedIcon, { name: "chevronup" }) }),
20493
+ scrollIndicators && /* @__PURE__ */ jsx(ScrollUpButton, { className: styles$P.selectScrollUpButton, children: /* @__PURE__ */ jsx(ThemedIcon, { name: "chevronup" }) }),
20375
20494
  /* @__PURE__ */ jsx(Part, { partId: "listWrapper", children: /* @__PURE__ */ jsx(Viewport, { className: styles$P.selectViewport, children: groupBy2 && groupedOptions ? (
20376
20495
  // Render grouped options directly from options array
20377
20496
  /* @__PURE__ */ jsx(Fragment, { children: Object.keys(groupedOptions).length === 0 ? emptyListNode : Object.entries(groupedOptions).map(([groupName, groupOptions]) => /* @__PURE__ */ jsxs(Group, { children: [
@@ -20395,7 +20514,7 @@ const SimpleSelect = forwardRef(
20395
20514
  options2.length === 0 && emptyListNode
20396
20515
  ] })
20397
20516
  ) }) }),
20398
- /* @__PURE__ */ jsx(ScrollDownButton, { className: styles$P.selectScrollDownButton, children: /* @__PURE__ */ jsx(ThemedIcon, { name: "chevrondown" }) })
20517
+ scrollIndicators && /* @__PURE__ */ jsx(ScrollDownButton, { className: styles$P.selectScrollDownButton, children: /* @__PURE__ */ jsx(ThemedIcon, { name: "chevrondown" }) })
20399
20518
  ]
20400
20519
  }
20401
20520
  ) })
@@ -20522,6 +20641,7 @@ const Select = forwardRef(function Select2({
20522
20641
  contentClassName,
20523
20642
  classes,
20524
20643
  dropdownHeight,
20644
+ scrollIndicators,
20525
20645
  // Validation
20526
20646
  validationStatus = defaultProps$Q.validationStatus,
20527
20647
  // Event handlers
@@ -20639,6 +20759,32 @@ const Select = forwardRef(function Select2({
20639
20759
  updateState({ value: initialValue }, { initial: true });
20640
20760
  }
20641
20761
  }, [initialValue, updateState]);
20762
+ const isInsideForm = useIsInsideForm();
20763
+ const hasValidatedInitialValueRef = useRef(false);
20764
+ useEffect(() => {
20765
+ if (!isInsideForm) return;
20766
+ if (hasValidatedInitialValueRef.current) return;
20767
+ if (options2.length === 0) return;
20768
+ if (value === void 0 || value === null) return;
20769
+ hasValidatedInitialValueRef.current = true;
20770
+ if (!multiSelect) {
20771
+ if (value !== "") {
20772
+ const isValid2 = options2.some((opt) => `${opt.value}` === `${value}`);
20773
+ if (!isValid2) {
20774
+ updateState({ value: void 0 }, { formOnly: true });
20775
+ }
20776
+ }
20777
+ } else {
20778
+ if (Array.isArray(value) && value.length > 0) {
20779
+ const validValues = value.filter(
20780
+ (v) => options2.some((opt) => String(opt.value) === String(v))
20781
+ );
20782
+ if (validValues.length !== value.length) {
20783
+ updateState({ value: validValues });
20784
+ }
20785
+ }
20786
+ }
20787
+ }, [isInsideForm, options2, value, multiSelect, updateState]);
20642
20788
  useEffect(() => {
20643
20789
  const current = referenceElement;
20644
20790
  const currentObserver = observer.current;
@@ -20877,6 +21023,7 @@ const Select = forwardRef(function Select2({
20877
21023
  clearable,
20878
21024
  onClear: clearValue,
20879
21025
  valueRenderer,
21026
+ scrollIndicators,
20880
21027
  validationStatus,
20881
21028
  invalidMessages,
20882
21029
  finalValidationIconSuccess,
@@ -21179,6 +21326,11 @@ const SelectMd = createMetadata({
21179
21326
  dropdownHeight: d(
21180
21327
  "This property sets the height of the dropdown list. If not set, the height is determined automatically."
21181
21328
  ),
21329
+ scrollIndicators: {
21330
+ description: "This property controls whether scroll indicator arrows are displayed at the top and bottom of the dropdown list when the content overflows.",
21331
+ valueType: "boolean",
21332
+ defaultValue: true
21333
+ },
21182
21334
  emptyListTemplate: dComponent(
21183
21335
  `This optional property provides the ability to customize what is displayed when the list of options is empty.`
21184
21336
  ),
@@ -21326,6 +21478,7 @@ const selectComponentRenderer = wrapComponent(COMP$13, Select, SelectMd, {
21326
21478
  "validationStatus",
21327
21479
  "emptyListTemplate",
21328
21480
  "dropdownHeight",
21481
+ "scrollIndicators",
21329
21482
  "required",
21330
21483
  "modal",
21331
21484
  "groupBy",
@@ -21380,6 +21533,7 @@ const selectComponentRenderer = wrapComponent(COMP$13, Select, SelectMd, {
21380
21533
  registerComponentApi,
21381
21534
  emptyListTemplate: renderChild2(node.props.emptyListTemplate),
21382
21535
  dropdownHeight: extractValue(node.props.dropdownHeight),
21536
+ scrollIndicators: extractValue.asOptionalBoolean(node.props.scrollIndicators),
21383
21537
  required: extractValue.asOptionalBoolean(node.props.required),
21384
21538
  modal: extractValue.asOptionalBoolean(node.props.modal),
21385
21539
  groupBy: extractValue(node.props.groupBy),
@@ -22198,32 +22352,32 @@ function defaultIsRowUnselectable(_) {
22198
22352
  }
22199
22353
  const SELECT_COLUMN_WIDTH = 42;
22200
22354
  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
- };
22355
+ function SelectionToggle({
22356
+ checkboxTolerance,
22357
+ ariaLabel,
22358
+ value,
22359
+ indeterminate,
22360
+ onDidChange,
22361
+ alwaysVisibleClassName
22362
+ }) {
22363
+ const wrapperClassName = classnames(styles$R.checkBoxWrapper, alwaysVisibleClassName, {
22364
+ [styles$R.toleranceCompact]: checkboxTolerance === "compact",
22365
+ [styles$R.toleranceComfortable]: checkboxTolerance === "comfortable",
22366
+ [styles$R.toleranceSpacious]: checkboxTolerance === "spacious"
22367
+ });
22368
+ return /* @__PURE__ */ jsx("div", { className: wrapperClassName, children: /* @__PURE__ */ jsx(
22369
+ ThemedToggle,
22370
+ {
22371
+ ...{
22372
+ "aria-label": ariaLabel,
22373
+ className: styles$R.selectionToggle,
22374
+ value,
22375
+ indeterminate,
22376
+ onDidChange
22377
+ }
22378
+ }
22379
+ ) });
22380
+ }
22227
22381
  const getCommonPinningStyles = (column, isHeader = false) => {
22228
22382
  const isPinned = column.getIsPinned();
22229
22383
  return {
@@ -22235,7 +22389,7 @@ const getCommonPinningStyles = (column, isHeader = false) => {
22235
22389
  left: isPinned === "left" ? `${column.getStart("left")}px` : void 0,
22236
22390
  right: isPinned === "right" ? `${column.getAfter("right")}px` : void 0,
22237
22391
  position: isPinned ? "sticky" : "relative",
22238
- backgroundColor: isPinned ? isHeader ? "var(--xmlui-backgroundColor-heading-Table)" : "var(--xmlui-backgroundColor-pinnedCell-Table)" : void 0,
22392
+ 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
22393
  zIndex: isPinned ? 1 : void 0
22240
22394
  };
22241
22395
  };
@@ -22501,9 +22655,6 @@ const Table = memo(forwardRef(
22501
22655
  }
22502
22656
  }, [autoFocus]);
22503
22657
  const [visibleItems2, setVisibleItems] = useState(EMPTY_ARRAY);
22504
- const [hoveredRowId, setHoveredRowId] = useState(null);
22505
- const [headerCheckboxHovered, setHeaderCheckboxHovered] = useState(false);
22506
- const tolerancePixels = getCheckboxTolerancePixels(checkboxTolerance);
22507
22658
  const {
22508
22659
  toggleRow,
22509
22660
  checkAllRows,
@@ -22661,11 +22812,8 @@ const Table = memo(forwardRef(
22661
22812
  }
22662
22813
  });
22663
22814
  }, [getThemeVar, safeColumns]);
22664
- const columnsWithSelectColumn = useMemo(() => {
22665
- if (hideSelectionCheckboxes) {
22666
- return columnsWithCustomCell;
22667
- }
22668
- const selectColumn = {
22815
+ const selectColumn = useMemo(() => {
22816
+ return {
22669
22817
  id: "select",
22670
22818
  size: SELECT_COLUMN_WIDTH,
22671
22819
  enableResizing: false,
@@ -22674,68 +22822,59 @@ const Table = memo(forwardRef(
22674
22822
  pinTo: "left"
22675
22823
  },
22676
22824
  header: ({ table: table22 }) => enableMultiRowSelection && !hideSelectionCheckboxesHeader ? /* @__PURE__ */ jsx(
22677
- ThemedToggle,
22825
+ SelectionToggle,
22678
22826
  {
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
- }
22827
+ checkboxTolerance,
22828
+ ariaLabel: "Select all rows",
22829
+ alwaysVisibleClassName: alwaysShowSelectionCheckboxesHeader ? styles$R.showInHeader : void 0,
22830
+ value: table22.getIsAllRowsSelected(),
22831
+ indeterminate: table22.getIsSomeRowsSelected(),
22832
+ onDidChange: () => {
22833
+ const allSelected2 = table22.getRowModel().rows.every(
22834
+ (row2) => rowDisabledPredicate(row2.original) || rowUnselectablePredicate(row2.original) || row2.getIsSelected()
22835
+ );
22836
+ checkAllRows(!allSelected2);
22694
22837
  }
22695
22838
  }
22696
22839
  ) : null,
22697
22840
  cell: ({ row: row2 }) => {
22698
22841
  return /* @__PURE__ */ jsx(Fragment, { children: row2.getCanSelect() && /* @__PURE__ */ jsx(
22699
- ThemedToggle,
22842
+ SelectionToggle,
22700
22843
  {
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
- }
22844
+ checkboxTolerance,
22845
+ ariaLabel: `Select ${row2.original[idKey]}`,
22846
+ alwaysVisibleClassName: alwaysShowSelectionCheckboxes ? styles$R.showInRow : void 0,
22847
+ value: row2.getIsSelected(),
22848
+ indeterminate: row2.getIsSomeSelected(),
22849
+ onDidChange: () => {
22850
+ if (!enableMultiRowSelection && row2.getIsSelected()) {
22851
+ checkAllRows(false);
22852
+ } else {
22853
+ toggleRow(row2.original, { metaKey: true });
22716
22854
  }
22717
22855
  }
22718
22856
  }
22719
22857
  ) });
22720
22858
  }
22721
22859
  };
22722
- return rowsSelectable ? [selectColumn, ...columnsWithCustomCell] : columnsWithCustomCell;
22723
22860
  }, [
22724
22861
  idKey,
22725
- rowsSelectable,
22726
- columnsWithCustomCell,
22727
22862
  enableMultiRowSelection,
22728
22863
  alwaysShowSelectionCheckboxesHeader,
22729
22864
  checkAllRows,
22730
22865
  toggleRow,
22866
+ checkboxTolerance,
22731
22867
  rowDisabledPredicate,
22732
22868
  rowUnselectablePredicate,
22733
- hoveredRowId,
22734
- headerCheckboxHovered,
22735
- hideSelectionCheckboxes,
22736
22869
  hideSelectionCheckboxesHeader,
22737
22870
  alwaysShowSelectionCheckboxes
22738
22871
  ]);
22872
+ const columnsWithSelectColumn = useMemo(() => {
22873
+ if (hideSelectionCheckboxes) {
22874
+ return columnsWithCustomCell;
22875
+ }
22876
+ return rowsSelectable ? [selectColumn, ...columnsWithCustomCell] : columnsWithCustomCell;
22877
+ }, [rowsSelectable, columnsWithCustomCell, hideSelectionCheckboxes, selectColumn]);
22739
22878
  const [pagination2, setPagination] = useState({
22740
22879
  pageSize: effectiveIsPaginated ? effectivePageSize : Number.MAX_VALUE,
22741
22880
  pageIndex: currentPageIndex
@@ -22970,8 +23109,6 @@ const Table = memo(forwardRef(
22970
23109
  toggleRow,
22971
23110
  checkAllRows,
22972
23111
  enableMultiRowSelection,
22973
- tolerancePixels,
22974
- setHoveredRowId,
22975
23112
  lookupEventHandler,
22976
23113
  rowDoubleClick,
22977
23114
  striped,
@@ -23002,6 +23139,7 @@ const Table = memo(forwardRef(
23002
23139
  "td",
23003
23140
  {
23004
23141
  className: classnames(styles$R.cell, alignmentClass, columnClassName),
23142
+ "data-column-id": cell2.column.id,
23005
23143
  style: {
23006
23144
  width: size,
23007
23145
  "--column-width": `${size}px`,
@@ -23077,23 +23215,15 @@ const Table = memo(forwardRef(
23077
23215
  return;
23078
23216
  }
23079
23217
  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;
23218
+ const isSelectColumn = target2.closest("td")?.getAttribute("data-column-id") === "select";
23219
+ if (isSelectColumn) {
23088
23220
  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;
23221
+ if (!rs.enableMultiRowSelection && row2.getIsSelected()) {
23222
+ rs.checkAllRows(false);
23223
+ } else {
23224
+ rs.toggleRow(row2.original, { metaKey: true });
23096
23225
  }
23226
+ return;
23097
23227
  }
23098
23228
  rowStateRef.current.toggleRow(row2.original, event);
23099
23229
  },
@@ -23108,35 +23238,6 @@ const Table = memo(forwardRef(
23108
23238
  }
23109
23239
  }
23110
23240
  },
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
23241
  onContextMenu: rowStateRef.current.lookupEventHandler ? (event) => {
23141
23242
  event.preventDefault();
23142
23243
  const handler = rowStateRef.current.lookupEventHandler("contextMenu", {
@@ -23260,7 +23361,7 @@ const Table = memo(forwardRef(
23260
23361
  queueMicrotask(() => {
23261
23362
  recalculateStarSizes();
23262
23363
  });
23263
- }, [recalculateStarSizes, safeColumns]);
23364
+ }, [recalculateStarSizes, safeColumns, columnsWithCustomCell, rowsSelectable, hideSelectionCheckboxes]);
23264
23365
  useIsomorphicLayoutEffect(() => {
23265
23366
  registerComponentApi(selectionApi);
23266
23367
  }, [registerComponentApi, selectionApi]);
@@ -23332,81 +23433,20 @@ const Table = memo(forwardRef(
23332
23433
  }),
23333
23434
  onClick: (event) => {
23334
23435
  const target2 = event.target;
23436
+ if (target2.tagName.toLowerCase() === "input" && target2.getAttribute("type") === "checkbox") {
23437
+ return;
23438
+ }
23335
23439
  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"]'
23440
+ if (headerCell && rowsSelectable && enableMultiRowSelection && !hideSelectionCheckboxesHeader) {
23441
+ const headerId = headerCell.getAttribute("data-column-id");
23442
+ if (headerId === "select") {
23443
+ const allSelected2 = table2.getRowModel().rows.every(
23444
+ (row2) => rowDisabledPredicate(row2.original) || rowUnselectablePredicate(row2.original) || row2.getIsSelected()
23346
23445
  );
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
- }
23363
- }
23364
- }
23365
- },
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
- }
23446
+ checkAllRows(!allSelected2);
23401
23447
  }
23402
23448
  }
23403
23449
  },
23404
- onMouseLeave: (event) => {
23405
- if (headerCheckboxHovered) {
23406
- setHeaderCheckboxHovered(false);
23407
- event.currentTarget.style.cursor = "";
23408
- }
23409
- },
23410
23450
  children: headerGroup.headers.map((header2, headerIndex) => {
23411
23451
  const { width, ...style22 } = header2.column.columnDef.meta?.style || {};
23412
23452
  const size = header2.getSize();
@@ -23941,8 +23981,6 @@ const TableMd = createMetadata({
23941
23981
  [`textTransform-heading-${COMP$11}`]: "uppercase",
23942
23982
  [`fontSize-row-${COMP$11}`]: "$fontSize-sm",
23943
23983
  [`fontSize-checkbox-${COMP$11}`]: "$fontSize",
23944
- // [`backgroundColor-${COMP}`]: "transparent",
23945
- // [`backgroundColor-row-${COMP}`]: "inherit",
23946
23984
  [`backgroundColor-selected-${COMP$11}--hover`]: `$backgroundColor-row-${COMP$11}--hover`,
23947
23985
  [`backgroundColor-pagination-${COMP$11}`]: `$backgroundColor-${COMP$11}`,
23948
23986
  [`textColor-pagination-${COMP$11}`]: "$color-secondary",
@@ -23960,7 +23998,10 @@ const TableMd = createMetadata({
23960
23998
  [`userSelect-row-${COMP$11}`]: "none",
23961
23999
  [`backgroundColor-evenRow-${COMP$11}`]: `$backgroundColor-row-${COMP$11}`,
23962
24000
  [`backgroundColor-oddRow-${COMP$11}`]: `$color-surface-100`,
23963
- [`backgroundColor-pinnedCell-${COMP$11}`]: "$color-surface-50"
24001
+ [`backgroundColor-pinnedCell-${COMP$11}`]: "$color-surface-50",
24002
+ [`backgroundColor-pinnedCell-${COMP$11}--hover`]: `$backgroundColor-row-${COMP$11}--hover`,
24003
+ [`backgroundColor-selectionCell-${COMP$11}`]: "$backgroundColor-pinnedCell-Table",
24004
+ [`backgroundColor-selectionCell-${COMP$11}--hover`]: `$backgroundColor-row-${COMP$11}--hover`
23964
24005
  }
23965
24006
  });
23966
24007
  const TableWithColumns = memo(
@@ -25058,15 +25099,15 @@ const cardComponentRenderer = wrapComponent(
25058
25099
  }
25059
25100
  );
25060
25101
  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";
25102
+ const overlay$2 = "_overlay_nc6kd_14";
25103
+ const fullScreen = "_fullScreen_nc6kd_22";
25104
+ const content$2 = "_content_nc6kd_28";
25105
+ const overlayBg$1 = "_overlayBg_nc6kd_37";
25106
+ const nested = "_nested_nc6kd_43";
25107
+ const contentAnimation = "_contentAnimation_nc6kd_74";
25108
+ const dialogTitle = "_dialogTitle_nc6kd_80";
25109
+ const innerContent = "_innerContent_nc6kd_109";
25110
+ const closeButton$2 = "_closeButton_nc6kd_135";
25070
25111
  const styles$I = {
25071
25112
  themeVars: themeVars$s,
25072
25113
  overlay: overlay$2,
@@ -25419,7 +25460,9 @@ const modalViewComponentRenderer = wrapComponent(
25419
25460
  ...contextVars,
25420
25461
  $param: openParams?.[0],
25421
25462
  $params: openParams
25422
- }
25463
+ },
25464
+ vars: node._savedVarDefs,
25465
+ functions: node._savedFunctionDefs
25423
25466
  }
25424
25467
  );
25425
25468
  }
@@ -27021,6 +27064,7 @@ const queueComponentRenderer = wrapComponent(COMP$N, QueueWithContextVar, QueueM
27021
27064
  }
27022
27065
  )
27023
27066
  });
27067
+ const warnedLayoutForwardTypes = /* @__PURE__ */ new Set();
27024
27068
  const CompoundComponent = forwardRef(
27025
27069
  ({
27026
27070
  node,
@@ -27042,6 +27086,9 @@ const CompoundComponent = forwardRef(
27042
27086
  contextVars,
27043
27087
  // Extract contextVars to prevent it from being passed to DOM elements
27044
27088
  globalVars,
27089
+ // Strip XMLUI-internal props that must never be forwarded to inner DOM elements
27090
+ logInteraction: _logInteraction,
27091
+ classes: _classes,
27045
27092
  ...restProps
27046
27093
  }, forwardedRef) => {
27047
27094
  const resolvedPropsInner = useMemo(() => {
@@ -27133,8 +27180,20 @@ const CompoundComponent = forwardRef(
27133
27180
  children: node.children
27134
27181
  };
27135
27182
  }, [hasTemplateProps, node.children, node.props, renderChild2]);
27136
- const safeLayoutContext = layoutContext ? { ...layoutContext, wrapChild: void 0 } : layoutContext;
27183
+ const extraClassName = restProps.className;
27184
+ const safeLayoutContext = extraClassName ? { ...layoutContext ?? {}, wrapChild: void 0, extraClassName } : layoutContext ? { ...layoutContext, wrapChild: void 0 } : layoutContext;
27137
27185
  const ret = renderChild2(nodeWithPropsAndEvents, safeLayoutContext, memoedParentRenderContext);
27186
+ if (process.env.NODE_ENV !== "production" && extraClassName) {
27187
+ if (compound.type === "Fragment") {
27188
+ const usedLayoutProps = layoutOptionKeys.filter((key) => key in node.props);
27189
+ if (usedLayoutProps.length > 0 && !warnedLayoutForwardTypes.has(node.type)) {
27190
+ warnedLayoutForwardTypes.add(node.type);
27191
+ console.warn(
27192
+ `[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.`
27193
+ );
27194
+ }
27195
+ }
27196
+ }
27138
27197
  if (forwardedRef && ret && isValidElement(ret)) {
27139
27198
  return React__default.cloneElement(ret, {
27140
27199
  ref: composeRefs(forwardedRef, ret.ref),
@@ -27257,7 +27316,8 @@ function useListData({
27257
27316
  if (groupBy$1 === void 0) {
27258
27317
  return EMPTY_OBJECT;
27259
27318
  }
27260
- return groupBy(cappedItems, (item2) => item2[groupBy$1]);
27319
+ const iteratee = typeof groupBy$1 === "function" ? groupBy$1 : (item2) => item2[groupBy$1];
27320
+ return groupBy(cappedItems, iteratee);
27261
27321
  }, [cappedItems, groupBy$1]);
27262
27322
  const sections = useMemo(() => {
27263
27323
  if (groupBy$1 === void 0) {
@@ -28054,7 +28114,7 @@ const ListMd = createMetadata({
28054
28114
  defaultValue: false
28055
28115
  },
28056
28116
  groupBy: d(
28057
- "This property sets which data item property is used to group the list items. If not set, no grouping is done."
28117
+ "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
28118
  ),
28059
28119
  orderBy: d(
28060
28120
  `This optioanl property enables the ordering of list items by specifying an attribute in the data.`
@@ -28113,6 +28173,9 @@ const ListMd = createMetadata({
28113
28173
  syncWithVar: d(
28114
28174
  `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
28175
  ),
28176
+ refreshOn: d(
28177
+ `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).`
28178
+ ),
28116
28179
  rowUnselectablePredicate: {
28117
28180
  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
28181
  },
@@ -28279,6 +28342,29 @@ const ListMd = createMetadata({
28279
28342
  }
28280
28343
  });
28281
28344
  const VALID_IDENTIFIER_RE$1 = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
28345
+ const ListMemoizedItem = memo(
28346
+ ({ node, renderChild: renderChild2, layoutContext, contextVars }) => /* @__PURE__ */ jsx(
28347
+ MemoizedItem,
28348
+ {
28349
+ node,
28350
+ renderChild: renderChild2,
28351
+ layoutContext,
28352
+ contextVars
28353
+ }
28354
+ ),
28355
+ (prev, next) => {
28356
+ if (prev.renderVersion !== next.renderVersion) return false;
28357
+ if (prev.node !== next.node) return false;
28358
+ const prevVars = prev.contextVars ?? EMPTY_OBJECT;
28359
+ const nextVars = next.contextVars ?? EMPTY_OBJECT;
28360
+ const keys = Object.keys(nextVars);
28361
+ if (keys.length !== Object.keys(prevVars).length) return false;
28362
+ for (const k of keys) {
28363
+ if (prevVars[k] !== nextVars[k]) return false;
28364
+ }
28365
+ return true;
28366
+ }
28367
+ );
28282
28368
  const ListWithSelection = memo(function ListWithSelection2({
28283
28369
  extractValue,
28284
28370
  node,
@@ -28294,10 +28380,30 @@ const ListWithSelection = memo(function ListWithSelection2({
28294
28380
  const itemTemplate = node.props.itemTemplate;
28295
28381
  const hideEmptyGroups = extractValue.asOptionalBoolean(node.props.hideEmptyGroups, true);
28296
28382
  const selectionContext = useSelectionContext();
28383
+ const renderChildRef = useRef(renderChild2);
28384
+ renderChildRef.current = renderChild2;
28385
+ const layoutContextRef = useRef(layoutContext);
28386
+ layoutContextRef.current = layoutContext;
28387
+ const stableRenderChildFnRef = useRef(
28388
+ (node2, ctx) => renderChildRef.current(node2, ctx)
28389
+ );
28390
+ const refreshOn = extractValue(node.props.refreshOn);
28391
+ const prevRefreshOnRef = useRef(refreshOn);
28392
+ const renderVersionRef = useRef(0);
28393
+ const shouldForceRefresh = node.props.refreshOn === void 0 || prevRefreshOnRef.current !== refreshOn;
28394
+ if (shouldForceRefresh) {
28395
+ prevRefreshOnRef.current = refreshOn;
28396
+ renderVersionRef.current++;
28397
+ }
28297
28398
  const syncVarName = extractValue.asOptionalString(node.props.syncWithVar);
28298
28399
  const lookupActionRef = useRef(lookupAction);
28299
28400
  lookupActionRef.current = lookupAction;
28300
28401
  const syncAdapterHolderRef = useRef(null);
28402
+ const pendingOwnWriteRef = useRef(false);
28403
+ const pendingOwnWriteVersionRef = useRef(0);
28404
+ const ownWriteCountRef = useRef(0);
28405
+ const pendingOwnWrite = pendingOwnWriteRef.current;
28406
+ pendingOwnWriteRef.current = false;
28301
28407
  let syncAdapter;
28302
28408
  if (syncVarName !== void 0) {
28303
28409
  if (!VALID_IDENTIFIER_RE$1.test(syncVarName)) {
@@ -28310,14 +28416,31 @@ const ListWithSelection = memo(function ListWithSelection2({
28310
28416
  syncAdapterHolderRef.current = {
28311
28417
  value: currentSyncVarValue,
28312
28418
  update: ({ selectedIds }) => {
28313
- const valueJson = JSON.stringify(selectedIds);
28314
- const expr = `{${syncVarName} = {selectedIds: ${valueJson}}}`;
28315
- const handler = lookupActionRef.current?.(expr, { ephemeral: true });
28316
- handler?.();
28419
+ pendingOwnWriteRef.current = true;
28420
+ const thisVersion = ++ownWriteCountRef.current;
28421
+ pendingOwnWriteVersionRef.current = thisVersion;
28422
+ const windowKey = `__listSync_${syncVarName}`;
28423
+ window[windowKey] = { selectedIds, __v: thisVersion };
28424
+ const handler = lookupActionRef.current?.(
28425
+ `{${syncVarName} = window.${windowKey}}`,
28426
+ { ephemeral: true }
28427
+ );
28428
+ startTransition(() => {
28429
+ handler?.();
28430
+ });
28317
28431
  }
28318
28432
  };
28319
- } else {
28320
- syncAdapterHolderRef.current.value = currentSyncVarValue;
28433
+ } else if (currentSyncVarValue !== syncAdapterHolderRef.current.value) {
28434
+ const isOwnWrite = pendingOwnWrite || pendingOwnWriteVersionRef.current > 0 && currentSyncVarValue?.__v === pendingOwnWriteVersionRef.current;
28435
+ if (isOwnWrite) {
28436
+ syncAdapterHolderRef.current.value = currentSyncVarValue;
28437
+ } else {
28438
+ pendingOwnWriteVersionRef.current = 0;
28439
+ syncAdapterHolderRef.current = {
28440
+ value: currentSyncVarValue,
28441
+ update: syncAdapterHolderRef.current.update
28442
+ };
28443
+ }
28321
28444
  }
28322
28445
  } else {
28323
28446
  syncAdapterHolderRef.current = null;
@@ -28327,6 +28450,58 @@ const ListWithSelection = memo(function ListWithSelection2({
28327
28450
  syncAdapterHolderRef.current = null;
28328
28451
  }
28329
28452
  syncAdapter = syncAdapterHolderRef.current;
28453
+ const stableItemRenderer = useMemo(
28454
+ () => itemTemplate ? (item2, key, rowIndex, count, isSelected) => /* @__PURE__ */ jsx(
28455
+ ListMemoizedItem,
28456
+ {
28457
+ node: itemTemplate,
28458
+ renderChild: stableRenderChildFnRef.current,
28459
+ layoutContext: layoutContextRef.current,
28460
+ renderVersion: renderVersionRef.current,
28461
+ contextVars: {
28462
+ $item: item2,
28463
+ $itemIndex: rowIndex,
28464
+ $isFirst: rowIndex === 0,
28465
+ $isLast: rowIndex === count - 1,
28466
+ $isSelected: isSelected
28467
+ }
28468
+ },
28469
+ key
28470
+ ) : void 0,
28471
+ // idKey is included because it is captured by itemTemplate renders via $item[idKey].
28472
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28473
+ [itemTemplate, idKey]
28474
+ );
28475
+ const stableSectionRenderer = useMemo(
28476
+ () => node.props.groupBy ? (item2, key) => (item2.items?.length ?? 0) > 0 || !hideEmptyGroups ? /* @__PURE__ */ jsx(
28477
+ MemoizedSection,
28478
+ {
28479
+ node: node.props.groupHeaderTemplate ?? { type: "Fragment" },
28480
+ renderChild: stableRenderChildFnRef.current,
28481
+ item: item2
28482
+ },
28483
+ key
28484
+ ) : null : void 0,
28485
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28486
+ [node.props.groupBy, node.props.groupHeaderTemplate, hideEmptyGroups]
28487
+ );
28488
+ const stableSectionFooterRenderer = useMemo(
28489
+ () => node.props.groupFooterTemplate ? (item2, key) => (item2.items?.length ?? 0) > 0 || !hideEmptyGroups ? /* @__PURE__ */ jsx(
28490
+ MemoizedItem,
28491
+ {
28492
+ node: node.props.groupFooterTemplate ?? { type: "Fragment" },
28493
+ renderChild: stableRenderChildFnRef.current,
28494
+ contextVars: {
28495
+ $group: item2
28496
+ }
28497
+ },
28498
+ key
28499
+ ) : null : void 0,
28500
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28501
+ [node.props.groupFooterTemplate, hideEmptyGroups]
28502
+ );
28503
+ const groupByExtracted = extractValue(node.props.groupBy);
28504
+ const groupByResolved = isArrowExpressionObject$1(groupByExtracted) ? lookupSyncCallback(node.props.groupBy) : groupByExtracted;
28330
28505
  const listContent = /* @__PURE__ */ jsx(
28331
28506
  ListNative,
28332
28507
  {
@@ -28335,7 +28510,7 @@ const ListWithSelection = memo(function ListWithSelection2({
28335
28510
  loading: extractValue.asOptionalBoolean(node.props.loading),
28336
28511
  items: extractValue(node.props.items) || extractValue(node.props.data),
28337
28512
  limit: extractValue(node.props.limit),
28338
- groupBy: extractValue(node.props.groupBy),
28513
+ groupBy: groupByResolved,
28339
28514
  orderBy: extractValue(node.props.orderBy),
28340
28515
  availableGroups: extractValue(node.props.availableGroups),
28341
28516
  scrollAnchor: node.props.scrollAnchor,
@@ -28368,44 +28543,9 @@ const ListWithSelection = memo(function ListWithSelection2({
28368
28543
  onDeleteAction: lookupEventHandler("deleteAction"),
28369
28544
  rowDoubleClick: lookupEventHandler("rowDoubleClick"),
28370
28545
  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
28546
+ itemRenderer: stableItemRenderer,
28547
+ sectionRenderer: stableSectionRenderer,
28548
+ sectionFooterRenderer: stableSectionFooterRenderer
28409
28549
  }
28410
28550
  );
28411
28551
  if (selectionContext === null) {
@@ -29008,6 +29148,8 @@ const TileGridWithSync = memo(
29008
29148
  const prevRefreshOnRef = useRef(refreshOn);
29009
29149
  const renderVersionRef = useRef(0);
29010
29150
  const pendingOwnWriteRef = useRef(false);
29151
+ const pendingOwnWriteVersionRef = useRef(0);
29152
+ const ownWriteCountRef = useRef(0);
29011
29153
  const pendingOwnWrite = pendingOwnWriteRef.current;
29012
29154
  pendingOwnWriteRef.current = false;
29013
29155
  const shouldForceRefresh = node.props.refreshOn === void 0 || prevRefreshOnRef.current !== refreshOn;
@@ -29028,20 +29170,26 @@ const TileGridWithSync = memo(
29028
29170
  value: currentValue,
29029
29171
  update: ({ selectedIds }) => {
29030
29172
  const windowKey = `__tgSync_${syncVarName}`;
29031
- window[windowKey] = selectedIds;
29173
+ pendingOwnWriteRef.current = true;
29174
+ const thisVersion = ++ownWriteCountRef.current;
29175
+ pendingOwnWriteVersionRef.current = thisVersion;
29176
+ window[windowKey] = { selectedIds, __v: thisVersion };
29032
29177
  const handler = lookupActionRef.current?.(
29033
- `{${syncVarName} = {selectedIds: window.${windowKey}}}`,
29178
+ `{${syncVarName} = {selectedIds: window.${windowKey}.selectedIds, __v: window.${windowKey}.__v}}`,
29034
29179
  { ephemeral: true }
29035
29180
  );
29036
- pendingOwnWriteRef.current = true;
29037
29181
  startTransition(() => {
29038
29182
  handler?.();
29039
29183
  });
29040
29184
  }
29041
29185
  };
29042
29186
  } else if (currentValue !== syncAdapterHolderRef.current.value) {
29043
- if (pendingOwnWrite) {
29187
+ const isOwnWrite = pendingOwnWrite || pendingOwnWriteVersionRef.current > 0 && currentValue?.__v === pendingOwnWriteVersionRef.current;
29188
+ if (isOwnWrite) {
29044
29189
  syncAdapterHolderRef.current.value = currentValue;
29190
+ if (currentValue?.__v === pendingOwnWriteVersionRef.current) {
29191
+ pendingOwnWriteVersionRef.current = 0;
29192
+ }
29045
29193
  } else {
29046
29194
  syncAdapterHolderRef.current = {
29047
29195
  value: currentValue,
@@ -31477,53 +31625,53 @@ const numberBoxComponentRenderer = wrapComponent(COMP$H, ThemedNumberBox, Number
31477
31625
  deriveAriaLabel: (props) => props.label || props.placeholder
31478
31626
  });
31479
31627
  const themeVars$h = `'{"padding-DatePicker": "var(--xmlui-padding-DatePicker)", "paddingHorizontal-DatePicker": "var(--xmlui-paddingHorizontal-DatePicker, var(--xmlui-padding-DatePicker))", "paddingVertical-DatePicker": "var(--xmlui-paddingVertical-DatePicker, var(--xmlui-padding-DatePicker))", "paddingLeft-DatePicker": "var(--xmlui-paddingLeft-DatePicker, var(--xmlui-paddingHorizontal-DatePicker, var(--xmlui-padding-DatePicker)))", "paddingRight-DatePicker": "var(--xmlui-paddingRight-DatePicker, var(--xmlui-paddingHorizontal-DatePicker, var(--xmlui-padding-DatePicker)))", "paddingTop-DatePicker": "var(--xmlui-paddingTop-DatePicker, var(--xmlui-paddingVertical-DatePicker, var(--xmlui-padding-DatePicker)))", "paddingBottom-DatePicker": "var(--xmlui-paddingBottom-DatePicker, var(--xmlui-paddingVertical-DatePicker, var(--xmlui-padding-DatePicker)))", "Input:borderRadius-DatePicker": "var(--xmlui-borderRadius-DatePicker)", "Input:borderColor-DatePicker": "var(--xmlui-borderColor-DatePicker)", "Input:borderWidth-DatePicker": "var(--xmlui-borderWidth-DatePicker)", "Input:borderStyle-DatePicker": "var(--xmlui-borderStyle-DatePicker)", "Input:backgroundColor-DatePicker": "var(--xmlui-backgroundColor-DatePicker)", "Input:boxShadow-DatePicker": "var(--xmlui-boxShadow-DatePicker)", "Input:textColor-DatePicker": "var(--xmlui-textColor-DatePicker)", "Input:borderColor-DatePicker--hover": "var(--xmlui-borderColor-DatePicker--hover)", "Input:backgroundColor-DatePicker--hover": "var(--xmlui-backgroundColor-DatePicker--hover)", "Input:boxShadow-DatePicker--hover": "var(--xmlui-boxShadow-DatePicker--hover)", "Input:textColor-DatePicker--hover": "var(--xmlui-textColor-DatePicker--hover)", "Input:outlineWidth-DatePicker--focus": "var(--xmlui-outlineWidth-DatePicker--focus)", "Input:outlineColor-DatePicker--focus": "var(--xmlui-outlineColor-DatePicker--focus)", "Input:outlineStyle-DatePicker--focus": "var(--xmlui-outlineStyle-DatePicker--focus)", "Input:outlineOffset-DatePicker--focus": "var(--xmlui-outlineOffset-DatePicker--focus)", "Input:textColor-placeholder-DatePicker": "var(--xmlui-textColor-placeholder-DatePicker)", "Input:fontSize-placeholder-DatePicker": "var(--xmlui-fontSize-placeholder-DatePicker)", "Input:color-adornment-DatePicker": "var(--xmlui-color-adornment-DatePicker)", "Input:borderRadius-DatePicker--error": "var(--xmlui-borderRadius-DatePicker--error)", "Input:borderColor-DatePicker--error": "var(--xmlui-borderColor-DatePicker--error)", "Input:borderWidth-DatePicker--error": "var(--xmlui-borderWidth-DatePicker--error)", "Input:borderStyle-DatePicker--error": "var(--xmlui-borderStyle-DatePicker--error)", "Input:backgroundColor-DatePicker--error": "var(--xmlui-backgroundColor-DatePicker--error)", "Input:boxShadow-DatePicker--error": "var(--xmlui-boxShadow-DatePicker--error)", "Input:textColor-DatePicker--error": "var(--xmlui-textColor-DatePicker--error)", "Input:borderColor-DatePicker--error--hover": "var(--xmlui-borderColor-DatePicker--error--hover)", "Input:backgroundColor-DatePicker--error--hover": "var(--xmlui-backgroundColor-DatePicker--error--hover)", "Input:boxShadow-DatePicker--error--hover": "var(--xmlui-boxShadow-DatePicker--error--hover)", "Input:textColor-DatePicker--error--hover": "var(--xmlui-textColor-DatePicker--error--hover)", "Input:outlineWidth-DatePicker--error--focus": "var(--xmlui-outlineWidth-DatePicker--error--focus)", "Input:outlineColor-DatePicker--error--focus": "var(--xmlui-outlineColor-DatePicker--error--focus)", "Input:outlineStyle-DatePicker--error--focus": "var(--xmlui-outlineStyle-DatePicker--error--focus)", "Input:outlineOffset-DatePicker--error--focus": "var(--xmlui-outlineOffset-DatePicker--error--focus)", "Input:textColor-placeholder-DatePicker--error": "var(--xmlui-textColor-placeholder-DatePicker--error)", "Input:fontSize-placeholder-DatePicker--error": "var(--xmlui-fontSize-placeholder-DatePicker--error)", "Input:color-adornment-DatePicker--error": "var(--xmlui-color-adornment-DatePicker--error)", "Input:borderRadius-DatePicker--warning": "var(--xmlui-borderRadius-DatePicker--warning)", "Input:borderColor-DatePicker--warning": "var(--xmlui-borderColor-DatePicker--warning)", "Input:borderWidth-DatePicker--warning": "var(--xmlui-borderWidth-DatePicker--warning)", "Input:borderStyle-DatePicker--warning": "var(--xmlui-borderStyle-DatePicker--warning)", "Input:backgroundColor-DatePicker--warning": "var(--xmlui-backgroundColor-DatePicker--warning)", "Input:boxShadow-DatePicker--warning": "var(--xmlui-boxShadow-DatePicker--warning)", "Input:textColor-DatePicker--warning": "var(--xmlui-textColor-DatePicker--warning)", "Input:borderColor-DatePicker--warning--hover": "var(--xmlui-borderColor-DatePicker--warning--hover)", "Input:backgroundColor-DatePicker--warning--hover": "var(--xmlui-backgroundColor-DatePicker--warning--hover)", "Input:boxShadow-DatePicker--warning--hover": "var(--xmlui-boxShadow-DatePicker--warning--hover)", "Input:textColor-DatePicker--warning--hover": "var(--xmlui-textColor-DatePicker--warning--hover)", "Input:outlineWidth-DatePicker--warning--focus": "var(--xmlui-outlineWidth-DatePicker--warning--focus)", "Input:outlineColor-DatePicker--warning--focus": "var(--xmlui-outlineColor-DatePicker--warning--focus)", "Input:outlineStyle-DatePicker--warning--focus": "var(--xmlui-outlineStyle-DatePicker--warning--focus)", "Input:outlineOffset-DatePicker--warning--focus": "var(--xmlui-outlineOffset-DatePicker--warning--focus)", "Input:textColor-placeholder-DatePicker--warning": "var(--xmlui-textColor-placeholder-DatePicker--warning)", "Input:fontSize-placeholder-DatePicker--warning": "var(--xmlui-fontSize-placeholder-DatePicker--warning)", "Input:color-adornment-DatePicker--warning": "var(--xmlui-color-adornment-DatePicker--warning)", "Input:borderRadius-DatePicker--success": "var(--xmlui-borderRadius-DatePicker--success)", "Input:borderColor-DatePicker--success": "var(--xmlui-borderColor-DatePicker--success)", "Input:borderWidth-DatePicker--success": "var(--xmlui-borderWidth-DatePicker--success)", "Input:borderStyle-DatePicker--success": "var(--xmlui-borderStyle-DatePicker--success)", "Input:backgroundColor-DatePicker--success": "var(--xmlui-backgroundColor-DatePicker--success)", "Input:boxShadow-DatePicker--success": "var(--xmlui-boxShadow-DatePicker--success)", "Input:textColor-DatePicker--success": "var(--xmlui-textColor-DatePicker--success)", "Input:borderColor-DatePicker--success--hover": "var(--xmlui-borderColor-DatePicker--success--hover)", "Input:backgroundColor-DatePicker--success--hover": "var(--xmlui-backgroundColor-DatePicker--success--hover)", "Input:boxShadow-DatePicker--success--hover": "var(--xmlui-boxShadow-DatePicker--success--hover)", "Input:textColor-DatePicker--success--hover": "var(--xmlui-textColor-DatePicker--success--hover)", "Input:outlineWidth-DatePicker--success--focus": "var(--xmlui-outlineWidth-DatePicker--success--focus)", "Input:outlineColor-DatePicker--success--focus": "var(--xmlui-outlineColor-DatePicker--success--focus)", "Input:outlineStyle-DatePicker--success--focus": "var(--xmlui-outlineStyle-DatePicker--success--focus)", "Input:outlineOffset-DatePicker--success--focus": "var(--xmlui-outlineOffset-DatePicker--success--focus)", "Input:textColor-placeholder-DatePicker--success": "var(--xmlui-textColor-placeholder-DatePicker--success)", "Input:fontSize-placeholder-DatePicker--success": "var(--xmlui-fontSize-placeholder-DatePicker--success)", "Input:color-adornment-DatePicker--success": "var(--xmlui-color-adornment-DatePicker--success)", "Input:fontSize-DatePicker": "var(--xmlui-fontSize-DatePicker)", "Input:backgroundColor-DatePicker--disabled": "var(--xmlui-backgroundColor-DatePicker--disabled)", "Input:textColor-DatePicker--disabled": "var(--xmlui-textColor-DatePicker--disabled)", "Input:borderColor-DatePicker--disabled": "var(--xmlui-borderColor-DatePicker--disabled)", "Input:boxShadow-menu-DatePicker": "var(--xmlui-boxShadow-menu-DatePicker)", "Input:backgroundColor-menu-DatePicker": "var(--xmlui-backgroundColor-menu-DatePicker)", "Input:borderRadius-menu-DatePicker": "var(--xmlui-borderRadius-menu-DatePicker)", "Input:backgroundColor-item-DatePicker--active": "var(--xmlui-backgroundColor-item-DatePicker--active)", "Input:backgroundColor-item-DatePicker--hover": "var(--xmlui-backgroundColor-item-DatePicker--hover)", "Input:textColor-value-DatePicker": "var(--xmlui-textColor-value-DatePicker)", "Input:minHeight-DatePicker": "var(--xmlui-minHeight-DatePicker)", "Input:borderColor-selectedItem-DatePicker": "var(--xmlui-borderColor-selectedItem-DatePicker)"}'`;
31480
- const datePicker = "_datePicker_1f64a_14";
31481
- const placeholder$1 = "_placeholder_1f64a_53";
31482
- const adornment$2 = "_adornment_1f64a_57";
31483
- const error$8 = "_error_1f64a_60";
31484
- const warning$8 = "_warning_1f64a_88";
31485
- const valid$8 = "_valid_1f64a_116";
31486
- const disabled$5 = "_disabled_1f64a_144";
31487
- const indicator$1 = "_indicator_1f64a_150";
31488
- const datePickerInput = "_datePickerInput_1f64a_151";
31489
- const inlinePickerMenu = "_inlinePickerMenu_1f64a_154";
31490
- const datePickerMenu = "_datePickerMenu_1f64a_164";
31491
- const root$3 = "_root_1f64a_175";
31492
- const day$1 = "_day_1f64a_255";
31493
- const day_button = "_day_button_1f64a_261";
31494
- const caption_label = "_caption_label_1f64a_283";
31495
- const dropdown = "_dropdown_1f64a_293";
31496
- const button_next = "_button_next_1f64a_296";
31497
- const button_previous = "_button_previous_1f64a_297";
31498
- const chevron$1 = "_chevron_1f64a_326";
31499
- const nav = "_nav_1f64a_330";
31500
- const dropdowns = "_dropdowns_1f64a_334";
31501
- const dropdown_root = "_dropdown_root_1f64a_356";
31502
- const month_caption = "_month_caption_1f64a_369";
31503
- const month$1 = "_month_1f64a_369";
31504
- const months = "_months_1f64a_402";
31505
- const month_grid = "_month_grid_1f64a_409";
31506
- const weekday = "_weekday_1f64a_420";
31507
- const week_number = "_week_number_1f64a_429";
31508
- const today = "_today_1f64a_440";
31509
- const outside = "_outside_1f64a_440";
31510
- const selected = "_selected_1f64a_443";
31511
- const hidden = "_hidden_1f64a_459";
31512
- const range_start = "_range_start_1f64a_463";
31513
- const range_middle = "_range_middle_1f64a_470";
31514
- const range_end = "_range_end_1f64a_480";
31515
- const hovered = "_hovered_1f64a_491";
31516
- const singleSelected = "_singleSelected_1f64a_499";
31517
- const focusable = "_focusable_1f64a_502";
31518
- const datePickerValue = "_datePickerValue_1f64a_505";
31519
- const weeks_before_enter = "_weeks_before_enter_1f64a_541";
31520
- const weeks_before_exit = "_weeks_before_exit_1f64a_544";
31521
- const weeks_after_enter = "_weeks_after_enter_1f64a_547";
31522
- const weeks_after_exit = "_weeks_after_exit_1f64a_550";
31523
- const caption_after_enter = "_caption_after_enter_1f64a_581";
31524
- const caption_after_exit = "_caption_after_exit_1f64a_584";
31525
- const caption_before_enter = "_caption_before_enter_1f64a_587";
31526
- const caption_before_exit = "_caption_before_exit_1f64a_590";
31628
+ const datePicker = "_datePicker_1jlyg_14";
31629
+ const placeholder$1 = "_placeholder_1jlyg_53";
31630
+ const adornment$2 = "_adornment_1jlyg_57";
31631
+ const error$8 = "_error_1jlyg_60";
31632
+ const warning$8 = "_warning_1jlyg_88";
31633
+ const valid$8 = "_valid_1jlyg_116";
31634
+ const disabled$5 = "_disabled_1jlyg_144";
31635
+ const indicator$1 = "_indicator_1jlyg_150";
31636
+ const datePickerInput = "_datePickerInput_1jlyg_151";
31637
+ const datePickerValue = "_datePickerValue_1jlyg_154";
31638
+ const inlinePickerMenu = "_inlinePickerMenu_1jlyg_158";
31639
+ const datePickerMenu = "_datePickerMenu_1jlyg_168";
31640
+ const root$3 = "_root_1jlyg_178";
31641
+ const months = "_months_1jlyg_226";
31642
+ const month_grid = "_month_grid_1jlyg_233";
31643
+ const month_caption = "_month_caption_1jlyg_236";
31644
+ const nav = "_nav_1jlyg_244";
31645
+ const button_next = "_button_next_1jlyg_252";
31646
+ const button_previous = "_button_previous_1jlyg_253";
31647
+ const chevron$1 = "_chevron_1jlyg_282";
31648
+ const month$1 = "_month_1jlyg_226";
31649
+ const caption_label = "_caption_label_1jlyg_315";
31650
+ const dropdown = "_dropdown_1jlyg_325";
31651
+ const dropdowns = "_dropdowns_1jlyg_328";
31652
+ const dropdown_root = "_dropdown_root_1jlyg_349";
31653
+ const weekday = "_weekday_1jlyg_362";
31654
+ const week_number = "_week_number_1jlyg_371";
31655
+ const day$1 = "_day_1jlyg_381";
31656
+ const day_button = "_day_button_1jlyg_387";
31657
+ const today = "_today_1jlyg_409";
31658
+ const outside = "_outside_1jlyg_409";
31659
+ const selected = "_selected_1jlyg_412";
31660
+ const hidden = "_hidden_1jlyg_425";
31661
+ const range_start = "_range_start_1jlyg_429";
31662
+ const range_middle = "_range_middle_1jlyg_436";
31663
+ const range_end = "_range_end_1jlyg_446";
31664
+ const hovered = "_hovered_1jlyg_456";
31665
+ const singleSelected = "_singleSelected_1jlyg_463";
31666
+ const focusable = "_focusable_1jlyg_466";
31667
+ const weeks_before_enter = "_weeks_before_enter_1jlyg_501";
31668
+ const weeks_before_exit = "_weeks_before_exit_1jlyg_504";
31669
+ const weeks_after_enter = "_weeks_after_enter_1jlyg_507";
31670
+ const weeks_after_exit = "_weeks_after_exit_1jlyg_510";
31671
+ const caption_after_enter = "_caption_after_enter_1jlyg_541";
31672
+ const caption_after_exit = "_caption_after_exit_1jlyg_544";
31673
+ const caption_before_enter = "_caption_before_enter_1jlyg_547";
31674
+ const caption_before_exit = "_caption_before_exit_1jlyg_550";
31527
31675
  const styles$w = {
31528
31676
  themeVars: themeVars$h,
31529
31677
  datePicker,
@@ -31535,25 +31683,26 @@ const styles$w = {
31535
31683
  disabled: disabled$5,
31536
31684
  indicator: indicator$1,
31537
31685
  datePickerInput,
31686
+ datePickerValue,
31538
31687
  inlinePickerMenu,
31539
31688
  datePickerMenu,
31540
31689
  root: root$3,
31541
- day: day$1,
31542
- day_button,
31543
- caption_label,
31544
- dropdown,
31690
+ months,
31691
+ month_grid,
31692
+ month_caption,
31693
+ nav,
31545
31694
  button_next,
31546
31695
  button_previous,
31547
31696
  chevron: chevron$1,
31548
- nav,
31697
+ month: month$1,
31698
+ caption_label,
31699
+ dropdown,
31549
31700
  dropdowns,
31550
31701
  dropdown_root,
31551
- month_caption,
31552
- month: month$1,
31553
- months,
31554
- month_grid,
31555
31702
  weekday,
31556
31703
  week_number,
31704
+ day: day$1,
31705
+ day_button,
31557
31706
  today,
31558
31707
  outside,
31559
31708
  selected,
@@ -31564,19 +31713,18 @@ const styles$w = {
31564
31713
  hovered,
31565
31714
  singleSelected,
31566
31715
  focusable,
31567
- datePickerValue,
31568
31716
  weeks_before_enter,
31569
- "rdp-slide_in_left": "_rdp-slide_in_left_1f64a_1",
31717
+ "rdp-slide_in_left": "_rdp-slide_in_left_1jlyg_1",
31570
31718
  weeks_before_exit,
31571
- "rdp-slide_out_left": "_rdp-slide_out_left_1f64a_1",
31719
+ "rdp-slide_out_left": "_rdp-slide_out_left_1jlyg_1",
31572
31720
  weeks_after_enter,
31573
- "rdp-slide_in_right": "_rdp-slide_in_right_1f64a_1",
31721
+ "rdp-slide_in_right": "_rdp-slide_in_right_1jlyg_1",
31574
31722
  weeks_after_exit,
31575
- "rdp-slide_out_right": "_rdp-slide_out_right_1f64a_1",
31723
+ "rdp-slide_out_right": "_rdp-slide_out_right_1jlyg_1",
31576
31724
  caption_after_enter,
31577
- "rdp-fade_in": "_rdp-fade_in_1f64a_1",
31725
+ "rdp-fade_in": "_rdp-fade_in_1jlyg_1",
31578
31726
  caption_after_exit,
31579
- "rdp-fade_out": "_rdp-fade_out_1f64a_1",
31727
+ "rdp-fade_out": "_rdp-fade_out_1jlyg_1",
31580
31728
  caption_before_enter,
31581
31729
  caption_before_exit
31582
31730
  };
@@ -32202,12 +32350,14 @@ const datePickerComponentRenderer = wrapComponent(
32202
32350
  }
32203
32351
  );
32204
32352
  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";
32353
+ const formWrapper = "_formWrapper_1rntd_14";
32354
+ const stickyForm = "_stickyForm_1rntd_20";
32355
+ const buttonRow = "_buttonRow_1rntd_23";
32356
+ const stickyButtonRow = "_stickyButtonRow_1rntd_31";
32208
32357
  const styles$v = {
32209
32358
  themeVars: themeVars$g,
32210
32359
  formWrapper,
32360
+ stickyForm,
32211
32361
  buttonRow,
32212
32362
  stickyButtonRow
32213
32363
  };
@@ -33276,7 +33426,7 @@ const Form = forwardRef(function({
33276
33426
  ...rest,
33277
33427
  noValidate: true,
33278
33428
  style: style2,
33279
- className: classnames(styles$v.formWrapper, classes?.[COMPONENT_PART_KEY], className),
33429
+ className: classnames(styles$v.formWrapper, { [styles$v.stickyForm]: stickyButtonRow2 }, classes?.[COMPONENT_PART_KEY], className),
33280
33430
  onSubmit: doSubmit,
33281
33431
  onReset: doReset,
33282
33432
  id,
@@ -37163,6 +37313,233 @@ const formSegmentComponentRenderer = wrapComponent(COMP$A, FormSegmentNative, Fo
37163
37313
  }
37164
37314
  )
37165
37315
  });
37316
+ function parseHierarchyLabels(labelText) {
37317
+ const result = [];
37318
+ let currentLabel = "";
37319
+ let escaped = false;
37320
+ for (let i = 0; i < labelText.length; i++) {
37321
+ const char = labelText[i];
37322
+ if (escaped) {
37323
+ currentLabel += char;
37324
+ escaped = false;
37325
+ } else if (char === "\\") {
37326
+ escaped = true;
37327
+ } else if (char === "|") {
37328
+ result.push(currentLabel.trim());
37329
+ currentLabel = "";
37330
+ } else {
37331
+ currentLabel += char;
37332
+ }
37333
+ }
37334
+ if (currentLabel.length > 0) {
37335
+ result.push(currentLabel.trim());
37336
+ }
37337
+ return result;
37338
+ }
37339
+ function extractAppComponents(children) {
37340
+ const result = { restChildren: [] };
37341
+ if (!children) return result;
37342
+ for (const child of children) {
37343
+ if (child.type === "Theme") {
37344
+ extractFromThemeWrapper(child, result);
37345
+ } else {
37346
+ extractDirectChild(child, result);
37347
+ }
37348
+ }
37349
+ return result;
37350
+ }
37351
+ function extractFromThemeWrapper(themeNode, result) {
37352
+ const otherChildren = [];
37353
+ themeNode.children?.forEach((child) => {
37354
+ if (child.type === "Fragment" && child.children && child.when === void 0) {
37355
+ child.children.forEach((fragmentChild) => {
37356
+ if (fragmentChild.type === "AppHeader") {
37357
+ result.AppHeader = { ...themeNode, children: [fragmentChild] };
37358
+ } else if (fragmentChild.type === "Footer") {
37359
+ result.Footer = { ...themeNode, children: [fragmentChild] };
37360
+ } else if (fragmentChild.type === "NavPanel") {
37361
+ result.NavPanel = { ...themeNode, children: [fragmentChild] };
37362
+ } else {
37363
+ otherChildren.push(fragmentChild);
37364
+ }
37365
+ });
37366
+ } else if (child.type === "AppHeader") {
37367
+ result.AppHeader = { ...themeNode, children: [child] };
37368
+ } else if (child.type === "Footer") {
37369
+ result.Footer = { ...themeNode, children: [child] };
37370
+ } else if (child.type === "NavPanel") {
37371
+ result.NavPanel = { ...themeNode, children: [child] };
37372
+ } else {
37373
+ otherChildren.push(child);
37374
+ }
37375
+ });
37376
+ if (otherChildren.length > 0) {
37377
+ result.restChildren.push({ ...themeNode, children: otherChildren });
37378
+ }
37379
+ }
37380
+ function extractDirectChild(child, result) {
37381
+ if (child.type === "Fragment" && child.children && child.when === void 0) {
37382
+ child.children.forEach((fragmentChild) => {
37383
+ extractDirectChild(fragmentChild, result);
37384
+ });
37385
+ return;
37386
+ }
37387
+ switch (child.type) {
37388
+ case "Theme":
37389
+ extractFromThemeWrapper(child, result);
37390
+ break;
37391
+ case "AppHeader":
37392
+ result.AppHeader = child;
37393
+ break;
37394
+ case "Footer":
37395
+ result.Footer = child;
37396
+ break;
37397
+ case "NavPanel":
37398
+ result.NavPanel = child;
37399
+ break;
37400
+ case "Pages":
37401
+ result.Pages = child;
37402
+ result.restChildren.push(child);
37403
+ break;
37404
+ default:
37405
+ result.restChildren.push(child);
37406
+ }
37407
+ }
37408
+ function findOrCreateNavGroup(navItems, groupLabel) {
37409
+ const existingGroup = navItems.find(
37410
+ (item2) => item2.type === "NavGroup" && item2.props?.label === groupLabel
37411
+ );
37412
+ if (existingGroup) {
37413
+ return existingGroup;
37414
+ }
37415
+ const newGroup = {
37416
+ type: "NavGroup",
37417
+ props: {
37418
+ label: groupLabel
37419
+ },
37420
+ children: []
37421
+ };
37422
+ navItems.push(newGroup);
37423
+ return newGroup;
37424
+ }
37425
+ function labelExistsInHierarchy(searchLabel, hierarchy) {
37426
+ return hierarchy.some((node) => {
37427
+ if (node.label === searchLabel) {
37428
+ return true;
37429
+ }
37430
+ if (node.children && node.children.length > 0) {
37431
+ return labelExistsInHierarchy(searchLabel, node.children);
37432
+ }
37433
+ return false;
37434
+ });
37435
+ }
37436
+ function extractNavGroupUrls(node) {
37437
+ const urls = /* @__PURE__ */ new Set();
37438
+ if (!node) return urls;
37439
+ collectNavGroupUrls(node.children, urls);
37440
+ return urls;
37441
+ }
37442
+ function collectNavGroupUrls(children, urls) {
37443
+ if (!children) return;
37444
+ for (const child of children) {
37445
+ if (child.type === "NavGroup" && typeof child.props?.to === "string" && child.props.to) {
37446
+ urls.add(child.props.to);
37447
+ }
37448
+ if (child.children) {
37449
+ collectNavGroupUrls(child.children, urls);
37450
+ }
37451
+ }
37452
+ }
37453
+ function processNavItems(items, parentHierarchy, extractValue) {
37454
+ items.forEach((navItem) => {
37455
+ if (navItem.type === "NavLink") {
37456
+ let itemLabel = navItem.props?.label;
37457
+ let itemPath = navItem.props?.to;
37458
+ if (!itemLabel) {
37459
+ if (navItem.children?.length === 1 && navItem.children[0].type === "TextNode") {
37460
+ itemLabel = navItem.children[0].props.value;
37461
+ }
37462
+ }
37463
+ if (itemLabel) {
37464
+ const labelValue = extractValue(itemLabel);
37465
+ parentHierarchy.push({
37466
+ type: "NavLink",
37467
+ label: labelValue,
37468
+ path: itemPath ? extractValue(itemPath) : void 0
37469
+ });
37470
+ }
37471
+ } else if (navItem.type === "NavGroup") {
37472
+ let groupLabel = navItem.props?.label;
37473
+ if (groupLabel) {
37474
+ const labelValue = extractValue(groupLabel);
37475
+ const groupNode = {
37476
+ type: "NavGroup",
37477
+ label: labelValue,
37478
+ children: []
37479
+ };
37480
+ parentHierarchy.push(groupNode);
37481
+ if (navItem.children && navItem.children.length > 0) {
37482
+ processNavItems(navItem.children, groupNode.children, extractValue);
37483
+ }
37484
+ } else if (navItem.children && navItem.children.length > 0) {
37485
+ processNavItems(navItem.children, parentHierarchy, extractValue);
37486
+ }
37487
+ }
37488
+ });
37489
+ }
37490
+ function extractNavPanelFromPages(Pages2, NavPanel3, extractValue) {
37491
+ if (!Pages2) return null;
37492
+ const extraNavs = [];
37493
+ const navigationHierarchy = [];
37494
+ if (NavPanel3?.children) {
37495
+ processNavItems(NavPanel3.children, navigationHierarchy, extractValue);
37496
+ }
37497
+ Pages2.children?.forEach((page) => {
37498
+ if (page.type === "Page" && page.props.navLabel) {
37499
+ const label2 = extractValue(page.props.navLabel);
37500
+ const url = extractValue(page.props.url);
37501
+ const hierarchyLabels = parseHierarchyLabels(label2);
37502
+ if (hierarchyLabels.length === 0) {
37503
+ return;
37504
+ }
37505
+ if (hierarchyLabels.length === 1) {
37506
+ if (!labelExistsInHierarchy(hierarchyLabels[0], navigationHierarchy)) {
37507
+ extraNavs.push({
37508
+ type: "NavLink",
37509
+ props: {
37510
+ label: hierarchyLabels[0],
37511
+ to: url
37512
+ }
37513
+ });
37514
+ }
37515
+ return;
37516
+ }
37517
+ let currentLevel = extraNavs;
37518
+ for (let i = 0; i < hierarchyLabels.length - 1; i++) {
37519
+ const groupLabel = hierarchyLabels[i];
37520
+ const navGroup = findOrCreateNavGroup(currentLevel, groupLabel);
37521
+ if (!navGroup.children) {
37522
+ navGroup.children = [];
37523
+ }
37524
+ currentLevel = navGroup.children;
37525
+ }
37526
+ const leafLabel = hierarchyLabels[hierarchyLabels.length - 1];
37527
+ const existingNavLink = currentLevel.find(
37528
+ (item2) => item2.type === "NavLink" && item2.props?.label === leafLabel
37529
+ );
37530
+ if (!existingNavLink) {
37531
+ currentLevel.push({
37532
+ type: "NavLink",
37533
+ props: {
37534
+ label: leafLabel,
37535
+ to: url
37536
+ }
37537
+ });
37538
+ }
37539
+ }
37540
+ });
37541
+ return extraNavs;
37542
+ }
37166
37543
  const HIDDEN_STYLE$1 = {
37167
37544
  position: "absolute",
37168
37545
  top: "-9999px",
@@ -37172,7 +37549,7 @@ const indexerContextValue = {
37172
37549
  indexing: true
37173
37550
  };
37174
37551
  const EXCLUDED_URL_PATTERNS = [/^\/404$/, /^\/not-found$/];
37175
- function SearchIndexCollector({ Pages: Pages2, renderChild: renderChild2 }) {
37552
+ function SearchIndexCollector({ Pages: Pages2, NavPanel: NavPanel3, renderChild: renderChild2 }) {
37176
37553
  const appContext = useAppContext();
37177
37554
  const setIndexing = useSearchContextSetIndexing();
37178
37555
  const loadedExternalIndex = useSearchContextLoadedExternalIndex();
@@ -37186,14 +37563,16 @@ function SearchIndexCollector({ Pages: Pages2, renderChild: renderChild2 }) {
37186
37563
  setIndexing(false);
37187
37564
  };
37188
37565
  }, [setIndexing]);
37566
+ const navGroupUrls = useMemo(() => extractNavGroupUrls(NavPanel3), [NavPanel3]);
37189
37567
  const pagesToIndex = useMemo(() => {
37190
37568
  return Pages2?.children?.filter(
37191
37569
  (child) => child.type === "Page" && // Ensure 'Page' matches your actual component type name
37192
37570
  child.props?.url && // Ensure URL exists
37193
- !child.props.url.includes("*") && !child.props.url.includes(":") && !EXCLUDED_URL_PATTERNS.some((pattern) => pattern.test(child.props.url)) && child.props?.searchIndexable !== false
37194
- // explicit opt-out
37571
+ !child.props.url.includes("*") && !child.props.url.includes(":") && !EXCLUDED_URL_PATTERNS.some((pattern) => pattern.test(child.props.url)) && child.props?.searchIndexable !== false && // explicit opt-out
37572
+ !navGroupUrls.has(child.props.url)
37573
+ // exclude NavGroup summary pages
37195
37574
  ) || [];
37196
- }, [Pages2?.children]);
37575
+ }, [Pages2?.children, navGroupUrls]);
37197
37576
  const [, startTransitionParent] = useTransition();
37198
37577
  const handlePageIndexed = useCallback(() => {
37199
37578
  startTransitionParent(() => {
@@ -37271,216 +37650,6 @@ function PageIndexer({ Page, renderChild: renderChild2, onIndexed }) {
37271
37650
  }
37272
37651
  return /* @__PURE__ */ jsx("div", { ref: contentRef, children: renderChild2(Page.children) });
37273
37652
  }
37274
- function parseHierarchyLabels(labelText) {
37275
- const result = [];
37276
- let currentLabel = "";
37277
- let escaped = false;
37278
- for (let i = 0; i < labelText.length; i++) {
37279
- const char = labelText[i];
37280
- if (escaped) {
37281
- currentLabel += char;
37282
- escaped = false;
37283
- } else if (char === "\\") {
37284
- escaped = true;
37285
- } else if (char === "|") {
37286
- result.push(currentLabel.trim());
37287
- currentLabel = "";
37288
- } else {
37289
- currentLabel += char;
37290
- }
37291
- }
37292
- if (currentLabel.length > 0) {
37293
- result.push(currentLabel.trim());
37294
- }
37295
- return result;
37296
- }
37297
- function extractAppComponents(children) {
37298
- const result = { restChildren: [] };
37299
- if (!children) return result;
37300
- for (const child of children) {
37301
- if (child.type === "Theme") {
37302
- extractFromThemeWrapper(child, result);
37303
- } else {
37304
- extractDirectChild(child, result);
37305
- }
37306
- }
37307
- return result;
37308
- }
37309
- function extractFromThemeWrapper(themeNode, result) {
37310
- const otherChildren = [];
37311
- themeNode.children?.forEach((child) => {
37312
- if (child.type === "Fragment" && child.children && child.when === void 0) {
37313
- child.children.forEach((fragmentChild) => {
37314
- if (fragmentChild.type === "AppHeader") {
37315
- result.AppHeader = { ...themeNode, children: [fragmentChild] };
37316
- } else if (fragmentChild.type === "Footer") {
37317
- result.Footer = { ...themeNode, children: [fragmentChild] };
37318
- } else if (fragmentChild.type === "NavPanel") {
37319
- result.NavPanel = { ...themeNode, children: [fragmentChild] };
37320
- } else {
37321
- otherChildren.push(fragmentChild);
37322
- }
37323
- });
37324
- } else if (child.type === "AppHeader") {
37325
- result.AppHeader = { ...themeNode, children: [child] };
37326
- } else if (child.type === "Footer") {
37327
- result.Footer = { ...themeNode, children: [child] };
37328
- } else if (child.type === "NavPanel") {
37329
- result.NavPanel = { ...themeNode, children: [child] };
37330
- } else {
37331
- otherChildren.push(child);
37332
- }
37333
- });
37334
- if (otherChildren.length > 0) {
37335
- result.restChildren.push({ ...themeNode, children: otherChildren });
37336
- }
37337
- }
37338
- function extractDirectChild(child, result) {
37339
- if (child.type === "Fragment" && child.children && child.when === void 0) {
37340
- child.children.forEach((fragmentChild) => {
37341
- extractDirectChild(fragmentChild, result);
37342
- });
37343
- return;
37344
- }
37345
- switch (child.type) {
37346
- case "Theme":
37347
- extractFromThemeWrapper(child, result);
37348
- break;
37349
- case "AppHeader":
37350
- result.AppHeader = child;
37351
- break;
37352
- case "Footer":
37353
- result.Footer = child;
37354
- break;
37355
- case "NavPanel":
37356
- result.NavPanel = child;
37357
- break;
37358
- case "Pages":
37359
- result.Pages = child;
37360
- result.restChildren.push(child);
37361
- break;
37362
- default:
37363
- result.restChildren.push(child);
37364
- }
37365
- }
37366
- function findOrCreateNavGroup(navItems, groupLabel) {
37367
- const existingGroup = navItems.find(
37368
- (item2) => item2.type === "NavGroup" && item2.props?.label === groupLabel
37369
- );
37370
- if (existingGroup) {
37371
- return existingGroup;
37372
- }
37373
- const newGroup = {
37374
- type: "NavGroup",
37375
- props: {
37376
- label: groupLabel
37377
- },
37378
- children: []
37379
- };
37380
- navItems.push(newGroup);
37381
- return newGroup;
37382
- }
37383
- function labelExistsInHierarchy(searchLabel, hierarchy) {
37384
- return hierarchy.some((node) => {
37385
- if (node.label === searchLabel) {
37386
- return true;
37387
- }
37388
- if (node.children && node.children.length > 0) {
37389
- return labelExistsInHierarchy(searchLabel, node.children);
37390
- }
37391
- return false;
37392
- });
37393
- }
37394
- function processNavItems(items, parentHierarchy, extractValue) {
37395
- items.forEach((navItem) => {
37396
- if (navItem.type === "NavLink") {
37397
- let itemLabel = navItem.props?.label;
37398
- let itemPath = navItem.props?.to;
37399
- if (!itemLabel) {
37400
- if (navItem.children?.length === 1 && navItem.children[0].type === "TextNode") {
37401
- itemLabel = navItem.children[0].props.value;
37402
- }
37403
- }
37404
- if (itemLabel) {
37405
- const labelValue = extractValue(itemLabel);
37406
- parentHierarchy.push({
37407
- type: "NavLink",
37408
- label: labelValue,
37409
- path: itemPath ? extractValue(itemPath) : void 0
37410
- });
37411
- }
37412
- } else if (navItem.type === "NavGroup") {
37413
- let groupLabel = navItem.props?.label;
37414
- if (groupLabel) {
37415
- const labelValue = extractValue(groupLabel);
37416
- const groupNode = {
37417
- type: "NavGroup",
37418
- label: labelValue,
37419
- children: []
37420
- };
37421
- parentHierarchy.push(groupNode);
37422
- if (navItem.children && navItem.children.length > 0) {
37423
- processNavItems(navItem.children, groupNode.children, extractValue);
37424
- }
37425
- } else if (navItem.children && navItem.children.length > 0) {
37426
- processNavItems(navItem.children, parentHierarchy, extractValue);
37427
- }
37428
- }
37429
- });
37430
- }
37431
- function extractNavPanelFromPages(Pages2, NavPanel3, extractValue) {
37432
- if (!Pages2) return null;
37433
- const extraNavs = [];
37434
- const navigationHierarchy = [];
37435
- if (NavPanel3?.children) {
37436
- processNavItems(NavPanel3.children, navigationHierarchy, extractValue);
37437
- }
37438
- Pages2.children?.forEach((page) => {
37439
- if (page.type === "Page" && page.props.navLabel) {
37440
- const label2 = extractValue(page.props.navLabel);
37441
- const url = extractValue(page.props.url);
37442
- const hierarchyLabels = parseHierarchyLabels(label2);
37443
- if (hierarchyLabels.length === 0) {
37444
- return;
37445
- }
37446
- if (hierarchyLabels.length === 1) {
37447
- if (!labelExistsInHierarchy(hierarchyLabels[0], navigationHierarchy)) {
37448
- extraNavs.push({
37449
- type: "NavLink",
37450
- props: {
37451
- label: hierarchyLabels[0],
37452
- to: url
37453
- }
37454
- });
37455
- }
37456
- return;
37457
- }
37458
- let currentLevel = extraNavs;
37459
- for (let i = 0; i < hierarchyLabels.length - 1; i++) {
37460
- const groupLabel = hierarchyLabels[i];
37461
- const navGroup = findOrCreateNavGroup(currentLevel, groupLabel);
37462
- if (!navGroup.children) {
37463
- navGroup.children = [];
37464
- }
37465
- currentLevel = navGroup.children;
37466
- }
37467
- const leafLabel = hierarchyLabels[hierarchyLabels.length - 1];
37468
- const existingNavLink = currentLevel.find(
37469
- (item2) => item2.type === "NavLink" && item2.props?.label === leafLabel
37470
- );
37471
- if (!existingNavLink) {
37472
- currentLevel.push({
37473
- type: "NavLink",
37474
- props: {
37475
- label: leafLabel,
37476
- to: url
37477
- }
37478
- });
37479
- }
37480
- }
37481
- });
37482
- return extraNavs;
37483
- }
37484
37653
  const COMP$z = "App";
37485
37654
  const AppMd = createMetadata({
37486
37655
  status: "stable",
@@ -37517,6 +37686,11 @@ const AppMd = createMetadata({
37517
37686
  valueType: "boolean",
37518
37687
  defaultValue: defaultProps$Y.scrollWholePage
37519
37688
  },
37689
+ fitContent: {
37690
+ 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.`,
37691
+ valueType: "boolean",
37692
+ defaultValue: defaultProps$Y.fitContent
37693
+ },
37520
37694
  noScrollbarGutters: {
37521
37695
  description: "This boolean property specifies whether the scrollbar gutters should be hidden.",
37522
37696
  valueType: "boolean",
@@ -37660,11 +37834,13 @@ function AppNode({ node, extractValue, renderChild: renderChild2, classes, looku
37660
37834
  const applyDefaultContentPadding = !Pages2 && !hasExplicitPadding;
37661
37835
  const footerSticky = Footer3?.props?.sticky !== void 0 ? extractValue.asOptionalBoolean(Footer3.props.sticky, true) : true;
37662
37836
  const scrollWholePage2 = extractValue.asOptionalBoolean(node.props.scrollWholePage, true);
37837
+ const fitContent2 = extractValue.asOptionalBoolean(node.props.fitContent, false);
37663
37838
  const contentLayoutContext = !scrollWholePage2 ? { type: "Stack", orientation: "vertical" } : void 0;
37664
37839
  return /* @__PURE__ */ jsxs(
37665
37840
  App,
37666
37841
  {
37667
37842
  scrollWholePage: scrollWholePage2,
37843
+ fitContent: fitContent2,
37668
37844
  noScrollbarGutters: extractValue.asOptionalBoolean(node.props.noScrollbarGutters, false),
37669
37845
  classes,
37670
37846
  layout: extractValue(node.props.layout),
@@ -37696,7 +37872,7 @@ function AppNode({ node, extractValue, renderChild: renderChild2, classes, looku
37696
37872
  registerComponentApi,
37697
37873
  children: [
37698
37874
  renderChild2(restChildren, contentLayoutContext),
37699
- /* @__PURE__ */ jsx(SearchIndexCollector, { Pages: Pages2, renderChild: renderChild2 })
37875
+ /* @__PURE__ */ jsx(SearchIndexCollector, { Pages: Pages2, NavPanel: NavPanel3, renderChild: renderChild2 })
37700
37876
  ]
37701
37877
  }
37702
37878
  );
@@ -38482,6 +38658,7 @@ const formSectionRenderer = createUserDefinedComponentRenderer(
38482
38658
  const COMP$s = "Switch";
38483
38659
  const SwitchMd = createMetadata({
38484
38660
  status: "stable",
38661
+ compactInlineLabel: true,
38485
38662
  description: "`Switch` enables users to toggle between two states: on and off.",
38486
38663
  parts: {
38487
38664
  label: {
@@ -41793,6 +41970,7 @@ async function callApi({ state, appContext, lookupAction, getCurrentState, apiIn
41793
41970
  uid: actionUid,
41794
41971
  onProgress,
41795
41972
  omitTransactionId,
41973
+ onMockExecute,
41796
41974
  onResponseHeaders,
41797
41975
  //operation
41798
41976
  headers,
@@ -41861,40 +42039,61 @@ async function callApi({ state, appContext, lookupAction, getCurrentState, apiIn
41861
42039
  resolvedBody = rawBody || body2;
41862
42040
  }
41863
42041
  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
- });
42042
+ let result;
42043
+ if (onMockExecute) {
42044
+ const resolvedMockQueryParams = extractParam(stateContext, queryParams, appContext) || {};
42045
+ const resolvedMockBody = rawBody ? extractParam(stateContext, rawBody, appContext) : body2 ? extractParam(stateContext, body2, appContext) : void 0;
42046
+ const resolvedMockHeaders = extractParam(stateContext, headers, appContext) || {};
42047
+ const mockFn = lookupAction(onMockExecute, uid, {
42048
+ eventName: "mockExecute",
42049
+ context: {
42050
+ ...getCurrentState(),
42051
+ $pathParams: {},
42052
+ $queryParams: resolvedMockQueryParams,
42053
+ $requestBody: resolvedMockBody,
42054
+ $cookies: {},
42055
+ $requestHeaders: resolvedMockHeaders,
42056
+ $param: stateContext["$param"],
42057
+ $params: stateContext["$params"]
42058
+ }
42059
+ });
42060
+ result = await mockFn?.();
42061
+ } else {
42062
+ const operation = {
42063
+ headers,
42064
+ url,
42065
+ queryParams,
42066
+ rawBody,
42067
+ method,
42068
+ body: body2,
42069
+ payloadType,
42070
+ credentials
42071
+ };
42072
+ const _onProgress = lookupAction(onProgress, uid, {
42073
+ eventName: "progress"
42074
+ });
42075
+ const apiTraceId = getCurrentTrace();
42076
+ traceApiCall(appContext, "api:start", resolvedUrl, resolvedMethod, {
42077
+ transactionId: clientTxId,
42078
+ body: resolvedBody
42079
+ });
42080
+ result = await new RestApiProxy(appContext, apiInstance).execute({
42081
+ operation,
42082
+ params: stateContext,
42083
+ transactionId: clientTxId,
42084
+ omitTransactionId,
42085
+ resolveBindingExpressions,
42086
+ onProgress: _onProgress,
42087
+ onResponseHeaders
42088
+ });
42089
+ traceApiCall(appContext, "api:complete", resolvedUrl, resolvedMethod, {
42090
+ transactionId: clientTxId,
42091
+ body: resolvedBody,
42092
+ result,
42093
+ status: getLastApiStatus(clientTxId),
42094
+ _traceId: apiTraceId
42095
+ });
42096
+ }
41898
42097
  const onSuccessFn = typeof onSuccess === "function" ? onSuccess : lookupAction(onSuccess, uid, { eventName: "success", context: getCurrentState() });
41899
42098
  const onSuccessResult = await onSuccessFn?.(result, stateContext["$param"]);
41900
42099
  updateQueriesWithResult(
@@ -42845,6 +43044,7 @@ const labelBehavior = {
42845
43044
  isInputTemplateUsed: !!componentNode.props?.inputTemplate,
42846
43045
  direction,
42847
43046
  layoutContext,
43047
+ compactInlineLabel: !!metadata?.compactInlineLabel,
42848
43048
  children: node
42849
43049
  }
42850
43050
  );
@@ -42947,7 +43147,7 @@ function VariantWrapper({
42947
43147
  }
42948
43148
  variantSpec[selector][cssProperty] = cssVarValue;
42949
43149
  }
42950
- const customVariantClassName = useStyles(variantSpec, { layer: "themes" });
43150
+ const customVariantClassName = useStyles(variantSpec, { layer: "dynamic" });
42951
43151
  const isItemWithLabel = children.type === ItemWithLabel;
42952
43152
  if (isItemWithLabel && children.props?.children) {
42953
43153
  const innerChild = children.props.children;
@@ -43139,7 +43339,9 @@ function FormBindingWrapper({
43139
43339
  const childRegisterComponentApi = children?.props?.registerComponentApi;
43140
43340
  const onStateChange = useCallback(
43141
43341
  ({ value: value2 }, options2) => {
43142
- childUpdateState?.({ value: value2 }, options2);
43342
+ if (!options2?.formOnly) {
43343
+ childUpdateState?.({ value: value2 }, options2);
43344
+ }
43143
43345
  if (!isInsideForm) return;
43144
43346
  if (!options2?.initial) {
43145
43347
  dispatch(fieldChanged(formItemId, value2));
@@ -43327,6 +43529,7 @@ const formBindingBehavior = {
43327
43529
  labelBreak: labelBreak2,
43328
43530
  enabled: enabled2,
43329
43531
  requireLabelMode,
43532
+ className,
43330
43533
  layoutContext,
43331
43534
  children: node
43332
43535
  },
@@ -44686,15 +44889,15 @@ function DataLoader({
44686
44889
  const loaded = useCallback(
44687
44890
  (data, pageInfo) => {
44688
44891
  if (xsVerbose) {
44689
- const before = prevDataRef.current;
44690
- const after = data;
44892
+ const before2 = prevDataRef.current;
44893
+ const after2 = data;
44691
44894
  const dataSourceId = loader.props.id || loader.uid || loader.props.url || "DataSource";
44692
44895
  const path = `DataSource:${dataSourceId}`;
44693
44896
  xsLog("state:changes", {
44694
44897
  uid: dataSourceId,
44695
44898
  eventName: `DataSource:${dataSourceId}`,
44696
44899
  instanceId: instanceIdRef.current,
44697
- diff: [formatDiff(path, before, after)]
44900
+ diff: [formatDiff(path, before2, after2)]
44698
44901
  });
44699
44902
  prevDataRef.current = data;
44700
44903
  pendingTraceIdRef.current = void 0;
@@ -47453,22 +47656,22 @@ const redirectRenderer = wrapComponent(COMP$m, Navigate, RedirectMd, {
47453
47656
  }
47454
47657
  )
47455
47658
  });
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";
47659
+ 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)"}'`;
47660
+ const tabs = "_tabs_unyqa_14";
47661
+ const filler = "_filler_unyqa_26";
47662
+ const tabTrigger = "_tabTrigger_unyqa_39";
47663
+ const distributeEvenly = "_distributeEvenly_unyqa_46";
47664
+ const tabsList = "_tabsList_unyqa_97";
47665
+ const alignStart = "_alignStart_unyqa_115";
47666
+ const alignEnd = "_alignEnd_unyqa_118";
47667
+ const alignCenter = "_alignCenter_unyqa_121";
47668
+ const alignStretch = "_alignStretch_unyqa_124";
47669
+ const tabsContent = "_tabsContent_unyqa_130";
47670
+ const accordionView = "_accordionView_unyqa_135";
47671
+ const accordionRoot = "_accordionRoot_unyqa_138";
47672
+ const accordionInterleaved = "_accordionInterleaved_unyqa_143";
47673
+ const accordionList = "_accordionList_unyqa_148";
47674
+ const accordionTrigger = "_accordionTrigger_unyqa_160";
47472
47675
  const styles$h = {
47473
47676
  themeVars: themeVars$7,
47474
47677
  tabs,
@@ -47493,9 +47696,10 @@ const TabContext = createContext({
47493
47696
  unRegister: (innerId) => {
47494
47697
  },
47495
47698
  activeTabId: "",
47496
- getTabItems: () => []
47699
+ getTabItems: () => [],
47700
+ keepMounted: false
47497
47701
  });
47498
- function useTabContextValue() {
47702
+ function useTabContextValue(keepMounted = false) {
47499
47703
  const [tabItems, setTabItems] = useState(EMPTY_ARRAY);
47500
47704
  const tabItemsRef = useRef(EMPTY_ARRAY);
47501
47705
  tabItemsRef.current = tabItems;
@@ -47528,9 +47732,10 @@ function useTabContextValue() {
47528
47732
  unRegister,
47529
47733
  activeTabId,
47530
47734
  setActiveTabId,
47531
- getTabItems
47735
+ getTabItems,
47736
+ keepMounted
47532
47737
  };
47533
- }, [register, unRegister, activeTabId, getTabItems]);
47738
+ }, [register, unRegister, activeTabId, getTabItems, keepMounted]);
47534
47739
  return {
47535
47740
  tabItems,
47536
47741
  tabContextValue
@@ -47544,7 +47749,8 @@ const defaultProps$c = {
47544
47749
  orientation: "horizontal",
47545
47750
  tabAlignment: "start",
47546
47751
  accordionView: false,
47547
- distributeEvenly: false
47752
+ distributeEvenly: false,
47753
+ keepMounted: void 0
47548
47754
  };
47549
47755
  const Tabs = forwardRef(function Tabs2({
47550
47756
  activeTab = defaultProps$c.activeTab,
@@ -47561,9 +47767,13 @@ const Tabs = forwardRef(function Tabs2({
47561
47767
  distributeEvenly: distributeEvenly2 = defaultProps$c.distributeEvenly,
47562
47768
  onDidChange = noop$1,
47563
47769
  onContextMenu,
47770
+ keepMounted = defaultProps$c.keepMounted,
47771
+ gap,
47564
47772
  ...rest
47565
47773
  }, forwardedRef) {
47566
- const { tabItems, tabContextValue } = useTabContextValue();
47774
+ const isInsideForm = useIsInsideForm();
47775
+ const resolvedKeepMounted = keepMounted ?? isInsideForm;
47776
+ const { tabItems, tabContextValue } = useTabContextValue(resolvedKeepMounted);
47567
47777
  const _id = useId();
47568
47778
  const tabsId = id || _id;
47569
47779
  const validActiveTab = useMemo(() => {
@@ -47630,7 +47840,7 @@ const Tabs = forwardRef(function Tabs2({
47630
47840
  id: tabsId,
47631
47841
  ref: forwardedRef,
47632
47842
  className: classnames(styles$h.tabs, styles$h.accordionView, classes?.[COMPONENT_PART_KEY], className),
47633
- style: style2,
47843
+ style: { ...style2, ...gap !== void 0 ? { "--paddingTop-TabItem": gap } : {} },
47634
47844
  children: /* @__PURE__ */ jsx(
47635
47845
  Root$2,
47636
47846
  {
@@ -47726,7 +47936,7 @@ const Tabs = forwardRef(function Tabs2({
47726
47936
  }
47727
47937
  },
47728
47938
  orientation,
47729
- style: style2,
47939
+ style: { ...style2, ...gap !== void 0 ? { "--paddingTop-TabItem": gap } : {} },
47730
47940
  children: [
47731
47941
  /* @__PURE__ */ jsxs(
47732
47942
  List,
@@ -47798,6 +48008,14 @@ const TabsMd = createMetadata({
47798
48008
  },
47799
48009
  headerTemplate: {
47800
48010
  ...dComponent(`This property declares the template for the clickable tab area.`)
48011
+ },
48012
+ keepMounted: {
48013
+ 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.`,
48014
+ valueType: "boolean"
48015
+ },
48016
+ gap: {
48017
+ 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.`,
48018
+ valueType: "string"
47801
48019
  }
47802
48020
  },
47803
48021
  events: {
@@ -47836,7 +48054,8 @@ const TabsMd = createMetadata({
47836
48054
  [`textColor-trigger-${COMP$l}`]: "$color-primary-600",
47837
48055
  [`textColor-trigger-${COMP$l}--active`]: "$color-primary-900",
47838
48056
  [`textColor-trigger-${COMP$l}--hover`]: "$color-primary-900",
47839
- [`gap-list-${COMP$l}`]: "0px"
48057
+ [`gap-list-${COMP$l}`]: "0px",
48058
+ [`paddingTop-TabItem`]: "$gap-normal"
47840
48059
  }
47841
48060
  });
47842
48061
  const ThemedTabs = React__default.forwardRef(
@@ -47858,7 +48077,7 @@ const tabsComponentRenderer = wrapComponent(
47858
48077
  TabsMd,
47859
48078
  {
47860
48079
  exposeRegisterApi: true,
47861
- exclude: ["activeTab", "orientation", "tabAlignment", "accordionView", "headerTemplate"],
48080
+ exclude: ["activeTab", "orientation", "tabAlignment", "accordionView", "headerTemplate", "keepMounted", "gap"],
47862
48081
  events: [],
47863
48082
  customRender(_props, { extractValue, node, renderChild: renderChild2, classes, registerComponentApi, lookupEventHandler }) {
47864
48083
  return /* @__PURE__ */ jsx(
@@ -47880,6 +48099,8 @@ const tabsComponentRenderer = wrapComponent(
47880
48099
  orientation: extractValue(node.props?.orientation),
47881
48100
  tabAlignment: extractValue(node.props?.tabAlignment),
47882
48101
  accordionView: extractValue(node.props?.accordionView),
48102
+ keepMounted: extractValue.asOptionalBoolean(node.props?.keepMounted),
48103
+ gap: extractValue.asOptionalString(node.props?.gap),
47883
48104
  onDidChange: lookupEventHandler("didChange"),
47884
48105
  onContextMenu: lookupEventHandler("contextMenu"),
47885
48106
  registerComponentApi,
@@ -48649,7 +48870,7 @@ const AccordionMd = createMetadata({
48649
48870
  const accordionComponentRenderer = wrapComponent(COMP$h, AccordionComponent, AccordionMd);
48650
48871
  const TabItemComponent = forwardRef(function TabItemComponent2({ children, label: label2, headerRenderer, style: style2, id, className, classes, activated, ...rest }, forwardedRef) {
48651
48872
  const innerId = useId();
48652
- const { register, unRegister, activeTabId, getTabItems } = useTabContext();
48873
+ const { register, unRegister, activeTabId, getTabItems, keepMounted } = useTabContext();
48653
48874
  useEffect(() => {
48654
48875
  register({
48655
48876
  label: label2,
@@ -48669,7 +48890,8 @@ const TabItemComponent = forwardRef(function TabItemComponent2({ children, label
48669
48890
  activated();
48670
48891
  }
48671
48892
  }, [activeTabId, innerId, activated]);
48672
- if (activeTabId !== innerId) return null;
48893
+ const isActive = activeTabId === innerId;
48894
+ if (!isActive && !keepMounted) return null;
48673
48895
  const tabItems = getTabItems();
48674
48896
  const tabIndex = tabItems?.findIndex((item2) => item2.innerId === innerId) ?? 0;
48675
48897
  const contentOrder = tabIndex * 2 + 1;
@@ -48679,9 +48901,14 @@ const TabItemComponent = forwardRef(function TabItemComponent2({ children, label
48679
48901
  ...rest,
48680
48902
  key: innerId,
48681
48903
  value: innerId,
48904
+ forceMount: keepMounted ? true : void 0,
48682
48905
  className: classnames(styles$h.tabsContent, classes?.[COMPONENT_PART_KEY], className),
48683
48906
  ref: forwardedRef,
48684
- style: { ...style2, order: contentOrder }
48907
+ style: {
48908
+ ...style2,
48909
+ order: contentOrder,
48910
+ ...keepMounted && !isActive ? { display: "none" } : {}
48911
+ }
48685
48912
  },
48686
48913
  children
48687
48914
  );
@@ -49508,7 +49735,7 @@ function evaluateCondition(conditionExpr, statusData, progress, result, executio
49508
49735
  return false;
49509
49736
  }
49510
49737
  }
49511
- function APICallNative({ registerComponentApi, node, uid, updateState, onSuccess, onStatusUpdate, onTimeout }) {
49738
+ function APICallNative({ registerComponentApi, node, uid, updateState, onSuccess, onStatusUpdate, onTimeout, hasMockExecute }) {
49512
49739
  const deferredStateRef = useRef({
49513
49740
  isPolling: false,
49514
49741
  statusData: null,
@@ -49774,6 +50001,7 @@ function APICallNative({ registerComponentApi, node, uid, updateState, onSuccess
49774
50001
  onProgress: node.events?.progress,
49775
50002
  onBeforeRequest: node.events?.beforeRequest,
49776
50003
  onSuccess: onSuccess ?? node.events?.success,
50004
+ onMockExecute: node.events?.mockExecute,
49777
50005
  onResponseHeaders: (h) => {
49778
50006
  capturedResponseHeaders = h;
49779
50007
  lastResponseHeadersRef.current = h;
@@ -50143,6 +50371,11 @@ const APICallMd = createMetadata({
50143
50371
  signature: "() => void",
50144
50372
  parameters: {}
50145
50373
  },
50374
+ mockExecute: {
50375
+ 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.",
50376
+ signature: "() => any",
50377
+ parameters: {}
50378
+ },
50146
50379
  progress: dInternal()
50147
50380
  },
50148
50381
  contextVars: {
@@ -50152,6 +50385,21 @@ const APICallMd = createMetadata({
50152
50385
  $params: {
50153
50386
  description: "Array of all parameters passed to `execute()` method (access with `$params[0]`, `$params[1]`, etc.)"
50154
50387
  },
50388
+ $pathParams: {
50389
+ description: "Path parameters extracted from the request URL (available in `mockExecute`)"
50390
+ },
50391
+ $queryParams: {
50392
+ description: "Resolved query parameters (available in `mockExecute`)"
50393
+ },
50394
+ $requestBody: {
50395
+ description: "Resolved request body (available in `mockExecute`)"
50396
+ },
50397
+ $cookies: {
50398
+ description: "Request cookies (available in `mockExecute`)"
50399
+ },
50400
+ $requestHeaders: {
50401
+ description: "Resolved request headers (available in `mockExecute`)"
50402
+ },
50155
50403
  $result: {
50156
50404
  description: "Response data (available in `completedNotificationMessage`)"
50157
50405
  },
@@ -50237,7 +50485,8 @@ const apiCallRenderer = createComponentRenderer(
50237
50485
  updateState,
50238
50486
  onSuccess: lookupEventHandler("success"),
50239
50487
  onStatusUpdate: lookupEventHandler("statusUpdate"),
50240
- onTimeout: lookupEventHandler("timeout")
50488
+ onTimeout: lookupEventHandler("timeout"),
50489
+ hasMockExecute: !!node.events?.mockExecute
50241
50490
  }
50242
50491
  );
50243
50492
  }
@@ -54244,9 +54493,10 @@ const Dialog = ({
54244
54493
  children,
54245
54494
  isOpen,
54246
54495
  onClose,
54247
- buttons
54496
+ buttons,
54497
+ width
54248
54498
  }) => {
54249
- return /* @__PURE__ */ jsxs(ThemedModalDialog, { onClose, isInitiallyOpen: isOpen, title: title2, children: [
54499
+ return /* @__PURE__ */ jsxs(ThemedModalDialog, { onClose, isInitiallyOpen: isOpen, title: title2, style: width ? { width } : void 0, children: [
54250
54500
  /* @__PURE__ */ jsxs("div", { className: styles$4.dialogContent, children: [
54251
54501
  /* @__PURE__ */ jsx("div", { id: "dialogDesc", children: /* @__PURE__ */ jsx(ThemedText, { children: description }) }),
54252
54502
  children
@@ -54255,7 +54505,7 @@ const Dialog = ({
54255
54505
  ] });
54256
54506
  };
54257
54507
  const ConfirmationModalContext = React__default.createContext({
54258
- confirm: (_title, _message, _actionLabel, _cancelLabel) => Promise.resolve(false)
54508
+ confirm: () => Promise.resolve(false)
54259
54509
  });
54260
54510
  const useConfirm = () => useContext(ConfirmationModalContext);
54261
54511
  function isTracingActive() {
@@ -54267,6 +54517,7 @@ const ConfirmationModalContextProvider = ({ children }) => {
54267
54517
  const [message, setMessage] = useState();
54268
54518
  const [cancelLabel, setCancelLabel] = useState("Cancel");
54269
54519
  const [buttons, setButtons] = useState([]);
54520
+ const [width, setWidth] = useState();
54270
54521
  const resolver = useRef(null);
54271
54522
  const buttonsRef = useRef(null);
54272
54523
  useEffect(() => {
@@ -54280,7 +54531,25 @@ const ConfirmationModalContextProvider = ({ children }) => {
54280
54531
  }
54281
54532
  }, [showConfirmationModal]);
54282
54533
  const handleShow = useCallback(
54283
- (title22 = "Confirm Operation", message2 = "Are you sure you want to perform this operation?", actionLabel = "Yes", cancelLabel2 = "Cancel") => {
54534
+ (titleOrOptions = "Confirm Operation", messageArg = "Are you sure you want to perform this operation?", actionLabelArg = "Yes", cancelLabelArg = "Cancel", widthArg) => {
54535
+ let title22;
54536
+ let message2;
54537
+ let actionLabel;
54538
+ let cancelLabel2;
54539
+ let resolvedWidth;
54540
+ if (typeof titleOrOptions === "object" && titleOrOptions !== null) {
54541
+ title22 = titleOrOptions.title ?? "Confirm Operation";
54542
+ message2 = titleOrOptions.message ?? "Are you sure you want to perform this operation?";
54543
+ actionLabel = titleOrOptions.actionLabel ?? "Yes";
54544
+ cancelLabel2 = titleOrOptions.cancelLabel ?? "Cancel";
54545
+ resolvedWidth = titleOrOptions.width;
54546
+ } else {
54547
+ title22 = titleOrOptions;
54548
+ message2 = messageArg;
54549
+ actionLabel = actionLabelArg;
54550
+ cancelLabel2 = cancelLabelArg;
54551
+ resolvedWidth = widthArg;
54552
+ }
54284
54553
  if (isTracingActive()) {
54285
54554
  const w = window;
54286
54555
  w._xsPendingConfirmTrace = w._xsCurrentTrace || w._xsLastInteraction?.id;
@@ -54302,6 +54571,7 @@ const ConfirmationModalContextProvider = ({ children }) => {
54302
54571
  setButtons([{ label: actionLabel, value: true }]);
54303
54572
  setMessage(message2);
54304
54573
  setCancelLabel(cancelLabel2);
54574
+ setWidth(resolvedWidth);
54305
54575
  setShowConfirmationModal(true);
54306
54576
  return new Promise(function(resolve) {
54307
54577
  resolver.current = resolve;
@@ -54365,6 +54635,7 @@ const ConfirmationModalContextProvider = ({ children }) => {
54365
54635
  description: message,
54366
54636
  isOpen: true,
54367
54637
  onClose: handleCancel,
54638
+ width,
54368
54639
  buttons: /* @__PURE__ */ jsxs(
54369
54640
  ThemedStack,
54370
54641
  {
@@ -55237,7 +55508,7 @@ function IconProvider({ children, icons }) {
55237
55508
  /* @__PURE__ */ jsx("svg", { style: { display: "none" }, ref: spriteRootRef })
55238
55509
  ] });
55239
55510
  }
55240
- const version = "0.12.16";
55511
+ const version = "0.12.18";
55241
55512
  function createPubSubService() {
55242
55513
  const subscriptions = /* @__PURE__ */ new Map();
55243
55514
  const publishTopic = (topic, data) => {
@@ -59105,6 +59376,7 @@ const StateContainer = memo(
59105
59376
  ...node.vars,
59106
59377
  ...parsedScriptPart?.vars
59107
59378
  });
59379
+ const parentFnDeps = useFnDeps();
59108
59380
  const functionDeps = useMemo(() => {
59109
59381
  const fnDeps = {};
59110
59382
  Object.entries(varDefinitions).forEach(([key, value]) => {
@@ -59114,8 +59386,11 @@ const StateContainer = memo(
59114
59386
  fnDeps[key] = collectVariableDependencies(value, referenceTrackedApi);
59115
59387
  }
59116
59388
  });
59117
- return collectFnVarDeps(fnDeps);
59118
- }, [referenceTrackedApi, varDefinitions]);
59389
+ const localFnDeps = collectFnVarDeps(fnDeps);
59390
+ if (Object.keys(parentFnDeps).length === 0) return localFnDeps;
59391
+ if (Object.keys(localFnDeps).length === 0) return parentFnDeps;
59392
+ return { ...parentFnDeps, ...localFnDeps };
59393
+ }, [parentFnDeps, referenceTrackedApi, varDefinitions]);
59119
59394
  const preResolvedLocalVars = useVars(
59120
59395
  varDefinitions,
59121
59396
  functionDeps,
@@ -59324,6 +59599,8 @@ const getWrappedWithContainer = (node) => {
59324
59599
  return node;
59325
59600
  }
59326
59601
  const wrappedNode = { ...node, props: { ...node.props } };
59602
+ if (node.vars) wrappedNode._savedVarDefs = node.vars;
59603
+ if (node.functions) wrappedNode._savedFunctionDefs = node.functions;
59327
59604
  delete wrappedNode.loaders;
59328
59605
  delete wrappedNode.vars;
59329
59606
  delete wrappedNode.functions;
@@ -59540,7 +59817,7 @@ function ApiBoundComponent({
59540
59817
  }
59541
59818
  return JSON.stringify(eventData);
59542
59819
  };
59543
- const { success, error: error2, progress, beforeRequest } = actionComponent.events || {};
59820
+ const { success, error: error2, progress, beforeRequest, mockExecute } = actionComponent.events || {};
59544
59821
  switch (type) {
59545
59822
  case "FileUpload": {
59546
59823
  const {
@@ -59633,6 +59910,7 @@ function ApiBoundComponent({
59633
59910
  onProgress: ${prepareEvent(progress)},
59634
59911
  onBeforeRequest: ${prepareEvent(beforeRequest)},
59635
59912
  onSuccess: ${prepareEvent(success)},
59913
+ onMockExecute: ${prepareEvent(mockExecute)},
59636
59914
  updates: ${JSON.stringify(updates)},
59637
59915
  optimisticValue: ${JSON.stringify(optimisticValue)},
59638
59916
  payloadType: ${JSON.stringify(payloadType)},
@@ -60073,7 +60351,8 @@ const ComponentAdapter = forwardRef(function ComponentAdapter2({
60073
60351
  return { "&": stableLayoutCss, ...stableResponsiveStyleObject };
60074
60352
  }, [stableLayoutCss, stableResponsiveStyleObject]);
60075
60353
  const layoutClassName = useStyles(combinedStyleObject);
60076
- const className = [themeClassName, layoutClassName].filter(Boolean).join(" ");
60354
+ const extraClassName = layoutContextRef?.current?.extraClassName;
60355
+ const className = [themeClassName, layoutClassName, extraClassName].filter(Boolean).join(" ");
60077
60356
  const memoedClasses = useMemo(() => ({ [COMPONENT_PART_KEY]: className }), [className]);
60078
60357
  const { inspectId, refreshInspection } = useInspector(safeNode, uid);
60079
60358
  const currentWhenValue = resolveResponsiveWhen(
@@ -61039,30 +61318,30 @@ function AppContent({
61039
61318
  const update = useCallback(
61040
61319
  (bucket, patch) => {
61041
61320
  setAppState((prev) => {
61042
- const before = prev[bucket];
61043
- const after = {
61321
+ const before2 = prev[bucket];
61322
+ const after2 = {
61044
61323
  ...prev[bucket] || {},
61045
61324
  ...patch
61046
61325
  };
61047
61326
  const next = {
61048
61327
  ...prev,
61049
- [bucket]: after
61328
+ [bucket]: after2
61050
61329
  };
61051
61330
  if (xsVerbose && typeof window !== "undefined") {
61052
61331
  const w = window;
61053
61332
  const lastInteraction = w._xsLastInteraction;
61054
61333
  const traceId = w._xsCurrentTrace || (!w._xsStartupComplete ? w._xsStartupTrace : void 0) || (lastInteraction && Date.now() - lastInteraction.ts < 2e3 ? lastInteraction.id : void 0);
61055
61334
  const perfTs = typeof performance !== "undefined" ? performance.now() : void 0;
61056
- const beforeJson = simpleStringify(before);
61057
- const afterJson = simpleStringify(after);
61335
+ const beforeJson = simpleStringify(before2);
61336
+ const afterJson = simpleStringify(after2);
61058
61337
  const diffPretty = `path: AppState:${bucket}
61059
61338
  ${prefixLines(beforeJson, "- ")}
61060
61339
  ${prefixLines(afterJson, "+ ")}`;
61061
61340
  const diff = {
61062
61341
  path: `AppState:${bucket}`,
61063
61342
  type: "update",
61064
- before,
61065
- after,
61343
+ before: before2,
61344
+ after: after2,
61066
61345
  beforeJson,
61067
61346
  afterJson,
61068
61347
  diffText: `path: AppState:${bucket}