xmlui 0.11.13 → 0.11.16

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.
@@ -2,7 +2,7 @@ import "./index.css";
2
2
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import React__default, { useRef, useInsertionEffect, useCallback, forwardRef, useState, useEffect, useId, cloneElement, useMemo, useContext, useLayoutEffect, createContext, memo, Fragment as Fragment$1, useReducer, isValidElement, useDeferredValue, createElement, startTransition, useTransition, Children } from "react";
5
- import { b as getDefaultExportFromCjs, l as labelPositionMd, o as orientationOptionMd, v as validationStatusMd, c as alignmentOptionValues, i as isSizeType, d as layoutOptionKeys, L as LinkTargetMd, e as alignmentOptionMd, f as iconPositionMd, h as buttonTypesMd, s as sizeMd, j as buttonThemeMd, k as buttonVariantMd, T as TextVariantElement, V as VariantPropsKeys, m as variantOptionsMd, n as scrollAnchoringValues, p as buttonThemeNames, q as iconPositionNames, r as buttonVariantNames, t as buttonVariantValues, u as triggerPositionNames, w as httpMethodNames, x as orientationOptionValues, y as viewportSizeNames, M as MetadataProvider } from "./metadata-utils-2bsMr4Gd.js";
5
+ import { b as getDefaultExportFromCjs, l as labelPositionMd, o as orientationOptionMd, v as validationStatusMd, c as alignmentOptionValues, i as isSizeType, d as alignmentOptionMd, e as layoutOptionKeys, L as LinkTargetMd, f as iconPositionMd, h as buttonTypesMd, s as sizeMd, j as buttonThemeMd, k as buttonVariantMd, T as TextVariantElement, V as VariantPropsKeys, m as variantOptionsMd, n as scrollAnchoringValues, p as buttonThemeNames, q as iconPositionNames, r as buttonVariantNames, t as buttonVariantValues, u as triggerPositionNames, w as httpMethodNames, x as orientationOptionValues, y as viewportSizeNames, M as MetadataProvider } from "./metadata-utils-BXGJbvlh.js";
6
6
  import require$$0, { flushSync, createPortal } from "react-dom";
7
7
  import yaml from "js-yaml";
8
8
  import { useQuery, useInfiniteQuery, QueryClientProvider, QueryClient } from "@tanstack/react-query";
@@ -10,7 +10,7 @@ import produce, { createDraft, finishDraft, enableMapSet } from "immer";
10
10
  import { throttle, get, isNil, omitBy, isUndefined, isString, isPlainObject, noop as noop$2, isEmpty, isEqual, union, uniq, orderBy as orderBy$1, isObject, isArray, groupBy, sortBy, omit, isNumber, set, isNaN as isNaN$1, cloneDeep, merge, defaultTo, capitalize, unset, setWith, keyBy, pick } from "lodash-es";
11
11
  import { formatDistanceToNow, parse, format, parseISO, isValid, isToday, isYesterday, isTomorrow, isThisWeek, formatRelative, isThisYear, isSameDay, differenceInMinutes } from "date-fns";
12
12
  import classnames from "classnames";
13
- import { c as PART_LABELED_ITEM, d as PART_LABEL, b as PART_INPUT, P as PART_START_ADORNMENT, a as PART_END_ADORNMENT, x as xmlUiMarkupToComponent, e as errReportComponent, f as errReportMessage, g as errReportScriptError, h as errReportModuleErrors } from "./xmlui-parser-CW8YmGjO.js";
13
+ import { c as PART_LABELED_ITEM, d as PART_LABEL, b as PART_INPUT, e as PART_ICON, P as PART_START_ADORNMENT, a as PART_END_ADORNMENT, x as xmlUiMarkupToComponent, f as errReportComponent, g as errReportMessage, h as errReportScriptError, i as errReportModuleErrors } from "./xmlui-parser-9Yk-asFP.js";
14
14
  import Color from "color";
15
15
  import { Popover, PopoverTrigger, Portal, PopoverContent, PopoverPortal } from "@radix-ui/react-popover";
16
16
  import * as VisuallyHidden$1 from "@radix-ui/react-visually-hidden";
@@ -807,6 +807,9 @@ const styles$1j = {
807
807
  "lds-ring": "_lds-ring_b1pgc_14",
808
808
  fullScreenSpinnerWrapper
809
809
  };
810
+ const Part = ({ children, partId }) => {
811
+ return /* @__PURE__ */ jsx(Slot, { "data-part-id": partId, children });
812
+ };
810
813
  const PART_RING = "ring";
811
814
  const defaultProps$1i = {
812
815
  delay: 400,
@@ -846,7 +849,7 @@ const Spinner = forwardRef(function Spinner2({
846
849
  style: style2,
847
850
  ref: forwardedRef,
848
851
  children: [
849
- /* @__PURE__ */ jsx("div", { "data-part-id": PART_RING }),
852
+ /* @__PURE__ */ jsx(Part, { partId: PART_RING, children: /* @__PURE__ */ jsx("div", {}) }),
850
853
  /* @__PURE__ */ jsx("div", {}),
851
854
  /* @__PURE__ */ jsx("div", {}),
852
855
  /* @__PURE__ */ jsx("div", {})
@@ -866,7 +869,7 @@ const Spinner = forwardRef(function Spinner2({
866
869
  style: style2,
867
870
  ref: forwardedRef,
868
871
  children: [
869
- /* @__PURE__ */ jsx("div", { "data-part-id": PART_RING }),
872
+ /* @__PURE__ */ jsx(Part, { partId: PART_RING, children: /* @__PURE__ */ jsx("div", {}) }),
870
873
  /* @__PURE__ */ jsx("div", {}),
871
874
  /* @__PURE__ */ jsx("div", {}),
872
875
  /* @__PURE__ */ jsx("div", {})
@@ -904,18 +907,17 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
904
907
  const generatedId2 = useId();
905
908
  const inputId = id || generatedId2;
906
909
  if (label2 === void 0 && !validationResult) {
907
- return /* @__PURE__ */ jsx(
910
+ return /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: /* @__PURE__ */ jsx(
908
911
  Slot,
909
912
  {
910
913
  ...rest,
911
- "data-part-id": PART_LABELED_ITEM,
912
914
  style: style2,
913
915
  className,
914
916
  id: inputId,
915
917
  ref,
916
918
  children
917
919
  }
918
- );
920
+ ) });
919
921
  }
920
922
  return /* @__PURE__ */ jsxs("div", { ...rest, ref, style: style2, className: classnames(className, styles$1k.itemWithLabel), children: [
921
923
  /* @__PURE__ */ jsxs(
@@ -929,10 +931,9 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
929
931
  [styles$1k.shrinkToLabel]: shrinkToLabel2
930
932
  }),
931
933
  children: [
932
- label2 && /* @__PURE__ */ jsxs(
934
+ label2 && /* @__PURE__ */ jsx(Part, { partId: PART_LABEL, children: /* @__PURE__ */ jsxs(
933
935
  "label",
934
936
  {
935
- "data-part-id": PART_LABEL,
936
937
  htmlFor: inputId,
937
938
  onClick: onLabelClick || (() => document.getElementById(inputId)?.focus()),
938
939
  style: {
@@ -957,13 +958,12 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
957
958
  )
958
959
  ]
959
960
  }
960
- ),
961
- cloneElement(children, {
961
+ ) }),
962
+ /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: cloneElement(children, {
962
963
  id: !isInputTemplateUsed ? inputId : void 0,
963
964
  style: void 0,
964
- className: void 0,
965
- "data-part-id": PART_LABELED_ITEM
966
- })
965
+ className: void 0
966
+ }) })
967
967
  ]
968
968
  }
969
969
  ),
@@ -1707,11 +1707,11 @@ const chStackComponentRenderer = createComponentRenderer(
1707
1707
  }
1708
1708
  );
1709
1709
  const themeVars$$ = `'{"backgroundColor-ResponsiveBar": "var(--xmlui-backgroundColor-ResponsiveBar)", "padding-ResponsiveBar": "var(--xmlui-padding-ResponsiveBar)", "margin-ResponsiveBar": "var(--xmlui-margin-ResponsiveBar)"}'`;
1710
- const responsiveBar = "_responsiveBar_9ttfw_14";
1711
- const vertical$7 = "_vertical_9ttfw_26";
1712
- const horizontal$6 = "_horizontal_9ttfw_33";
1713
- const visibleItems = "_visibleItems_9ttfw_39";
1714
- const overflowDropdown = "_overflowDropdown_9ttfw_65";
1710
+ const responsiveBar = "_responsiveBar_1euow_14";
1711
+ const vertical$7 = "_vertical_1euow_26";
1712
+ const horizontal$6 = "_horizontal_1euow_33";
1713
+ const visibleItems = "_visibleItems_1euow_39";
1714
+ const overflowDropdown = "_overflowDropdown_1euow_65";
1715
1715
  const styles$1i = {
1716
1716
  themeVars: themeVars$$,
1717
1717
  responsiveBar,
@@ -1721,17 +1721,19 @@ const styles$1i = {
1721
1721
  overflowDropdown
1722
1722
  };
1723
1723
  const themeVars$_ = `'{"backgroundColor-DropdownMenu": "var(--xmlui-backgroundColor-DropdownMenu)", "borderRadius-DropdownMenu": "var(--xmlui-borderRadius-DropdownMenu)", "boxShadow-DropdownMenu": "var(--xmlui-boxShadow-DropdownMenu)", "borderColor-DropdownMenu-content": "var(--xmlui-borderColor-DropdownMenu-content)", "borderWidth-DropdownMenu-content": "var(--xmlui-borderWidth-DropdownMenu-content)", "borderStyle-DropdownMenu-content": "var(--xmlui-borderStyle-DropdownMenu-content)", "minWidth-DropdownMenu": "var(--xmlui-minWidth-DropdownMenu)", "backgroundColor-MenuItem": "var(--xmlui-backgroundColor-MenuItem)", "color-MenuItem": "var(--xmlui-color-MenuItem)", "fontFamily-MenuItem": "var(--xmlui-fontFamily-MenuItem)", "gap-MenuItem": "var(--xmlui-gap-MenuItem)", "fontSize-MenuItem": "var(--xmlui-fontSize-MenuItem)", "paddingVertical-MenuItem": "var(--xmlui-paddingVertical-MenuItem)", "paddingHorizontal-MenuItem": "var(--xmlui-paddingHorizontal-MenuItem)", "backgroundColor-MenuItem--hover": "var(--xmlui-backgroundColor-MenuItem--hover)", "backgroundColor-MenuItem--active": "var(--xmlui-backgroundColor-MenuItem--active)", "backgroundColor-MenuItem--active--hover": "var(--xmlui-backgroundColor-MenuItem--active--hover)", "color-MenuItem--hover": "var(--xmlui-color-MenuItem--hover)", "color-MenuItem--active": "var(--xmlui-color-MenuItem--active)", "color-MenuItem--active--hover": "var(--xmlui-color-MenuItem--active--hover)", "color-MenuItem--disabled": "var(--xmlui-color-MenuItem--disabled)", "marginTop-MenuSeparator": "var(--xmlui-marginTop-MenuSeparator)", "marginBottom-MenuSeparator": "var(--xmlui-marginBottom-MenuSeparator)", "width-MenuSeparator": "var(--xmlui-width-MenuSeparator)", "height-MenuSeparator": "var(--xmlui-height-MenuSeparator)", "color-MenuSeparator": "var(--xmlui-color-MenuSeparator)"}'`;
1724
- const DropdownMenuContent = "_DropdownMenuContent_19u51_14";
1725
- const DropdownMenuSubContent = "_DropdownMenuSubContent_19u51_19";
1726
- const DropdownMenuItem = "_DropdownMenuItem_19u51_29";
1727
- const DropdownMenuSubTrigger = "_DropdownMenuSubTrigger_19u51_30";
1728
- const active$3 = "_active_19u51_53";
1729
- const disabled$b = "_disabled_19u51_63";
1730
- const wrapper$m = "_wrapper_19u51_74";
1731
- const DropdownMenuSeparator = "_DropdownMenuSeparator_19u51_78";
1724
+ const DropdownMenuContent = "_DropdownMenuContent_tklrk_14";
1725
+ const compact = "_compact_tklrk_18";
1726
+ const DropdownMenuSubContent = "_DropdownMenuSubContent_tklrk_22";
1727
+ const DropdownMenuItem = "_DropdownMenuItem_tklrk_32";
1728
+ const DropdownMenuSubTrigger = "_DropdownMenuSubTrigger_tklrk_33";
1729
+ const active$3 = "_active_tklrk_56";
1730
+ const disabled$b = "_disabled_tklrk_66";
1731
+ const wrapper$m = "_wrapper_tklrk_81";
1732
+ const DropdownMenuSeparator = "_DropdownMenuSeparator_tklrk_85";
1732
1733
  const styles$1h = {
1733
1734
  themeVars: themeVars$_,
1734
1735
  DropdownMenuContent,
1736
+ compact,
1735
1737
  DropdownMenuSubContent,
1736
1738
  DropdownMenuItem,
1737
1739
  DropdownMenuSubTrigger,
@@ -3389,6 +3391,7 @@ const DropdownMenu = forwardRef(function DropdownMenu2({
3389
3391
  triggerButtonThemeColor = defaultDropdownMenuProps.triggerButtonThemeColor,
3390
3392
  triggerButtonIcon = defaultDropdownMenuProps.triggerButtonIcon,
3391
3393
  triggerButtonIconPosition = defaultDropdownMenuProps.triggerButtonIconPosition,
3394
+ compact: compact2 = false,
3392
3395
  ...rest
3393
3396
  }, ref) {
3394
3397
  const { root: root2 } = useTheme();
@@ -3493,7 +3496,7 @@ const DropdownMenu = forwardRef(function DropdownMenu2({
3493
3496
  ref: contentRef,
3494
3497
  align: alignment,
3495
3498
  style: style2,
3496
- className: classnames(styles$1h.DropdownMenuContent, className),
3499
+ className: classnames(styles$1h.DropdownMenuContent, className, { [styles$1h.compact]: compact2 }),
3497
3500
  onOpenAutoFocus: (e) => {
3498
3501
  e.preventDefault();
3499
3502
  contentRef.current?.focus();
@@ -3521,7 +3524,8 @@ const MenuItem = forwardRef(function MenuItem2({
3521
3524
  icon: icon2,
3522
3525
  iconPosition = defaultMenuItemProps.iconPosition,
3523
3526
  active: active2 = defaultMenuItemProps.active,
3524
- enabled: enabled2 = true
3527
+ enabled: enabled2 = true,
3528
+ compact: compact2 = false
3525
3529
  }, ref) {
3526
3530
  const iconToStart = iconPosition === "start";
3527
3531
  const context = useDropdownMenuContext();
@@ -3556,7 +3560,8 @@ const MenuItem = forwardRef(function MenuItem2({
3556
3560
  style: style2,
3557
3561
  className: classnames(className, styles$1h.DropdownMenuItem, {
3558
3562
  [styles$1h.active]: active2,
3559
- [styles$1h.disabled]: !enabled2
3563
+ [styles$1h.disabled]: !enabled2,
3564
+ [styles$1h.compact]: compact2
3560
3565
  }),
3561
3566
  ref,
3562
3567
  onClick: handleClick,
@@ -3604,26 +3609,55 @@ const SubMenuItem = forwardRef(function SubMenuItem2({ children, label: label2,
3604
3609
  const MenuSeparator = forwardRef(function MenuSeparator2(props, ref) {
3605
3610
  return /* @__PURE__ */ jsx("div", { ref, className: styles$1h.DropdownMenuSeparator, role: "separator", ...props });
3606
3611
  });
3612
+ const PART_OVERFLOW = "overflow";
3607
3613
  const ResponsiveBarDropdown = ({
3608
3614
  overflowIcon,
3615
+ dropdownText,
3616
+ dropdownAlignment,
3617
+ triggerTemplate,
3609
3618
  children,
3610
- className
3611
- }) => /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(DropdownMenu, { label: "More options", triggerButtonIcon: overflowIcon, children }) });
3619
+ className,
3620
+ onWillOpen,
3621
+ registerComponentApi
3622
+ }) => /* @__PURE__ */ jsx(Part, { partId: PART_OVERFLOW, children: /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
3623
+ DropdownMenu,
3624
+ {
3625
+ label: dropdownText,
3626
+ triggerButtonIcon: overflowIcon,
3627
+ triggerTemplate,
3628
+ alignment: dropdownAlignment,
3629
+ compact: true,
3630
+ onWillOpen,
3631
+ registerComponentApi,
3632
+ children
3633
+ }
3634
+ ) }) });
3612
3635
  const defaultResponsiveBarProps = {
3613
3636
  overflowIcon: "ellipsisHorizontal:ResponsiveBar",
3637
+ dropdownText: "More options",
3614
3638
  gap: 0,
3615
- orientation: "horizontal"
3639
+ orientation: "horizontal",
3640
+ reverse: false
3616
3641
  };
3617
3642
  const ResponsiveBar = forwardRef(function ResponsiveBar2({
3618
3643
  children,
3644
+ childNodes,
3645
+ renderChildFn,
3619
3646
  overflowIcon = defaultResponsiveBarProps.overflowIcon,
3647
+ dropdownText = defaultResponsiveBarProps.dropdownText,
3648
+ dropdownAlignment,
3649
+ triggerTemplate,
3620
3650
  gap = defaultResponsiveBarProps.gap,
3621
3651
  orientation = defaultResponsiveBarProps.orientation,
3652
+ reverse: reverse2 = defaultResponsiveBarProps.reverse,
3622
3653
  style: style2,
3623
3654
  className,
3624
3655
  onClick,
3656
+ onWillOpen,
3657
+ registerComponentApi,
3625
3658
  ...rest
3626
3659
  }, ref) {
3660
+ const effectiveAlignment = dropdownAlignment ?? (reverse2 ? "start" : "end");
3627
3661
  const containerRef = useRef(null);
3628
3662
  const measurementDropdownRef = useRef(null);
3629
3663
  const isCalculatingRef = useRef(false);
@@ -3631,8 +3665,10 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3631
3665
  const lastChildrenCount = useRef(0);
3632
3666
  useRef(null);
3633
3667
  const layoutCompletedRef = useRef(false);
3668
+ const dropdownApiRef = useRef(null);
3634
3669
  const [isInMeasurementPhase, setIsInMeasurementPhase] = useState(true);
3635
3670
  const [measuredWidths, setMeasuredWidths] = useState([]);
3671
+ const [measuredDropdownSize, setMeasuredDropdownSize] = useState(0);
3636
3672
  const [layout, setLayout] = useState({
3637
3673
  visibleItems: [],
3638
3674
  overflowItems: []
@@ -3644,6 +3680,21 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3644
3680
  return result;
3645
3681
  }, [children]);
3646
3682
  const childrenCount = childrenArray.length;
3683
+ useEffect(() => {
3684
+ if (registerComponentApi) {
3685
+ registerComponentApi({
3686
+ open: () => {
3687
+ dropdownApiRef.current?.open();
3688
+ },
3689
+ close: () => {
3690
+ dropdownApiRef.current?.close();
3691
+ },
3692
+ hasOverflow: () => {
3693
+ return layout.overflowItems.length > 0;
3694
+ }
3695
+ });
3696
+ }
3697
+ }, [registerComponentApi, layout.overflowItems.length]);
3647
3698
  const measureItems = () => {
3648
3699
  if (!containerRef.current) return;
3649
3700
  const items = [];
@@ -3663,7 +3714,16 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3663
3714
  const rect = item2.getBoundingClientRect();
3664
3715
  return orientation === "horizontal" ? rect.width : rect.height;
3665
3716
  });
3717
+ let dropdownSize = orientation === "horizontal" ? 147 : 47;
3718
+ if (measurementDropdownRef.current) {
3719
+ const dropdownRect = measurementDropdownRef.current.getBoundingClientRect();
3720
+ const measuredSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3721
+ if (measuredSize > 0) {
3722
+ dropdownSize = measuredSize;
3723
+ }
3724
+ }
3666
3725
  setMeasuredWidths(measurements);
3726
+ setMeasuredDropdownSize(dropdownSize);
3667
3727
  setIsInMeasurementPhase(false);
3668
3728
  };
3669
3729
  const calculateOverflowLayout = () => {
@@ -3677,7 +3737,6 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3677
3737
  if (containerSize === 0 || containerSize === lastSize) {
3678
3738
  return;
3679
3739
  }
3680
- console.log(`ResponsiveBar ${orientation}: containerSize=${containerSize}, children=${childrenArray.length}`);
3681
3740
  isCalculatingRef.current = true;
3682
3741
  lastContainerSize.current = containerSize;
3683
3742
  const gapValue = gap;
@@ -3688,25 +3747,23 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3688
3747
  const gapSize = i > 0 ? gapValue : 0;
3689
3748
  totalSize += gapSize + childSize;
3690
3749
  }
3691
- console.log(`Total size needed: ${totalSize}, available: ${containerSize}`);
3692
3750
  let visibleItems2;
3693
3751
  let overflowItems;
3694
3752
  if (totalSize <= containerSize) {
3695
3753
  visibleItems2 = childrenArray;
3696
3754
  overflowItems = [];
3697
3755
  } else {
3698
- let dropdownSize = orientation === "horizontal" ? 147 : 47;
3756
+ let dropdownSize = measuredDropdownSize > 0 ? measuredDropdownSize : orientation === "horizontal" ? 147 : 47;
3699
3757
  const existingDropdown = container2.querySelector(
3700
3758
  `.${styles$1i.overflowDropdown}`
3701
3759
  );
3702
3760
  if (existingDropdown) {
3703
3761
  const dropdownRect = existingDropdown.getBoundingClientRect();
3704
- dropdownSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3705
- } else if (measurementDropdownRef.current) {
3706
- const dropdownRect = measurementDropdownRef.current.getBoundingClientRect();
3707
- dropdownSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3762
+ const currentSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3763
+ if (currentSize > 0) {
3764
+ dropdownSize = currentSize;
3765
+ }
3708
3766
  }
3709
- console.log(`Dropdown size: ${dropdownSize}`);
3710
3767
  let accumulatedSize = 0;
3711
3768
  let visibleCount = 0;
3712
3769
  for (let i = 0; i < childrenArray.length; i++) {
@@ -3715,7 +3772,6 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3715
3772
  const gapSize = i > 0 ? gapValue : 0;
3716
3773
  const proposedSize = accumulatedSize + gapSize + childSize;
3717
3774
  const totalSizeWithDropdown = proposedSize + gapValue + dropdownSize;
3718
- console.log(`Item ${i}: size=${childSize}, proposed=${proposedSize}, withDropdown=${totalSizeWithDropdown}`);
3719
3775
  if (totalSizeWithDropdown <= containerSize) {
3720
3776
  accumulatedSize = proposedSize;
3721
3777
  visibleCount++;
@@ -3740,18 +3796,14 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3740
3796
  if (visibleCount >= childrenArray.length) {
3741
3797
  visibleItems2 = childrenArray;
3742
3798
  overflowItems = [];
3743
- console.log(`All items fit, no dropdown needed`);
3744
3799
  } else if (visibleCount === 0) {
3745
3800
  visibleItems2 = childrenArray.slice(0, 1);
3746
3801
  overflowItems = childrenArray.slice(1);
3747
- console.log(`No items fit, forcing one visible: visible=1, overflow=${overflowItems.length}`);
3748
3802
  } else {
3749
3803
  visibleItems2 = childrenArray.slice(0, visibleCount);
3750
3804
  overflowItems = childrenArray.slice(visibleCount);
3751
- console.log(`Split items: visible=${visibleItems2.length}, overflow=${overflowItems.length}`);
3752
3805
  }
3753
3806
  }
3754
- console.log(`Final layout: visible=${visibleItems2.length}, overflow=${overflowItems.length}`);
3755
3807
  if (visibleItems2.length !== layout.visibleItems.length || overflowItems.length !== layout.overflowItems.length) {
3756
3808
  setLayout({
3757
3809
  visibleItems: visibleItems2,
@@ -3773,6 +3825,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3773
3825
  lastChildrenCount.current = childrenCount;
3774
3826
  setIsInMeasurementPhase(true);
3775
3827
  setMeasuredWidths([]);
3828
+ setMeasuredDropdownSize(0);
3776
3829
  }
3777
3830
  }, [childrenCount]);
3778
3831
  useEffect(() => {
@@ -3818,7 +3871,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3818
3871
  ...style2,
3819
3872
  gap: `${gap}px`,
3820
3873
  // Gap between visibleItems and overflowDropdown
3821
- flexDirection: orientation === "horizontal" ? "row" : "column",
3874
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column",
3822
3875
  height: orientation === "vertical" ? "100%" : void 0,
3823
3876
  width: orientation === "horizontal" ? "100%" : void 0
3824
3877
  },
@@ -3840,7 +3893,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3840
3893
  visibility: "hidden",
3841
3894
  opacity: 0,
3842
3895
  pointerEvents: "none",
3843
- flexDirection: orientation === "horizontal" ? "row" : "column"
3896
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column"
3844
3897
  },
3845
3898
  children: childrenArray.map((child, index) => /* @__PURE__ */ jsx("div", { children: child }, `item-${index}`))
3846
3899
  }
@@ -3858,7 +3911,13 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3858
3911
  ResponsiveBarDropdown,
3859
3912
  {
3860
3913
  overflowIcon,
3914
+ dropdownText,
3915
+ dropdownAlignment: effectiveAlignment,
3916
+ triggerTemplate,
3861
3917
  className: styles$1i.overflowDropdown,
3918
+ onWillOpen,
3919
+ registerComponentApi: (api) => {
3920
+ },
3862
3921
  children: childrenArray.length > 0 && /* @__PURE__ */ jsx(MenuItem, { children: childrenArray[0] })
3863
3922
  }
3864
3923
  )
@@ -3878,11 +3937,11 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3878
3937
  style: {
3879
3938
  gap: `${gap}px`,
3880
3939
  // Gap between visible items
3881
- flexDirection: orientation === "horizontal" ? "row" : "column"
3940
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column"
3882
3941
  },
3883
3942
  children: childrenArray.map((child, index) => {
3884
3943
  const isVisible = layout.visibleItems.length > 0 ? index < layout.visibleItems.length : true;
3885
- return /* @__PURE__ */ jsx("div", { style: { display: isVisible ? "block" : "none" }, children: child }, `item-${index}`);
3944
+ return /* @__PURE__ */ jsx("div", { style: { display: isVisible ? "flex" : "none", alignItems: "stretch" }, children: renderChildFn && childNodes ? renderChildFn(childNodes[index], false) : child }, `item-${index}`);
3886
3945
  })
3887
3946
  }
3888
3947
  ),
@@ -3890,8 +3949,19 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3890
3949
  ResponsiveBarDropdown,
3891
3950
  {
3892
3951
  overflowIcon,
3952
+ dropdownText,
3953
+ dropdownAlignment: effectiveAlignment,
3954
+ triggerTemplate,
3893
3955
  className: styles$1i.overflowDropdown,
3894
- children: layout.overflowItems.map((item2, index) => /* @__PURE__ */ jsx(MenuItem, { children: item2 }, index))
3956
+ onWillOpen,
3957
+ registerComponentApi: (api) => {
3958
+ dropdownApiRef.current = api;
3959
+ },
3960
+ children: layout.overflowItems.map((item2, index) => {
3961
+ const originalIndex = layout.visibleItems.length + index;
3962
+ const renderedChild = renderChildFn && childNodes ? renderChildFn(childNodes[originalIndex], true) : item2;
3963
+ return /* @__PURE__ */ jsx(MenuItem, { compact: true, children: renderedChild }, index);
3964
+ })
3895
3965
  }
3896
3966
  )
3897
3967
  ] })
@@ -3899,6 +3969,21 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3899
3969
  }
3900
3970
  );
3901
3971
  });
3972
+ const ResponsiveBarItem = memo(
3973
+ ({ node, isOverflow, renderChild: renderChild2, layoutContext }) => {
3974
+ const nodeWithContext = useMemo(() => {
3975
+ return {
3976
+ type: "Container",
3977
+ contextVars: {
3978
+ $overflow: isOverflow
3979
+ },
3980
+ children: Array.isArray(node) ? node : [node]
3981
+ };
3982
+ }, [node, isOverflow]);
3983
+ return /* @__PURE__ */ jsx(Fragment, { children: renderChild2(nodeWithContext, layoutContext) });
3984
+ }
3985
+ );
3986
+ ResponsiveBarItem.displayName = "ResponsiveBarItem";
3902
3987
  const COMP$1w = "ResponsiveBar";
3903
3988
  const ResponsiveBarMd = createMetadata({
3904
3989
  status: "stable",
@@ -3916,17 +4001,54 @@ const ResponsiveBarMd = createMetadata({
3916
4001
  valueType: "string",
3917
4002
  defaultValue: defaultResponsiveBarProps.overflowIcon
3918
4003
  },
4004
+ dropdownText: {
4005
+ description: "Text to display in the dropdown trigger button label when items overflow. This text is used for accessibility and appears alongside the overflow icon.",
4006
+ valueType: "string",
4007
+ defaultValue: defaultResponsiveBarProps.dropdownText
4008
+ },
4009
+ dropdownAlignment: {
4010
+ description: "Alignment of the dropdown menu relative to the trigger button. By default, uses 'end' when reverse is false (dropdown on the right/bottom) and 'start' when reverse is true (dropdown on the left/top).",
4011
+ valueType: "string",
4012
+ availableValues: alignmentOptionMd
4013
+ },
4014
+ triggerTemplate: dTriggerTemplate(COMP$1w),
3919
4015
  gap: {
3920
4016
  description: "Gap between child elements in pixels. Controls the spacing between items in the responsive bar layout.",
3921
4017
  valueType: "number",
3922
4018
  defaultValue: defaultResponsiveBarProps.gap
4019
+ },
4020
+ reverse: {
4021
+ description: "Reverses the direction of child elements. In horizontal mode, items are arranged from right to left instead of left to right. In vertical mode, items are arranged from bottom to top instead of top to bottom. The dropdown menu position also adjusts to appear at the start (left/top) instead of the end (right/bottom).",
4022
+ valueType: "boolean",
4023
+ defaultValue: defaultResponsiveBarProps.reverse
3923
4024
  }
3924
4025
  },
3925
4026
  events: {
3926
- click: dClick(COMP$1w)
4027
+ click: dClick(COMP$1w),
4028
+ willOpen: d(
4029
+ `This event fires when the \`${COMP$1w}\` overflow dropdown menu is about to be opened. You can prevent opening the menu by returning \`false\` from the event handler. Otherwise, the menu will open at the end of the event handler like normal.`
4030
+ )
4031
+ },
4032
+ apis: {
4033
+ close: {
4034
+ description: `This method closes the overflow dropdown menu.`,
4035
+ signature: "close(): void"
4036
+ },
4037
+ open: {
4038
+ description: `This method opens the overflow dropdown menu.`,
4039
+ signature: "open(): void"
4040
+ },
4041
+ hasOverflow: {
4042
+ description: `This method returns true if the ResponsiveBar currently has an overflow menu (i.e., some items don't fit and are in the dropdown).`,
4043
+ signature: "hasOverflow(): boolean"
4044
+ }
4045
+ },
4046
+ contextVars: {
4047
+ $overflow: {
4048
+ description: "Boolean indicating whether the child component is displayed in the overflow dropdown menu (true) or visible in the main bar (false).",
4049
+ valueType: "boolean"
4050
+ }
3927
4051
  },
3928
- apis: {},
3929
- contextVars: {},
3930
4052
  themeVars: parseScssVar(styles$1i.themeVars),
3931
4053
  limitThemeVarsToComponent: true,
3932
4054
  defaultThemeVars: {
@@ -3938,16 +4060,43 @@ const ResponsiveBarMd = createMetadata({
3938
4060
  const responsiveBarComponentRenderer = createComponentRenderer(
3939
4061
  COMP$1w,
3940
4062
  ResponsiveBarMd,
3941
- ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
4063
+ ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler, registerComponentApi, layoutContext }) => {
4064
+ const children = Array.isArray(node.children) ? node.children : node.children ? [node.children] : [];
4065
+ const renderChildWithContext = (childNode, isOverflow) => /* @__PURE__ */ jsx(
4066
+ ResponsiveBarItem,
4067
+ {
4068
+ node: childNode,
4069
+ isOverflow,
4070
+ renderChild: renderChild2,
4071
+ layoutContext
4072
+ }
4073
+ );
3942
4074
  return /* @__PURE__ */ jsx(
3943
4075
  ResponsiveBar,
3944
4076
  {
3945
4077
  orientation: extractValue(node.props?.orientation),
3946
4078
  overflowIcon: extractValue(node.props?.overflowIcon),
4079
+ dropdownText: extractValue(node.props?.dropdownText),
4080
+ dropdownAlignment: extractValue(node.props?.dropdownAlignment),
4081
+ triggerTemplate: renderChild2(node.props?.triggerTemplate),
3947
4082
  gap: extractValue(node.props?.gap),
4083
+ reverse: extractValue.asOptionalBoolean(node.props?.reverse),
3948
4084
  onClick: lookupEventHandler("click"),
4085
+ onWillOpen: lookupEventHandler("willOpen"),
4086
+ registerComponentApi,
3949
4087
  className,
3950
- children: renderChild2(node.children)
4088
+ childNodes: children,
4089
+ renderChildFn: renderChildWithContext,
4090
+ children: children.map((child, index) => /* @__PURE__ */ jsx(
4091
+ ResponsiveBarItem,
4092
+ {
4093
+ node: child,
4094
+ isOverflow: false,
4095
+ renderChild: renderChild2,
4096
+ layoutContext
4097
+ },
4098
+ index
4099
+ ))
3951
4100
  }
3952
4101
  );
3953
4102
  }
@@ -4212,42 +4361,32 @@ const TextArea = forwardRef(function TextArea2({
4212
4361
  autoComplete: "off"
4213
4362
  };
4214
4363
  if (resize2 === "both" || resize2 === "horizontal" || resize2 === "vertical") {
4215
- return /* @__PURE__ */ jsx(
4364
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
4216
4365
  TextAreaResizable$1,
4217
4366
  {
4218
4367
  ...textareaProps,
4219
- "data-part-id": PART_INPUT,
4220
4368
  style: style2,
4221
4369
  className: classnames(classes),
4222
4370
  maxRows,
4223
4371
  minRows,
4224
4372
  rows
4225
4373
  }
4226
- );
4374
+ ) });
4227
4375
  }
4228
4376
  if (autoSize || !isNil(maxRows) || !isNil(minRows)) {
4229
- return /* @__PURE__ */ jsx(
4377
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
4230
4378
  TextareaAutosize,
4231
4379
  {
4232
4380
  ...textareaProps,
4233
- "data-part-id": PART_INPUT,
4234
4381
  style: style2,
4235
4382
  className: classnames(classes),
4236
4383
  maxRows,
4237
4384
  minRows,
4238
4385
  rows
4239
4386
  }
4240
- );
4387
+ ) });
4241
4388
  }
4242
- return /* @__PURE__ */ jsx(
4243
- "textarea",
4244
- {
4245
- ...textareaProps,
4246
- "data-part-id": PART_INPUT,
4247
- rows,
4248
- className: classnames(classes)
4249
- }
4250
- );
4389
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx("textarea", { ...textareaProps, rows, className: classnames(classes) }) });
4251
4390
  });
4252
4391
  const COMP$1u = "TextArea";
4253
4392
  const resizeOptionsMd = [
@@ -4838,17 +4977,16 @@ const AppHeader = ({
4838
4977
  [styles$1b.full]: !canRestrictContentWidth
4839
4978
  }),
4840
4979
  children: [
4841
- hasRegisteredNavPanel && /* @__PURE__ */ jsx(
4980
+ hasRegisteredNavPanel && /* @__PURE__ */ jsx(Part, { partId: PART_HAMBURGER, children: /* @__PURE__ */ jsx(
4842
4981
  Button,
4843
4982
  {
4844
- "data-part-id": PART_HAMBURGER,
4845
4983
  onClick: toggleDrawer,
4846
4984
  icon: /* @__PURE__ */ jsx(Icon, { name: "hamburger" }),
4847
4985
  variant: "ghost",
4848
4986
  className: styles$1b.drawerToggle,
4849
4987
  style: { color: "inherit", flexShrink: 0 }
4850
4988
  }
4851
- ),
4989
+ ) }),
4852
4990
  /* @__PURE__ */ jsx("div", { className: styles$1b.logoAndTitle, children: (showLogo || !effectiveNavPanelVisible) && (logoContent ? /* @__PURE__ */ jsxs(Fragment, { children: [
4853
4991
  /* @__PURE__ */ jsx("div", { className: styles$1b.customLogoContainer, children: logoContent }),
4854
4992
  safeLogoTitle
@@ -8341,6 +8479,11 @@ const COMP$1t = "NavLink";
8341
8479
  const NavLinkMd = createMetadata({
8342
8480
  status: "stable",
8343
8481
  description: "`NavLink` creates interactive navigation items that connect users to different destinations within an app or external URLs. It automatically indicates active states, supports custom icons and labels, and can execute custom actions instead of navigation when needed.",
8482
+ parts: {
8483
+ indicator: {
8484
+ description: "The active indicator within the NavLink component."
8485
+ }
8486
+ },
8344
8487
  props: {
8345
8488
  to: d(`This property defines the URL of the link.`),
8346
8489
  enabled: dEnabled(),
@@ -8475,16 +8618,16 @@ const LinkNative = forwardRef(function LinkNative2(props, forwardedRef) {
8475
8618
  [styles$17.disabled]: disabled2
8476
8619
  }),
8477
8620
  children: [
8478
- icon2 && /* @__PURE__ */ jsx("div", { className: styles$17.iconWrapper, children: /* @__PURE__ */ jsx(Icon, { name: icon2 }) }),
8621
+ icon2 && /* @__PURE__ */ jsx(Part, { partId: PART_ICON, children: /* @__PURE__ */ jsx("div", { className: styles$17.iconWrapper, children: /* @__PURE__ */ jsx(Icon, { name: icon2 }) }) }),
8479
8622
  children
8480
8623
  ]
8481
8624
  }
8482
8625
  );
8483
8626
  });
8484
8627
  function specifyTypes(props) {
8485
- const { target: target2, referrerPolicy } = props;
8628
+ const { target: target2, referrerPolicy, ...rest } = props;
8486
8629
  return {
8487
- ...props,
8630
+ ...rest,
8488
8631
  target: target2,
8489
8632
  referrerPolicy
8490
8633
  };
@@ -8493,6 +8636,11 @@ const COMP$1s = "Link";
8493
8636
  const LinkMd = createMetadata({
8494
8637
  status: "stable",
8495
8638
  description: "`Link` creates clickable navigation elements for internal app routes or external URLs. You can use the `label` and `icon` properties for simple text links, or embed custom components like buttons, cards, or complex layouts for rich interactive link presentations.",
8639
+ parts: {
8640
+ icon: {
8641
+ description: "The icon within the Link component."
8642
+ }
8643
+ },
8496
8644
  props: {
8497
8645
  to: d(
8498
8646
  "This property defines the URL of the link. If the value is not defined, the link cannot be activated."
@@ -10572,6 +10720,11 @@ const COMP$1p = "Button";
10572
10720
  const ButtonMd = createMetadata({
10573
10721
  status: "stable",
10574
10722
  description: "`Button` is the primary interactive component for triggering actions like form submissions, navigation, opening modals, and API calls. It supports multiple visual styles and sizes to match different UI contexts and importance levels.",
10723
+ parts: {
10724
+ icon: {
10725
+ description: "The icon displayed within the button, if any."
10726
+ }
10727
+ },
10575
10728
  props: {
10576
10729
  autoFocus: {
10577
10730
  description: "Indicates if the button should receive focus when the page loads.",
@@ -13505,12 +13658,11 @@ const Toggle = forwardRef(function Toggle2({
13505
13658
  }, [focus, registerComponentApi, setValue]);
13506
13659
  const input2 = useMemo(() => {
13507
13660
  const legitValue = transformToLegitValue(value);
13508
- return /* @__PURE__ */ jsx(
13661
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
13509
13662
  "input",
13510
13663
  {
13511
13664
  ...rest,
13512
13665
  id,
13513
- "data-part-id": PART_INPUT,
13514
13666
  ref,
13515
13667
  type: "checkbox",
13516
13668
  role: variant,
@@ -13537,7 +13689,7 @@ const Toggle = forwardRef(function Toggle2({
13537
13689
  [styles$11.forceHover]: forceHover2
13538
13690
  })
13539
13691
  }
13540
- );
13692
+ ) });
13541
13693
  }, [
13542
13694
  rest,
13543
13695
  className,
@@ -14094,10 +14246,9 @@ const PaginationNative = forwardRef(function PaginationNative2({
14094
14246
  const visiblePages = getVisiblePages();
14095
14247
  const isFirstPage = currentPage === 0;
14096
14248
  const isLastPage = currentPage === totalPages - 1;
14097
- const buttonRow2 = /* @__PURE__ */ jsxs(
14249
+ const buttonRow2 = /* @__PURE__ */ jsx(Part, { partId: "pagination-controls", children: /* @__PURE__ */ jsxs(
14098
14250
  "ul",
14099
14251
  {
14100
- "data-component": `pagination-controls`,
14101
14252
  className: classnames(styles$10.buttonRow, {
14102
14253
  [styles$10.paginationListVertical]: orientation === "vertical"
14103
14254
  // layout is already horizontal by default
@@ -14207,37 +14358,30 @@ const PaginationNative = forwardRef(function PaginationNative2({
14207
14358
  ) })
14208
14359
  ]
14209
14360
  }
14210
- );
14211
- const pageSizeSelector = showPageSizeSelector && pageSizeOptions && pageSizeOptions.length > 1 && /* @__PURE__ */ jsx(
14212
- "div",
14361
+ ) });
14362
+ const pageSizeSelector = showPageSizeSelector && pageSizeOptions && pageSizeOptions.length > 1 && /* @__PURE__ */ jsx(Part, { partId: "page-size-selector-container", children: /* @__PURE__ */ jsx("div", { className: classnames(styles$10.selectorContainer), children: /* @__PURE__ */ jsx(
14363
+ ItemWithLabel,
14213
14364
  {
14214
- "data-component": `page-size-selector-container`,
14215
- className: classnames(styles$10.selectorContainer),
14365
+ id: `${id}-page-size-selector`,
14366
+ label: "Items per page",
14367
+ enabled: enabled2,
14368
+ style: style2,
14369
+ className,
14370
+ labelPosition: orientation === "vertical" ? "top" : "start",
14216
14371
  children: /* @__PURE__ */ jsx(
14217
- ItemWithLabel,
14372
+ "select",
14218
14373
  {
14219
14374
  id: `${id}-page-size-selector`,
14220
- label: "Items per page",
14221
- enabled: enabled2,
14222
- style: style2,
14223
- className,
14224
- labelPosition: orientation === "vertical" ? "top" : "start",
14225
- children: /* @__PURE__ */ jsx(
14226
- "select",
14227
- {
14228
- id: `${id}-page-size-selector`,
14229
- value: pageSize,
14230
- onChange: (e) => handlePageSizeChange(Number(e.target.value)),
14231
- disabled: !enabled2,
14232
- className: styles$10.pageSizeSelect,
14233
- children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
14234
- }
14235
- )
14375
+ value: pageSize,
14376
+ onChange: (e) => handlePageSizeChange(Number(e.target.value)),
14377
+ disabled: !enabled2,
14378
+ className: styles$10.pageSizeSelect,
14379
+ children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
14236
14380
  }
14237
14381
  )
14238
14382
  }
14239
- );
14240
- const pageInfo = showPageInfo && /* @__PURE__ */ jsx("div", { "data-component": `page-info`, className: classnames(styles$10.pageInfo), children: /* @__PURE__ */ jsxs(Text, { variant: "secondary", children: [
14383
+ ) }) });
14384
+ const pageInfo = showPageInfo && /* @__PURE__ */ jsx(Part, { partId: "page-info", children: /* @__PURE__ */ jsx("div", { className: classnames(styles$10.pageInfo), children: /* @__PURE__ */ jsxs(Text, { variant: "secondary", children: [
14241
14385
  "Page ",
14242
14386
  currentPageNumber,
14243
14387
  " of ",
@@ -14245,7 +14389,7 @@ const PaginationNative = forwardRef(function PaginationNative2({
14245
14389
  " (",
14246
14390
  itemCount,
14247
14391
  " items)"
14248
- ] }) });
14392
+ ] }) }) });
14249
14393
  return /* @__PURE__ */ jsxs(
14250
14394
  "nav",
14251
14395
  {
@@ -15058,6 +15202,15 @@ const COMP$1l = "Table";
15058
15202
  const TableMd = createMetadata({
15059
15203
  status: "stable",
15060
15204
  description: "`Table` presents structured data for viewing, sorting, selection, and interaction.",
15205
+ // NOTE: let's leave it like this for now, we'll expand later when the need arises
15206
+ parts: {
15207
+ table: {
15208
+ description: "The main table container."
15209
+ },
15210
+ pagination: {
15211
+ description: "The pagination controls container."
15212
+ }
15213
+ },
15061
15214
  props: {
15062
15215
  items: dInternal(
15063
15216
  `You can use \`items\` as an alias for the \`data\` property. When you bind the table to a data source (e.g. an API endpoint), the \`data\` acts as the property that accepts a URL to fetch information from an API. When both \`items\` and \`data\` are used, \`items\` has priority.`
@@ -15728,20 +15881,22 @@ const avatarComponentRenderer = createComponentRenderer(
15728
15881
  }
15729
15882
  );
15730
15883
  const themeVars$D = `'{"backgroundColor-ContentSeparator": "var(--xmlui-backgroundColor-ContentSeparator)", "thickness-ContentSeparator": "var(--xmlui-thickness-ContentSeparator)", "length-ContentSeparator": "var(--xmlui-length-ContentSeparator)", "marginTop-ContentSeparator": "var(--xmlui-marginTop-ContentSeparator)", "marginBottom-ContentSeparator": "var(--xmlui-marginBottom-ContentSeparator)", "marginVertical-ContentSeparator": "var(--xmlui-marginVertical-ContentSeparator)", "marginLeft-ContentSeparator": "var(--xmlui-marginLeft-ContentSeparator)", "marginRight-ContentSeparator": "var(--xmlui-marginRight-ContentSeparator)", "marginHorizontal-ContentSeparator": "var(--xmlui-marginHorizontal-ContentSeparator)", "paddingTop-ContentSeparator": "var(--xmlui-paddingTop-ContentSeparator)", "paddingBottom-ContentSeparator": "var(--xmlui-paddingBottom-ContentSeparator)", "paddingVertical-ContentSeparator": "var(--xmlui-paddingVertical-ContentSeparator)", "paddingLeft-ContentSeparator": "var(--xmlui-paddingLeft-ContentSeparator)", "paddingRight-ContentSeparator": "var(--xmlui-paddingRight-ContentSeparator)", "paddingHorizontal-ContentSeparator": "var(--xmlui-paddingHorizontal-ContentSeparator)"}'`;
15731
- const separator = "_separator_1r9lf_14";
15732
- const horizontal$3 = "_horizontal_1r9lf_27";
15733
- const vertical$3 = "_vertical_1r9lf_31";
15884
+ const separator = "_separator_hmp7g_14";
15885
+ const horizontal$3 = "_horizontal_hmp7g_27";
15886
+ const stretchToFit = "_stretchToFit_hmp7g_31";
15887
+ const vertical$3 = "_vertical_hmp7g_35";
15734
15888
  const styles$Y = {
15735
15889
  themeVars: themeVars$D,
15736
15890
  separator,
15737
15891
  horizontal: horizontal$3,
15892
+ stretchToFit,
15738
15893
  vertical: vertical$3
15739
15894
  };
15740
15895
  const defaultProps$W = {
15741
15896
  orientation: "horizontal"
15742
15897
  };
15743
15898
  const ContentSeparator = forwardRef(
15744
- ({ orientation = defaultProps$W.orientation, thickness, length, style: style2, className, ...rest }, ref) => {
15899
+ ({ orientation = defaultProps$W.orientation, thickness, length, hasExplicitLength = false, style: style2, className, ...rest }, ref) => {
15745
15900
  const inlineStyles = {};
15746
15901
  if (thickness !== void 0) {
15747
15902
  if (orientation === "horizontal") {
@@ -15766,7 +15921,8 @@ const ContentSeparator = forwardRef(
15766
15921
  styles$Y.separator,
15767
15922
  {
15768
15923
  [styles$Y.horizontal]: orientation === "horizontal",
15769
- [styles$Y.vertical]: orientation === "vertical"
15924
+ [styles$Y.vertical]: orientation === "vertical",
15925
+ [styles$Y.stretchToFit]: !hasExplicitLength
15770
15926
  },
15771
15927
  className
15772
15928
  ),
@@ -15819,12 +15975,16 @@ const contentSeparatorComponentRenderer = createComponentRenderer(
15819
15975
  COMP$1h,
15820
15976
  ContentSeparatorMd,
15821
15977
  ({ node, className, extractValue }) => {
15978
+ const orientation = extractValue(node.props.orientation);
15979
+ const length = extractValue.asSize(node.props.length);
15980
+ const hasExplicitLength = length !== void 0 || orientation === "vertical" && node.props.height !== void 0 || orientation === "horizontal" && node.props.width !== void 0;
15822
15981
  return /* @__PURE__ */ jsx(
15823
15982
  ContentSeparator,
15824
15983
  {
15825
- orientation: extractValue(node.props.orientation),
15984
+ orientation,
15826
15985
  thickness: extractValue.asSize(node.props.thickness),
15827
- length: extractValue.asSize(node.props.length),
15986
+ length,
15987
+ hasExplicitLength,
15828
15988
  className
15829
15989
  }
15830
15990
  );
@@ -15901,6 +16061,17 @@ const COMP$1g = "Card";
15901
16061
  const CardMd = createMetadata({
15902
16062
  status: "stable",
15903
16063
  description: "`Card` is a versatile container that groups related content with a visual boundary, typically featuring background color, padding, borders, and rounded corners. It's ideal for organizing information, creating sections, and establishing visual hierarchy in your interface.",
16064
+ parts: {
16065
+ avatar: {
16066
+ description: "The avatar displayed within the card, if any."
16067
+ },
16068
+ title: {
16069
+ description: "The title of the card."
16070
+ },
16071
+ subtitle: {
16072
+ description: "The subtitle of the card."
16073
+ }
16074
+ },
15904
16075
  props: {
15905
16076
  avatarUrl: {
15906
16077
  description: `The url for an avarar image. If not specified, but [\`showAvatar\`](#showAvatar) is true, ${COMP$1g} will show the first letters of the [\`title\`](#title).`,
@@ -16350,11 +16521,10 @@ const ModalDialog = React__default.forwardRef(
16350
16521
  if (!root2) {
16351
16522
  return null;
16352
16523
  }
16353
- const Content2 = /* @__PURE__ */ jsxs(
16524
+ const Content2 = /* @__PURE__ */ jsx(Part, { partId: PART_CONTENT, children: /* @__PURE__ */ jsxs(
16354
16525
  SheetPrimitive.Content,
16355
16526
  {
16356
16527
  ...rest,
16357
- "data-part-id": PART_CONTENT,
16358
16528
  className: classnames(
16359
16529
  {
16360
16530
  [styles$V.contentAnimation]: !externalAnimation
@@ -16370,7 +16540,7 @@ const ModalDialog = React__default.forwardRef(
16370
16540
  ref: composedRef,
16371
16541
  style: { ...style2, gap: void 0 },
16372
16542
  children: [
16373
- !!title2 && /* @__PURE__ */ jsx(SheetPrimitive.Title, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx("header", { id: "dialogTitle", className: styles$V.dialogTitle, "data-part-id": PART_TITLE, children: title2 }) }),
16543
+ !!title2 && /* @__PURE__ */ jsx(Part, { partId: PART_TITLE, children: /* @__PURE__ */ jsx(SheetPrimitive.Title, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx("header", { id: "dialogTitle", className: styles$V.dialogTitle, children: title2 }) }) }),
16374
16544
  /* @__PURE__ */ jsx("div", { className: styles$V.innerContent, style: { gap: style2?.gap }, children: /* @__PURE__ */ jsx(ModalVisibilityContext.Provider, { value: modalVisibilityContextValue, children }) }),
16375
16545
  closeButtonVisible && /* @__PURE__ */ jsx(SheetPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(
16376
16546
  Button,
@@ -16385,7 +16555,7 @@ const ModalDialog = React__default.forwardRef(
16385
16555
  ) })
16386
16556
  ]
16387
16557
  }
16388
- );
16558
+ ) });
16389
16559
  return /* @__PURE__ */ jsx(SheetPrimitive.Root, { open: isOpen, onOpenChange: (open) => open ? doOpen() : doClose(), children: /* @__PURE__ */ jsxs(SheetPrimitive.Portal, { container: root2, children: [
16390
16560
  isDialogRootInShadowDom && /*
16391
16561
  In the Shadow DOM we can omit the Dialog.Overlay,
@@ -17461,6 +17631,14 @@ const COMP$14 = "Splitter";
17461
17631
  const baseSplitterMd = createMetadata({
17462
17632
  status: "stable",
17463
17633
  description: "`Splitter` component divides a container into two resizable sections. These are are identified by their names: primary and secondary. They have a draggable bar between them. When only a single child is visible (due to conditional rendering with `when` attributes), the splitter bar is not displayed and the single panel stretches to fill the entire viewport of the splitter container.",
17634
+ parts: {
17635
+ primaryPanel: {
17636
+ description: "The primary section/panel of the `Splitter` component."
17637
+ },
17638
+ secondaryPanel: {
17639
+ description: "The secondary section/panel of the `Splitter` component."
17640
+ }
17641
+ },
17464
17642
  props: {
17465
17643
  swapped: {
17466
17644
  description: `This optional booelan property indicates whether the \`${COMP$14}\` sections are layed out as primary and secondary (\`false\`) or secondary and primary (\`true\`) from left to right.`,
@@ -17517,7 +17695,7 @@ const SplitterMd = {
17517
17695
  const HSplitterMd = { ...baseSplitterMd, specializedFrom: COMP$14 };
17518
17696
  const VSplitterMd = { ...baseSplitterMd, specializedFrom: COMP$14 };
17519
17697
  const DEFAULT_ORIENTATION = "vertical";
17520
- function renderSplitter({
17698
+ function SplitterRenderer({
17521
17699
  node,
17522
17700
  extractValue,
17523
17701
  className,
@@ -17533,7 +17711,7 @@ function renderSplitter({
17533
17711
  const rendered = renderChild2(node.children);
17534
17712
  return rendered ? [rendered] : [];
17535
17713
  }
17536
- return node.children.map((child, index) => renderChild2(child)).filter((child) => child !== null && child !== void 0).map((child, index) => React__default.cloneElement(child, { key: index }));
17714
+ return node.children.map((child) => renderChild2(child)).filter((child) => child !== null && child !== void 0).map((child, index) => React__default.cloneElement(child, { key: index }));
17537
17715
  }, [node.children, renderChild2]);
17538
17716
  const visibleChildCount = renderedChildren.length;
17539
17717
  return /* @__PURE__ */ jsx(
@@ -17557,7 +17735,7 @@ const splitterComponentRenderer = createComponentRenderer(
17557
17735
  COMP$14,
17558
17736
  SplitterMd,
17559
17737
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
17560
- return renderSplitter({
17738
+ return SplitterRenderer({
17561
17739
  node,
17562
17740
  extractValue,
17563
17741
  className,
@@ -17570,7 +17748,7 @@ const vSplitterComponentRenderer = createComponentRenderer(
17570
17748
  "VSplitter",
17571
17749
  VSplitterMd,
17572
17750
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
17573
- return renderSplitter({
17751
+ return SplitterRenderer({
17574
17752
  node,
17575
17753
  extractValue,
17576
17754
  className,
@@ -17584,7 +17762,7 @@ const hSplitterComponentRenderer = createComponentRenderer(
17584
17762
  "HSplitter",
17585
17763
  HSplitterMd,
17586
17764
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
17587
- return renderSplitter({
17765
+ return SplitterRenderer({
17588
17766
  node,
17589
17767
  extractValue,
17590
17768
  className,
@@ -20053,21 +20231,12 @@ const TextBox = forwardRef(function TextBox2({
20053
20231
  onFocus: focus,
20054
20232
  style: { ...style2, gap },
20055
20233
  children: [
20056
- /* @__PURE__ */ jsx(
20057
- Adornment,
20058
- {
20059
- "data-part-id": PART_START_ADORNMENT,
20060
- text: startText,
20061
- iconName: startIcon,
20062
- className: classnames(styles$N.adornment)
20063
- }
20064
- ),
20065
- /* @__PURE__ */ jsx(
20234
+ /* @__PURE__ */ jsx(Part, { partId: PART_START_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: startText, iconName: startIcon, className: classnames(styles$N.adornment) }) }),
20235
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
20066
20236
  "input",
20067
20237
  {
20068
20238
  id,
20069
20239
  ref: inputRef,
20070
- "data-part-id": PART_INPUT,
20071
20240
  type: actualType,
20072
20241
  className: classnames(styles$N.input, {
20073
20242
  [styles$N.readOnly]: readOnly2
@@ -20085,33 +20254,23 @@ const TextBox = forwardRef(function TextBox2({
20085
20254
  tabIndex: enabled2 ? tabIndex : -1,
20086
20255
  required: required2
20087
20256
  }
20088
- ),
20089
- !readOnly2 && enabled2 && type == "search" && localValue?.length > 0 && /* @__PURE__ */ jsx(
20257
+ ) }),
20258
+ !readOnly2 && enabled2 && type == "search" && localValue?.length > 0 && /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(
20090
20259
  Adornment,
20091
20260
  {
20092
- "data-part-id": PART_END_ADORNMENT,
20093
20261
  iconName: "close",
20094
20262
  className: styles$N.adornment,
20095
20263
  onClick: () => updateValue("")
20096
20264
  }
20097
- ),
20098
- type === "password" && showPasswordToggle ? /* @__PURE__ */ jsx(
20265
+ ) }),
20266
+ type === "password" && showPasswordToggle ? /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(
20099
20267
  Adornment,
20100
20268
  {
20101
- "data-part-id": PART_END_ADORNMENT,
20102
20269
  iconName: showPassword ? passwordVisibleIcon : passwordHiddenIcon,
20103
20270
  className: classnames(styles$N.adornment, styles$N.passwordToggle),
20104
20271
  onClick: togglePasswordVisibility
20105
20272
  }
20106
- ) : /* @__PURE__ */ jsx(
20107
- Adornment,
20108
- {
20109
- "data-part-id": PART_END_ADORNMENT,
20110
- text: endText,
20111
- iconName: endIcon,
20112
- className: styles$N.adornment
20113
- }
20114
- )
20273
+ ) }) : /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: endText, iconName: endIcon, className: styles$N.adornment }) })
20115
20274
  ]
20116
20275
  }
20117
20276
  );
@@ -20753,20 +20912,11 @@ const NumberBox = forwardRef(function NumberBox2({
20753
20912
  },
20754
20913
  style: { ...style2, gap },
20755
20914
  children: [
20756
- /* @__PURE__ */ jsx(
20757
- Adornment,
20758
- {
20759
- "data-part-id": PART_START_ADORNMENT,
20760
- text: startText,
20761
- iconName: startIcon,
20762
- className: classnames(styles$K.adornment)
20763
- }
20764
- ),
20765
- /* @__PURE__ */ jsx(
20915
+ /* @__PURE__ */ jsx(Part, { partId: PART_START_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: startText, iconName: startIcon, className: classnames(styles$K.adornment) }) }),
20916
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
20766
20917
  "input",
20767
20918
  {
20768
20919
  id,
20769
- "data-part-id": PART_INPUT,
20770
20920
  type: "text",
20771
20921
  inputMode: "numeric",
20772
20922
  className: classnames(styles$K.input, {
@@ -20788,21 +20938,12 @@ const NumberBox = forwardRef(function NumberBox2({
20788
20938
  maxLength,
20789
20939
  required: required2
20790
20940
  }
20791
- ),
20792
- /* @__PURE__ */ jsx(
20793
- Adornment,
20794
- {
20795
- "data-part-id": PART_END_ADORNMENT,
20796
- text: endText,
20797
- iconName: endIcon,
20798
- className: classnames(styles$K.adornment)
20799
- }
20800
- ),
20941
+ ) }),
20942
+ /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: endText, iconName: endIcon, className: classnames(styles$K.adornment) }) }),
20801
20943
  hasSpinBox && /* @__PURE__ */ jsxs("div", { className: styles$K.spinnerBox, children: [
20802
- /* @__PURE__ */ jsx(
20944
+ /* @__PURE__ */ jsx(Part, { partId: PART_SPINNER_UP, children: /* @__PURE__ */ jsx(
20803
20945
  Button,
20804
20946
  {
20805
- "data-part-id": PART_SPINNER_UP,
20806
20947
  "data-spinner": "up",
20807
20948
  type: "button",
20808
20949
  role: "spinbutton",
@@ -20814,11 +20955,10 @@ const NumberBox = forwardRef(function NumberBox2({
20814
20955
  ref: upButton,
20815
20956
  children: /* @__PURE__ */ jsx(Icon, { name: spinnerUpIcon || "spinnerUp:NumberBox", fallback: "chevronup", size: "sm" })
20816
20957
  }
20817
- ),
20818
- /* @__PURE__ */ jsx(
20958
+ ) }),
20959
+ /* @__PURE__ */ jsx(Part, { partId: PART_SPINNER_DOWN, children: /* @__PURE__ */ jsx(
20819
20960
  Button,
20820
20961
  {
20821
- "data-part-id": PART_SPINNER_DOWN,
20822
20962
  "data-spinner": "down",
20823
20963
  type: "button",
20824
20964
  role: "spinbutton",
@@ -20837,7 +20977,7 @@ const NumberBox = forwardRef(function NumberBox2({
20837
20977
  }
20838
20978
  )
20839
20979
  }
20840
- )
20980
+ ) })
20841
20981
  ] })
20842
20982
  ]
20843
20983
  }
@@ -21021,7 +21161,7 @@ function HiddenOption(option) {
21021
21161
  return /* @__PURE__ */ jsx("div", { ref: (el) => setNode(el), style: { display: "none" }, children: option.children });
21022
21162
  }
21023
21163
  const PART_LIST_WRAPPER$1 = "listWrapper";
21024
- const PART_CLEAR_BUTTON$2 = "clearButton";
21164
+ const PART_CLEAR_BUTTON$1 = "clearButton";
21025
21165
  const defaultProps$G = {
21026
21166
  enabled: true,
21027
21167
  placeholder: "",
@@ -21087,10 +21227,9 @@ const SelectTriggerActions = ({
21087
21227
  }) => {
21088
21228
  const hasValue = multiSelect ? Array.isArray(value) && value.length > 0 : value !== void 0 && value !== null && value !== "";
21089
21229
  return /* @__PURE__ */ jsxs("div", { className: styles$J.actions, children: [
21090
- hasValue && enabled2 && !readOnly2 && clearable && /* @__PURE__ */ jsx(
21230
+ hasValue && enabled2 && !readOnly2 && clearable && /* @__PURE__ */ jsx(Part, { partId: PART_CLEAR_BUTTON$1, children: /* @__PURE__ */ jsx(
21091
21231
  "span",
21092
21232
  {
21093
- "data-part-id": PART_CLEAR_BUTTON$2,
21094
21233
  className: styles$J.action,
21095
21234
  onClick: (event) => {
21096
21235
  event.stopPropagation();
@@ -21098,7 +21237,7 @@ const SelectTriggerActions = ({
21098
21237
  },
21099
21238
  children: /* @__PURE__ */ jsx(Icon, { name: "close" })
21100
21239
  }
21101
- ),
21240
+ ) }),
21102
21241
  showChevron && /* @__PURE__ */ jsx("span", { className: styles$J.action, children: /* @__PURE__ */ jsx(Icon, { name: "chevrondown" }) })
21103
21242
  ] });
21104
21243
  };
@@ -21366,7 +21505,7 @@ const Select = forwardRef(function Select2({
21366
21505
  },
21367
21506
  modal: false,
21368
21507
  children: [
21369
- /* @__PURE__ */ jsxs(
21508
+ /* @__PURE__ */ jsx(Part, { partId: PART_LIST_WRAPPER$1, children: /* @__PURE__ */ jsxs(
21370
21509
  PopoverTrigger,
21371
21510
  {
21372
21511
  ...rest,
@@ -21378,7 +21517,6 @@ const Select = forwardRef(function Select2({
21378
21517
  onBlur,
21379
21518
  disabled: !enabled2,
21380
21519
  "aria-expanded": open,
21381
- "data-part-id": PART_LIST_WRAPPER$1,
21382
21520
  className: classnames(className, styles$J.selectTrigger, styles$J[validationStatus], {
21383
21521
  [styles$J.disabled]: !enabled2,
21384
21522
  [styles$J.multi]: multiSelect
@@ -21431,7 +21569,7 @@ const Select = forwardRef(function Select2({
21431
21569
  )
21432
21570
  ]
21433
21571
  }
21434
- ),
21572
+ ) }),
21435
21573
  open && /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsx(
21436
21574
  PopoverContent,
21437
21575
  {
@@ -22767,14 +22905,18 @@ const Form = forwardRef(function({
22767
22905
  dispatch(formSubmitting());
22768
22906
  try {
22769
22907
  const filteredSubject = validationResult.data;
22770
- const canSubmit = await onWillSubmit?.(filteredSubject);
22771
- if (canSubmit === false) {
22908
+ const willSubmitResult = await onWillSubmit?.(filteredSubject);
22909
+ if (willSubmitResult === false) {
22772
22910
  dispatch(
22773
22911
  backendValidationArrived({ generalValidationResults: [], fieldValidationResults: {} })
22774
22912
  );
22775
22913
  return;
22776
22914
  }
22777
- const result = await onSubmit?.(filteredSubject, {
22915
+ let dataToSubmit = filteredSubject;
22916
+ if (willSubmitResult !== null && willSubmitResult !== void 0 && willSubmitResult !== "" && typeof willSubmitResult === "object" && !Array.isArray(willSubmitResult)) {
22917
+ dataToSubmit = willSubmitResult;
22918
+ }
22919
+ const result = await onSubmit?.(dataToSubmit, {
22778
22920
  passAsDefaultBody: true
22779
22921
  });
22780
22922
  dispatch(formSubmitted());
@@ -22842,10 +22984,9 @@ const Form = forwardRef(function({
22842
22984
  });
22843
22985
  });
22844
22986
  });
22845
- const cancelButton = cancelLabel === "" ? null : /* @__PURE__ */ jsx(
22987
+ const cancelButton = cancelLabel === "" ? null : /* @__PURE__ */ jsx(Part, { partId: PART_CANCEL_BUTTON, children: /* @__PURE__ */ jsx(
22846
22988
  Button,
22847
22989
  {
22848
- "data-part-id": PART_CANCEL_BUTTON,
22849
22990
  type: "button",
22850
22991
  themeColor: "secondary",
22851
22992
  variant: "ghost",
@@ -22853,18 +22994,9 @@ const Form = forwardRef(function({
22853
22994
  children: cancelLabel
22854
22995
  },
22855
22996
  "cancel"
22856
- );
22997
+ ) });
22857
22998
  const submitButton = useMemo(
22858
- () => /* @__PURE__ */ jsx(
22859
- Button,
22860
- {
22861
- "data-part-id": PART_SUBMIT_BUTTON,
22862
- type: "submit",
22863
- disabled: !isEnabled2 || !enableSubmit,
22864
- children: formState.submitInProgress ? saveInProgressLabel : saveLabel
22865
- },
22866
- "submit"
22867
- ),
22999
+ () => /* @__PURE__ */ jsx(Part, { partId: PART_SUBMIT_BUTTON, children: /* @__PURE__ */ jsx(Button, { type: "submit", disabled: !isEnabled2 || !enableSubmit, children: formState.submitInProgress ? saveInProgressLabel : saveLabel }, "submit") }),
22868
23000
  [isEnabled2, enableSubmit, formState.submitInProgress, saveInProgressLabel, saveLabel]
22869
23001
  );
22870
23002
  useEffect(() => {
@@ -23424,12 +23556,11 @@ const AutoComplete = forwardRef(function AutoComplete2({
23424
23556
  },
23425
23557
  modal: false,
23426
23558
  children: [
23427
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, ref: setReferenceElement, children: /* @__PURE__ */ jsxs(
23559
+ /* @__PURE__ */ jsx(Part, { partId: PART_LIST_WRAPPER, children: /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, ref: setReferenceElement, children: /* @__PURE__ */ jsxs(
23428
23560
  "div",
23429
23561
  {
23430
23562
  ref: forwardedRef,
23431
23563
  style: style2,
23432
- "data-part-id": PART_LIST_WRAPPER,
23433
23564
  className: classnames(
23434
23565
  className,
23435
23566
  styles$E.badgeListWrapper,
@@ -23464,7 +23595,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
23464
23595
  )
23465
23596
  ] }, index)) }),
23466
23597
  /* @__PURE__ */ jsxs("div", { className: styles$E.inputWrapper, children: [
23467
- /* @__PURE__ */ jsx(
23598
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
23468
23599
  "input",
23469
23600
  {
23470
23601
  ...rest,
@@ -23500,7 +23631,6 @@ const AutoComplete = forwardRef(function AutoComplete2({
23500
23631
  setOpen(true);
23501
23632
  }
23502
23633
  },
23503
- "data-part-id": PART_INPUT,
23504
23634
  readOnly: readOnly2,
23505
23635
  autoFocus,
23506
23636
  "aria-autocomplete": "list",
@@ -23514,7 +23644,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
23514
23644
  placeholder: !readOnly2 ? placeholder2 : "",
23515
23645
  className: styles$E.commandInput
23516
23646
  }
23517
- ),
23647
+ ) }),
23518
23648
  /* @__PURE__ */ jsxs("div", { className: styles$E.actions, children: [
23519
23649
  value?.length > 0 && enabled2 && !readOnly2 && /* @__PURE__ */ jsx(
23520
23650
  "span",
@@ -23543,7 +23673,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
23543
23673
  ] })
23544
23674
  ]
23545
23675
  }
23546
- ) }),
23676
+ ) }) }),
23547
23677
  open && /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsx(
23548
23678
  PopoverContent,
23549
23679
  {
@@ -24523,7 +24653,7 @@ function ApiInterceptorProvider({
24523
24653
  return;
24524
24654
  }
24525
24655
  void (async () => {
24526
- const { initMock } = await import("./initMock-BuPNXouY.js");
24656
+ const { initMock } = await import("./initMock-BsfLxhPR.js");
24527
24657
  const apiInstance2 = await initMock(interceptor);
24528
24658
  setApiInstance(apiInstance2);
24529
24659
  setInitialized(true);
@@ -24540,7 +24670,7 @@ function ApiInterceptorProvider({
24540
24670
  if (process.env.VITE_MOCK_ENABLED) {
24541
24671
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
24542
24672
  useWorker ? import("./apiInterceptorWorker-dwrAyq6l.js") : Promise.resolve({ createApiInterceptorWorker: () => null }),
24543
- import("./initMock-BuPNXouY.js")
24673
+ import("./initMock-BsfLxhPR.js")
24544
24674
  ]);
24545
24675
  if (interceptor || forceInitialize) {
24546
24676
  const apiInstance2 = await initMock(interceptor || {});
@@ -24577,7 +24707,7 @@ function ApiInterceptorProvider({
24577
24707
  void (async () => {
24578
24708
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
24579
24709
  import("./apiInterceptorWorker-dwrAyq6l.js"),
24580
- import("./initMock-BuPNXouY.js")
24710
+ import("./initMock-BsfLxhPR.js")
24581
24711
  ]);
24582
24712
  const apiInstance2 = await initMock(interceptor);
24583
24713
  await createApiInterceptorWorker(apiInstance2, parentInterceptorWorker);
@@ -26747,7 +26877,6 @@ const ColorPicker = forwardRef(
26747
26877
  [styles$u.warning]: validationStatus === "warning",
26748
26878
  [styles$u.valid]: validationStatus === "valid"
26749
26879
  }),
26750
- "data-part-id": PART_INPUT,
26751
26880
  style: style2,
26752
26881
  disabled: !enabled2,
26753
26882
  onFocus: handleOnFocus,
@@ -28348,6 +28477,15 @@ const COMP$X = "Form";
28348
28477
  const FormMd = createMetadata({
28349
28478
  status: "stable",
28350
28479
  description: "`Form` provides a structured container for collecting and validating user input, with built-in data binding, validation, and submission handling. It automatically manages form state and provides context for nested form controls to work together.",
28480
+ parts: {
28481
+ buttonRow: {
28482
+ description: "The container for the form action buttons (e.g., Save, Cancel)."
28483
+ },
28484
+ // NOTE: There is a ValidationSummary in the form and also one in the modal dialog.
28485
+ validationSummary: {
28486
+ description: "The area displaying validation summary messages for the form."
28487
+ }
28488
+ },
28351
28489
  props: {
28352
28490
  buttonRowTemplate: dComponent(
28353
28491
  `This property allows defining a custom component to display the buttons at the bottom of the form.`
@@ -28422,7 +28560,7 @@ const FormMd = createMetadata({
28422
28560
  },
28423
28561
  events: {
28424
28562
  willSubmit: d(
28425
- `The form infrastructure fires this event just before the form is submitted. The event argument is the current \`data\` value to be submitted. You can cancel the submission by returning \`false\` from the event handler.`
28563
+ `The form infrastructure fires this event just before the form is submitted. The event argument is the current \`data\` value to be submitted. The return value controls submission behavior: returning \`false\` cancels the submission; returning a plain object submits that object instead; returning \`null\`, \`undefined\`, an empty string, or any non-object value proceeds with normal submission.`
28426
28564
  ),
28427
28565
  submit: d(
28428
28566
  `The form infrastructure fires this event when the form is submitted. The event argument is the current \`data\` value to save.`
@@ -28571,6 +28709,12 @@ const NumberBoxMd = createMetadata({
28571
28709
  },
28572
28710
  input: {
28573
28711
  description: "The text box input area."
28712
+ },
28713
+ spinnerButtonUp: {
28714
+ description: "The spinner button for incrementing the value."
28715
+ },
28716
+ spinnerButtonDown: {
28717
+ description: "The spinner button for decrementing the value."
28574
28718
  }
28575
28719
  },
28576
28720
  props: {
@@ -29275,6 +29419,14 @@ const COMP$S = "NavPanel";
29275
29419
  const NavPanelMd = createMetadata({
29276
29420
  status: "stable",
29277
29421
  description: "`NavPanel` defines the navigation structure within an App, serving as a container for NavLink and NavGroup components that create your application's primary navigation menu. Its appearance and behavior automatically adapt based on the App's layout configuration.",
29422
+ parts: {
29423
+ logo: {
29424
+ description: "The logo area within the NavPanel component."
29425
+ },
29426
+ content: {
29427
+ description: "The content area within the NavPanel component."
29428
+ }
29429
+ },
29278
29430
  props: {
29279
29431
  logoTemplate: dComponent(
29280
29432
  `This property defines the logo template to display in the navigation panel with the \`vertical\` and \`vertical-sticky\` layout.`
@@ -29675,6 +29827,11 @@ const RGOption = `RadioGroupOption`;
29675
29827
  const RadioGroupMd = createMetadata({
29676
29828
  status: "stable",
29677
29829
  description: "`RadioGroup` creates a mutually exclusive selection interface where users can choose only one option from a group of radio buttons. It manages the selection state and ensures that selecting one option automatically deselects all others in the group.Radio options store their values as strings. Numbers and booleans are converted to strings when assigned, while objects, functions and arrays default to an empty string unless resolved via binding expressions.",
29830
+ parts: {
29831
+ label: {
29832
+ description: "The label displayed for the radio group."
29833
+ }
29834
+ },
29678
29835
  props: {
29679
29836
  initialValue: {
29680
29837
  ...dInitialValue(),
@@ -29804,6 +29961,14 @@ const DEFAULT_ICON = "browse:FileInput";
29804
29961
  const FileInputMd = createMetadata({
29805
29962
  status: "stable",
29806
29963
  description: "`FileInput` enables users to select files from their device's file system for upload or processing. It combines a text field displaying selected files with a customizable button that opens the system file browser. Use it for forms, media uploads, and document processing workflows.",
29964
+ parts: {
29965
+ label: {
29966
+ description: "The label displayed for the file input."
29967
+ },
29968
+ input: {
29969
+ description: "The file input area displaying selected file names."
29970
+ }
29971
+ },
29807
29972
  props: {
29808
29973
  placeholder: dPlaceholder(),
29809
29974
  initialValue: dInitialValue(),
@@ -29964,6 +30129,12 @@ const SelectMd = createMetadata({
29964
30129
  parts: {
29965
30130
  clearButton: {
29966
30131
  description: "The button to clear the selected value(s)."
30132
+ },
30133
+ item: {
30134
+ description: "Each option item within the Select component."
30135
+ },
30136
+ menu: {
30137
+ description: "The dropdown menu within the Select component."
29967
30138
  }
29968
30139
  },
29969
30140
  props: {
@@ -30617,6 +30788,11 @@ const DDMCOMP = "DropdownMenu";
30617
30788
  const DropdownMenuMd = createMetadata({
30618
30789
  status: "stable",
30619
30790
  description: "`DropdownMenu` provides a space-efficient way to present multiple options or actions through a collapsible interface. When clicked, the trigger button reveals a menu that can include items, separators, and nested submenus, making it ideal for navigation, action lists, or any situation requiring many options without permanent screen space.",
30791
+ parts: {
30792
+ content: {
30793
+ description: "The content area of the DropdownMenu where menu items are displayed."
30794
+ }
30795
+ },
30620
30796
  props: {
30621
30797
  label: dLabel(),
30622
30798
  triggerTemplate: dTriggerTemplate(DDMCOMP),
@@ -30824,6 +31000,11 @@ const COMP$E = "ExpandableItem";
30824
31000
  const ExpandableItemMd = createMetadata({
30825
31001
  status: "stable",
30826
31002
  description: "`ExpandableItem` creates expandable/collapsible section, similar to the HTML details disclosure element. When the user clicks on the `summary` the content expands or collapses.",
31003
+ parts: {
31004
+ summary: {
31005
+ description: "The summary section that is always visible and acts as the trigger."
31006
+ }
31007
+ },
30827
31008
  props: {
30828
31009
  summary: dComponent("The summary content that is always visible and acts as the trigger."),
30829
31010
  initiallyExpanded: {
@@ -35147,7 +35328,7 @@ function InputDivider({
35147
35328
  const PART_DAY = "day";
35148
35329
  const PART_MONTH = "month";
35149
35330
  const PART_YEAR = "year";
35150
- const PART_CLEAR_BUTTON$1 = "clearButton";
35331
+ const PART_CLEAR_BUTTON = "clearButton";
35151
35332
  const MIN_YEAR = 1900;
35152
35333
  const MAX_YEAR = 2100;
35153
35334
  const dateFormats = [
@@ -35380,7 +35561,7 @@ const DateInput = forwardRef(function DateInputNative({
35380
35561
  }
35381
35562
  }
35382
35563
  },
35383
- [day2, month2, year2, handleChange, onInvalidChange]
35564
+ [day2, month2, year2, handleChange, onInvalidChange, formatDateValue]
35384
35565
  );
35385
35566
  const handleDayChange = useMemo(
35386
35567
  () => createInputChangeHandler(
@@ -35685,21 +35866,17 @@ const DateInput = forwardRef(function DateInputNative({
35685
35866
  startAdornment,
35686
35867
  /* @__PURE__ */ jsxs("div", { className: styles$p.wrapper, children: [
35687
35868
  /* @__PURE__ */ jsx("div", { className: styles$p.inputGroup, children: createDateInputs() }),
35688
- clearable && /* @__PURE__ */ jsx(
35869
+ clearable && /* @__PURE__ */ jsx(Part, { partId: PART_CLEAR_BUTTON, children: /* @__PURE__ */ jsx(
35689
35870
  "button",
35690
35871
  {
35691
- "data-part-id": PART_CLEAR_BUTTON$1,
35692
- className: classnames(
35693
- styles$p.clearButton,
35694
- styles$p.button
35695
- ),
35872
+ className: classnames(styles$p.clearButton, styles$p.button),
35696
35873
  disabled: !enabled2,
35697
35874
  onClick: clear,
35698
35875
  onFocus: stopPropagation,
35699
35876
  type: "button",
35700
35877
  children: clearIconElement
35701
35878
  }
35702
- )
35879
+ ) })
35703
35880
  ] }),
35704
35881
  endAdornment
35705
35882
  ]
@@ -35727,10 +35904,9 @@ function DayInput({
35727
35904
  }
35728
35905
  return 31;
35729
35906
  }, [month2, year2]);
35730
- return /* @__PURE__ */ jsx(
35907
+ return /* @__PURE__ */ jsx(Part, { partId: PART_DAY, children: /* @__PURE__ */ jsx(
35731
35908
  PartialInput,
35732
35909
  {
35733
- "data-part-id": PART_DAY,
35734
35910
  id: otherProps.id,
35735
35911
  value,
35736
35912
  emptyCharacter,
@@ -35759,7 +35935,7 @@ function DayInput({
35759
35935
  ariaLabel: otherProps.ariaLabel,
35760
35936
  isInvalid
35761
35937
  }
35762
- );
35938
+ ) });
35763
35939
  }
35764
35940
  function MonthInput({
35765
35941
  minValue,
@@ -35770,10 +35946,9 @@ function MonthInput({
35770
35946
  emptyCharacter = "-",
35771
35947
  ...otherProps
35772
35948
  }) {
35773
- return /* @__PURE__ */ jsx(
35949
+ return /* @__PURE__ */ jsx(Part, { partId: PART_MONTH, children: /* @__PURE__ */ jsx(
35774
35950
  PartialInput,
35775
35951
  {
35776
- "data-part-id": PART_MONTH,
35777
35952
  id: otherProps.id,
35778
35953
  max: 12,
35779
35954
  min: 1,
@@ -35802,7 +35977,7 @@ function MonthInput({
35802
35977
  nextInputRef: otherProps.nextInputRef,
35803
35978
  ariaLabel: otherProps.ariaLabel
35804
35979
  }
35805
- );
35980
+ ) });
35806
35981
  }
35807
35982
  function YearInput({
35808
35983
  minValue,
@@ -35819,10 +35994,9 @@ function YearInput({
35819
35994
  const min = 1900;
35820
35995
  const max = currentYear + 100;
35821
35996
  const { className: originalClassName, ...restProps } = otherProps;
35822
- return /* @__PURE__ */ jsx(
35997
+ return /* @__PURE__ */ jsx(Part, { partId: PART_YEAR, children: /* @__PURE__ */ jsx(
35823
35998
  PartialInput,
35824
35999
  {
35825
- "data-part-id": PART_YEAR,
35826
36000
  id: otherProps.id,
35827
36001
  max,
35828
36002
  min,
@@ -35843,7 +36017,7 @@ function YearInput({
35843
36017
  },
35844
36018
  ...restProps
35845
36019
  }
35846
- );
36020
+ ) });
35847
36021
  }
35848
36022
  function parseDateString(dateString, dateFormat) {
35849
36023
  if (typeof dateString !== "string" || dateString === null || dateString === void 0) {
@@ -36311,11 +36485,6 @@ function safeMin(...args) {
36311
36485
  function safeMax(...args) {
36312
36486
  return Math.max(...args.filter(isValidNumber));
36313
36487
  }
36314
- const PART_HOUR = "hour";
36315
- const PART_MINUTE = "minute";
36316
- const PART_SECOND = "second";
36317
- const PART_AMPM = "ampm";
36318
- const PART_CLEAR_BUTTON = "clearButton";
36319
36488
  const defaultProps$j = {
36320
36489
  enabled: true,
36321
36490
  validationStatus: "none",
@@ -36846,10 +37015,9 @@ const TimeInputNative = forwardRef(function TimeInputNative2({
36846
37015
  }
36847
37016
  )
36848
37017
  ] }),
36849
- clearable && /* @__PURE__ */ jsx(
37018
+ clearable && /* @__PURE__ */ jsx(Part, { partId: "clearButton", children: /* @__PURE__ */ jsx(
36850
37019
  "button",
36851
37020
  {
36852
- "data-part-id": PART_CLEAR_BUTTON,
36853
37021
  className: classnames(styles$m.clearButton, styles$m.button),
36854
37022
  disabled: !enabled2,
36855
37023
  onClick: clear,
@@ -36857,7 +37025,7 @@ const TimeInputNative = forwardRef(function TimeInputNative2({
36857
37025
  type: "button",
36858
37026
  children: clearIconElement
36859
37027
  }
36860
- )
37028
+ ) })
36861
37029
  ] }),
36862
37030
  endAdornment
36863
37031
  ]
@@ -36900,11 +37068,10 @@ function AmPmButton({
36900
37068
  },
36901
37069
  [onKeyDown, disabled2, onAmPmSet, value, amDisabled, pmDisabled]
36902
37070
  );
36903
- return /* @__PURE__ */ jsx(
37071
+ return /* @__PURE__ */ jsx(Part, { partId: "ampm", children: /* @__PURE__ */ jsx(
36904
37072
  "button",
36905
37073
  {
36906
37074
  type: "button",
36907
- "data-part-id": PART_AMPM,
36908
37075
  "aria-label": ariaLabel || "Toggle AM/PM (Press A for AM, P for PM)",
36909
37076
  autoFocus,
36910
37077
  className: classnames(styles$m.amPmButton, styles$m.button, className),
@@ -36914,7 +37081,7 @@ function AmPmButton({
36914
37081
  ref: buttonRef,
36915
37082
  children: /* @__PURE__ */ jsx("span", { className: styles$m.amPmValue, children: value ? value === "am" ? amLabel : pmLabel : "--" })
36916
37083
  }
36917
- );
37084
+ ) });
36918
37085
  }
36919
37086
  function HourInput({
36920
37087
  id,
@@ -36962,11 +37129,10 @@ function HourInput({
36962
37129
  }
36963
37130
  })();
36964
37131
  const displayValue = value || "";
36965
- return /* @__PURE__ */ jsx(
37132
+ return /* @__PURE__ */ jsx(Part, { partId: "hour", children: /* @__PURE__ */ jsx(
36966
37133
  PartialInput,
36967
37134
  {
36968
37135
  id,
36969
- "data-part-id": PART_HOUR,
36970
37136
  value: displayValue,
36971
37137
  emptyCharacter,
36972
37138
  placeholderLength: 2,
@@ -36994,7 +37160,7 @@ function HourInput({
36994
37160
  ariaLabel: otherProps.ariaLabel,
36995
37161
  isInvalid
36996
37162
  }
36997
- );
37163
+ ) });
36998
37164
  }
36999
37165
  function MinuteInput({
37000
37166
  hour: hour2,
@@ -37011,10 +37177,9 @@ function MinuteInput({
37011
37177
  }
37012
37178
  const maxMinute = safeMin(59, maxTime && isSameHour(maxTime) && getMinutes(maxTime));
37013
37179
  const minMinute = safeMax(0, minTime && isSameHour(minTime) && getMinutes(minTime));
37014
- return /* @__PURE__ */ jsx(
37180
+ return /* @__PURE__ */ jsx(Part, { partId: "minute", children: /* @__PURE__ */ jsx(
37015
37181
  PartialInput,
37016
37182
  {
37017
- "data-part-id": PART_MINUTE,
37018
37183
  max: maxMinute,
37019
37184
  min: minMinute,
37020
37185
  name: "minute",
@@ -37042,7 +37207,7 @@ function MinuteInput({
37042
37207
  ariaLabel: otherProps.ariaLabel,
37043
37208
  isInvalid
37044
37209
  }
37045
- );
37210
+ ) });
37046
37211
  }
37047
37212
  function SecondInput({
37048
37213
  hour: hour2,
@@ -37060,10 +37225,9 @@ function SecondInput({
37060
37225
  }
37061
37226
  const maxSecond = safeMin(59, maxTime && isSameMinute(maxTime) && getSeconds(maxTime));
37062
37227
  const minSecond = safeMax(0, minTime && isSameMinute(minTime) && getSeconds(minTime));
37063
- return /* @__PURE__ */ jsx(
37228
+ return /* @__PURE__ */ jsx(Part, { partId: "second", children: /* @__PURE__ */ jsx(
37064
37229
  PartialInput,
37065
37230
  {
37066
- "data-part-id": PART_SECOND,
37067
37231
  max: maxSecond,
37068
37232
  min: minSecond,
37069
37233
  name: "second",
@@ -37091,7 +37255,7 @@ function SecondInput({
37091
37255
  ariaLabel: otherProps.ariaLabel,
37092
37256
  isInvalid
37093
37257
  }
37094
- );
37258
+ ) });
37095
37259
  }
37096
37260
  function parseTimeString(timeValue, targetIs12Hour = false) {
37097
37261
  if (timeValue == null || timeValue === void 0) {
@@ -38918,6 +39082,17 @@ const COMP$p = "Slider";
38918
39082
  const SliderMd = createMetadata({
38919
39083
  status: "stable",
38920
39084
  description: "`Slider` provides an interactive control for selecting numeric values within a defined range, supporting both single value selection and range selection with multiple thumbs. It offers precise control through customizable steps and visual feedback with formatted value display.Hover over the component to see the tooltip with the current value. On mobile, tap the thumb to see the tooltip.",
39085
+ parts: {
39086
+ label: {
39087
+ description: "The label displayed for the slider."
39088
+ },
39089
+ track: {
39090
+ description: "The track element of the slider."
39091
+ },
39092
+ thumb: {
39093
+ description: "The thumb elements of the slider."
39094
+ }
39095
+ },
38921
39096
  props: {
38922
39097
  initialValue: dInitialValue(),
38923
39098
  minValue: {
@@ -42713,6 +42888,14 @@ const COMP$b = "CodeBlock";
42713
42888
  const CodeBlockMd = createMetadata({
42714
42889
  status: "stable",
42715
42890
  description: `The \`${COMP$b}\` component displays code with optional syntax highlighting and meta information.`,
42891
+ parts: {
42892
+ header: {
42893
+ description: "The header section of the CodeBlock, typically displaying the filename."
42894
+ },
42895
+ content: {
42896
+ description: "The main content area of the CodeBlock where the code is displayed."
42897
+ }
42898
+ },
42716
42899
  props: {},
42717
42900
  themeVars: parseScssVar(styles$A.themeVars),
42718
42901
  defaultThemeVars: {
@@ -44652,6 +44835,17 @@ const COMP$2 = "Pagination";
44652
44835
  const PaginationMd = createMetadata({
44653
44836
  status: "experimental",
44654
44837
  description: "`Pagination` enables navigation through large datasets by dividing content into pages. It provides controls for page navigation and can display current page information.",
44838
+ parts: {
44839
+ buttonRow: {
44840
+ description: "The container for pagination buttons."
44841
+ },
44842
+ pageInfo: {
44843
+ description: "The container for page information display."
44844
+ },
44845
+ pageSizeSelector: {
44846
+ description: "The container for the page size selector dropdown."
44847
+ }
44848
+ },
44655
44849
  props: {
44656
44850
  enabled: dEnabled(),
44657
44851
  itemCount: d(
@@ -46479,7 +46673,7 @@ function IconProvider({ children }) {
46479
46673
  /* @__PURE__ */ jsx("svg", { style: { display: "none" }, ref: spriteRootRef })
46480
46674
  ] });
46481
46675
  }
46482
- const version = "0.11.13";
46676
+ const version = "0.11.16";
46483
46677
  const miscellaneousUtils = {
46484
46678
  capitalize,
46485
46679
  pluralize: pluralize$1,
@@ -46757,21 +46951,21 @@ function createContainerReducer(debugView) {
46757
46951
  case ContainerActionKind.EVENT_HANDLER_STARTED: {
46758
46952
  const { eventName } = action2.payload;
46759
46953
  const inProgressFlagName = `${eventName}InProgress`;
46760
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: true } : { [inProgressFlagName]: true };
46954
+ state[uid] = { ...state[uid], [inProgressFlagName]: true };
46761
46955
  storeNextValue(state[uid]);
46762
46956
  break;
46763
46957
  }
46764
46958
  case ContainerActionKind.EVENT_HANDLER_COMPLETED: {
46765
46959
  const { eventName } = action2.payload;
46766
46960
  const inProgressFlagName = `${eventName}InProgress`;
46767
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: false } : { [inProgressFlagName]: false };
46961
+ state[uid] = { ...state[uid], [inProgressFlagName]: false };
46768
46962
  storeNextValue(state[uid]);
46769
46963
  break;
46770
46964
  }
46771
46965
  case ContainerActionKind.EVENT_HANDLER_ERROR: {
46772
46966
  const { eventName } = action2.payload;
46773
46967
  const inProgressFlagName = `${eventName}InProgress`;
46774
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: false } : { [inProgressFlagName]: false };
46968
+ state[uid] = { ...state[uid], [inProgressFlagName]: false };
46775
46969
  storeNextValue(state[uid]);
46776
46970
  break;
46777
46971
  }
@@ -48859,9 +49053,7 @@ const StateContainer = memo(
48859
49053
  const routingParams = useRoutingParams();
48860
49054
  const memoedVars = useRef(/* @__PURE__ */ new Map());
48861
49055
  const stateFromOutside = useShallowCompareMemoize(
48862
- useMemo(() => {
48863
- return extractScopedState(parentState, node.uses);
48864
- }, [node.uses, parentState])
49056
+ useMemo(() => extractScopedState(parentState, node.uses), [node.uses, parentState])
48865
49057
  );
48866
49058
  const debugView = useDebugView();
48867
49059
  const containerReducer = createContainerReducer(debugView);
@@ -48870,15 +49062,10 @@ const StateContainer = memo(
48870
49062
  const componentStateWithApis = useShallowCompareMemoize(
48871
49063
  useMemo(() => {
48872
49064
  const ret = { ...componentState };
48873
- const registeredApiKeys = new Set(
48874
- Object.getOwnPropertySymbols(componentApis).map((s) => s.description).filter((d2) => d2 !== void 0)
48875
- );
48876
49065
  for (const stateKey of Object.getOwnPropertySymbols(componentState)) {
48877
49066
  const value = componentState[stateKey];
48878
49067
  if (stateKey.description) {
48879
- if (registeredApiKeys.has(stateKey.description)) {
48880
- ret[stateKey.description] = value;
48881
- }
49068
+ ret[stateKey.description] = value;
48882
49069
  }
48883
49070
  }
48884
49071
  if (Reflect.ownKeys(componentApis).length === 0) {
@@ -48942,11 +49129,8 @@ const StateContainer = memo(
48942
49129
  const mergedWithVars = useMergedState(resolvedLocalVars, componentStateWithApis);
48943
49130
  const combinedState = useCombinedState(
48944
49131
  stateFromOutside,
48945
- // Parent state (lower priority) - allows local vars to shadow
48946
49132
  node.contextVars,
48947
- // Context vars like $item
48948
49133
  mergedWithVars,
48949
- // Local vars and component state (higher priority) - enables shadowing
48950
49134
  routingParams
48951
49135
  );
48952
49136
  const registerComponentApi = useCallback((uid, api) => {
@@ -51632,6 +51816,7 @@ const collectedComponentMetadata = {
51632
51816
  RadioGroup: RadioGroupMd,
51633
51817
  RealTimeAdapter: RealTimeAdapterMd,
51634
51818
  Redirect: RedirectMd,
51819
+ ResponsiveBar: ResponsiveBarMd,
51635
51820
  Select: SelectMd,
51636
51821
  SelectionStore: SelectionStoreMd,
51637
51822
  Slider: SliderMd,