xmlui 0.11.15 → 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.
@@ -10,7 +10,7 @@ import produce, { createDraft, finishDraft, enableMapSet } from "immer";
10
10
  import { throttle, get, isNil, omitBy, isUndefined, isString, isPlainObject, noop as noop$2, isEmpty, isEqual, union, uniq, orderBy as orderBy$1, isObject, isArray, groupBy, sortBy, omit, isNumber, set, isNaN as isNaN$1, cloneDeep, merge, defaultTo, capitalize, unset, setWith, keyBy, pick } from "lodash-es";
11
11
  import { formatDistanceToNow, parse, format, parseISO, isValid, isToday, isYesterday, isTomorrow, isThisWeek, formatRelative, isThisYear, isSameDay, differenceInMinutes } from "date-fns";
12
12
  import classnames from "classnames";
13
- import { c as PART_LABELED_ITEM, d as PART_LABEL, b as PART_INPUT, P as PART_START_ADORNMENT, a as PART_END_ADORNMENT, x as xmlUiMarkupToComponent, e as errReportComponent, f as errReportMessage, g as errReportScriptError, h as errReportModuleErrors } from "./xmlui-parser-CW8YmGjO.js";
13
+ import { c as PART_LABELED_ITEM, d as PART_LABEL, b as PART_INPUT, e as PART_ICON, P as PART_START_ADORNMENT, a as PART_END_ADORNMENT, x as xmlUiMarkupToComponent, f as errReportComponent, g as errReportMessage, h as errReportScriptError, i as errReportModuleErrors } from "./xmlui-parser-9Yk-asFP.js";
14
14
  import Color from "color";
15
15
  import { Popover, PopoverTrigger, Portal, PopoverContent, PopoverPortal } from "@radix-ui/react-popover";
16
16
  import * as VisuallyHidden$1 from "@radix-ui/react-visually-hidden";
@@ -807,6 +807,9 @@ const styles$1j = {
807
807
  "lds-ring": "_lds-ring_b1pgc_14",
808
808
  fullScreenSpinnerWrapper
809
809
  };
810
+ const Part = ({ children, partId }) => {
811
+ return /* @__PURE__ */ jsx(Slot, { "data-part-id": partId, children });
812
+ };
810
813
  const PART_RING = "ring";
811
814
  const defaultProps$1i = {
812
815
  delay: 400,
@@ -846,7 +849,7 @@ const Spinner = forwardRef(function Spinner2({
846
849
  style: style2,
847
850
  ref: forwardedRef,
848
851
  children: [
849
- /* @__PURE__ */ jsx("div", { "data-part-id": PART_RING }),
852
+ /* @__PURE__ */ jsx(Part, { partId: PART_RING, children: /* @__PURE__ */ jsx("div", {}) }),
850
853
  /* @__PURE__ */ jsx("div", {}),
851
854
  /* @__PURE__ */ jsx("div", {}),
852
855
  /* @__PURE__ */ jsx("div", {})
@@ -866,7 +869,7 @@ const Spinner = forwardRef(function Spinner2({
866
869
  style: style2,
867
870
  ref: forwardedRef,
868
871
  children: [
869
- /* @__PURE__ */ jsx("div", { "data-part-id": PART_RING }),
872
+ /* @__PURE__ */ jsx(Part, { partId: PART_RING, children: /* @__PURE__ */ jsx("div", {}) }),
870
873
  /* @__PURE__ */ jsx("div", {}),
871
874
  /* @__PURE__ */ jsx("div", {}),
872
875
  /* @__PURE__ */ jsx("div", {})
@@ -904,18 +907,17 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
904
907
  const generatedId2 = useId();
905
908
  const inputId = id || generatedId2;
906
909
  if (label2 === void 0 && !validationResult) {
907
- return /* @__PURE__ */ jsx(
910
+ return /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: /* @__PURE__ */ jsx(
908
911
  Slot,
909
912
  {
910
913
  ...rest,
911
- "data-part-id": PART_LABELED_ITEM,
912
914
  style: style2,
913
915
  className,
914
916
  id: inputId,
915
917
  ref,
916
918
  children
917
919
  }
918
- );
920
+ ) });
919
921
  }
920
922
  return /* @__PURE__ */ jsxs("div", { ...rest, ref, style: style2, className: classnames(className, styles$1k.itemWithLabel), children: [
921
923
  /* @__PURE__ */ jsxs(
@@ -929,10 +931,9 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
929
931
  [styles$1k.shrinkToLabel]: shrinkToLabel2
930
932
  }),
931
933
  children: [
932
- label2 && /* @__PURE__ */ jsxs(
934
+ label2 && /* @__PURE__ */ jsx(Part, { partId: PART_LABEL, children: /* @__PURE__ */ jsxs(
933
935
  "label",
934
936
  {
935
- "data-part-id": PART_LABEL,
936
937
  htmlFor: inputId,
937
938
  onClick: onLabelClick || (() => document.getElementById(inputId)?.focus()),
938
939
  style: {
@@ -957,13 +958,12 @@ const ItemWithLabel = forwardRef(function ItemWithLabel2({
957
958
  )
958
959
  ]
959
960
  }
960
- ),
961
- cloneElement(children, {
961
+ ) }),
962
+ /* @__PURE__ */ jsx(Part, { partId: PART_LABELED_ITEM, children: cloneElement(children, {
962
963
  id: !isInputTemplateUsed ? inputId : void 0,
963
964
  style: void 0,
964
- className: void 0,
965
- "data-part-id": PART_LABELED_ITEM
966
- })
965
+ className: void 0
966
+ }) })
967
967
  ]
968
968
  }
969
969
  ),
@@ -3619,7 +3619,7 @@ const ResponsiveBarDropdown = ({
3619
3619
  className,
3620
3620
  onWillOpen,
3621
3621
  registerComponentApi
3622
- }) => /* @__PURE__ */ jsx("div", { className, "data-part-id": PART_OVERFLOW, children: /* @__PURE__ */ jsx(
3622
+ }) => /* @__PURE__ */ jsx(Part, { partId: PART_OVERFLOW, children: /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
3623
3623
  DropdownMenu,
3624
3624
  {
3625
3625
  label: dropdownText,
@@ -3631,7 +3631,7 @@ const ResponsiveBarDropdown = ({
3631
3631
  registerComponentApi,
3632
3632
  children
3633
3633
  }
3634
- ) });
3634
+ ) }) });
3635
3635
  const defaultResponsiveBarProps = {
3636
3636
  overflowIcon: "ellipsisHorizontal:ResponsiveBar",
3637
3637
  dropdownText: "More options",
@@ -4361,42 +4361,32 @@ const TextArea = forwardRef(function TextArea2({
4361
4361
  autoComplete: "off"
4362
4362
  };
4363
4363
  if (resize2 === "both" || resize2 === "horizontal" || resize2 === "vertical") {
4364
- return /* @__PURE__ */ jsx(
4364
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
4365
4365
  TextAreaResizable$1,
4366
4366
  {
4367
4367
  ...textareaProps,
4368
- "data-part-id": PART_INPUT,
4369
4368
  style: style2,
4370
4369
  className: classnames(classes),
4371
4370
  maxRows,
4372
4371
  minRows,
4373
4372
  rows
4374
4373
  }
4375
- );
4374
+ ) });
4376
4375
  }
4377
4376
  if (autoSize || !isNil(maxRows) || !isNil(minRows)) {
4378
- return /* @__PURE__ */ jsx(
4377
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
4379
4378
  TextareaAutosize,
4380
4379
  {
4381
4380
  ...textareaProps,
4382
- "data-part-id": PART_INPUT,
4383
4381
  style: style2,
4384
4382
  className: classnames(classes),
4385
4383
  maxRows,
4386
4384
  minRows,
4387
4385
  rows
4388
4386
  }
4389
- );
4387
+ ) });
4390
4388
  }
4391
- return /* @__PURE__ */ jsx(
4392
- "textarea",
4393
- {
4394
- ...textareaProps,
4395
- "data-part-id": PART_INPUT,
4396
- rows,
4397
- className: classnames(classes)
4398
- }
4399
- );
4389
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx("textarea", { ...textareaProps, rows, className: classnames(classes) }) });
4400
4390
  });
4401
4391
  const COMP$1u = "TextArea";
4402
4392
  const resizeOptionsMd = [
@@ -4987,17 +4977,16 @@ const AppHeader = ({
4987
4977
  [styles$1b.full]: !canRestrictContentWidth
4988
4978
  }),
4989
4979
  children: [
4990
- hasRegisteredNavPanel && /* @__PURE__ */ jsx(
4980
+ hasRegisteredNavPanel && /* @__PURE__ */ jsx(Part, { partId: PART_HAMBURGER, children: /* @__PURE__ */ jsx(
4991
4981
  Button,
4992
4982
  {
4993
- "data-part-id": PART_HAMBURGER,
4994
4983
  onClick: toggleDrawer,
4995
4984
  icon: /* @__PURE__ */ jsx(Icon, { name: "hamburger" }),
4996
4985
  variant: "ghost",
4997
4986
  className: styles$1b.drawerToggle,
4998
4987
  style: { color: "inherit", flexShrink: 0 }
4999
4988
  }
5000
- ),
4989
+ ) }),
5001
4990
  /* @__PURE__ */ jsx("div", { className: styles$1b.logoAndTitle, children: (showLogo || !effectiveNavPanelVisible) && (logoContent ? /* @__PURE__ */ jsxs(Fragment, { children: [
5002
4991
  /* @__PURE__ */ jsx("div", { className: styles$1b.customLogoContainer, children: logoContent }),
5003
4992
  safeLogoTitle
@@ -8490,6 +8479,11 @@ const COMP$1t = "NavLink";
8490
8479
  const NavLinkMd = createMetadata({
8491
8480
  status: "stable",
8492
8481
  description: "`NavLink` creates interactive navigation items that connect users to different destinations within an app or external URLs. It automatically indicates active states, supports custom icons and labels, and can execute custom actions instead of navigation when needed.",
8482
+ parts: {
8483
+ indicator: {
8484
+ description: "The active indicator within the NavLink component."
8485
+ }
8486
+ },
8493
8487
  props: {
8494
8488
  to: d(`This property defines the URL of the link.`),
8495
8489
  enabled: dEnabled(),
@@ -8624,16 +8618,16 @@ const LinkNative = forwardRef(function LinkNative2(props, forwardedRef) {
8624
8618
  [styles$17.disabled]: disabled2
8625
8619
  }),
8626
8620
  children: [
8627
- icon2 && /* @__PURE__ */ jsx("div", { className: styles$17.iconWrapper, children: /* @__PURE__ */ jsx(Icon, { name: icon2 }) }),
8621
+ icon2 && /* @__PURE__ */ jsx(Part, { partId: PART_ICON, children: /* @__PURE__ */ jsx("div", { className: styles$17.iconWrapper, children: /* @__PURE__ */ jsx(Icon, { name: icon2 }) }) }),
8628
8622
  children
8629
8623
  ]
8630
8624
  }
8631
8625
  );
8632
8626
  });
8633
8627
  function specifyTypes(props) {
8634
- const { target: target2, referrerPolicy } = props;
8628
+ const { target: target2, referrerPolicy, ...rest } = props;
8635
8629
  return {
8636
- ...props,
8630
+ ...rest,
8637
8631
  target: target2,
8638
8632
  referrerPolicy
8639
8633
  };
@@ -8642,6 +8636,11 @@ const COMP$1s = "Link";
8642
8636
  const LinkMd = createMetadata({
8643
8637
  status: "stable",
8644
8638
  description: "`Link` creates clickable navigation elements for internal app routes or external URLs. You can use the `label` and `icon` properties for simple text links, or embed custom components like buttons, cards, or complex layouts for rich interactive link presentations.",
8639
+ parts: {
8640
+ icon: {
8641
+ description: "The icon within the Link component."
8642
+ }
8643
+ },
8645
8644
  props: {
8646
8645
  to: d(
8647
8646
  "This property defines the URL of the link. If the value is not defined, the link cannot be activated."
@@ -10721,6 +10720,11 @@ const COMP$1p = "Button";
10721
10720
  const ButtonMd = createMetadata({
10722
10721
  status: "stable",
10723
10722
  description: "`Button` is the primary interactive component for triggering actions like form submissions, navigation, opening modals, and API calls. It supports multiple visual styles and sizes to match different UI contexts and importance levels.",
10723
+ parts: {
10724
+ icon: {
10725
+ description: "The icon displayed within the button, if any."
10726
+ }
10727
+ },
10724
10728
  props: {
10725
10729
  autoFocus: {
10726
10730
  description: "Indicates if the button should receive focus when the page loads.",
@@ -13654,12 +13658,11 @@ const Toggle = forwardRef(function Toggle2({
13654
13658
  }, [focus, registerComponentApi, setValue]);
13655
13659
  const input2 = useMemo(() => {
13656
13660
  const legitValue = transformToLegitValue(value);
13657
- return /* @__PURE__ */ jsx(
13661
+ return /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
13658
13662
  "input",
13659
13663
  {
13660
13664
  ...rest,
13661
13665
  id,
13662
- "data-part-id": PART_INPUT,
13663
13666
  ref,
13664
13667
  type: "checkbox",
13665
13668
  role: variant,
@@ -13686,7 +13689,7 @@ const Toggle = forwardRef(function Toggle2({
13686
13689
  [styles$11.forceHover]: forceHover2
13687
13690
  })
13688
13691
  }
13689
- );
13692
+ ) });
13690
13693
  }, [
13691
13694
  rest,
13692
13695
  className,
@@ -14243,10 +14246,9 @@ const PaginationNative = forwardRef(function PaginationNative2({
14243
14246
  const visiblePages = getVisiblePages();
14244
14247
  const isFirstPage = currentPage === 0;
14245
14248
  const isLastPage = currentPage === totalPages - 1;
14246
- const buttonRow2 = /* @__PURE__ */ jsxs(
14249
+ const buttonRow2 = /* @__PURE__ */ jsx(Part, { partId: "pagination-controls", children: /* @__PURE__ */ jsxs(
14247
14250
  "ul",
14248
14251
  {
14249
- "data-component": `pagination-controls`,
14250
14252
  className: classnames(styles$10.buttonRow, {
14251
14253
  [styles$10.paginationListVertical]: orientation === "vertical"
14252
14254
  // layout is already horizontal by default
@@ -14356,37 +14358,30 @@ const PaginationNative = forwardRef(function PaginationNative2({
14356
14358
  ) })
14357
14359
  ]
14358
14360
  }
14359
- );
14360
- const pageSizeSelector = showPageSizeSelector && pageSizeOptions && pageSizeOptions.length > 1 && /* @__PURE__ */ jsx(
14361
- "div",
14361
+ ) });
14362
+ const pageSizeSelector = showPageSizeSelector && pageSizeOptions && pageSizeOptions.length > 1 && /* @__PURE__ */ jsx(Part, { partId: "page-size-selector-container", children: /* @__PURE__ */ jsx("div", { className: classnames(styles$10.selectorContainer), children: /* @__PURE__ */ jsx(
14363
+ ItemWithLabel,
14362
14364
  {
14363
- "data-component": `page-size-selector-container`,
14364
- className: classnames(styles$10.selectorContainer),
14365
+ id: `${id}-page-size-selector`,
14366
+ label: "Items per page",
14367
+ enabled: enabled2,
14368
+ style: style2,
14369
+ className,
14370
+ labelPosition: orientation === "vertical" ? "top" : "start",
14365
14371
  children: /* @__PURE__ */ jsx(
14366
- ItemWithLabel,
14372
+ "select",
14367
14373
  {
14368
14374
  id: `${id}-page-size-selector`,
14369
- label: "Items per page",
14370
- enabled: enabled2,
14371
- style: style2,
14372
- className,
14373
- labelPosition: orientation === "vertical" ? "top" : "start",
14374
- children: /* @__PURE__ */ jsx(
14375
- "select",
14376
- {
14377
- id: `${id}-page-size-selector`,
14378
- value: pageSize,
14379
- onChange: (e) => handlePageSizeChange(Number(e.target.value)),
14380
- disabled: !enabled2,
14381
- className: styles$10.pageSizeSelect,
14382
- children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
14383
- }
14384
- )
14375
+ value: pageSize,
14376
+ onChange: (e) => handlePageSizeChange(Number(e.target.value)),
14377
+ disabled: !enabled2,
14378
+ className: styles$10.pageSizeSelect,
14379
+ children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
14385
14380
  }
14386
14381
  )
14387
14382
  }
14388
- );
14389
- const pageInfo = showPageInfo && /* @__PURE__ */ jsx("div", { "data-component": `page-info`, className: classnames(styles$10.pageInfo), children: /* @__PURE__ */ jsxs(Text, { variant: "secondary", children: [
14383
+ ) }) });
14384
+ const pageInfo = showPageInfo && /* @__PURE__ */ jsx(Part, { partId: "page-info", children: /* @__PURE__ */ jsx("div", { className: classnames(styles$10.pageInfo), children: /* @__PURE__ */ jsxs(Text, { variant: "secondary", children: [
14390
14385
  "Page ",
14391
14386
  currentPageNumber,
14392
14387
  " of ",
@@ -14394,7 +14389,7 @@ const PaginationNative = forwardRef(function PaginationNative2({
14394
14389
  " (",
14395
14390
  itemCount,
14396
14391
  " items)"
14397
- ] }) });
14392
+ ] }) }) });
14398
14393
  return /* @__PURE__ */ jsxs(
14399
14394
  "nav",
14400
14395
  {
@@ -15207,6 +15202,15 @@ const COMP$1l = "Table";
15207
15202
  const TableMd = createMetadata({
15208
15203
  status: "stable",
15209
15204
  description: "`Table` presents structured data for viewing, sorting, selection, and interaction.",
15205
+ // NOTE: let's leave it like this for now, we'll expand later when the need arises
15206
+ parts: {
15207
+ table: {
15208
+ description: "The main table container."
15209
+ },
15210
+ pagination: {
15211
+ description: "The pagination controls container."
15212
+ }
15213
+ },
15210
15214
  props: {
15211
15215
  items: dInternal(
15212
15216
  `You can use \`items\` as an alias for the \`data\` property. When you bind the table to a data source (e.g. an API endpoint), the \`data\` acts as the property that accepts a URL to fetch information from an API. When both \`items\` and \`data\` are used, \`items\` has priority.`
@@ -16057,6 +16061,17 @@ const COMP$1g = "Card";
16057
16061
  const CardMd = createMetadata({
16058
16062
  status: "stable",
16059
16063
  description: "`Card` is a versatile container that groups related content with a visual boundary, typically featuring background color, padding, borders, and rounded corners. It's ideal for organizing information, creating sections, and establishing visual hierarchy in your interface.",
16064
+ parts: {
16065
+ avatar: {
16066
+ description: "The avatar displayed within the card, if any."
16067
+ },
16068
+ title: {
16069
+ description: "The title of the card."
16070
+ },
16071
+ subtitle: {
16072
+ description: "The subtitle of the card."
16073
+ }
16074
+ },
16060
16075
  props: {
16061
16076
  avatarUrl: {
16062
16077
  description: `The url for an avarar image. If not specified, but [\`showAvatar\`](#showAvatar) is true, ${COMP$1g} will show the first letters of the [\`title\`](#title).`,
@@ -16506,11 +16521,10 @@ const ModalDialog = React__default.forwardRef(
16506
16521
  if (!root2) {
16507
16522
  return null;
16508
16523
  }
16509
- const Content2 = /* @__PURE__ */ jsxs(
16524
+ const Content2 = /* @__PURE__ */ jsx(Part, { partId: PART_CONTENT, children: /* @__PURE__ */ jsxs(
16510
16525
  SheetPrimitive.Content,
16511
16526
  {
16512
16527
  ...rest,
16513
- "data-part-id": PART_CONTENT,
16514
16528
  className: classnames(
16515
16529
  {
16516
16530
  [styles$V.contentAnimation]: !externalAnimation
@@ -16526,7 +16540,7 @@ const ModalDialog = React__default.forwardRef(
16526
16540
  ref: composedRef,
16527
16541
  style: { ...style2, gap: void 0 },
16528
16542
  children: [
16529
- !!title2 && /* @__PURE__ */ jsx(SheetPrimitive.Title, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx("header", { id: "dialogTitle", className: styles$V.dialogTitle, "data-part-id": PART_TITLE, children: title2 }) }),
16543
+ !!title2 && /* @__PURE__ */ jsx(Part, { partId: PART_TITLE, children: /* @__PURE__ */ jsx(SheetPrimitive.Title, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx("header", { id: "dialogTitle", className: styles$V.dialogTitle, children: title2 }) }) }),
16530
16544
  /* @__PURE__ */ jsx("div", { className: styles$V.innerContent, style: { gap: style2?.gap }, children: /* @__PURE__ */ jsx(ModalVisibilityContext.Provider, { value: modalVisibilityContextValue, children }) }),
16531
16545
  closeButtonVisible && /* @__PURE__ */ jsx(SheetPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(
16532
16546
  Button,
@@ -16541,7 +16555,7 @@ const ModalDialog = React__default.forwardRef(
16541
16555
  ) })
16542
16556
  ]
16543
16557
  }
16544
- );
16558
+ ) });
16545
16559
  return /* @__PURE__ */ jsx(SheetPrimitive.Root, { open: isOpen, onOpenChange: (open) => open ? doOpen() : doClose(), children: /* @__PURE__ */ jsxs(SheetPrimitive.Portal, { container: root2, children: [
16546
16560
  isDialogRootInShadowDom && /*
16547
16561
  In the Shadow DOM we can omit the Dialog.Overlay,
@@ -17617,6 +17631,14 @@ const COMP$14 = "Splitter";
17617
17631
  const baseSplitterMd = createMetadata({
17618
17632
  status: "stable",
17619
17633
  description: "`Splitter` component divides a container into two resizable sections. These are are identified by their names: primary and secondary. They have a draggable bar between them. When only a single child is visible (due to conditional rendering with `when` attributes), the splitter bar is not displayed and the single panel stretches to fill the entire viewport of the splitter container.",
17634
+ parts: {
17635
+ primaryPanel: {
17636
+ description: "The primary section/panel of the `Splitter` component."
17637
+ },
17638
+ secondaryPanel: {
17639
+ description: "The secondary section/panel of the `Splitter` component."
17640
+ }
17641
+ },
17620
17642
  props: {
17621
17643
  swapped: {
17622
17644
  description: `This optional booelan property indicates whether the \`${COMP$14}\` sections are layed out as primary and secondary (\`false\`) or secondary and primary (\`true\`) from left to right.`,
@@ -17673,7 +17695,7 @@ const SplitterMd = {
17673
17695
  const HSplitterMd = { ...baseSplitterMd, specializedFrom: COMP$14 };
17674
17696
  const VSplitterMd = { ...baseSplitterMd, specializedFrom: COMP$14 };
17675
17697
  const DEFAULT_ORIENTATION = "vertical";
17676
- function renderSplitter({
17698
+ function SplitterRenderer({
17677
17699
  node,
17678
17700
  extractValue,
17679
17701
  className,
@@ -17689,7 +17711,7 @@ function renderSplitter({
17689
17711
  const rendered = renderChild2(node.children);
17690
17712
  return rendered ? [rendered] : [];
17691
17713
  }
17692
- return node.children.map((child, index) => renderChild2(child)).filter((child) => child !== null && child !== void 0).map((child, index) => React__default.cloneElement(child, { key: index }));
17714
+ return node.children.map((child) => renderChild2(child)).filter((child) => child !== null && child !== void 0).map((child, index) => React__default.cloneElement(child, { key: index }));
17693
17715
  }, [node.children, renderChild2]);
17694
17716
  const visibleChildCount = renderedChildren.length;
17695
17717
  return /* @__PURE__ */ jsx(
@@ -17713,7 +17735,7 @@ const splitterComponentRenderer = createComponentRenderer(
17713
17735
  COMP$14,
17714
17736
  SplitterMd,
17715
17737
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
17716
- return renderSplitter({
17738
+ return SplitterRenderer({
17717
17739
  node,
17718
17740
  extractValue,
17719
17741
  className,
@@ -17726,7 +17748,7 @@ const vSplitterComponentRenderer = createComponentRenderer(
17726
17748
  "VSplitter",
17727
17749
  VSplitterMd,
17728
17750
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
17729
- return renderSplitter({
17751
+ return SplitterRenderer({
17730
17752
  node,
17731
17753
  extractValue,
17732
17754
  className,
@@ -17740,7 +17762,7 @@ const hSplitterComponentRenderer = createComponentRenderer(
17740
17762
  "HSplitter",
17741
17763
  HSplitterMd,
17742
17764
  ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
17743
- return renderSplitter({
17765
+ return SplitterRenderer({
17744
17766
  node,
17745
17767
  extractValue,
17746
17768
  className,
@@ -20209,21 +20231,12 @@ const TextBox = forwardRef(function TextBox2({
20209
20231
  onFocus: focus,
20210
20232
  style: { ...style2, gap },
20211
20233
  children: [
20212
- /* @__PURE__ */ jsx(
20213
- Adornment,
20214
- {
20215
- "data-part-id": PART_START_ADORNMENT,
20216
- text: startText,
20217
- iconName: startIcon,
20218
- className: classnames(styles$N.adornment)
20219
- }
20220
- ),
20221
- /* @__PURE__ */ jsx(
20234
+ /* @__PURE__ */ jsx(Part, { partId: PART_START_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: startText, iconName: startIcon, className: classnames(styles$N.adornment) }) }),
20235
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
20222
20236
  "input",
20223
20237
  {
20224
20238
  id,
20225
20239
  ref: inputRef,
20226
- "data-part-id": PART_INPUT,
20227
20240
  type: actualType,
20228
20241
  className: classnames(styles$N.input, {
20229
20242
  [styles$N.readOnly]: readOnly2
@@ -20241,33 +20254,23 @@ const TextBox = forwardRef(function TextBox2({
20241
20254
  tabIndex: enabled2 ? tabIndex : -1,
20242
20255
  required: required2
20243
20256
  }
20244
- ),
20245
- !readOnly2 && enabled2 && type == "search" && localValue?.length > 0 && /* @__PURE__ */ jsx(
20257
+ ) }),
20258
+ !readOnly2 && enabled2 && type == "search" && localValue?.length > 0 && /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(
20246
20259
  Adornment,
20247
20260
  {
20248
- "data-part-id": PART_END_ADORNMENT,
20249
20261
  iconName: "close",
20250
20262
  className: styles$N.adornment,
20251
20263
  onClick: () => updateValue("")
20252
20264
  }
20253
- ),
20254
- type === "password" && showPasswordToggle ? /* @__PURE__ */ jsx(
20265
+ ) }),
20266
+ type === "password" && showPasswordToggle ? /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(
20255
20267
  Adornment,
20256
20268
  {
20257
- "data-part-id": PART_END_ADORNMENT,
20258
20269
  iconName: showPassword ? passwordVisibleIcon : passwordHiddenIcon,
20259
20270
  className: classnames(styles$N.adornment, styles$N.passwordToggle),
20260
20271
  onClick: togglePasswordVisibility
20261
20272
  }
20262
- ) : /* @__PURE__ */ jsx(
20263
- Adornment,
20264
- {
20265
- "data-part-id": PART_END_ADORNMENT,
20266
- text: endText,
20267
- iconName: endIcon,
20268
- className: styles$N.adornment
20269
- }
20270
- )
20273
+ ) }) : /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: endText, iconName: endIcon, className: styles$N.adornment }) })
20271
20274
  ]
20272
20275
  }
20273
20276
  );
@@ -20909,20 +20912,11 @@ const NumberBox = forwardRef(function NumberBox2({
20909
20912
  },
20910
20913
  style: { ...style2, gap },
20911
20914
  children: [
20912
- /* @__PURE__ */ jsx(
20913
- Adornment,
20914
- {
20915
- "data-part-id": PART_START_ADORNMENT,
20916
- text: startText,
20917
- iconName: startIcon,
20918
- className: classnames(styles$K.adornment)
20919
- }
20920
- ),
20921
- /* @__PURE__ */ jsx(
20915
+ /* @__PURE__ */ jsx(Part, { partId: PART_START_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: startText, iconName: startIcon, className: classnames(styles$K.adornment) }) }),
20916
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
20922
20917
  "input",
20923
20918
  {
20924
20919
  id,
20925
- "data-part-id": PART_INPUT,
20926
20920
  type: "text",
20927
20921
  inputMode: "numeric",
20928
20922
  className: classnames(styles$K.input, {
@@ -20944,21 +20938,12 @@ const NumberBox = forwardRef(function NumberBox2({
20944
20938
  maxLength,
20945
20939
  required: required2
20946
20940
  }
20947
- ),
20948
- /* @__PURE__ */ jsx(
20949
- Adornment,
20950
- {
20951
- "data-part-id": PART_END_ADORNMENT,
20952
- text: endText,
20953
- iconName: endIcon,
20954
- className: classnames(styles$K.adornment)
20955
- }
20956
- ),
20941
+ ) }),
20942
+ /* @__PURE__ */ jsx(Part, { partId: PART_END_ADORNMENT, children: /* @__PURE__ */ jsx(Adornment, { text: endText, iconName: endIcon, className: classnames(styles$K.adornment) }) }),
20957
20943
  hasSpinBox && /* @__PURE__ */ jsxs("div", { className: styles$K.spinnerBox, children: [
20958
- /* @__PURE__ */ jsx(
20944
+ /* @__PURE__ */ jsx(Part, { partId: PART_SPINNER_UP, children: /* @__PURE__ */ jsx(
20959
20945
  Button,
20960
20946
  {
20961
- "data-part-id": PART_SPINNER_UP,
20962
20947
  "data-spinner": "up",
20963
20948
  type: "button",
20964
20949
  role: "spinbutton",
@@ -20970,11 +20955,10 @@ const NumberBox = forwardRef(function NumberBox2({
20970
20955
  ref: upButton,
20971
20956
  children: /* @__PURE__ */ jsx(Icon, { name: spinnerUpIcon || "spinnerUp:NumberBox", fallback: "chevronup", size: "sm" })
20972
20957
  }
20973
- ),
20974
- /* @__PURE__ */ jsx(
20958
+ ) }),
20959
+ /* @__PURE__ */ jsx(Part, { partId: PART_SPINNER_DOWN, children: /* @__PURE__ */ jsx(
20975
20960
  Button,
20976
20961
  {
20977
- "data-part-id": PART_SPINNER_DOWN,
20978
20962
  "data-spinner": "down",
20979
20963
  type: "button",
20980
20964
  role: "spinbutton",
@@ -20993,7 +20977,7 @@ const NumberBox = forwardRef(function NumberBox2({
20993
20977
  }
20994
20978
  )
20995
20979
  }
20996
- )
20980
+ ) })
20997
20981
  ] })
20998
20982
  ]
20999
20983
  }
@@ -21177,7 +21161,7 @@ function HiddenOption(option) {
21177
21161
  return /* @__PURE__ */ jsx("div", { ref: (el) => setNode(el), style: { display: "none" }, children: option.children });
21178
21162
  }
21179
21163
  const PART_LIST_WRAPPER$1 = "listWrapper";
21180
- const PART_CLEAR_BUTTON$2 = "clearButton";
21164
+ const PART_CLEAR_BUTTON$1 = "clearButton";
21181
21165
  const defaultProps$G = {
21182
21166
  enabled: true,
21183
21167
  placeholder: "",
@@ -21243,10 +21227,9 @@ const SelectTriggerActions = ({
21243
21227
  }) => {
21244
21228
  const hasValue = multiSelect ? Array.isArray(value) && value.length > 0 : value !== void 0 && value !== null && value !== "";
21245
21229
  return /* @__PURE__ */ jsxs("div", { className: styles$J.actions, children: [
21246
- hasValue && enabled2 && !readOnly2 && clearable && /* @__PURE__ */ jsx(
21230
+ hasValue && enabled2 && !readOnly2 && clearable && /* @__PURE__ */ jsx(Part, { partId: PART_CLEAR_BUTTON$1, children: /* @__PURE__ */ jsx(
21247
21231
  "span",
21248
21232
  {
21249
- "data-part-id": PART_CLEAR_BUTTON$2,
21250
21233
  className: styles$J.action,
21251
21234
  onClick: (event) => {
21252
21235
  event.stopPropagation();
@@ -21254,7 +21237,7 @@ const SelectTriggerActions = ({
21254
21237
  },
21255
21238
  children: /* @__PURE__ */ jsx(Icon, { name: "close" })
21256
21239
  }
21257
- ),
21240
+ ) }),
21258
21241
  showChevron && /* @__PURE__ */ jsx("span", { className: styles$J.action, children: /* @__PURE__ */ jsx(Icon, { name: "chevrondown" }) })
21259
21242
  ] });
21260
21243
  };
@@ -21522,7 +21505,7 @@ const Select = forwardRef(function Select2({
21522
21505
  },
21523
21506
  modal: false,
21524
21507
  children: [
21525
- /* @__PURE__ */ jsxs(
21508
+ /* @__PURE__ */ jsx(Part, { partId: PART_LIST_WRAPPER$1, children: /* @__PURE__ */ jsxs(
21526
21509
  PopoverTrigger,
21527
21510
  {
21528
21511
  ...rest,
@@ -21534,7 +21517,6 @@ const Select = forwardRef(function Select2({
21534
21517
  onBlur,
21535
21518
  disabled: !enabled2,
21536
21519
  "aria-expanded": open,
21537
- "data-part-id": PART_LIST_WRAPPER$1,
21538
21520
  className: classnames(className, styles$J.selectTrigger, styles$J[validationStatus], {
21539
21521
  [styles$J.disabled]: !enabled2,
21540
21522
  [styles$J.multi]: multiSelect
@@ -21587,7 +21569,7 @@ const Select = forwardRef(function Select2({
21587
21569
  )
21588
21570
  ]
21589
21571
  }
21590
- ),
21572
+ ) }),
21591
21573
  open && /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsx(
21592
21574
  PopoverContent,
21593
21575
  {
@@ -23002,10 +22984,9 @@ const Form = forwardRef(function({
23002
22984
  });
23003
22985
  });
23004
22986
  });
23005
- const cancelButton = cancelLabel === "" ? null : /* @__PURE__ */ jsx(
22987
+ const cancelButton = cancelLabel === "" ? null : /* @__PURE__ */ jsx(Part, { partId: PART_CANCEL_BUTTON, children: /* @__PURE__ */ jsx(
23006
22988
  Button,
23007
22989
  {
23008
- "data-part-id": PART_CANCEL_BUTTON,
23009
22990
  type: "button",
23010
22991
  themeColor: "secondary",
23011
22992
  variant: "ghost",
@@ -23013,18 +22994,9 @@ const Form = forwardRef(function({
23013
22994
  children: cancelLabel
23014
22995
  },
23015
22996
  "cancel"
23016
- );
22997
+ ) });
23017
22998
  const submitButton = useMemo(
23018
- () => /* @__PURE__ */ jsx(
23019
- Button,
23020
- {
23021
- "data-part-id": PART_SUBMIT_BUTTON,
23022
- type: "submit",
23023
- disabled: !isEnabled2 || !enableSubmit,
23024
- children: formState.submitInProgress ? saveInProgressLabel : saveLabel
23025
- },
23026
- "submit"
23027
- ),
22999
+ () => /* @__PURE__ */ jsx(Part, { partId: PART_SUBMIT_BUTTON, children: /* @__PURE__ */ jsx(Button, { type: "submit", disabled: !isEnabled2 || !enableSubmit, children: formState.submitInProgress ? saveInProgressLabel : saveLabel }, "submit") }),
23028
23000
  [isEnabled2, enableSubmit, formState.submitInProgress, saveInProgressLabel, saveLabel]
23029
23001
  );
23030
23002
  useEffect(() => {
@@ -23584,12 +23556,11 @@ const AutoComplete = forwardRef(function AutoComplete2({
23584
23556
  },
23585
23557
  modal: false,
23586
23558
  children: [
23587
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, ref: setReferenceElement, children: /* @__PURE__ */ jsxs(
23559
+ /* @__PURE__ */ jsx(Part, { partId: PART_LIST_WRAPPER, children: /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, ref: setReferenceElement, children: /* @__PURE__ */ jsxs(
23588
23560
  "div",
23589
23561
  {
23590
23562
  ref: forwardedRef,
23591
23563
  style: style2,
23592
- "data-part-id": PART_LIST_WRAPPER,
23593
23564
  className: classnames(
23594
23565
  className,
23595
23566
  styles$E.badgeListWrapper,
@@ -23624,7 +23595,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
23624
23595
  )
23625
23596
  ] }, index)) }),
23626
23597
  /* @__PURE__ */ jsxs("div", { className: styles$E.inputWrapper, children: [
23627
- /* @__PURE__ */ jsx(
23598
+ /* @__PURE__ */ jsx(Part, { partId: PART_INPUT, children: /* @__PURE__ */ jsx(
23628
23599
  "input",
23629
23600
  {
23630
23601
  ...rest,
@@ -23660,7 +23631,6 @@ const AutoComplete = forwardRef(function AutoComplete2({
23660
23631
  setOpen(true);
23661
23632
  }
23662
23633
  },
23663
- "data-part-id": PART_INPUT,
23664
23634
  readOnly: readOnly2,
23665
23635
  autoFocus,
23666
23636
  "aria-autocomplete": "list",
@@ -23674,7 +23644,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
23674
23644
  placeholder: !readOnly2 ? placeholder2 : "",
23675
23645
  className: styles$E.commandInput
23676
23646
  }
23677
- ),
23647
+ ) }),
23678
23648
  /* @__PURE__ */ jsxs("div", { className: styles$E.actions, children: [
23679
23649
  value?.length > 0 && enabled2 && !readOnly2 && /* @__PURE__ */ jsx(
23680
23650
  "span",
@@ -23703,7 +23673,7 @@ const AutoComplete = forwardRef(function AutoComplete2({
23703
23673
  ] })
23704
23674
  ]
23705
23675
  }
23706
- ) }),
23676
+ ) }) }),
23707
23677
  open && /* @__PURE__ */ jsx(Portal, { container: root2, children: /* @__PURE__ */ jsx(
23708
23678
  PopoverContent,
23709
23679
  {
@@ -24683,7 +24653,7 @@ function ApiInterceptorProvider({
24683
24653
  return;
24684
24654
  }
24685
24655
  void (async () => {
24686
- const { initMock } = await import("./initMock-C17fxLuA.js");
24656
+ const { initMock } = await import("./initMock-BsfLxhPR.js");
24687
24657
  const apiInstance2 = await initMock(interceptor);
24688
24658
  setApiInstance(apiInstance2);
24689
24659
  setInitialized(true);
@@ -24700,7 +24670,7 @@ function ApiInterceptorProvider({
24700
24670
  if (process.env.VITE_MOCK_ENABLED) {
24701
24671
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
24702
24672
  useWorker ? import("./apiInterceptorWorker-dwrAyq6l.js") : Promise.resolve({ createApiInterceptorWorker: () => null }),
24703
- import("./initMock-C17fxLuA.js")
24673
+ import("./initMock-BsfLxhPR.js")
24704
24674
  ]);
24705
24675
  if (interceptor || forceInitialize) {
24706
24676
  const apiInstance2 = await initMock(interceptor || {});
@@ -24737,7 +24707,7 @@ function ApiInterceptorProvider({
24737
24707
  void (async () => {
24738
24708
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
24739
24709
  import("./apiInterceptorWorker-dwrAyq6l.js"),
24740
- import("./initMock-C17fxLuA.js")
24710
+ import("./initMock-BsfLxhPR.js")
24741
24711
  ]);
24742
24712
  const apiInstance2 = await initMock(interceptor);
24743
24713
  await createApiInterceptorWorker(apiInstance2, parentInterceptorWorker);
@@ -26907,7 +26877,6 @@ const ColorPicker = forwardRef(
26907
26877
  [styles$u.warning]: validationStatus === "warning",
26908
26878
  [styles$u.valid]: validationStatus === "valid"
26909
26879
  }),
26910
- "data-part-id": PART_INPUT,
26911
26880
  style: style2,
26912
26881
  disabled: !enabled2,
26913
26882
  onFocus: handleOnFocus,
@@ -28508,6 +28477,15 @@ const COMP$X = "Form";
28508
28477
  const FormMd = createMetadata({
28509
28478
  status: "stable",
28510
28479
  description: "`Form` provides a structured container for collecting and validating user input, with built-in data binding, validation, and submission handling. It automatically manages form state and provides context for nested form controls to work together.",
28480
+ parts: {
28481
+ buttonRow: {
28482
+ description: "The container for the form action buttons (e.g., Save, Cancel)."
28483
+ },
28484
+ // NOTE: There is a ValidationSummary in the form and also one in the modal dialog.
28485
+ validationSummary: {
28486
+ description: "The area displaying validation summary messages for the form."
28487
+ }
28488
+ },
28511
28489
  props: {
28512
28490
  buttonRowTemplate: dComponent(
28513
28491
  `This property allows defining a custom component to display the buttons at the bottom of the form.`
@@ -28731,6 +28709,12 @@ const NumberBoxMd = createMetadata({
28731
28709
  },
28732
28710
  input: {
28733
28711
  description: "The text box input area."
28712
+ },
28713
+ spinnerButtonUp: {
28714
+ description: "The spinner button for incrementing the value."
28715
+ },
28716
+ spinnerButtonDown: {
28717
+ description: "The spinner button for decrementing the value."
28734
28718
  }
28735
28719
  },
28736
28720
  props: {
@@ -29435,6 +29419,14 @@ const COMP$S = "NavPanel";
29435
29419
  const NavPanelMd = createMetadata({
29436
29420
  status: "stable",
29437
29421
  description: "`NavPanel` defines the navigation structure within an App, serving as a container for NavLink and NavGroup components that create your application's primary navigation menu. Its appearance and behavior automatically adapt based on the App's layout configuration.",
29422
+ parts: {
29423
+ logo: {
29424
+ description: "The logo area within the NavPanel component."
29425
+ },
29426
+ content: {
29427
+ description: "The content area within the NavPanel component."
29428
+ }
29429
+ },
29438
29430
  props: {
29439
29431
  logoTemplate: dComponent(
29440
29432
  `This property defines the logo template to display in the navigation panel with the \`vertical\` and \`vertical-sticky\` layout.`
@@ -29835,6 +29827,11 @@ const RGOption = `RadioGroupOption`;
29835
29827
  const RadioGroupMd = createMetadata({
29836
29828
  status: "stable",
29837
29829
  description: "`RadioGroup` creates a mutually exclusive selection interface where users can choose only one option from a group of radio buttons. It manages the selection state and ensures that selecting one option automatically deselects all others in the group.Radio options store their values as strings. Numbers and booleans are converted to strings when assigned, while objects, functions and arrays default to an empty string unless resolved via binding expressions.",
29830
+ parts: {
29831
+ label: {
29832
+ description: "The label displayed for the radio group."
29833
+ }
29834
+ },
29838
29835
  props: {
29839
29836
  initialValue: {
29840
29837
  ...dInitialValue(),
@@ -29964,6 +29961,14 @@ const DEFAULT_ICON = "browse:FileInput";
29964
29961
  const FileInputMd = createMetadata({
29965
29962
  status: "stable",
29966
29963
  description: "`FileInput` enables users to select files from their device's file system for upload or processing. It combines a text field displaying selected files with a customizable button that opens the system file browser. Use it for forms, media uploads, and document processing workflows.",
29964
+ parts: {
29965
+ label: {
29966
+ description: "The label displayed for the file input."
29967
+ },
29968
+ input: {
29969
+ description: "The file input area displaying selected file names."
29970
+ }
29971
+ },
29967
29972
  props: {
29968
29973
  placeholder: dPlaceholder(),
29969
29974
  initialValue: dInitialValue(),
@@ -30124,6 +30129,12 @@ const SelectMd = createMetadata({
30124
30129
  parts: {
30125
30130
  clearButton: {
30126
30131
  description: "The button to clear the selected value(s)."
30132
+ },
30133
+ item: {
30134
+ description: "Each option item within the Select component."
30135
+ },
30136
+ menu: {
30137
+ description: "The dropdown menu within the Select component."
30127
30138
  }
30128
30139
  },
30129
30140
  props: {
@@ -30777,6 +30788,11 @@ const DDMCOMP = "DropdownMenu";
30777
30788
  const DropdownMenuMd = createMetadata({
30778
30789
  status: "stable",
30779
30790
  description: "`DropdownMenu` provides a space-efficient way to present multiple options or actions through a collapsible interface. When clicked, the trigger button reveals a menu that can include items, separators, and nested submenus, making it ideal for navigation, action lists, or any situation requiring many options without permanent screen space.",
30791
+ parts: {
30792
+ content: {
30793
+ description: "The content area of the DropdownMenu where menu items are displayed."
30794
+ }
30795
+ },
30780
30796
  props: {
30781
30797
  label: dLabel(),
30782
30798
  triggerTemplate: dTriggerTemplate(DDMCOMP),
@@ -30984,6 +31000,11 @@ const COMP$E = "ExpandableItem";
30984
31000
  const ExpandableItemMd = createMetadata({
30985
31001
  status: "stable",
30986
31002
  description: "`ExpandableItem` creates expandable/collapsible section, similar to the HTML details disclosure element. When the user clicks on the `summary` the content expands or collapses.",
31003
+ parts: {
31004
+ summary: {
31005
+ description: "The summary section that is always visible and acts as the trigger."
31006
+ }
31007
+ },
30987
31008
  props: {
30988
31009
  summary: dComponent("The summary content that is always visible and acts as the trigger."),
30989
31010
  initiallyExpanded: {
@@ -35307,7 +35328,7 @@ function InputDivider({
35307
35328
  const PART_DAY = "day";
35308
35329
  const PART_MONTH = "month";
35309
35330
  const PART_YEAR = "year";
35310
- const PART_CLEAR_BUTTON$1 = "clearButton";
35331
+ const PART_CLEAR_BUTTON = "clearButton";
35311
35332
  const MIN_YEAR = 1900;
35312
35333
  const MAX_YEAR = 2100;
35313
35334
  const dateFormats = [
@@ -35540,7 +35561,7 @@ const DateInput = forwardRef(function DateInputNative({
35540
35561
  }
35541
35562
  }
35542
35563
  },
35543
- [day2, month2, year2, handleChange, onInvalidChange]
35564
+ [day2, month2, year2, handleChange, onInvalidChange, formatDateValue]
35544
35565
  );
35545
35566
  const handleDayChange = useMemo(
35546
35567
  () => createInputChangeHandler(
@@ -35845,21 +35866,17 @@ const DateInput = forwardRef(function DateInputNative({
35845
35866
  startAdornment,
35846
35867
  /* @__PURE__ */ jsxs("div", { className: styles$p.wrapper, children: [
35847
35868
  /* @__PURE__ */ jsx("div", { className: styles$p.inputGroup, children: createDateInputs() }),
35848
- clearable && /* @__PURE__ */ jsx(
35869
+ clearable && /* @__PURE__ */ jsx(Part, { partId: PART_CLEAR_BUTTON, children: /* @__PURE__ */ jsx(
35849
35870
  "button",
35850
35871
  {
35851
- "data-part-id": PART_CLEAR_BUTTON$1,
35852
- className: classnames(
35853
- styles$p.clearButton,
35854
- styles$p.button
35855
- ),
35872
+ className: classnames(styles$p.clearButton, styles$p.button),
35856
35873
  disabled: !enabled2,
35857
35874
  onClick: clear,
35858
35875
  onFocus: stopPropagation,
35859
35876
  type: "button",
35860
35877
  children: clearIconElement
35861
35878
  }
35862
- )
35879
+ ) })
35863
35880
  ] }),
35864
35881
  endAdornment
35865
35882
  ]
@@ -35887,10 +35904,9 @@ function DayInput({
35887
35904
  }
35888
35905
  return 31;
35889
35906
  }, [month2, year2]);
35890
- return /* @__PURE__ */ jsx(
35907
+ return /* @__PURE__ */ jsx(Part, { partId: PART_DAY, children: /* @__PURE__ */ jsx(
35891
35908
  PartialInput,
35892
35909
  {
35893
- "data-part-id": PART_DAY,
35894
35910
  id: otherProps.id,
35895
35911
  value,
35896
35912
  emptyCharacter,
@@ -35919,7 +35935,7 @@ function DayInput({
35919
35935
  ariaLabel: otherProps.ariaLabel,
35920
35936
  isInvalid
35921
35937
  }
35922
- );
35938
+ ) });
35923
35939
  }
35924
35940
  function MonthInput({
35925
35941
  minValue,
@@ -35930,10 +35946,9 @@ function MonthInput({
35930
35946
  emptyCharacter = "-",
35931
35947
  ...otherProps
35932
35948
  }) {
35933
- return /* @__PURE__ */ jsx(
35949
+ return /* @__PURE__ */ jsx(Part, { partId: PART_MONTH, children: /* @__PURE__ */ jsx(
35934
35950
  PartialInput,
35935
35951
  {
35936
- "data-part-id": PART_MONTH,
35937
35952
  id: otherProps.id,
35938
35953
  max: 12,
35939
35954
  min: 1,
@@ -35962,7 +35977,7 @@ function MonthInput({
35962
35977
  nextInputRef: otherProps.nextInputRef,
35963
35978
  ariaLabel: otherProps.ariaLabel
35964
35979
  }
35965
- );
35980
+ ) });
35966
35981
  }
35967
35982
  function YearInput({
35968
35983
  minValue,
@@ -35979,10 +35994,9 @@ function YearInput({
35979
35994
  const min = 1900;
35980
35995
  const max = currentYear + 100;
35981
35996
  const { className: originalClassName, ...restProps } = otherProps;
35982
- return /* @__PURE__ */ jsx(
35997
+ return /* @__PURE__ */ jsx(Part, { partId: PART_YEAR, children: /* @__PURE__ */ jsx(
35983
35998
  PartialInput,
35984
35999
  {
35985
- "data-part-id": PART_YEAR,
35986
36000
  id: otherProps.id,
35987
36001
  max,
35988
36002
  min,
@@ -36003,7 +36017,7 @@ function YearInput({
36003
36017
  },
36004
36018
  ...restProps
36005
36019
  }
36006
- );
36020
+ ) });
36007
36021
  }
36008
36022
  function parseDateString(dateString, dateFormat) {
36009
36023
  if (typeof dateString !== "string" || dateString === null || dateString === void 0) {
@@ -36471,11 +36485,6 @@ function safeMin(...args) {
36471
36485
  function safeMax(...args) {
36472
36486
  return Math.max(...args.filter(isValidNumber));
36473
36487
  }
36474
- const PART_HOUR = "hour";
36475
- const PART_MINUTE = "minute";
36476
- const PART_SECOND = "second";
36477
- const PART_AMPM = "ampm";
36478
- const PART_CLEAR_BUTTON = "clearButton";
36479
36488
  const defaultProps$j = {
36480
36489
  enabled: true,
36481
36490
  validationStatus: "none",
@@ -37006,10 +37015,9 @@ const TimeInputNative = forwardRef(function TimeInputNative2({
37006
37015
  }
37007
37016
  )
37008
37017
  ] }),
37009
- clearable && /* @__PURE__ */ jsx(
37018
+ clearable && /* @__PURE__ */ jsx(Part, { partId: "clearButton", children: /* @__PURE__ */ jsx(
37010
37019
  "button",
37011
37020
  {
37012
- "data-part-id": PART_CLEAR_BUTTON,
37013
37021
  className: classnames(styles$m.clearButton, styles$m.button),
37014
37022
  disabled: !enabled2,
37015
37023
  onClick: clear,
@@ -37017,7 +37025,7 @@ const TimeInputNative = forwardRef(function TimeInputNative2({
37017
37025
  type: "button",
37018
37026
  children: clearIconElement
37019
37027
  }
37020
- )
37028
+ ) })
37021
37029
  ] }),
37022
37030
  endAdornment
37023
37031
  ]
@@ -37060,11 +37068,10 @@ function AmPmButton({
37060
37068
  },
37061
37069
  [onKeyDown, disabled2, onAmPmSet, value, amDisabled, pmDisabled]
37062
37070
  );
37063
- return /* @__PURE__ */ jsx(
37071
+ return /* @__PURE__ */ jsx(Part, { partId: "ampm", children: /* @__PURE__ */ jsx(
37064
37072
  "button",
37065
37073
  {
37066
37074
  type: "button",
37067
- "data-part-id": PART_AMPM,
37068
37075
  "aria-label": ariaLabel || "Toggle AM/PM (Press A for AM, P for PM)",
37069
37076
  autoFocus,
37070
37077
  className: classnames(styles$m.amPmButton, styles$m.button, className),
@@ -37074,7 +37081,7 @@ function AmPmButton({
37074
37081
  ref: buttonRef,
37075
37082
  children: /* @__PURE__ */ jsx("span", { className: styles$m.amPmValue, children: value ? value === "am" ? amLabel : pmLabel : "--" })
37076
37083
  }
37077
- );
37084
+ ) });
37078
37085
  }
37079
37086
  function HourInput({
37080
37087
  id,
@@ -37122,11 +37129,10 @@ function HourInput({
37122
37129
  }
37123
37130
  })();
37124
37131
  const displayValue = value || "";
37125
- return /* @__PURE__ */ jsx(
37132
+ return /* @__PURE__ */ jsx(Part, { partId: "hour", children: /* @__PURE__ */ jsx(
37126
37133
  PartialInput,
37127
37134
  {
37128
37135
  id,
37129
- "data-part-id": PART_HOUR,
37130
37136
  value: displayValue,
37131
37137
  emptyCharacter,
37132
37138
  placeholderLength: 2,
@@ -37154,7 +37160,7 @@ function HourInput({
37154
37160
  ariaLabel: otherProps.ariaLabel,
37155
37161
  isInvalid
37156
37162
  }
37157
- );
37163
+ ) });
37158
37164
  }
37159
37165
  function MinuteInput({
37160
37166
  hour: hour2,
@@ -37171,10 +37177,9 @@ function MinuteInput({
37171
37177
  }
37172
37178
  const maxMinute = safeMin(59, maxTime && isSameHour(maxTime) && getMinutes(maxTime));
37173
37179
  const minMinute = safeMax(0, minTime && isSameHour(minTime) && getMinutes(minTime));
37174
- return /* @__PURE__ */ jsx(
37180
+ return /* @__PURE__ */ jsx(Part, { partId: "minute", children: /* @__PURE__ */ jsx(
37175
37181
  PartialInput,
37176
37182
  {
37177
- "data-part-id": PART_MINUTE,
37178
37183
  max: maxMinute,
37179
37184
  min: minMinute,
37180
37185
  name: "minute",
@@ -37202,7 +37207,7 @@ function MinuteInput({
37202
37207
  ariaLabel: otherProps.ariaLabel,
37203
37208
  isInvalid
37204
37209
  }
37205
- );
37210
+ ) });
37206
37211
  }
37207
37212
  function SecondInput({
37208
37213
  hour: hour2,
@@ -37220,10 +37225,9 @@ function SecondInput({
37220
37225
  }
37221
37226
  const maxSecond = safeMin(59, maxTime && isSameMinute(maxTime) && getSeconds(maxTime));
37222
37227
  const minSecond = safeMax(0, minTime && isSameMinute(minTime) && getSeconds(minTime));
37223
- return /* @__PURE__ */ jsx(
37228
+ return /* @__PURE__ */ jsx(Part, { partId: "second", children: /* @__PURE__ */ jsx(
37224
37229
  PartialInput,
37225
37230
  {
37226
- "data-part-id": PART_SECOND,
37227
37231
  max: maxSecond,
37228
37232
  min: minSecond,
37229
37233
  name: "second",
@@ -37251,7 +37255,7 @@ function SecondInput({
37251
37255
  ariaLabel: otherProps.ariaLabel,
37252
37256
  isInvalid
37253
37257
  }
37254
- );
37258
+ ) });
37255
37259
  }
37256
37260
  function parseTimeString(timeValue, targetIs12Hour = false) {
37257
37261
  if (timeValue == null || timeValue === void 0) {
@@ -39078,6 +39082,17 @@ const COMP$p = "Slider";
39078
39082
  const SliderMd = createMetadata({
39079
39083
  status: "stable",
39080
39084
  description: "`Slider` provides an interactive control for selecting numeric values within a defined range, supporting both single value selection and range selection with multiple thumbs. It offers precise control through customizable steps and visual feedback with formatted value display.Hover over the component to see the tooltip with the current value. On mobile, tap the thumb to see the tooltip.",
39085
+ parts: {
39086
+ label: {
39087
+ description: "The label displayed for the slider."
39088
+ },
39089
+ track: {
39090
+ description: "The track element of the slider."
39091
+ },
39092
+ thumb: {
39093
+ description: "The thumb elements of the slider."
39094
+ }
39095
+ },
39081
39096
  props: {
39082
39097
  initialValue: dInitialValue(),
39083
39098
  minValue: {
@@ -42873,6 +42888,14 @@ const COMP$b = "CodeBlock";
42873
42888
  const CodeBlockMd = createMetadata({
42874
42889
  status: "stable",
42875
42890
  description: `The \`${COMP$b}\` component displays code with optional syntax highlighting and meta information.`,
42891
+ parts: {
42892
+ header: {
42893
+ description: "The header section of the CodeBlock, typically displaying the filename."
42894
+ },
42895
+ content: {
42896
+ description: "The main content area of the CodeBlock where the code is displayed."
42897
+ }
42898
+ },
42876
42899
  props: {},
42877
42900
  themeVars: parseScssVar(styles$A.themeVars),
42878
42901
  defaultThemeVars: {
@@ -44812,6 +44835,17 @@ const COMP$2 = "Pagination";
44812
44835
  const PaginationMd = createMetadata({
44813
44836
  status: "experimental",
44814
44837
  description: "`Pagination` enables navigation through large datasets by dividing content into pages. It provides controls for page navigation and can display current page information.",
44838
+ parts: {
44839
+ buttonRow: {
44840
+ description: "The container for pagination buttons."
44841
+ },
44842
+ pageInfo: {
44843
+ description: "The container for page information display."
44844
+ },
44845
+ pageSizeSelector: {
44846
+ description: "The container for the page size selector dropdown."
44847
+ }
44848
+ },
44815
44849
  props: {
44816
44850
  enabled: dEnabled(),
44817
44851
  itemCount: d(
@@ -46639,7 +46673,7 @@ function IconProvider({ children }) {
46639
46673
  /* @__PURE__ */ jsx("svg", { style: { display: "none" }, ref: spriteRootRef })
46640
46674
  ] });
46641
46675
  }
46642
- const version = "0.11.15";
46676
+ const version = "0.11.16";
46643
46677
  const miscellaneousUtils = {
46644
46678
  capitalize,
46645
46679
  pluralize: pluralize$1,
@@ -46917,21 +46951,21 @@ function createContainerReducer(debugView) {
46917
46951
  case ContainerActionKind.EVENT_HANDLER_STARTED: {
46918
46952
  const { eventName } = action2.payload;
46919
46953
  const inProgressFlagName = `${eventName}InProgress`;
46920
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: true } : { [inProgressFlagName]: true };
46954
+ state[uid] = { ...state[uid], [inProgressFlagName]: true };
46921
46955
  storeNextValue(state[uid]);
46922
46956
  break;
46923
46957
  }
46924
46958
  case ContainerActionKind.EVENT_HANDLER_COMPLETED: {
46925
46959
  const { eventName } = action2.payload;
46926
46960
  const inProgressFlagName = `${eventName}InProgress`;
46927
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: false } : { [inProgressFlagName]: false };
46961
+ state[uid] = { ...state[uid], [inProgressFlagName]: false };
46928
46962
  storeNextValue(state[uid]);
46929
46963
  break;
46930
46964
  }
46931
46965
  case ContainerActionKind.EVENT_HANDLER_ERROR: {
46932
46966
  const { eventName } = action2.payload;
46933
46967
  const inProgressFlagName = `${eventName}InProgress`;
46934
- state[uid] = state[uid] ? { ...state[uid], [inProgressFlagName]: false } : { [inProgressFlagName]: false };
46968
+ state[uid] = { ...state[uid], [inProgressFlagName]: false };
46935
46969
  storeNextValue(state[uid]);
46936
46970
  break;
46937
46971
  }
@@ -49019,9 +49053,7 @@ const StateContainer = memo(
49019
49053
  const routingParams = useRoutingParams();
49020
49054
  const memoedVars = useRef(/* @__PURE__ */ new Map());
49021
49055
  const stateFromOutside = useShallowCompareMemoize(
49022
- useMemo(() => {
49023
- return extractScopedState(parentState, node.uses);
49024
- }, [node.uses, parentState])
49056
+ useMemo(() => extractScopedState(parentState, node.uses), [node.uses, parentState])
49025
49057
  );
49026
49058
  const debugView = useDebugView();
49027
49059
  const containerReducer = createContainerReducer(debugView);
@@ -49030,15 +49062,10 @@ const StateContainer = memo(
49030
49062
  const componentStateWithApis = useShallowCompareMemoize(
49031
49063
  useMemo(() => {
49032
49064
  const ret = { ...componentState };
49033
- const registeredApiKeys = new Set(
49034
- Object.getOwnPropertySymbols(componentApis).map((s) => s.description).filter((d2) => d2 !== void 0)
49035
- );
49036
49065
  for (const stateKey of Object.getOwnPropertySymbols(componentState)) {
49037
49066
  const value = componentState[stateKey];
49038
49067
  if (stateKey.description) {
49039
- if (registeredApiKeys.has(stateKey.description)) {
49040
- ret[stateKey.description] = value;
49041
- }
49068
+ ret[stateKey.description] = value;
49042
49069
  }
49043
49070
  }
49044
49071
  if (Reflect.ownKeys(componentApis).length === 0) {
@@ -49102,11 +49129,8 @@ const StateContainer = memo(
49102
49129
  const mergedWithVars = useMergedState(resolvedLocalVars, componentStateWithApis);
49103
49130
  const combinedState = useCombinedState(
49104
49131
  stateFromOutside,
49105
- // Parent state (lower priority) - allows local vars to shadow
49106
49132
  node.contextVars,
49107
- // Context vars like $item
49108
49133
  mergedWithVars,
49109
- // Local vars and component state (higher priority) - enables shadowing
49110
49134
  routingParams
49111
49135
  );
49112
49136
  const registerComponentApi = useCallback((uid, api) => {