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.
@@ -499,6 +499,9 @@ const styles$1j = {
499
499
  "lds-ring": "_lds-ring_b1pgc_14",
500
500
  fullScreenSpinnerWrapper
501
501
  };
502
+ const Part = ({ children, partId }) => {
503
+ return /* @__PURE__ */ jsx(Slot, { "data-part-id": partId, children });
504
+ };
502
505
  const PART_RING = "ring";
503
506
  const defaultProps$1i = {
504
507
  delay: 400,
@@ -538,7 +541,7 @@ const Spinner = forwardRef(function Spinner2({
538
541
  style: style2,
539
542
  ref: forwardedRef,
540
543
  children: [
541
- /* @__PURE__ */ jsx("div", { "data-part-id": PART_RING }),
544
+ /* @__PURE__ */ jsx(Part, { partId: PART_RING, children: /* @__PURE__ */ jsx("div", {}) }),
542
545
  /* @__PURE__ */ jsx("div", {}),
543
546
  /* @__PURE__ */ jsx("div", {}),
544
547
  /* @__PURE__ */ jsx("div", {})
@@ -558,7 +561,7 @@ const Spinner = forwardRef(function Spinner2({
558
561
  style: style2,
559
562
  ref: forwardedRef,
560
563
  children: [
561
- /* @__PURE__ */ jsx("div", { "data-part-id": PART_RING }),
564
+ /* @__PURE__ */ jsx(Part, { partId: PART_RING, children: /* @__PURE__ */ jsx("div", {}) }),
562
565
  /* @__PURE__ */ jsx("div", {}),
563
566
  /* @__PURE__ */ jsx("div", {}),
564
567
  /* @__PURE__ */ jsx("div", {})
@@ -572,6 +575,7 @@ const PART_LABELED_ITEM = "labeledItem";
572
575
  const PART_INPUT = "input";
573
576
  const PART_START_ADORNMENT = "startAdornment";
574
577
  const PART_END_ADORNMENT = "endAdornment";
578
+ const PART_ICON = "icon";
575
579
  const defaultProps$1h = {
576
580
  labelBreak: true
577
581
  };
@@ -601,18 +605,17 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
601
605
  const generatedId2 = useId();
602
606
  const inputId = id || generatedId2;
603
607
  if (label2 === void 0 && !validationResult) {
604
- return /* @__PURE__ */ jsx(
608
+ return /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: /* @__PURE__ */ jsx(
605
609
  Slot,
606
610
  {
607
611
  ...rest,
608
- "data-part-id": PART_LABELED_ITEM,
609
612
  style: style2,
610
613
  className,
611
614
  id: inputId,
612
615
  ref,
613
616
  children
614
617
  }
615
- );
618
+ ) });
616
619
  }
617
620
  return /* @__PURE__ */ jsxs("div", { ...rest, ref, style: style2, className: classnames(className, styles$1k.itemWithLabel), children: [
618
621
  /* @__PURE__ */ jsxs(
@@ -626,10 +629,9 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
626
629
  [styles$1k.shrinkToLabel]: shrinkToLabel2
627
630
  }),
628
631
  children: [
629
- label2 && /* @__PURE__ */ jsxs(
632
+ label2 && /* @__PURE__ */ jsx(Part, { partId: PART_LABEL, children: /* @__PURE__ */ jsxs(
630
633
  "label",
631
634
  {
632
- "data-part-id": PART_LABEL,
633
635
  htmlFor: inputId,
634
636
  onClick: onLabelClick || (() => document.getElementById(inputId)?.focus()),
635
637
  style: {
@@ -654,13 +656,12 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
654
656
  )
655
657
  ]
656
658
  }
657
- ),
658
- cloneElement(children, {
659
+ ) }),
660
+ /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: cloneElement(children, {
659
661
  id: !isInputTemplateUsed ? inputId : void 0,
660
662
  style: void 0,
661
- className: void 0,
662
- "data-part-id": PART_LABELED_ITEM
663
- })
663
+ className: void 0
664
+ }) })
664
665
  ]
665
666
  }
666
667
  ),
@@ -3025,6 +3026,11 @@ const COMP$1x = "Button";
3025
3026
  const ButtonMd = createMetadata({
3026
3027
  status: "stable",
3027
3028
  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.",
3029
+ parts: {
3030
+ icon: {
3031
+ description: "The icon displayed within the button, if any."
3032
+ }
3033
+ },
3028
3034
  props: {
3029
3035
  autoFocus: {
3030
3036
  description: "Indicates if the button should receive focus when the page loads.",
@@ -4600,21 +4606,12 @@ const TextBox = forwardRef(function TextBox2({
4600
4606
  onFocus: focus,
4601
4607
  style: { ...style2, gap },
4602
4608
  children: [
4603
- /* @__PURE__ */ jsx(
4604
- Adornment,
4605
- {
4606
- "data-part-id": PART_START_ADORNMENT,
4607
- text: startText,
4608
- iconName: startIcon,
4609
- className: classnames(styles$1g.adornment)
4610
- }
4611
- ),
4612
- /* @__PURE__ */ jsx(
4609
+ /* @__PURE__ */ jsx(Part, { partId: PART_START_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: startText, iconName: startIcon, className: classnames(styles$1g.adornment) }) }),
4610
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
4613
4611
  "input",
4614
4612
  {
4615
4613
  id,
4616
4614
  ref: inputRef,
4617
- "data-part-id": PART_INPUT,
4618
4615
  type: actualType,
4619
4616
  className: classnames(styles$1g.input, {
4620
4617
  [styles$1g.readOnly]: readOnly2
@@ -4632,33 +4629,23 @@ const TextBox = forwardRef(function TextBox2({
4632
4629
  tabIndex: enabled2 ? tabIndex : -1,
4633
4630
  required: required2
4634
4631
  }
4635
- ),
4636
- !readOnly2 && enabled2 && type == "search" && localValue?.length > 0 && /* @__PURE__ */ jsx(
4632
+ ) }),
4633
+ !readOnly2 && enabled2 && type == "search" && localValue?.length > 0 && /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(
4637
4634
  Adornment,
4638
4635
  {
4639
- "data-part-id": PART_END_ADORNMENT,
4640
4636
  iconName: "close",
4641
4637
  className: styles$1g.adornment,
4642
4638
  onClick: () => updateValue("")
4643
4639
  }
4644
- ),
4645
- type === "password" && showPasswordToggle ? /* @__PURE__ */ jsx(
4640
+ ) }),
4641
+ type === "password" && showPasswordToggle ? /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(
4646
4642
  Adornment,
4647
4643
  {
4648
- "data-part-id": PART_END_ADORNMENT,
4649
4644
  iconName: showPassword ? passwordVisibleIcon : passwordHiddenIcon,
4650
4645
  className: classnames(styles$1g.adornment, styles$1g.passwordToggle),
4651
4646
  onClick: togglePasswordVisibility
4652
4647
  }
4653
- ) : /* @__PURE__ */ jsx(
4654
- Adornment,
4655
- {
4656
- "data-part-id": PART_END_ADORNMENT,
4657
- text: endText,
4658
- iconName: endIcon,
4659
- className: styles$1g.adornment
4660
- }
4661
- )
4648
+ ) }) : /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: endText, iconName: endIcon, className: styles$1g.adornment }) })
4662
4649
  ]
4663
4650
  }
4664
4651
  );
@@ -8442,17 +8429,16 @@ const AppHeader = ({
8442
8429
  [styles$1a.full]: !canRestrictContentWidth
8443
8430
  }),
8444
8431
  children: [
8445
- hasRegisteredNavPanel && /* @__PURE__ */ jsx(
8432
+ hasRegisteredNavPanel && /* @__PURE__ */ jsx(Part, { partId: PART_HAMBURGER, children: /* @__PURE__ */ jsx(
8446
8433
  Button,
8447
8434
  {
8448
- "data-part-id": PART_HAMBURGER,
8449
8435
  onClick: toggleDrawer,
8450
8436
  icon: /* @__PURE__ */ jsx(Icon$l, { name: "hamburger" }),
8451
8437
  variant: "ghost",
8452
8438
  className: styles$1a.drawerToggle,
8453
8439
  style: { color: "inherit", flexShrink: 0 }
8454
8440
  }
8455
- ),
8441
+ ) }),
8456
8442
  /* @__PURE__ */ jsx("div", { className: styles$1a.logoAndTitle, children: (showLogo || !effectiveNavPanelVisible) && (logoContent ? /* @__PURE__ */ jsxs(Fragment, { children: [
8457
8443
  /* @__PURE__ */ jsx("div", { className: styles$1a.customLogoContainer, children: logoContent }),
8458
8444
  safeLogoTitle
@@ -16968,16 +16954,16 @@ const LinkNative = forwardRef(function LinkNative2(props, forwardedRef) {
16968
16954
  [styles$12.disabled]: disabled2
16969
16955
  }),
16970
16956
  children: [
16971
- icon2 && /* @__PURE__ */ jsx("div", { className: styles$12.iconWrapper, children: /* @__PURE__ */ jsx(Icon$l, { name: icon2 }) }),
16957
+ icon2 && /* @__PURE__ */ jsx(Part, { partId: PART_ICON, children: /* @__PURE__ */ jsx("div", { className: styles$12.iconWrapper, children: /* @__PURE__ */ jsx(Icon$l, { name: icon2 }) }) }),
16972
16958
  children
16973
16959
  ]
16974
16960
  }
16975
16961
  );
16976
16962
  });
16977
16963
  function specifyTypes(props) {
16978
- const { target: target2, referrerPolicy } = props;
16964
+ const { target: target2, referrerPolicy, ...rest } = props;
16979
16965
  return {
16980
- ...props,
16966
+ ...rest,
16981
16967
  target: target2,
16982
16968
  referrerPolicy
16983
16969
  };
@@ -17173,6 +17159,17 @@ const COMP$1n = "Card";
17173
17159
  const CardMd = createMetadata({
17174
17160
  status: "stable",
17175
17161
  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.",
17162
+ parts: {
17163
+ avatar: {
17164
+ description: "The avatar displayed within the card, if any."
17165
+ },
17166
+ title: {
17167
+ description: "The title of the card."
17168
+ },
17169
+ subtitle: {
17170
+ description: "The subtitle of the card."
17171
+ }
17172
+ },
17176
17173
  props: {
17177
17174
  avatarUrl: {
17178
17175
  description: `The url for an avarar image. If not specified, but [\`showAvatar\`](#showAvatar) is true, ${COMP$1n} will show the first letters of the [\`title\`](#title).`,
@@ -17434,12 +17431,11 @@ const Toggle = forwardRef(function Toggle2({
17434
17431
  }, [focus, registerComponentApi, setValue]);
17435
17432
  const input2 = useMemo(() => {
17436
17433
  const legitValue = transformToLegitValue(value);
17437
- return /* @__PURE__ */ jsx(
17434
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
17438
17435
  "input",
17439
17436
  {
17440
17437
  ...rest,
17441
17438
  id,
17442
- "data-part-id": PART_INPUT,
17443
17439
  ref,
17444
17440
  type: "checkbox",
17445
17441
  role: variant,
@@ -17466,7 +17462,7 @@ const Toggle = forwardRef(function Toggle2({
17466
17462
  [styles$10.forceHover]: forceHover2
17467
17463
  })
17468
17464
  }
17469
- );
17465
+ ) });
17470
17466
  }, [
17471
17467
  rest,
17472
17468
  className,
@@ -17645,20 +17641,22 @@ const checkboxComponentRenderer = createComponentRenderer(
17645
17641
  }
17646
17642
  );
17647
17643
  const themeVars$K = `'{"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)"}'`;
17648
- const separator = "_separator_1r9lf_14";
17649
- const horizontal$3 = "_horizontal_1r9lf_27";
17650
- const vertical$3 = "_vertical_1r9lf_31";
17644
+ const separator = "_separator_hmp7g_14";
17645
+ const horizontal$3 = "_horizontal_hmp7g_27";
17646
+ const stretchToFit = "_stretchToFit_hmp7g_31";
17647
+ const vertical$3 = "_vertical_hmp7g_35";
17651
17648
  const styles$$ = {
17652
17649
  themeVars: themeVars$K,
17653
17650
  separator,
17654
17651
  horizontal: horizontal$3,
17652
+ stretchToFit,
17655
17653
  vertical: vertical$3
17656
17654
  };
17657
17655
  const defaultProps$W = {
17658
17656
  orientation: "horizontal"
17659
17657
  };
17660
17658
  const ContentSeparator = forwardRef(
17661
- ({ orientation = defaultProps$W.orientation, thickness, length, style: style2, className, ...rest }, ref) => {
17659
+ ({ orientation = defaultProps$W.orientation, thickness, length, hasExplicitLength = false, style: style2, className, ...rest }, ref) => {
17662
17660
  const inlineStyles = {};
17663
17661
  if (thickness !== void 0) {
17664
17662
  if (orientation === "horizontal") {
@@ -17683,7 +17681,8 @@ const ContentSeparator = forwardRef(
17683
17681
  styles$$.separator,
17684
17682
  {
17685
17683
  [styles$$.horizontal]: orientation === "horizontal",
17686
- [styles$$.vertical]: orientation === "vertical"
17684
+ [styles$$.vertical]: orientation === "vertical",
17685
+ [styles$$.stretchToFit]: !hasExplicitLength
17687
17686
  },
17688
17687
  className
17689
17688
  ),
@@ -17736,12 +17735,16 @@ const contentSeparatorComponentRenderer = createComponentRenderer(
17736
17735
  COMP$1k,
17737
17736
  ContentSeparatorMd,
17738
17737
  ({ node, className, extractValue }) => {
17738
+ const orientation = extractValue(node.props.orientation);
17739
+ const length = extractValue.asSize(node.props.length);
17740
+ const hasExplicitLength = length !== void 0 || orientation === "vertical" && node.props.height !== void 0 || orientation === "horizontal" && node.props.width !== void 0;
17739
17741
  return /* @__PURE__ */ jsx(
17740
17742
  ContentSeparator,
17741
17743
  {
17742
- orientation: extractValue(node.props.orientation),
17744
+ orientation,
17743
17745
  thickness: extractValue.asSize(node.props.thickness),
17744
- length: extractValue.asSize(node.props.length),
17746
+ length,
17747
+ hasExplicitLength,
17745
17748
  className
17746
17749
  }
17747
17750
  );
@@ -18403,17 +18406,19 @@ const datePickerComponentRenderer = createComponentRenderer(
18403
18406
  }
18404
18407
  );
18405
18408
  const themeVars$I = `'{"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)"}'`;
18406
- const DropdownMenuContent = "_DropdownMenuContent_19u51_14";
18407
- const DropdownMenuSubContent = "_DropdownMenuSubContent_19u51_19";
18408
- const DropdownMenuItem = "_DropdownMenuItem_19u51_29";
18409
- const DropdownMenuSubTrigger = "_DropdownMenuSubTrigger_19u51_30";
18410
- const active$2 = "_active_19u51_53";
18411
- const disabled$8 = "_disabled_19u51_63";
18412
- const wrapper$h = "_wrapper_19u51_74";
18413
- const DropdownMenuSeparator = "_DropdownMenuSeparator_19u51_78";
18409
+ const DropdownMenuContent = "_DropdownMenuContent_tklrk_14";
18410
+ const compact = "_compact_tklrk_18";
18411
+ const DropdownMenuSubContent = "_DropdownMenuSubContent_tklrk_22";
18412
+ const DropdownMenuItem = "_DropdownMenuItem_tklrk_32";
18413
+ const DropdownMenuSubTrigger = "_DropdownMenuSubTrigger_tklrk_33";
18414
+ const active$2 = "_active_tklrk_56";
18415
+ const disabled$8 = "_disabled_tklrk_66";
18416
+ const wrapper$h = "_wrapper_tklrk_81";
18417
+ const DropdownMenuSeparator = "_DropdownMenuSeparator_tklrk_85";
18414
18418
  const styles$Z = {
18415
18419
  themeVars: themeVars$I,
18416
18420
  DropdownMenuContent,
18421
+ compact,
18417
18422
  DropdownMenuSubContent,
18418
18423
  DropdownMenuItem,
18419
18424
  DropdownMenuSubTrigger,
@@ -18449,6 +18454,7 @@ const DropdownMenu = forwardRef(function DropdownMenu2({
18449
18454
  triggerButtonThemeColor = defaultDropdownMenuProps.triggerButtonThemeColor,
18450
18455
  triggerButtonIcon = defaultDropdownMenuProps.triggerButtonIcon,
18451
18456
  triggerButtonIconPosition = defaultDropdownMenuProps.triggerButtonIconPosition,
18457
+ compact: compact2 = false,
18452
18458
  ...rest
18453
18459
  }, ref) {
18454
18460
  const { root: root2 } = useTheme();
@@ -18553,7 +18559,7 @@ const DropdownMenu = forwardRef(function DropdownMenu2({
18553
18559
  ref: contentRef,
18554
18560
  align: alignment,
18555
18561
  style: style2,
18556
- className: classnames(styles$Z.DropdownMenuContent, className),
18562
+ className: classnames(styles$Z.DropdownMenuContent, className, { [styles$Z.compact]: compact2 }),
18557
18563
  onOpenAutoFocus: (e) => {
18558
18564
  e.preventDefault();
18559
18565
  contentRef.current?.focus();
@@ -18581,7 +18587,8 @@ const MenuItem = forwardRef(function MenuItem2({
18581
18587
  icon: icon2,
18582
18588
  iconPosition = defaultMenuItemProps.iconPosition,
18583
18589
  active: active2 = defaultMenuItemProps.active,
18584
- enabled: enabled2 = true
18590
+ enabled: enabled2 = true,
18591
+ compact: compact2 = false
18585
18592
  }, ref) {
18586
18593
  const iconToStart = iconPosition === "start";
18587
18594
  const context = useDropdownMenuContext();
@@ -18616,7 +18623,8 @@ const MenuItem = forwardRef(function MenuItem2({
18616
18623
  style: style2,
18617
18624
  className: classnames(className, styles$Z.DropdownMenuItem, {
18618
18625
  [styles$Z.active]: active2,
18619
- [styles$Z.disabled]: !enabled2
18626
+ [styles$Z.disabled]: !enabled2,
18627
+ [styles$Z.compact]: compact2
18620
18628
  }),
18621
18629
  ref,
18622
18630
  onClick: handleClick,
@@ -18668,6 +18676,11 @@ const DDMCOMP = "DropdownMenu";
18668
18676
  const DropdownMenuMd = createMetadata({
18669
18677
  status: "stable",
18670
18678
  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.",
18679
+ parts: {
18680
+ content: {
18681
+ description: "The content area of the DropdownMenu where menu items are displayed."
18682
+ }
18683
+ },
18671
18684
  props: {
18672
18685
  label: dLabel(),
18673
18686
  triggerTemplate: dTriggerTemplate(DDMCOMP),
@@ -19126,6 +19139,14 @@ const DEFAULT_ICON = "browse:FileInput";
19126
19139
  const FileInputMd = createMetadata({
19127
19140
  status: "stable",
19128
19141
  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.",
19142
+ parts: {
19143
+ label: {
19144
+ description: "The label displayed for the file input."
19145
+ },
19146
+ input: {
19147
+ description: "The file input area displaying selected file names."
19148
+ }
19149
+ },
19129
19150
  props: {
19130
19151
  placeholder: dPlaceholder(),
19131
19152
  initialValue: dInitialValue(),
@@ -19987,11 +20008,10 @@ const ModalDialog = React__default.forwardRef(
19987
20008
  if (!root2) {
19988
20009
  return null;
19989
20010
  }
19990
- const Content2 = /* @__PURE__ */ jsxs(
20011
+ const Content2 = /* @__PURE__ */ jsx(Part, { partId: PART_CONTENT, children: /* @__PURE__ */ jsxs(
19991
20012
  SheetPrimitive.Content,
19992
20013
  {
19993
20014
  ...rest,
19994
- "data-part-id": PART_CONTENT,
19995
20015
  className: classnames(
19996
20016
  {
19997
20017
  [styles$T.contentAnimation]: !externalAnimation
@@ -20007,7 +20027,7 @@ const ModalDialog = React__default.forwardRef(
20007
20027
  ref: composedRef,
20008
20028
  style: { ...style2, gap: void 0 },
20009
20029
  children: [
20010
- !!title2 && /* @__PURE__ */ jsx(SheetPrimitive.Title, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx("header", { id: "dialogTitle", className: styles$T.dialogTitle, "data-part-id": PART_TITLE, children: title2 }) }),
20030
+ !!title2 && /* @__PURE__ */ jsx(Part, { partId: PART_TITLE, children: /* @__PURE__ */ jsx(SheetPrimitive.Title, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx("header", { id: "dialogTitle", className: styles$T.dialogTitle, children: title2 }) }) }),
20011
20031
  /* @__PURE__ */ jsx("div", { className: styles$T.innerContent, style: { gap: style2?.gap }, children: /* @__PURE__ */ jsx(ModalVisibilityContext.Provider, { value: modalVisibilityContextValue, children }) }),
20012
20032
  closeButtonVisible && /* @__PURE__ */ jsx(SheetPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(
20013
20033
  Button,
@@ -20022,7 +20042,7 @@ const ModalDialog = React__default.forwardRef(
20022
20042
  ) })
20023
20043
  ]
20024
20044
  }
20025
- );
20045
+ ) });
20026
20046
  return /* @__PURE__ */ jsx(SheetPrimitive.Root, { open: isOpen, onOpenChange: (open) => open ? doOpen() : doClose(), children: /* @__PURE__ */ jsxs(SheetPrimitive.Portal, { container: root2, children: [
20027
20047
  isDialogRootInShadowDom && /*
20028
20048
  In the Shadow DOM we can omit the Dialog.Overlay,
@@ -21316,14 +21336,18 @@ const Form = forwardRef(function({
21316
21336
  dispatch(formSubmitting());
21317
21337
  try {
21318
21338
  const filteredSubject = validationResult.data;
21319
- const canSubmit = await onWillSubmit?.(filteredSubject);
21320
- if (canSubmit === false) {
21339
+ const willSubmitResult = await onWillSubmit?.(filteredSubject);
21340
+ if (willSubmitResult === false) {
21321
21341
  dispatch(
21322
21342
  backendValidationArrived({ generalValidationResults: [], fieldValidationResults: {} })
21323
21343
  );
21324
21344
  return;
21325
21345
  }
21326
- const result = await onSubmit?.(filteredSubject, {
21346
+ let dataToSubmit = filteredSubject;
21347
+ if (willSubmitResult !== null && willSubmitResult !== void 0 && willSubmitResult !== "" && typeof willSubmitResult === "object" && !Array.isArray(willSubmitResult)) {
21348
+ dataToSubmit = willSubmitResult;
21349
+ }
21350
+ const result = await onSubmit?.(dataToSubmit, {
21327
21351
  passAsDefaultBody: true
21328
21352
  });
21329
21353
  dispatch(formSubmitted());
@@ -21391,10 +21415,9 @@ const Form = forwardRef(function({
21391
21415
  });
21392
21416
  });
21393
21417
  });
21394
- const cancelButton = cancelLabel === "" ? null : /* @__PURE__ */ jsx(
21418
+ const cancelButton = cancelLabel === "" ? null : /* @__PURE__ */ jsx(Part, { partId: PART_CANCEL_BUTTON, children: /* @__PURE__ */ jsx(
21395
21419
  Button,
21396
21420
  {
21397
- "data-part-id": PART_CANCEL_BUTTON,
21398
21421
  type: "button",
21399
21422
  themeColor: "secondary",
21400
21423
  variant: "ghost",
@@ -21402,18 +21425,9 @@ const Form = forwardRef(function({
21402
21425
  children: cancelLabel
21403
21426
  },
21404
21427
  "cancel"
21405
- );
21428
+ ) });
21406
21429
  const submitButton = useMemo(
21407
- () => /* @__PURE__ */ jsx(
21408
- Button,
21409
- {
21410
- "data-part-id": PART_SUBMIT_BUTTON,
21411
- type: "submit",
21412
- disabled: !isEnabled2 || !enableSubmit,
21413
- children: formState.submitInProgress ? saveInProgressLabel : saveLabel
21414
- },
21415
- "submit"
21416
- ),
21430
+ () => /* @__PURE__ */ jsx(Part, { partId: PART_SUBMIT_BUTTON, children: /* @__PURE__ */ jsx(Button, { type: "submit", disabled: !isEnabled2 || !enableSubmit, children: formState.submitInProgress ? saveInProgressLabel : saveLabel }, "submit") }),
21417
21431
  [isEnabled2, enableSubmit, formState.submitInProgress, saveInProgressLabel, saveLabel]
21418
21432
  );
21419
21433
  useEffect(() => {
@@ -21578,6 +21592,15 @@ const COMP$1d = "Form";
21578
21592
  const FormMd = createMetadata({
21579
21593
  status: "stable",
21580
21594
  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.",
21595
+ parts: {
21596
+ buttonRow: {
21597
+ description: "The container for the form action buttons (e.g., Save, Cancel)."
21598
+ },
21599
+ // NOTE: There is a ValidationSummary in the form and also one in the modal dialog.
21600
+ validationSummary: {
21601
+ description: "The area displaying validation summary messages for the form."
21602
+ }
21603
+ },
21581
21604
  props: {
21582
21605
  buttonRowTemplate: dComponent(
21583
21606
  `This property allows defining a custom component to display the buttons at the bottom of the form.`
@@ -21652,7 +21675,7 @@ const FormMd = createMetadata({
21652
21675
  },
21653
21676
  events: {
21654
21677
  willSubmit: d(
21655
- `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.`
21678
+ `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.`
21656
21679
  ),
21657
21680
  submit: d(
21658
21681
  `The form infrastructure fires this event when the form is submitted. The event argument is the current \`data\` value to save.`
@@ -22172,20 +22195,11 @@ const NumberBox = forwardRef(function NumberBox2({
22172
22195
  },
22173
22196
  style: { ...style2, gap },
22174
22197
  children: [
22175
- /* @__PURE__ */ jsx(
22176
- Adornment,
22177
- {
22178
- "data-part-id": PART_START_ADORNMENT,
22179
- text: startText,
22180
- iconName: startIcon,
22181
- className: classnames(styles$Q.adornment)
22182
- }
22183
- ),
22184
- /* @__PURE__ */ jsx(
22198
+ /* @__PURE__ */ jsx(Part, { partId: PART_START_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: startText, iconName: startIcon, className: classnames(styles$Q.adornment) }) }),
22199
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
22185
22200
  "input",
22186
22201
  {
22187
22202
  id,
22188
- "data-part-id": PART_INPUT,
22189
22203
  type: "text",
22190
22204
  inputMode: "numeric",
22191
22205
  className: classnames(styles$Q.input, {
@@ -22207,21 +22221,12 @@ const NumberBox = forwardRef(function NumberBox2({
22207
22221
  maxLength,
22208
22222
  required: required2
22209
22223
  }
22210
- ),
22211
- /* @__PURE__ */ jsx(
22212
- Adornment,
22213
- {
22214
- "data-part-id": PART_END_ADORNMENT,
22215
- text: endText,
22216
- iconName: endIcon,
22217
- className: classnames(styles$Q.adornment)
22218
- }
22219
- ),
22224
+ ) }),
22225
+ /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: endText, iconName: endIcon, className: classnames(styles$Q.adornment) }) }),
22220
22226
  hasSpinBox && /* @__PURE__ */ jsxs("div", { className: styles$Q.spinnerBox, children: [
22221
- /* @__PURE__ */ jsx(
22227
+ /* @__PURE__ */ jsx(Part, { partId: PART_SPINNER_UP, children: /* @__PURE__ */ jsx(
22222
22228
  Button,
22223
22229
  {
22224
- "data-part-id": PART_SPINNER_UP,
22225
22230
  "data-spinner": "up",
22226
22231
  type: "button",
22227
22232
  role: "spinbutton",
@@ -22233,11 +22238,10 @@ const NumberBox = forwardRef(function NumberBox2({
22233
22238
  ref: upButton,
22234
22239
  children: /* @__PURE__ */ jsx(Icon$l, { name: spinnerUpIcon || "spinnerUp:NumberBox", fallback: "chevronup", size: "sm" })
22235
22240
  }
22236
- ),
22237
- /* @__PURE__ */ jsx(
22241
+ ) }),
22242
+ /* @__PURE__ */ jsx(Part, { partId: PART_SPINNER_DOWN, children: /* @__PURE__ */ jsx(
22238
22243
  Button,
22239
22244
  {
22240
- "data-part-id": PART_SPINNER_DOWN,
22241
22245
  "data-spinner": "down",
22242
22246
  type: "button",
22243
22247
  role: "spinbutton",
@@ -22256,7 +22260,7 @@ const NumberBox = forwardRef(function NumberBox2({
22256
22260
  }
22257
22261
  )
22258
22262
  }
22259
- )
22263
+ ) })
22260
22264
  ] })
22261
22265
  ]
22262
22266
  }
@@ -22440,7 +22444,7 @@ function HiddenOption(option) {
22440
22444
  return /* @__PURE__ */ jsx("div", { ref: (el) => setNode(el), style: { display: "none" }, children: option.children });
22441
22445
  }
22442
22446
  const PART_LIST_WRAPPER$1 = "listWrapper";
22443
- const PART_CLEAR_BUTTON$2 = "clearButton";
22447
+ const PART_CLEAR_BUTTON$1 = "clearButton";
22444
22448
  const defaultProps$L = {
22445
22449
  enabled: true,
22446
22450
  placeholder: "",
@@ -22506,10 +22510,9 @@ const SelectTriggerActions = ({
22506
22510
  }) => {
22507
22511
  const hasValue = multiSelect ? Array.isArray(value) && value.length > 0 : value !== void 0 && value !== null && value !== "";
22508
22512
  return /* @__PURE__ */ jsxs("div", { className: styles$P.actions, children: [
22509
- hasValue && enabled2 && !readOnly2 && clearable && /* @__PURE__ */ jsx(
22513
+ hasValue && enabled2 && !readOnly2 && clearable && /* @__PURE__ */ jsx(Part, { partId: PART_CLEAR_BUTTON$1, children: /* @__PURE__ */ jsx(
22510
22514
  "span",
22511
22515
  {
22512
- "data-part-id": PART_CLEAR_BUTTON$2,
22513
22516
  className: styles$P.action,
22514
22517
  onClick: (event) => {
22515
22518
  event.stopPropagation();
@@ -22517,7 +22520,7 @@ const SelectTriggerActions = ({
22517
22520
  },
22518
22521
  children: /* @__PURE__ */ jsx(Icon$l, { name: "close" })
22519
22522
  }
22520
- ),
22523
+ ) }),
22521
22524
  showChevron && /* @__PURE__ */ jsx("span", { className: styles$P.action, children: /* @__PURE__ */ jsx(Icon$l, { name: "chevrondown" }) })
22522
22525
  ] });
22523
22526
  };
@@ -22785,7 +22788,7 @@ const Select = forwardRef(function Select2({
22785
22788
  },
22786
22789
  modal: false,
22787
22790
  children: [
22788
- /* @__PURE__ */ jsxs(
22791
+ /* @__PURE__ */ jsx(Part, { partId: PART_LIST_WRAPPER$1, children: /* @__PURE__ */ jsxs(
22789
22792
  PopoverTrigger,
22790
22793
  {
22791
22794
  ...rest,
@@ -22797,7 +22800,6 @@ const Select = forwardRef(function Select2({
22797
22800
  onBlur,
22798
22801
  disabled: !enabled2,
22799
22802
  "aria-expanded": open,
22800
- "data-part-id": PART_LIST_WRAPPER$1,
22801
22803
  className: classnames(className, styles$P.selectTrigger, styles$P[validationStatus], {
22802
22804
  [styles$P.disabled]: !enabled2,
22803
22805
  [styles$P.multi]: multiSelect
@@ -22850,7 +22852,7 @@ const Select = forwardRef(function Select2({
22850
22852
  )
22851
22853
  ]
22852
22854
  }
22853
- ),
22855
+ ) }),
22854
22856
  open && /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsx(
22855
22857
  PopoverContent,
22856
22858
  {
@@ -23544,42 +23546,32 @@ const TextArea = forwardRef(function TextArea2({
23544
23546
  autoComplete: "off"
23545
23547
  };
23546
23548
  if (resize2 === "both" || resize2 === "horizontal" || resize2 === "vertical") {
23547
- return /* @__PURE__ */ jsx(
23549
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
23548
23550
  TextAreaResizable$1,
23549
23551
  {
23550
23552
  ...textareaProps,
23551
- "data-part-id": PART_INPUT,
23552
23553
  style: style2,
23553
23554
  className: classnames(classes),
23554
23555
  maxRows,
23555
23556
  minRows,
23556
23557
  rows
23557
23558
  }
23558
- );
23559
+ ) });
23559
23560
  }
23560
23561
  if (autoSize || !isNil(maxRows) || !isNil(minRows)) {
23561
- return /* @__PURE__ */ jsx(
23562
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
23562
23563
  TextareaAutosize,
23563
23564
  {
23564
23565
  ...textareaProps,
23565
- "data-part-id": PART_INPUT,
23566
23566
  style: style2,
23567
23567
  className: classnames(classes),
23568
23568
  maxRows,
23569
23569
  minRows,
23570
23570
  rows
23571
23571
  }
23572
- );
23572
+ ) });
23573
23573
  }
23574
- return /* @__PURE__ */ jsx(
23575
- "textarea",
23576
- {
23577
- ...textareaProps,
23578
- "data-part-id": PART_INPUT,
23579
- rows,
23580
- className: classnames(classes)
23581
- }
23582
- );
23574
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx("textarea", { ...textareaProps, rows, className: classnames(classes) }) });
23583
23575
  });
23584
23576
  const themeVars$w = `'{"border-AutoComplete": "var(--xmlui-border-AutoComplete)", "borderHorizontal-AutoComplete": "var(--xmlui-borderHorizontal-AutoComplete, var(--xmlui-border-AutoComplete))", "borderVertical-AutoComplete": "var(--xmlui-borderVertical-AutoComplete, var(--xmlui-border-AutoComplete))", "borderLeft-AutoComplete": "var(--xmlui-borderLeft-AutoComplete, var(--xmlui-borderHorizontal-AutoComplete, var(--xmlui-border-AutoComplete)))", "borderRight-AutoComplete": "var(--xmlui-borderRight-AutoComplete, var(--xmlui-borderHorizontal-AutoComplete, var(--xmlui-border-AutoComplete)))", "borderTop-AutoComplete": "var(--xmlui-borderTop-AutoComplete, var(--xmlui-borderVertical-AutoComplete, var(--xmlui-border-AutoComplete)))", "borderBottom-AutoComplete": "var(--xmlui-borderBottom-AutoComplete, var(--xmlui-borderVertical-AutoComplete, var(--xmlui-border-AutoComplete)))", "borderWidth-AutoComplete": "var(--xmlui-borderWidth-AutoComplete)", "borderHorizontalWidth-AutoComplete": "var(--xmlui-borderHorizontalWidth-AutoComplete, var(--xmlui-borderWidth-AutoComplete))", "borderLeftWidth-AutoComplete": "var(--xmlui-borderLeftWidth-AutoComplete, var(--xmlui-borderHorizontalWidth-AutoComplete, var(--xmlui-borderWidth-AutoComplete)))", "borderRightWidth-AutoComplete": "var(--xmlui-borderRightWidth-AutoComplete, var(--xmlui-borderHorizontalWidth-AutoComplete, var(--xmlui-borderWidth-AutoComplete)))", "borderVerticalWidth-AutoComplete": "var(--xmlui-borderVerticalWidth-AutoComplete, var(--xmlui-borderWidth-AutoComplete))", "borderTopWidth-AutoComplete": "var(--xmlui-borderTopWidth-AutoComplete, var(--xmlui-borderVerticalWidth-AutoComplete, var(--xmlui-borderWidth-AutoComplete)))", "borderBottomWidth-AutoComplete": "var(--xmlui-borderBottomWidth-AutoComplete, var(--xmlui-borderVerticalWidth-AutoComplete, var(--xmlui-borderWidth-AutoComplete)))", "borderStyle-AutoComplete": "var(--xmlui-borderStyle-AutoComplete)", "borderHorizontalStyle-AutoComplete": "var(--xmlui-borderHorizontalStyle-AutoComplete, var(--xmlui-borderStyle-AutoComplete))", "borderLeftStyle-AutoComplete": "var(--xmlui-borderLeftStyle-AutoComplete, var(--xmlui-borderHorizontalStyle-AutoComplete, var(--xmlui-borderStyle-AutoComplete)))", "borderRightStyle-AutoComplete": "var(--xmlui-borderRightStyle-AutoComplete, var(--xmlui-borderHorizontalStyle-AutoComplete, var(--xmlui-borderStyle-AutoComplete)))", "borderVerticalStyle-AutoComplete": "var(--xmlui-borderVerticalStyle-AutoComplete, var(--xmlui-borderStyle-AutoComplete))", "borderTopStyle-AutoComplete": "var(--xmlui-borderTopStyle-AutoComplete, var(--xmlui-borderVerticalStyle-AutoComplete, var(--xmlui-borderStyle-AutoComplete)))", "borderBottomStyle-AutoComplete": "var(--xmlui-borderBottomStyle-AutoComplete, var(--xmlui-borderVerticalStyle-AutoComplete, var(--xmlui-borderStyle-AutoComplete)))", "borderColor-AutoComplete": "var(--xmlui-borderColor-AutoComplete)", "borderHorizontalColor-AutoComplete": "var(--xmlui-borderHorizontalColor-AutoComplete, var(--xmlui-borderColor-AutoComplete))", "borderLeftColor-AutoComplete": "var(--xmlui-borderLeftColor-AutoComplete, var(--xmlui-borderHorizontalColor-AutoComplete, var(--xmlui-borderColor-AutoComplete)))", "borderRightColor-AutoComplete": "var(--xmlui-borderRightColor-AutoComplete, var(--xmlui-borderHorizontalColor-AutoComplete, var(--xmlui-borderColor-AutoComplete)))", "borderVerticalColor-AutoComplete": "var(--xmlui-borderVerticalColor-AutoComplete, var(--xmlui-borderColor-AutoComplete))", "borderTopColor-AutoComplete": "var(--xmlui-borderTopColor-AutoComplete, var(--xmlui-borderVerticalColor-AutoComplete, var(--xmlui-borderColor-AutoComplete)))", "borderBottomColor-AutoComplete": "var(--xmlui-borderBottomColor-AutoComplete, var(--xmlui-borderVerticalColor-AutoComplete, var(--xmlui-borderColor-AutoComplete)))", "borderStartStartRadius-AutoComplete": "var(--xmlui-borderStartStartRadius-AutoComplete, var(--xmlui-borderRadius-AutoComplete))", "borderStartEndRadius-AutoComplete": "var(--xmlui-borderStartEndRadius-AutoComplete, var(--xmlui-borderRadius-AutoComplete))", "borderEndStartRadius-AutoComplete": "var(--xmlui-borderEndStartRadius-AutoComplete, var(--xmlui-borderRadius-AutoComplete))", "borderEndEndRadius-AutoComplete": "var(--xmlui-borderEndEndRadius-AutoComplete, var(--xmlui-borderRadius-AutoComplete))", "padding-AutoComplete": "var(--xmlui-padding-AutoComplete)", "paddingHorizontal-AutoComplete": "var(--xmlui-paddingHorizontal-AutoComplete, var(--xmlui-padding-AutoComplete))", "paddingVertical-AutoComplete": "var(--xmlui-paddingVertical-AutoComplete, var(--xmlui-padding-AutoComplete))", "paddingLeft-AutoComplete": "var(--xmlui-paddingLeft-AutoComplete, var(--xmlui-paddingHorizontal-AutoComplete, var(--xmlui-padding-AutoComplete)))", "paddingRight-AutoComplete": "var(--xmlui-paddingRight-AutoComplete, var(--xmlui-paddingHorizontal-AutoComplete, var(--xmlui-padding-AutoComplete)))", "paddingTop-AutoComplete": "var(--xmlui-paddingTop-AutoComplete, var(--xmlui-paddingVertical-AutoComplete, var(--xmlui-padding-AutoComplete)))", "paddingBottom-AutoComplete": "var(--xmlui-paddingBottom-AutoComplete, var(--xmlui-paddingVertical-AutoComplete, var(--xmlui-padding-AutoComplete)))", "padding-item-AutoComplete": "var(--xmlui-padding-item-AutoComplete)", "paddingHorizontal-item-AutoComplete": "var(--xmlui-paddingHorizontal-item-AutoComplete, var(--xmlui-padding-item-AutoComplete))", "paddingVertical-item-AutoComplete": "var(--xmlui-paddingVertical-item-AutoComplete, var(--xmlui-padding-item-AutoComplete))", "paddingLeft-item-AutoComplete": "var(--xmlui-paddingLeft-item-AutoComplete, var(--xmlui-paddingHorizontal-item-AutoComplete, var(--xmlui-padding-item-AutoComplete)))", "paddingRight-item-AutoComplete": "var(--xmlui-paddingRight-item-AutoComplete, var(--xmlui-paddingHorizontal-item-AutoComplete, var(--xmlui-padding-item-AutoComplete)))", "paddingTop-item-AutoComplete": "var(--xmlui-paddingTop-item-AutoComplete, var(--xmlui-paddingVertical-item-AutoComplete, var(--xmlui-padding-item-AutoComplete)))", "paddingBottom-item-AutoComplete": "var(--xmlui-paddingBottom-item-AutoComplete, var(--xmlui-paddingVertical-item-AutoComplete, var(--xmlui-padding-item-AutoComplete)))", "Input:borderRadius-AutoComplete--default": "var(--xmlui-borderRadius-AutoComplete--default)", "Input:borderColor-AutoComplete--default": "var(--xmlui-borderColor-AutoComplete--default)", "Input:borderWidth-AutoComplete--default": "var(--xmlui-borderWidth-AutoComplete--default)", "Input:borderStyle-AutoComplete--default": "var(--xmlui-borderStyle-AutoComplete--default)", "Input:fontSize-AutoComplete--default": "var(--xmlui-fontSize-AutoComplete--default)", "Input:backgroundColor-AutoComplete--default": "var(--xmlui-backgroundColor-AutoComplete--default)", "Input:boxShadow-AutoComplete--default": "var(--xmlui-boxShadow-AutoComplete--default)", "Input:textColor-AutoComplete--default": "var(--xmlui-textColor-AutoComplete--default)", "Input:borderColor-AutoComplete--default--hover": "var(--xmlui-borderColor-AutoComplete--default--hover)", "Input:backgroundColor-AutoComplete--default--hover": "var(--xmlui-backgroundColor-AutoComplete--default--hover)", "Input:boxShadow-AutoComplete--default--hover": "var(--xmlui-boxShadow-AutoComplete--default--hover)", "Input:textColor-AutoComplete--default--hover": "var(--xmlui-textColor-AutoComplete--default--hover)", "Input:textColor-placeholder-AutoComplete--default": "var(--xmlui-textColor-placeholder-AutoComplete--default)", "Input:fontSize-placeholder-AutoComplete--default": "var(--xmlui-fontSize-placeholder-AutoComplete--default)", "Input:borderRadius-AutoComplete--error": "var(--xmlui-borderRadius-AutoComplete--error)", "Input:borderColor-AutoComplete--error": "var(--xmlui-borderColor-AutoComplete--error)", "Input:borderWidth-AutoComplete--error": "var(--xmlui-borderWidth-AutoComplete--error)", "Input:borderStyle-AutoComplete--error": "var(--xmlui-borderStyle-AutoComplete--error)", "Input:fontSize-AutoComplete--error": "var(--xmlui-fontSize-AutoComplete--error)", "Input:backgroundColor-AutoComplete--error": "var(--xmlui-backgroundColor-AutoComplete--error)", "Input:boxShadow-AutoComplete--error": "var(--xmlui-boxShadow-AutoComplete--error)", "Input:textColor-AutoComplete--error": "var(--xmlui-textColor-AutoComplete--error)", "Input:borderColor-AutoComplete--error--hover": "var(--xmlui-borderColor-AutoComplete--error--hover)", "Input:backgroundColor-AutoComplete--error--hover": "var(--xmlui-backgroundColor-AutoComplete--error--hover)", "Input:boxShadow-AutoComplete--error--hover": "var(--xmlui-boxShadow-AutoComplete--error--hover)", "Input:textColor-AutoComplete--error--hover": "var(--xmlui-textColor-AutoComplete--error--hover)", "Input:textColor-placeholder-AutoComplete--error": "var(--xmlui-textColor-placeholder-AutoComplete--error)", "Input:fontSize-placeholder-AutoComplete--error": "var(--xmlui-fontSize-placeholder-AutoComplete--error)", "Input:borderRadius-AutoComplete--warning": "var(--xmlui-borderRadius-AutoComplete--warning)", "Input:borderColor-AutoComplete--warning": "var(--xmlui-borderColor-AutoComplete--warning)", "Input:borderWidth-AutoComplete--warning": "var(--xmlui-borderWidth-AutoComplete--warning)", "Input:borderStyle-AutoComplete--warning": "var(--xmlui-borderStyle-AutoComplete--warning)", "Input:fontSize-AutoComplete--warning": "var(--xmlui-fontSize-AutoComplete--warning)", "Input:backgroundColor-AutoComplete--warning": "var(--xmlui-backgroundColor-AutoComplete--warning)", "Input:boxShadow-AutoComplete--warning": "var(--xmlui-boxShadow-AutoComplete--warning)", "Input:textColor-AutoComplete--warning": "var(--xmlui-textColor-AutoComplete--warning)", "Input:borderColor-AutoComplete--warning--hover": "var(--xmlui-borderColor-AutoComplete--warning--hover)", "Input:backgroundColor-AutoComplete--warning--hover": "var(--xmlui-backgroundColor-AutoComplete--warning--hover)", "Input:boxShadow-AutoComplete--warning--hover": "var(--xmlui-boxShadow-AutoComplete--warning--hover)", "Input:textColor-AutoComplete--warning--hover": "var(--xmlui-textColor-AutoComplete--warning--hover)", "Input:textColor-placeholder-AutoComplete--warning": "var(--xmlui-textColor-placeholder-AutoComplete--warning)", "Input:fontSize-placeholder-AutoComplete--warning": "var(--xmlui-fontSize-placeholder-AutoComplete--warning)", "Input:borderRadius-AutoComplete--success": "var(--xmlui-borderRadius-AutoComplete--success)", "Input:borderColor-AutoComplete--success": "var(--xmlui-borderColor-AutoComplete--success)", "Input:borderWidth-AutoComplete--success": "var(--xmlui-borderWidth-AutoComplete--success)", "Input:borderStyle-AutoComplete--success": "var(--xmlui-borderStyle-AutoComplete--success)", "Input:fontSize-AutoComplete--success": "var(--xmlui-fontSize-AutoComplete--success)", "Input:backgroundColor-AutoComplete--success": "var(--xmlui-backgroundColor-AutoComplete--success)", "Input:boxShadow-AutoComplete--success": "var(--xmlui-boxShadow-AutoComplete--success)", "Input:textColor-AutoComplete--success": "var(--xmlui-textColor-AutoComplete--success)", "Input:borderColor-AutoComplete--success--hover": "var(--xmlui-borderColor-AutoComplete--success--hover)", "Input:backgroundColor-AutoComplete--success--hover": "var(--xmlui-backgroundColor-AutoComplete--success--hover)", "Input:boxShadow-AutoComplete--success--hover": "var(--xmlui-boxShadow-AutoComplete--success--hover)", "Input:textColor-AutoComplete--success--hover": "var(--xmlui-textColor-AutoComplete--success--hover)", "Input:textColor-placeholder-AutoComplete--success": "var(--xmlui-textColor-placeholder-AutoComplete--success)", "Input:fontSize-placeholder-AutoComplete--success": "var(--xmlui-fontSize-placeholder-AutoComplete--success)", "Input:gap-adornment-AutoComplete": "var(--xmlui-gap-adornment-AutoComplete)", "Input:backgroundColor-AutoComplete--disabled": "var(--xmlui-backgroundColor-AutoComplete--disabled)", "Input:textColor-AutoComplete--disabled": "var(--xmlui-textColor-AutoComplete--disabled)", "Input:borderColor-AutoComplete--disabled": "var(--xmlui-borderColor-AutoComplete--disabled)", "Input:outlineWidth-AutoComplete--focus": "var(--xmlui-outlineWidth-AutoComplete--focus)", "Input:outlineColor-AutoComplete--focus": "var(--xmlui-outlineColor-AutoComplete--focus)", "Input:outlineStyle-AutoComplete--focus": "var(--xmlui-outlineStyle-AutoComplete--focus)", "Input:outlineOffset-AutoComplete--focus": "var(--xmlui-outlineOffset-AutoComplete--focus)", "paddingVertical-AutoComplete-badge": "var(--xmlui-paddingVertical-AutoComplete-badge)", "paddingHorizontal-AutoComplete-badge": "var(--xmlui-paddingHorizontal-AutoComplete-badge)", "borderRadius-AutoComplete-badge": "var(--xmlui-borderRadius-AutoComplete-badge)", "Input:fontSize-AutoComplete-badge": "var(--xmlui-fontSize-AutoComplete-badge)", "Input:backgroundColor-AutoComplete-badge": "var(--xmlui-backgroundColor-AutoComplete-badge)", "Input:textColor-AutoComplete-badge": "var(--xmlui-textColor-AutoComplete-badge)", "Input:backgroundColor-AutoComplete-badge--hover": "var(--xmlui-backgroundColor-AutoComplete-badge--hover)", "Input:textColor-AutoComplete-badge--hover": "var(--xmlui-textColor-AutoComplete-badge--hover)", "Input:backgroundColor-AutoComplete-badge--active": "var(--xmlui-backgroundColor-AutoComplete-badge--active)", "Input:textColor-AutoComplete-badge--active": "var(--xmlui-textColor-AutoComplete-badge--active)", "Input:textColor-placeholder-AutoComplete": "var(--xmlui-textColor-placeholder-AutoComplete)", "Input:borderRadius-menu-AutoComplete": "var(--xmlui-borderRadius-menu-AutoComplete)", "Input:borderWidth-menu-AutoComplete": "var(--xmlui-borderWidth-menu-AutoComplete)", "Input:borderColor-menu-AutoComplete": "var(--xmlui-borderColor-menu-AutoComplete)", "Input:backgroundColor-menu-AutoComplete": "var(--xmlui-backgroundColor-menu-AutoComplete)", "Input:boxShadow-menu-AutoComplete": "var(--xmlui-boxShadow-menu-AutoComplete)", "backgroundColor-item-AutoComplete": "var(--xmlui-backgroundColor-item-AutoComplete)", "backgroundColor-item-AutoComplete--active": "var(--xmlui-backgroundColor-item-AutoComplete--active)", "backgroundColor-item-AutoComplete--hover": "var(--xmlui-backgroundColor-item-AutoComplete--hover)", "textColor-item-AutoComplete--disabled": "var(--xmlui-textColor-item-AutoComplete--disabled)"}'`;
23585
23577
  const command = "_command_17r5s_14";
@@ -23980,12 +23972,11 @@ const AutoComplete = forwardRef(function AutoComplete2({
23980
23972
  },
23981
23973
  modal: false,
23982
23974
  children: [
23983
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, ref: setReferenceElement, children: /* @__PURE__ */ jsxs(
23975
+ /* @__PURE__ */ jsx(Part, { partId: PART_LIST_WRAPPER, children: /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, ref: setReferenceElement, children: /* @__PURE__ */ jsxs(
23984
23976
  "div",
23985
23977
  {
23986
23978
  ref: forwardedRef,
23987
23979
  style: style2,
23988
- "data-part-id": PART_LIST_WRAPPER,
23989
23980
  className: classnames(
23990
23981
  className,
23991
23982
  styles$M.badgeListWrapper,
@@ -24020,7 +24011,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
24020
24011
  )
24021
24012
  ] }, index)) }),
24022
24013
  /* @__PURE__ */ jsxs("div", { className: styles$M.inputWrapper, children: [
24023
- /* @__PURE__ */ jsx(
24014
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
24024
24015
  "input",
24025
24016
  {
24026
24017
  ...rest,
@@ -24056,7 +24047,6 @@ const AutoComplete = forwardRef(function AutoComplete2({
24056
24047
  setOpen(true);
24057
24048
  }
24058
24049
  },
24059
- "data-part-id": PART_INPUT,
24060
24050
  readOnly: readOnly2,
24061
24051
  autoFocus,
24062
24052
  "aria-autocomplete": "list",
@@ -24070,7 +24060,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
24070
24060
  placeholder: !readOnly2 ? placeholder2 : "",
24071
24061
  className: styles$M.commandInput
24072
24062
  }
24073
- ),
24063
+ ) }),
24074
24064
  /* @__PURE__ */ jsxs("div", { className: styles$M.actions, children: [
24075
24065
  value?.length > 0 && enabled2 && !readOnly2 && /* @__PURE__ */ jsx(
24076
24066
  "span",
@@ -24099,7 +24089,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
24099
24089
  ] })
24100
24090
  ]
24101
24091
  }
24102
- ) }),
24092
+ ) }) }),
24103
24093
  open && /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsx(
24104
24094
  PopoverContent,
24105
24095
  {
@@ -25255,11 +25245,11 @@ function requireClient() {
25255
25245
  var clientExports = /* @__PURE__ */ requireClient();
25256
25246
  const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(clientExports);
25257
25247
  const themeVars$p = `'{"backgroundColor-ResponsiveBar": "var(--xmlui-backgroundColor-ResponsiveBar)", "padding-ResponsiveBar": "var(--xmlui-padding-ResponsiveBar)", "margin-ResponsiveBar": "var(--xmlui-margin-ResponsiveBar)"}'`;
25258
- const responsiveBar = "_responsiveBar_9ttfw_14";
25259
- const vertical$2 = "_vertical_9ttfw_26";
25260
- const horizontal$1 = "_horizontal_9ttfw_33";
25261
- const visibleItems = "_visibleItems_9ttfw_39";
25262
- const overflowDropdown = "_overflowDropdown_9ttfw_65";
25248
+ const responsiveBar = "_responsiveBar_1euow_14";
25249
+ const vertical$2 = "_vertical_1euow_26";
25250
+ const horizontal$1 = "_horizontal_1euow_33";
25251
+ const visibleItems = "_visibleItems_1euow_39";
25252
+ const overflowDropdown = "_overflowDropdown_1euow_65";
25263
25253
  const styles$F = {
25264
25254
  themeVars: themeVars$p,
25265
25255
  responsiveBar,
@@ -25268,26 +25258,55 @@ const styles$F = {
25268
25258
  visibleItems,
25269
25259
  overflowDropdown
25270
25260
  };
25261
+ const PART_OVERFLOW = "overflow";
25271
25262
  const ResponsiveBarDropdown = ({
25272
25263
  overflowIcon,
25264
+ dropdownText,
25265
+ dropdownAlignment,
25266
+ triggerTemplate,
25273
25267
  children,
25274
- className
25275
- }) => /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(DropdownMenu, { label: "More options", triggerButtonIcon: overflowIcon, children }) });
25268
+ className,
25269
+ onWillOpen,
25270
+ registerComponentApi
25271
+ }) => /* @__PURE__ */ jsx(Part, { partId: PART_OVERFLOW, children: /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
25272
+ DropdownMenu,
25273
+ {
25274
+ label: dropdownText,
25275
+ triggerButtonIcon: overflowIcon,
25276
+ triggerTemplate,
25277
+ alignment: dropdownAlignment,
25278
+ compact: true,
25279
+ onWillOpen,
25280
+ registerComponentApi,
25281
+ children
25282
+ }
25283
+ ) }) });
25276
25284
  const defaultResponsiveBarProps = {
25277
25285
  overflowIcon: "ellipsisHorizontal:ResponsiveBar",
25286
+ dropdownText: "More options",
25278
25287
  gap: 0,
25279
- orientation: "horizontal"
25288
+ orientation: "horizontal",
25289
+ reverse: false
25280
25290
  };
25281
25291
  const ResponsiveBar = forwardRef(function ResponsiveBar2({
25282
25292
  children,
25293
+ childNodes,
25294
+ renderChildFn,
25283
25295
  overflowIcon = defaultResponsiveBarProps.overflowIcon,
25296
+ dropdownText = defaultResponsiveBarProps.dropdownText,
25297
+ dropdownAlignment,
25298
+ triggerTemplate,
25284
25299
  gap = defaultResponsiveBarProps.gap,
25285
25300
  orientation = defaultResponsiveBarProps.orientation,
25301
+ reverse: reverse2 = defaultResponsiveBarProps.reverse,
25286
25302
  style: style2,
25287
25303
  className,
25288
25304
  onClick,
25305
+ onWillOpen,
25306
+ registerComponentApi,
25289
25307
  ...rest
25290
25308
  }, ref) {
25309
+ const effectiveAlignment = dropdownAlignment ?? (reverse2 ? "start" : "end");
25291
25310
  const containerRef = useRef(null);
25292
25311
  const measurementDropdownRef = useRef(null);
25293
25312
  const isCalculatingRef = useRef(false);
@@ -25295,8 +25314,10 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25295
25314
  const lastChildrenCount = useRef(0);
25296
25315
  useRef(null);
25297
25316
  const layoutCompletedRef = useRef(false);
25317
+ const dropdownApiRef = useRef(null);
25298
25318
  const [isInMeasurementPhase, setIsInMeasurementPhase] = useState(true);
25299
25319
  const [measuredWidths, setMeasuredWidths] = useState([]);
25320
+ const [measuredDropdownSize, setMeasuredDropdownSize] = useState(0);
25300
25321
  const [layout, setLayout] = useState({
25301
25322
  visibleItems: [],
25302
25323
  overflowItems: []
@@ -25308,6 +25329,21 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25308
25329
  return result;
25309
25330
  }, [children]);
25310
25331
  const childrenCount = childrenArray.length;
25332
+ useEffect(() => {
25333
+ if (registerComponentApi) {
25334
+ registerComponentApi({
25335
+ open: () => {
25336
+ dropdownApiRef.current?.open();
25337
+ },
25338
+ close: () => {
25339
+ dropdownApiRef.current?.close();
25340
+ },
25341
+ hasOverflow: () => {
25342
+ return layout.overflowItems.length > 0;
25343
+ }
25344
+ });
25345
+ }
25346
+ }, [registerComponentApi, layout.overflowItems.length]);
25311
25347
  const measureItems = () => {
25312
25348
  if (!containerRef.current) return;
25313
25349
  const items = [];
@@ -25327,7 +25363,16 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25327
25363
  const rect = item2.getBoundingClientRect();
25328
25364
  return orientation === "horizontal" ? rect.width : rect.height;
25329
25365
  });
25366
+ let dropdownSize = orientation === "horizontal" ? 147 : 47;
25367
+ if (measurementDropdownRef.current) {
25368
+ const dropdownRect = measurementDropdownRef.current.getBoundingClientRect();
25369
+ const measuredSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
25370
+ if (measuredSize > 0) {
25371
+ dropdownSize = measuredSize;
25372
+ }
25373
+ }
25330
25374
  setMeasuredWidths(measurements);
25375
+ setMeasuredDropdownSize(dropdownSize);
25331
25376
  setIsInMeasurementPhase(false);
25332
25377
  };
25333
25378
  const calculateOverflowLayout = () => {
@@ -25341,7 +25386,6 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25341
25386
  if (containerSize === 0 || containerSize === lastSize) {
25342
25387
  return;
25343
25388
  }
25344
- console.log(`ResponsiveBar ${orientation}: containerSize=${containerSize}, children=${childrenArray.length}`);
25345
25389
  isCalculatingRef.current = true;
25346
25390
  lastContainerSize.current = containerSize;
25347
25391
  const gapValue = gap;
@@ -25352,25 +25396,23 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25352
25396
  const gapSize = i > 0 ? gapValue : 0;
25353
25397
  totalSize += gapSize + childSize;
25354
25398
  }
25355
- console.log(`Total size needed: ${totalSize}, available: ${containerSize}`);
25356
25399
  let visibleItems2;
25357
25400
  let overflowItems;
25358
25401
  if (totalSize <= containerSize) {
25359
25402
  visibleItems2 = childrenArray;
25360
25403
  overflowItems = [];
25361
25404
  } else {
25362
- let dropdownSize = orientation === "horizontal" ? 147 : 47;
25405
+ let dropdownSize = measuredDropdownSize > 0 ? measuredDropdownSize : orientation === "horizontal" ? 147 : 47;
25363
25406
  const existingDropdown = container2.querySelector(
25364
25407
  `.${styles$F.overflowDropdown}`
25365
25408
  );
25366
25409
  if (existingDropdown) {
25367
25410
  const dropdownRect = existingDropdown.getBoundingClientRect();
25368
- dropdownSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
25369
- } else if (measurementDropdownRef.current) {
25370
- const dropdownRect = measurementDropdownRef.current.getBoundingClientRect();
25371
- dropdownSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
25411
+ const currentSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
25412
+ if (currentSize > 0) {
25413
+ dropdownSize = currentSize;
25414
+ }
25372
25415
  }
25373
- console.log(`Dropdown size: ${dropdownSize}`);
25374
25416
  let accumulatedSize = 0;
25375
25417
  let visibleCount = 0;
25376
25418
  for (let i = 0; i < childrenArray.length; i++) {
@@ -25379,7 +25421,6 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25379
25421
  const gapSize = i > 0 ? gapValue : 0;
25380
25422
  const proposedSize = accumulatedSize + gapSize + childSize;
25381
25423
  const totalSizeWithDropdown = proposedSize + gapValue + dropdownSize;
25382
- console.log(`Item ${i}: size=${childSize}, proposed=${proposedSize}, withDropdown=${totalSizeWithDropdown}`);
25383
25424
  if (totalSizeWithDropdown <= containerSize) {
25384
25425
  accumulatedSize = proposedSize;
25385
25426
  visibleCount++;
@@ -25393,18 +25434,14 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25393
25434
  if (visibleCount >= childrenArray.length) {
25394
25435
  visibleItems2 = childrenArray;
25395
25436
  overflowItems = [];
25396
- console.log(`All items fit, no dropdown needed`);
25397
25437
  } else if (visibleCount === 0) {
25398
25438
  visibleItems2 = childrenArray.slice(0, 1);
25399
25439
  overflowItems = childrenArray.slice(1);
25400
- console.log(`No items fit, forcing one visible: visible=1, overflow=${overflowItems.length}`);
25401
25440
  } else {
25402
25441
  visibleItems2 = childrenArray.slice(0, visibleCount);
25403
25442
  overflowItems = childrenArray.slice(visibleCount);
25404
- console.log(`Split items: visible=${visibleItems2.length}, overflow=${overflowItems.length}`);
25405
25443
  }
25406
25444
  }
25407
- console.log(`Final layout: visible=${visibleItems2.length}, overflow=${overflowItems.length}`);
25408
25445
  if (visibleItems2.length !== layout.visibleItems.length || overflowItems.length !== layout.overflowItems.length) {
25409
25446
  setLayout({
25410
25447
  visibleItems: visibleItems2,
@@ -25426,6 +25463,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25426
25463
  lastChildrenCount.current = childrenCount;
25427
25464
  setIsInMeasurementPhase(true);
25428
25465
  setMeasuredWidths([]);
25466
+ setMeasuredDropdownSize(0);
25429
25467
  }
25430
25468
  }, [childrenCount]);
25431
25469
  useEffect(() => {
@@ -25471,7 +25509,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25471
25509
  ...style2,
25472
25510
  gap: `${gap}px`,
25473
25511
  // Gap between visibleItems and overflowDropdown
25474
- flexDirection: orientation === "horizontal" ? "row" : "column",
25512
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column",
25475
25513
  height: orientation === "vertical" ? "100%" : void 0,
25476
25514
  width: orientation === "horizontal" ? "100%" : void 0
25477
25515
  },
@@ -25493,7 +25531,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25493
25531
  visibility: "hidden",
25494
25532
  opacity: 0,
25495
25533
  pointerEvents: "none",
25496
- flexDirection: orientation === "horizontal" ? "row" : "column"
25534
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column"
25497
25535
  },
25498
25536
  children: childrenArray.map((child, index) => /* @__PURE__ */ jsx("div", { children: child }, `item-${index}`))
25499
25537
  }
@@ -25511,7 +25549,13 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25511
25549
  ResponsiveBarDropdown,
25512
25550
  {
25513
25551
  overflowIcon,
25552
+ dropdownText,
25553
+ dropdownAlignment: effectiveAlignment,
25554
+ triggerTemplate,
25514
25555
  className: styles$F.overflowDropdown,
25556
+ onWillOpen,
25557
+ registerComponentApi: (api) => {
25558
+ },
25515
25559
  children: childrenArray.length > 0 && /* @__PURE__ */ jsx(MenuItem, { children: childrenArray[0] })
25516
25560
  }
25517
25561
  )
@@ -25531,11 +25575,11 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25531
25575
  style: {
25532
25576
  gap: `${gap}px`,
25533
25577
  // Gap between visible items
25534
- flexDirection: orientation === "horizontal" ? "row" : "column"
25578
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column"
25535
25579
  },
25536
25580
  children: childrenArray.map((child, index) => {
25537
25581
  const isVisible = layout.visibleItems.length > 0 ? index < layout.visibleItems.length : true;
25538
- return /* @__PURE__ */ jsx("div", { style: { display: isVisible ? "block" : "none" }, children: child }, `item-${index}`);
25582
+ return /* @__PURE__ */ jsx("div", { style: { display: isVisible ? "flex" : "none", alignItems: "stretch" }, children: renderChildFn && childNodes ? renderChildFn(childNodes[index], false) : child }, `item-${index}`);
25539
25583
  })
25540
25584
  }
25541
25585
  ),
@@ -25543,8 +25587,19 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25543
25587
  ResponsiveBarDropdown,
25544
25588
  {
25545
25589
  overflowIcon,
25590
+ dropdownText,
25591
+ dropdownAlignment: effectiveAlignment,
25592
+ triggerTemplate,
25546
25593
  className: styles$F.overflowDropdown,
25547
- children: layout.overflowItems.map((item2, index) => /* @__PURE__ */ jsx(MenuItem, { children: item2 }, index))
25594
+ onWillOpen,
25595
+ registerComponentApi: (api) => {
25596
+ dropdownApiRef.current = api;
25597
+ },
25598
+ children: layout.overflowItems.map((item2, index) => {
25599
+ const originalIndex = layout.visibleItems.length + index;
25600
+ const renderedChild = renderChildFn && childNodes ? renderChildFn(childNodes[originalIndex], true) : item2;
25601
+ return /* @__PURE__ */ jsx(MenuItem, { compact: true, children: renderedChild }, index);
25602
+ })
25548
25603
  }
25549
25604
  )
25550
25605
  ] })
@@ -25552,6 +25607,21 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
25552
25607
  }
25553
25608
  );
25554
25609
  });
25610
+ const ResponsiveBarItem = memo(
25611
+ ({ node, isOverflow, renderChild: renderChild2, layoutContext }) => {
25612
+ const nodeWithContext = useMemo(() => {
25613
+ return {
25614
+ type: "Container",
25615
+ contextVars: {
25616
+ $overflow: isOverflow
25617
+ },
25618
+ children: Array.isArray(node) ? node : [node]
25619
+ };
25620
+ }, [node, isOverflow]);
25621
+ return /* @__PURE__ */ jsx(Fragment, { children: renderChild2(nodeWithContext, layoutContext) });
25622
+ }
25623
+ );
25624
+ ResponsiveBarItem.displayName = "ResponsiveBarItem";
25555
25625
  const COMP$1c = "ResponsiveBar";
25556
25626
  const ResponsiveBarMd = createMetadata({
25557
25627
  status: "stable",
@@ -25569,17 +25639,54 @@ const ResponsiveBarMd = createMetadata({
25569
25639
  valueType: "string",
25570
25640
  defaultValue: defaultResponsiveBarProps.overflowIcon
25571
25641
  },
25642
+ dropdownText: {
25643
+ 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.",
25644
+ valueType: "string",
25645
+ defaultValue: defaultResponsiveBarProps.dropdownText
25646
+ },
25647
+ dropdownAlignment: {
25648
+ 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).",
25649
+ valueType: "string",
25650
+ availableValues: alignmentOptionMd
25651
+ },
25652
+ triggerTemplate: dTriggerTemplate(COMP$1c),
25572
25653
  gap: {
25573
25654
  description: "Gap between child elements in pixels. Controls the spacing between items in the responsive bar layout.",
25574
25655
  valueType: "number",
25575
25656
  defaultValue: defaultResponsiveBarProps.gap
25657
+ },
25658
+ reverse: {
25659
+ 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).",
25660
+ valueType: "boolean",
25661
+ defaultValue: defaultResponsiveBarProps.reverse
25576
25662
  }
25577
25663
  },
25578
25664
  events: {
25579
- click: dClick(COMP$1c)
25665
+ click: dClick(COMP$1c),
25666
+ willOpen: d(
25667
+ `This event fires when the \`${COMP$1c}\` 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.`
25668
+ )
25669
+ },
25670
+ apis: {
25671
+ close: {
25672
+ description: `This method closes the overflow dropdown menu.`,
25673
+ signature: "close(): void"
25674
+ },
25675
+ open: {
25676
+ description: `This method opens the overflow dropdown menu.`,
25677
+ signature: "open(): void"
25678
+ },
25679
+ hasOverflow: {
25680
+ 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).`,
25681
+ signature: "hasOverflow(): boolean"
25682
+ }
25683
+ },
25684
+ contextVars: {
25685
+ $overflow: {
25686
+ description: "Boolean indicating whether the child component is displayed in the overflow dropdown menu (true) or visible in the main bar (false).",
25687
+ valueType: "boolean"
25688
+ }
25580
25689
  },
25581
- apis: {},
25582
- contextVars: {},
25583
25690
  themeVars: parseScssVar(styles$F.themeVars),
25584
25691
  limitThemeVarsToComponent: true,
25585
25692
  defaultThemeVars: {
@@ -25591,16 +25698,43 @@ const ResponsiveBarMd = createMetadata({
25591
25698
  const responsiveBarComponentRenderer = createComponentRenderer(
25592
25699
  COMP$1c,
25593
25700
  ResponsiveBarMd,
25594
- ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
25701
+ ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler, registerComponentApi, layoutContext }) => {
25702
+ const children = Array.isArray(node.children) ? node.children : node.children ? [node.children] : [];
25703
+ const renderChildWithContext = (childNode, isOverflow) => /* @__PURE__ */ jsx(
25704
+ ResponsiveBarItem,
25705
+ {
25706
+ node: childNode,
25707
+ isOverflow,
25708
+ renderChild: renderChild2,
25709
+ layoutContext
25710
+ }
25711
+ );
25595
25712
  return /* @__PURE__ */ jsx(
25596
25713
  ResponsiveBar,
25597
25714
  {
25598
25715
  orientation: extractValue(node.props?.orientation),
25599
25716
  overflowIcon: extractValue(node.props?.overflowIcon),
25717
+ dropdownText: extractValue(node.props?.dropdownText),
25718
+ dropdownAlignment: extractValue(node.props?.dropdownAlignment),
25719
+ triggerTemplate: renderChild2(node.props?.triggerTemplate),
25600
25720
  gap: extractValue(node.props?.gap),
25721
+ reverse: extractValue.asOptionalBoolean(node.props?.reverse),
25601
25722
  onClick: lookupEventHandler("click"),
25723
+ onWillOpen: lookupEventHandler("willOpen"),
25724
+ registerComponentApi,
25602
25725
  className,
25603
- children: renderChild2(node.children)
25726
+ childNodes: children,
25727
+ renderChildFn: renderChildWithContext,
25728
+ children: children.map((child, index) => /* @__PURE__ */ jsx(
25729
+ ResponsiveBarItem,
25730
+ {
25731
+ node: child,
25732
+ isOverflow: false,
25733
+ renderChild: renderChild2,
25734
+ layoutContext
25735
+ },
25736
+ index
25737
+ ))
25604
25738
  }
25605
25739
  );
25606
25740
  }
@@ -25743,6 +25877,11 @@ const COMP$19 = "NavLink";
25743
25877
  const NavLinkMd = createMetadata({
25744
25878
  status: "stable",
25745
25879
  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.",
25880
+ parts: {
25881
+ indicator: {
25882
+ description: "The active indicator within the NavLink component."
25883
+ }
25884
+ },
25746
25885
  props: {
25747
25886
  to: d(`This property defines the URL of the link.`),
25748
25887
  enabled: dEnabled(),
@@ -25832,6 +25971,11 @@ const COMP$18 = "Link";
25832
25971
  const LinkMd = createMetadata({
25833
25972
  status: "stable",
25834
25973
  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.",
25974
+ parts: {
25975
+ icon: {
25976
+ description: "The icon within the Link component."
25977
+ }
25978
+ },
25835
25979
  props: {
25836
25980
  to: d(
25837
25981
  "This property defines the URL of the link. If the value is not defined, the link cannot be activated."
@@ -28958,10 +29102,9 @@ const PaginationNative = forwardRef(function PaginationNative2({
28958
29102
  const visiblePages = getVisiblePages();
28959
29103
  const isFirstPage = currentPage === 0;
28960
29104
  const isLastPage = currentPage === totalPages - 1;
28961
- const buttonRow2 = /* @__PURE__ */ jsxs(
29105
+ const buttonRow2 = /* @__PURE__ */ jsx(Part, { partId: "pagination-controls", children: /* @__PURE__ */ jsxs(
28962
29106
  "ul",
28963
29107
  {
28964
- "data-component": `pagination-controls`,
28965
29108
  className: classnames(styles$C.buttonRow, {
28966
29109
  [styles$C.paginationListVertical]: orientation === "vertical"
28967
29110
  // layout is already horizontal by default
@@ -29071,37 +29214,30 @@ const PaginationNative = forwardRef(function PaginationNative2({
29071
29214
  ) })
29072
29215
  ]
29073
29216
  }
29074
- );
29075
- const pageSizeSelector = showPageSizeSelector && pageSizeOptions && pageSizeOptions.length > 1 && /* @__PURE__ */ jsx(
29076
- "div",
29217
+ ) });
29218
+ const pageSizeSelector = showPageSizeSelector && pageSizeOptions && pageSizeOptions.length > 1 && /* @__PURE__ */ jsx(Part, { partId: "page-size-selector-container", children: /* @__PURE__ */ jsx("div", { className: classnames(styles$C.selectorContainer), children: /* @__PURE__ */ jsx(
29219
+ ItemWithLabel,
29077
29220
  {
29078
- "data-component": `page-size-selector-container`,
29079
- className: classnames(styles$C.selectorContainer),
29221
+ id: `${id}-page-size-selector`,
29222
+ label: "Items per page",
29223
+ enabled: enabled2,
29224
+ style: style2,
29225
+ className,
29226
+ labelPosition: orientation === "vertical" ? "top" : "start",
29080
29227
  children: /* @__PURE__ */ jsx(
29081
- ItemWithLabel,
29228
+ "select",
29082
29229
  {
29083
29230
  id: `${id}-page-size-selector`,
29084
- label: "Items per page",
29085
- enabled: enabled2,
29086
- style: style2,
29087
- className,
29088
- labelPosition: orientation === "vertical" ? "top" : "start",
29089
- children: /* @__PURE__ */ jsx(
29090
- "select",
29091
- {
29092
- id: `${id}-page-size-selector`,
29093
- value: pageSize,
29094
- onChange: (e) => handlePageSizeChange(Number(e.target.value)),
29095
- disabled: !enabled2,
29096
- className: styles$C.pageSizeSelect,
29097
- children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
29098
- }
29099
- )
29231
+ value: pageSize,
29232
+ onChange: (e) => handlePageSizeChange(Number(e.target.value)),
29233
+ disabled: !enabled2,
29234
+ className: styles$C.pageSizeSelect,
29235
+ children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
29100
29236
  }
29101
29237
  )
29102
29238
  }
29103
- );
29104
- const pageInfo = showPageInfo && /* @__PURE__ */ jsx("div", { "data-component": `page-info`, className: classnames(styles$C.pageInfo), children: /* @__PURE__ */ jsxs(Text, { variant: "secondary", children: [
29239
+ ) }) });
29240
+ const pageInfo = showPageInfo && /* @__PURE__ */ jsx(Part, { partId: "page-info", children: /* @__PURE__ */ jsx("div", { className: classnames(styles$C.pageInfo), children: /* @__PURE__ */ jsxs(Text, { variant: "secondary", children: [
29105
29241
  "Page ",
29106
29242
  currentPageNumber,
29107
29243
  " of ",
@@ -29109,7 +29245,7 @@ const PaginationNative = forwardRef(function PaginationNative2({
29109
29245
  " (",
29110
29246
  itemCount,
29111
29247
  " items)"
29112
- ] }) });
29248
+ ] }) }) });
29113
29249
  return /* @__PURE__ */ jsxs(
29114
29250
  "nav",
29115
29251
  {
@@ -29922,6 +30058,15 @@ const COMP$12 = "Table";
29922
30058
  const TableMd = createMetadata({
29923
30059
  status: "stable",
29924
30060
  description: "`Table` presents structured data for viewing, sorting, selection, and interaction.",
30061
+ // NOTE: let's leave it like this for now, we'll expand later when the need arises
30062
+ parts: {
30063
+ table: {
30064
+ description: "The main table container."
30065
+ },
30066
+ pagination: {
30067
+ description: "The pagination controls container."
30068
+ }
30069
+ },
29925
30070
  props: {
29926
30071
  items: dInternal(
29927
30072
  `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.`
@@ -31237,6 +31382,14 @@ const COMP$T = "Splitter";
31237
31382
  const baseSplitterMd = createMetadata({
31238
31383
  status: "stable",
31239
31384
  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.",
31385
+ parts: {
31386
+ primaryPanel: {
31387
+ description: "The primary section/panel of the `Splitter` component."
31388
+ },
31389
+ secondaryPanel: {
31390
+ description: "The secondary section/panel of the `Splitter` component."
31391
+ }
31392
+ },
31240
31393
  props: {
31241
31394
  swapped: {
31242
31395
  description: `This optional booelan property indicates whether the \`${COMP$T}\` sections are layed out as primary and secondary (\`false\`) or secondary and primary (\`true\`) from left to right.`,
@@ -31293,7 +31446,7 @@ const SplitterMd = {
31293
31446
  const HSplitterMd = { ...baseSplitterMd, specializedFrom: COMP$T };
31294
31447
  const VSplitterMd = { ...baseSplitterMd, specializedFrom: COMP$T };
31295
31448
  const DEFAULT_ORIENTATION = "vertical";
31296
- function renderSplitter({
31449
+ function SplitterRenderer({
31297
31450
  node,
31298
31451
  extractValue,
31299
31452
  className,
@@ -31309,7 +31462,7 @@ function renderSplitter({
31309
31462
  const rendered = renderChild2(node.children);
31310
31463
  return rendered ? [rendered] : [];
31311
31464
  }
31312
- return node.children.map((child, index) => renderChild2(child)).filter((child) => child !== null && child !== void 0).map((child, index) => React__default.cloneElement(child, { key: index }));
31465
+ return node.children.map((child) => renderChild2(child)).filter((child) => child !== null && child !== void 0).map((child, index) => React__default.cloneElement(child, { key: index }));
31313
31466
  }, [node.children, renderChild2]);
31314
31467
  const visibleChildCount = renderedChildren.length;
31315
31468
  return /* @__PURE__ */ jsx(
@@ -31333,7 +31486,7 @@ const splitterComponentRenderer = createComponentRenderer(
31333
31486
  COMP$T,
31334
31487
  SplitterMd,
31335
31488
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
31336
- return renderSplitter({
31489
+ return SplitterRenderer({
31337
31490
  node,
31338
31491
  extractValue,
31339
31492
  className,
@@ -31346,7 +31499,7 @@ const vSplitterComponentRenderer = createComponentRenderer(
31346
31499
  "VSplitter",
31347
31500
  VSplitterMd,
31348
31501
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
31349
- return renderSplitter({
31502
+ return SplitterRenderer({
31350
31503
  node,
31351
31504
  extractValue,
31352
31505
  className,
@@ -31360,7 +31513,7 @@ const hSplitterComponentRenderer = createComponentRenderer(
31360
31513
  "HSplitter",
31361
31514
  HSplitterMd,
31362
31515
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
31363
- return renderSplitter({
31516
+ return SplitterRenderer({
31364
31517
  node,
31365
31518
  extractValue,
31366
31519
  className,
@@ -33242,6 +33395,12 @@ const NumberBoxMd = createMetadata({
33242
33395
  },
33243
33396
  input: {
33244
33397
  description: "The text box input area."
33398
+ },
33399
+ spinnerButtonUp: {
33400
+ description: "The spinner button for incrementing the value."
33401
+ },
33402
+ spinnerButtonDown: {
33403
+ description: "The spinner button for decrementing the value."
33245
33404
  }
33246
33405
  },
33247
33406
  props: {
@@ -33399,6 +33558,14 @@ const COMP$M = "NavPanel";
33399
33558
  const NavPanelMd = createMetadata({
33400
33559
  status: "stable",
33401
33560
  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.",
33561
+ parts: {
33562
+ logo: {
33563
+ description: "The logo area within the NavPanel component."
33564
+ },
33565
+ content: {
33566
+ description: "The content area within the NavPanel component."
33567
+ }
33568
+ },
33402
33569
  props: {
33403
33570
  logoTemplate: dComponent(
33404
33571
  `This property defines the logo template to display in the navigation panel with the \`vertical\` and \`vertical-sticky\` layout.`
@@ -33707,6 +33874,11 @@ const RGOption = `RadioGroupOption`;
33707
33874
  const RadioGroupMd = createMetadata({
33708
33875
  status: "stable",
33709
33876
  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.",
33877
+ parts: {
33878
+ label: {
33879
+ description: "The label displayed for the radio group."
33880
+ }
33881
+ },
33710
33882
  props: {
33711
33883
  initialValue: {
33712
33884
  ...dInitialValue(),
@@ -33875,6 +34047,12 @@ const SelectMd = createMetadata({
33875
34047
  parts: {
33876
34048
  clearButton: {
33877
34049
  description: "The button to clear the selected value(s)."
34050
+ },
34051
+ item: {
34052
+ description: "Each option item within the Select component."
34053
+ },
34054
+ menu: {
34055
+ description: "The dropdown menu within the Select component."
33878
34056
  }
33879
34057
  },
33880
34058
  props: {
@@ -34323,6 +34501,11 @@ const COMP$C = "ExpandableItem";
34323
34501
  const ExpandableItemMd = createMetadata({
34324
34502
  status: "stable",
34325
34503
  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.",
34504
+ parts: {
34505
+ summary: {
34506
+ description: "The summary section that is always visible and acts as the trigger."
34507
+ }
34508
+ },
34326
34509
  props: {
34327
34510
  summary: dComponent("The summary content that is always visible and acts as the trigger."),
34328
34511
  initiallyExpanded: {
@@ -36701,7 +36884,7 @@ function InputDivider({
36701
36884
  const PART_DAY = "day";
36702
36885
  const PART_MONTH = "month";
36703
36886
  const PART_YEAR = "year";
36704
- const PART_CLEAR_BUTTON$1 = "clearButton";
36887
+ const PART_CLEAR_BUTTON = "clearButton";
36705
36888
  const MIN_YEAR = 1900;
36706
36889
  const MAX_YEAR = 2100;
36707
36890
  const dateFormats = [
@@ -36934,7 +37117,7 @@ const DateInput = forwardRef(function DateInputNative({
36934
37117
  }
36935
37118
  }
36936
37119
  },
36937
- [day2, month2, year2, handleChange, onInvalidChange]
37120
+ [day2, month2, year2, handleChange, onInvalidChange, formatDateValue]
36938
37121
  );
36939
37122
  const handleDayChange = useMemo(
36940
37123
  () => createInputChangeHandler(
@@ -37239,21 +37422,17 @@ const DateInput = forwardRef(function DateInputNative({
37239
37422
  startAdornment,
37240
37423
  /* @__PURE__ */ jsxs("div", { className: styles$t.wrapper, children: [
37241
37424
  /* @__PURE__ */ jsx("div", { className: styles$t.inputGroup, children: createDateInputs() }),
37242
- clearable && /* @__PURE__ */ jsx(
37425
+ clearable && /* @__PURE__ */ jsx(Part, { partId: PART_CLEAR_BUTTON, children: /* @__PURE__ */ jsx(
37243
37426
  "button",
37244
37427
  {
37245
- "data-part-id": PART_CLEAR_BUTTON$1,
37246
- className: classnames(
37247
- styles$t.clearButton,
37248
- styles$t.button
37249
- ),
37428
+ className: classnames(styles$t.clearButton, styles$t.button),
37250
37429
  disabled: !enabled2,
37251
37430
  onClick: clear,
37252
37431
  onFocus: stopPropagation,
37253
37432
  type: "button",
37254
37433
  children: clearIconElement
37255
37434
  }
37256
- )
37435
+ ) })
37257
37436
  ] }),
37258
37437
  endAdornment
37259
37438
  ]
@@ -37281,10 +37460,9 @@ function DayInput({
37281
37460
  }
37282
37461
  return 31;
37283
37462
  }, [month2, year2]);
37284
- return /* @__PURE__ */ jsx(
37463
+ return /* @__PURE__ */ jsx(Part, { partId: PART_DAY, children: /* @__PURE__ */ jsx(
37285
37464
  PartialInput,
37286
37465
  {
37287
- "data-part-id": PART_DAY,
37288
37466
  id: otherProps.id,
37289
37467
  value,
37290
37468
  emptyCharacter,
@@ -37313,7 +37491,7 @@ function DayInput({
37313
37491
  ariaLabel: otherProps.ariaLabel,
37314
37492
  isInvalid
37315
37493
  }
37316
- );
37494
+ ) });
37317
37495
  }
37318
37496
  function MonthInput({
37319
37497
  minValue,
@@ -37324,10 +37502,9 @@ function MonthInput({
37324
37502
  emptyCharacter = "-",
37325
37503
  ...otherProps
37326
37504
  }) {
37327
- return /* @__PURE__ */ jsx(
37505
+ return /* @__PURE__ */ jsx(Part, { partId: PART_MONTH, children: /* @__PURE__ */ jsx(
37328
37506
  PartialInput,
37329
37507
  {
37330
- "data-part-id": PART_MONTH,
37331
37508
  id: otherProps.id,
37332
37509
  max: 12,
37333
37510
  min: 1,
@@ -37356,7 +37533,7 @@ function MonthInput({
37356
37533
  nextInputRef: otherProps.nextInputRef,
37357
37534
  ariaLabel: otherProps.ariaLabel
37358
37535
  }
37359
- );
37536
+ ) });
37360
37537
  }
37361
37538
  function YearInput({
37362
37539
  minValue,
@@ -37373,10 +37550,9 @@ function YearInput({
37373
37550
  const min = 1900;
37374
37551
  const max = currentYear + 100;
37375
37552
  const { className: originalClassName, ...restProps } = otherProps;
37376
- return /* @__PURE__ */ jsx(
37553
+ return /* @__PURE__ */ jsx(Part, { partId: PART_YEAR, children: /* @__PURE__ */ jsx(
37377
37554
  PartialInput,
37378
37555
  {
37379
- "data-part-id": PART_YEAR,
37380
37556
  id: otherProps.id,
37381
37557
  max,
37382
37558
  min,
@@ -37397,7 +37573,7 @@ function YearInput({
37397
37573
  },
37398
37574
  ...restProps
37399
37575
  }
37400
- );
37576
+ ) });
37401
37577
  }
37402
37578
  function parseDateString(dateString, dateFormat) {
37403
37579
  if (typeof dateString !== "string" || dateString === null || dateString === void 0) {
@@ -37865,11 +38041,6 @@ function safeMin(...args) {
37865
38041
  function safeMax(...args) {
37866
38042
  return Math.max(...args.filter(isValidNumber));
37867
38043
  }
37868
- const PART_HOUR = "hour";
37869
- const PART_MINUTE = "minute";
37870
- const PART_SECOND = "second";
37871
- const PART_AMPM = "ampm";
37872
- const PART_CLEAR_BUTTON = "clearButton";
37873
38044
  const defaultProps$n = {
37874
38045
  enabled: true,
37875
38046
  validationStatus: "none",
@@ -38400,10 +38571,9 @@ const TimeInputNative = forwardRef(function TimeInputNative2({
38400
38571
  }
38401
38572
  )
38402
38573
  ] }),
38403
- clearable && /* @__PURE__ */ jsx(
38574
+ clearable && /* @__PURE__ */ jsx(Part, { partId: "clearButton", children: /* @__PURE__ */ jsx(
38404
38575
  "button",
38405
38576
  {
38406
- "data-part-id": PART_CLEAR_BUTTON,
38407
38577
  className: classnames(styles$q.clearButton, styles$q.button),
38408
38578
  disabled: !enabled2,
38409
38579
  onClick: clear,
@@ -38411,7 +38581,7 @@ const TimeInputNative = forwardRef(function TimeInputNative2({
38411
38581
  type: "button",
38412
38582
  children: clearIconElement
38413
38583
  }
38414
- )
38584
+ ) })
38415
38585
  ] }),
38416
38586
  endAdornment
38417
38587
  ]
@@ -38454,11 +38624,10 @@ function AmPmButton({
38454
38624
  },
38455
38625
  [onKeyDown, disabled2, onAmPmSet, value, amDisabled, pmDisabled]
38456
38626
  );
38457
- return /* @__PURE__ */ jsx(
38627
+ return /* @__PURE__ */ jsx(Part, { partId: "ampm", children: /* @__PURE__ */ jsx(
38458
38628
  "button",
38459
38629
  {
38460
38630
  type: "button",
38461
- "data-part-id": PART_AMPM,
38462
38631
  "aria-label": ariaLabel || "Toggle AM/PM (Press A for AM, P for PM)",
38463
38632
  autoFocus,
38464
38633
  className: classnames(styles$q.amPmButton, styles$q.button, className),
@@ -38468,7 +38637,7 @@ function AmPmButton({
38468
38637
  ref: buttonRef,
38469
38638
  children: /* @__PURE__ */ jsx("span", { className: styles$q.amPmValue, children: value ? value === "am" ? amLabel : pmLabel : "--" })
38470
38639
  }
38471
- );
38640
+ ) });
38472
38641
  }
38473
38642
  function HourInput({
38474
38643
  id,
@@ -38516,11 +38685,10 @@ function HourInput({
38516
38685
  }
38517
38686
  })();
38518
38687
  const displayValue = value || "";
38519
- return /* @__PURE__ */ jsx(
38688
+ return /* @__PURE__ */ jsx(Part, { partId: "hour", children: /* @__PURE__ */ jsx(
38520
38689
  PartialInput,
38521
38690
  {
38522
38691
  id,
38523
- "data-part-id": PART_HOUR,
38524
38692
  value: displayValue,
38525
38693
  emptyCharacter,
38526
38694
  placeholderLength: 2,
@@ -38548,7 +38716,7 @@ function HourInput({
38548
38716
  ariaLabel: otherProps.ariaLabel,
38549
38717
  isInvalid
38550
38718
  }
38551
- );
38719
+ ) });
38552
38720
  }
38553
38721
  function MinuteInput({
38554
38722
  hour: hour2,
@@ -38565,10 +38733,9 @@ function MinuteInput({
38565
38733
  }
38566
38734
  const maxMinute = safeMin(59, maxTime && isSameHour(maxTime) && getMinutes(maxTime));
38567
38735
  const minMinute = safeMax(0, minTime && isSameHour(minTime) && getMinutes(minTime));
38568
- return /* @__PURE__ */ jsx(
38736
+ return /* @__PURE__ */ jsx(Part, { partId: "minute", children: /* @__PURE__ */ jsx(
38569
38737
  PartialInput,
38570
38738
  {
38571
- "data-part-id": PART_MINUTE,
38572
38739
  max: maxMinute,
38573
38740
  min: minMinute,
38574
38741
  name: "minute",
@@ -38596,7 +38763,7 @@ function MinuteInput({
38596
38763
  ariaLabel: otherProps.ariaLabel,
38597
38764
  isInvalid
38598
38765
  }
38599
- );
38766
+ ) });
38600
38767
  }
38601
38768
  function SecondInput({
38602
38769
  hour: hour2,
@@ -38614,10 +38781,9 @@ function SecondInput({
38614
38781
  }
38615
38782
  const maxSecond = safeMin(59, maxTime && isSameMinute(maxTime) && getSeconds(maxTime));
38616
38783
  const minSecond = safeMax(0, minTime && isSameMinute(minTime) && getSeconds(minTime));
38617
- return /* @__PURE__ */ jsx(
38784
+ return /* @__PURE__ */ jsx(Part, { partId: "second", children: /* @__PURE__ */ jsx(
38618
38785
  PartialInput,
38619
38786
  {
38620
- "data-part-id": PART_SECOND,
38621
38787
  max: maxSecond,
38622
38788
  min: minSecond,
38623
38789
  name: "second",
@@ -38645,7 +38811,7 @@ function SecondInput({
38645
38811
  ariaLabel: otherProps.ariaLabel,
38646
38812
  isInvalid
38647
38813
  }
38648
- );
38814
+ ) });
38649
38815
  }
38650
38816
  function parseTimeString(timeValue, targetIs12Hour = false) {
38651
38817
  if (timeValue == null || timeValue === void 0) {
@@ -40253,6 +40419,17 @@ const COMP$r = "Slider";
40253
40419
  const SliderMd = createMetadata({
40254
40420
  status: "stable",
40255
40421
  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.",
40422
+ parts: {
40423
+ label: {
40424
+ description: "The label displayed for the slider."
40425
+ },
40426
+ track: {
40427
+ description: "The track element of the slider."
40428
+ },
40429
+ thumb: {
40430
+ description: "The thumb elements of the slider."
40431
+ }
40432
+ },
40256
40433
  props: {
40257
40434
  initialValue: dInitialValue(),
40258
40435
  minValue: {
@@ -43553,7 +43730,6 @@ const ColorPicker = forwardRef(
43553
43730
  [styles$h.warning]: validationStatus === "warning",
43554
43731
  [styles$h.valid]: validationStatus === "valid"
43555
43732
  }),
43556
- "data-part-id": PART_INPUT,
43557
43733
  style: style2,
43558
43734
  disabled: !enabled2,
43559
43735
  onFocus: handleOnFocus,
@@ -44283,6 +44459,14 @@ const COMP$d = "CodeBlock";
44283
44459
  const CodeBlockMd = createMetadata({
44284
44460
  status: "stable",
44285
44461
  description: `The \`${COMP$d}\` component displays code with optional syntax highlighting and meta information.`,
44462
+ parts: {
44463
+ header: {
44464
+ description: "The header section of the CodeBlock, typically displaying the filename."
44465
+ },
44466
+ content: {
44467
+ description: "The main content area of the CodeBlock where the code is displayed."
44468
+ }
44469
+ },
44286
44470
  props: {},
44287
44471
  themeVars: parseScssVar(styles$I.themeVars),
44288
44472
  defaultThemeVars: {
@@ -46222,6 +46406,17 @@ const COMP$4 = "Pagination";
46222
46406
  const PaginationMd = createMetadata({
46223
46407
  status: "experimental",
46224
46408
  description: "`Pagination` enables navigation through large datasets by dividing content into pages. It provides controls for page navigation and can display current page information.",
46409
+ parts: {
46410
+ buttonRow: {
46411
+ description: "The container for pagination buttons."
46412
+ },
46413
+ pageInfo: {
46414
+ description: "The container for page information display."
46415
+ },
46416
+ pageSizeSelector: {
46417
+ description: "The container for the page size selector dropdown."
46418
+ }
46419
+ },
46225
46420
  props: {
46226
46421
  enabled: dEnabled(),
46227
46422
  itemCount: d(
@@ -48088,7 +48283,7 @@ function IconProvider({ children }) {
48088
48283
  /* @__PURE__ */ jsx("svg", { style: { display: "none" }, ref: spriteRootRef })
48089
48284
  ] });
48090
48285
  }
48091
- const version = "0.11.13";
48286
+ const version = "0.11.16";
48092
48287
  const miscellaneousUtils = {
48093
48288
  capitalize,
48094
48289
  pluralize: pluralize$1,
@@ -48366,21 +48561,21 @@ function createContainerReducer(debugView) {
48366
48561
  case ContainerActionKind.EVENT_HANDLER_STARTED: {
48367
48562
  const { eventName } = action2.payload;
48368
48563
  const inProgressFlagName = `${eventName}InProgress`;
48369
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: true } : { [inProgressFlagName]: true };
48564
+ state[uid] = { ...state[uid], [inProgressFlagName]: true };
48370
48565
  storeNextValue(state[uid]);
48371
48566
  break;
48372
48567
  }
48373
48568
  case ContainerActionKind.EVENT_HANDLER_COMPLETED: {
48374
48569
  const { eventName } = action2.payload;
48375
48570
  const inProgressFlagName = `${eventName}InProgress`;
48376
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: false } : { [inProgressFlagName]: false };
48571
+ state[uid] = { ...state[uid], [inProgressFlagName]: false };
48377
48572
  storeNextValue(state[uid]);
48378
48573
  break;
48379
48574
  }
48380
48575
  case ContainerActionKind.EVENT_HANDLER_ERROR: {
48381
48576
  const { eventName } = action2.payload;
48382
48577
  const inProgressFlagName = `${eventName}InProgress`;
48383
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: false } : { [inProgressFlagName]: false };
48578
+ state[uid] = { ...state[uid], [inProgressFlagName]: false };
48384
48579
  storeNextValue(state[uid]);
48385
48580
  break;
48386
48581
  }
@@ -50601,9 +50796,7 @@ const StateContainer = memo(
50601
50796
  const routingParams = useRoutingParams();
50602
50797
  const memoedVars = useRef(/* @__PURE__ */ new Map());
50603
50798
  const stateFromOutside = useShallowCompareMemoize(
50604
- useMemo(() => {
50605
- return extractScopedState(parentState, node.uses);
50606
- }, [node.uses, parentState])
50799
+ useMemo(() => extractScopedState(parentState, node.uses), [node.uses, parentState])
50607
50800
  );
50608
50801
  const debugView = useDebugView();
50609
50802
  const containerReducer = createContainerReducer(debugView);
@@ -50612,15 +50805,10 @@ const StateContainer = memo(
50612
50805
  const componentStateWithApis = useShallowCompareMemoize(
50613
50806
  useMemo(() => {
50614
50807
  const ret = { ...componentState };
50615
- const registeredApiKeys = new Set(
50616
- Object.getOwnPropertySymbols(componentApis).map((s) => s.description).filter((d2) => d2 !== void 0)
50617
- );
50618
50808
  for (const stateKey of Object.getOwnPropertySymbols(componentState)) {
50619
50809
  const value = componentState[stateKey];
50620
50810
  if (stateKey.description) {
50621
- if (registeredApiKeys.has(stateKey.description)) {
50622
- ret[stateKey.description] = value;
50623
- }
50811
+ ret[stateKey.description] = value;
50624
50812
  }
50625
50813
  }
50626
50814
  if (Reflect.ownKeys(componentApis).length === 0) {
@@ -50684,11 +50872,8 @@ const StateContainer = memo(
50684
50872
  const mergedWithVars = useMergedState(resolvedLocalVars, componentStateWithApis);
50685
50873
  const combinedState = useCombinedState(
50686
50874
  stateFromOutside,
50687
- // Parent state (lower priority) - allows local vars to shadow
50688
50875
  node.contextVars,
50689
- // Context vars like $item
50690
50876
  mergedWithVars,
50691
- // Local vars and component state (higher priority) - enables shadowing
50692
50877
  routingParams
50693
50878
  );
50694
50879
  const registerComponentApi = useCallback((uid, api) => {
@@ -55738,7 +55923,7 @@ function ApiInterceptorProvider({
55738
55923
  return;
55739
55924
  }
55740
55925
  void (async () => {
55741
- const { initMock } = await import("./initMock-B1fL_SOf.js");
55926
+ const { initMock } = await import("./initMock-RhX6qMsS.js");
55742
55927
  const apiInstance2 = await initMock(interceptor);
55743
55928
  setApiInstance(apiInstance2);
55744
55929
  setInitialized(true);
@@ -55755,7 +55940,7 @@ function ApiInterceptorProvider({
55755
55940
  if (define_process_env_default.VITE_MOCK_ENABLED) {
55756
55941
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
55757
55942
  useWorker ? import("./apiInterceptorWorker-Wgm2_zjg.js") : Promise.resolve({ createApiInterceptorWorker: () => null }),
55758
- import("./initMock-B1fL_SOf.js")
55943
+ import("./initMock-RhX6qMsS.js")
55759
55944
  ]);
55760
55945
  if (interceptor || forceInitialize) {
55761
55946
  const apiInstance2 = await initMock(interceptor || {});
@@ -55792,7 +55977,7 @@ function ApiInterceptorProvider({
55792
55977
  void (async () => {
55793
55978
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
55794
55979
  import("./apiInterceptorWorker-Wgm2_zjg.js"),
55795
- import("./initMock-B1fL_SOf.js")
55980
+ import("./initMock-RhX6qMsS.js")
55796
55981
  ]);
55797
55982
  const apiInstance2 = await initMock(interceptor);
55798
55983
  await createApiInterceptorWorker(apiInstance2, parentInterceptorWorker);
@@ -58706,6 +58891,7 @@ const collectedComponentMetadata = {
58706
58891
  RadioGroup: RadioGroupMd,
58707
58892
  RealTimeAdapter: RealTimeAdapterMd,
58708
58893
  Redirect: RedirectMd,
58894
+ ResponsiveBar: ResponsiveBarMd,
58709
58895
  Select: SelectMd,
58710
58896
  SelectionStore: SelectionStoreMd,
58711
58897
  Slider: SliderMd,