@lumx/react 4.11.0 → 4.12.0-alpha.0

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.
package/index.js CHANGED
@@ -9,7 +9,7 @@ import ReactDOM__default from 'react-dom';
9
9
  import { classNames, onEscapePressed, onEnterPressed as onEnterPressed$1, detectHorizontalSwipe } from '@lumx/core/js/utils';
10
10
  import last from 'lodash/last.js';
11
11
  import pull from 'lodash/pull.js';
12
- import { u as useDisabledStateContext, P as Portal, C as ClickAwayProvider } from './_internal/Dpulze-1.js';
12
+ import { u as useDisabledStateContext, P as Portal, C as ClickAwayProvider, I as InfiniteScroll } from './_internal/BvaFEHZn.js';
13
13
  import isEmpty from 'lodash/isEmpty.js';
14
14
  import get from 'lodash/get.js';
15
15
  import { getDisabledState as getDisabledState$1 } from '@lumx/core/js/utils/disabledState';
@@ -25,10 +25,11 @@ import concat from 'lodash/concat.js';
25
25
  import dropRight from 'lodash/dropRight.js';
26
26
  import partition from 'lodash/partition.js';
27
27
  import reduce from 'lodash/reduce.js';
28
- import { mdiAlert } from '@lumx/icons/esm/alert.js';
29
- import { mdiInformation } from '@lumx/icons/esm/information.js';
28
+ import { getWithSelector as getWithSelector$1 } from '@lumx/core/js/utils/selectors';
30
29
  import { mdiClose } from '@lumx/icons/esm/close.js';
31
30
  import isFunction from 'lodash/isFunction.js';
31
+ import { mdiAlert } from '@lumx/icons/esm/alert.js';
32
+ import { mdiInformation } from '@lumx/icons/esm/information.js';
32
33
  import { mdiImageBroken } from '@lumx/icons/esm/image-broken.js';
33
34
  import { mdiCheck } from '@lumx/icons/esm/check.js';
34
35
  import { mdiMinus } from '@lumx/icons/esm/minus.js';
@@ -528,6 +529,24 @@ const getWithSelector = (selector, object) => {
528
529
  return String(object);
529
530
  };
530
531
 
532
+ /**
533
+ * Equivalent to `lodash/groupBy` but returns a `Map` of groups items (instead of an object)
534
+ * (has the major advantage to not forcing the keys to be string!)
535
+ */
536
+ function groupBySelector(array, selector) {
537
+ const groups = new Map();
538
+ for (const item of array) {
539
+ const key = getWithSelector(selector, item);
540
+ let group = groups.get(key);
541
+ if (!group) {
542
+ group = [];
543
+ groups.set(key, group);
544
+ }
545
+ group.push(item);
546
+ }
547
+ return groups;
548
+ }
549
+
531
550
  /**
532
551
  * Associative map from message kind to color and icon.
533
552
  */
@@ -553,15 +572,15 @@ const CONFIG$1 = {
553
572
  /**
554
573
  * Component display name.
555
574
  */
556
- const COMPONENT_NAME$1x = 'AlertDialog';
575
+ const COMPONENT_NAME$1y = 'AlertDialog';
557
576
 
558
577
  /**
559
578
  * Component default class name and class prefix.
560
579
  */
561
- const CLASSNAME$1v = 'lumx-alert-dialog';
580
+ const CLASSNAME$1w = 'lumx-alert-dialog';
562
581
  const {
563
582
  block: block$18
564
- } = bem(CLASSNAME$1v);
583
+ } = bem(CLASSNAME$1w);
565
584
 
566
585
  /**
567
586
  * Component default props.
@@ -727,8 +746,8 @@ const AlertDialog = forwardRef((props, ref) => {
727
746
  ...forwardedProps
728
747
  });
729
748
  });
730
- AlertDialog.displayName = COMPONENT_NAME$1x;
731
- AlertDialog.className = CLASSNAME$1v;
749
+ AlertDialog.displayName = COMPONENT_NAME$1y;
750
+ AlertDialog.className = CLASSNAME$1w;
732
751
  AlertDialog.defaultProps = DEFAULT_PROPS$1g;
733
752
 
734
753
  /**
@@ -821,12 +840,12 @@ function useDisableStateProps(props) {
821
840
  /**
822
841
  * Component display name.
823
842
  */
824
- const COMPONENT_NAME$1w = 'Autocomplete';
843
+ const COMPONENT_NAME$1x = 'Autocomplete';
825
844
 
826
845
  /**
827
846
  * Component default class name and class prefix.
828
847
  */
829
- const CLASSNAME$1u = 'lumx-autocomplete';
848
+ const CLASSNAME$1v = 'lumx-autocomplete';
830
849
 
831
850
  /**
832
851
  * Component default props.
@@ -842,6 +861,7 @@ const DEFAULT_PROPS$1f = {
842
861
  /**
843
862
  * Autocomplete component.
844
863
  *
864
+ * @deprecated use `SelectTextField` instead
845
865
  * @param props Component props.
846
866
  * @param ref Component ref.
847
867
  * @return React element.
@@ -893,7 +913,7 @@ const Autocomplete = forwardRef((props, ref) => {
893
913
  return /*#__PURE__*/jsxs("div", {
894
914
  ref: ref,
895
915
  ...forwardedProps,
896
- className: classNames.join(className, CLASSNAME$1u),
916
+ className: classNames.join(className, CLASSNAME$1v),
897
917
  children: [/*#__PURE__*/jsx(TextField, {
898
918
  ...textFieldProps,
899
919
  chips: chips,
@@ -933,19 +953,19 @@ const Autocomplete = forwardRef((props, ref) => {
933
953
  })]
934
954
  });
935
955
  });
936
- Autocomplete.displayName = COMPONENT_NAME$1w;
937
- Autocomplete.className = CLASSNAME$1u;
956
+ Autocomplete.displayName = COMPONENT_NAME$1x;
957
+ Autocomplete.className = CLASSNAME$1v;
938
958
  Autocomplete.defaultProps = DEFAULT_PROPS$1f;
939
959
 
940
960
  /**
941
961
  * Component display name.
942
962
  */
943
- const COMPONENT_NAME$1v = 'AutocompleteMultiple';
963
+ const COMPONENT_NAME$1w = 'AutocompleteMultiple';
944
964
 
945
965
  /**
946
966
  * Component default class name and class prefix.
947
967
  */
948
- const CLASSNAME$1t = 'lumx-autocomplete-multiple';
968
+ const CLASSNAME$1u = 'lumx-autocomplete-multiple';
949
969
 
950
970
  /**
951
971
  * Component default props.
@@ -972,7 +992,8 @@ const DEFAULT_PROPS$1e = {
972
992
 
973
993
  /**
974
994
  * AutocompleteMultiple component.
975
- *
995
+
996
+ * @deprecated use `SelectTextField` instead
976
997
  * @param props Component props.
977
998
  * @param ref Component ref.
978
999
  * @return React element.
@@ -1025,7 +1046,7 @@ const AutocompleteMultiple = forwardRef((props, ref) => {
1025
1046
  ref: ref,
1026
1047
  ...forwardedProps,
1027
1048
  anchorToInput: anchorToInput,
1028
- className: classNames.join(className, CLASSNAME$1t),
1049
+ className: classNames.join(className, CLASSNAME$1u),
1029
1050
  name: name,
1030
1051
  value: value,
1031
1052
  onChange: onChange,
@@ -1058,23 +1079,23 @@ const AutocompleteMultiple = forwardRef((props, ref) => {
1058
1079
  children: children
1059
1080
  });
1060
1081
  });
1061
- AutocompleteMultiple.displayName = COMPONENT_NAME$1v;
1062
- AutocompleteMultiple.className = CLASSNAME$1t;
1082
+ AutocompleteMultiple.displayName = COMPONENT_NAME$1w;
1083
+ AutocompleteMultiple.className = CLASSNAME$1u;
1063
1084
  AutocompleteMultiple.defaultProps = DEFAULT_PROPS$1e;
1064
1085
 
1065
1086
  /**
1066
1087
  * Component display name.
1067
1088
  */
1068
- const COMPONENT_NAME$1u = 'Avatar';
1089
+ const COMPONENT_NAME$1v = 'Avatar';
1069
1090
 
1070
1091
  /**
1071
1092
  * Component default class name and class prefix.
1072
1093
  */
1073
- const CLASSNAME$1s = 'lumx-avatar';
1094
+ const CLASSNAME$1t = 'lumx-avatar';
1074
1095
  const {
1075
1096
  block: block$17,
1076
1097
  element: element$Q
1077
- } = bem(CLASSNAME$1s);
1098
+ } = bem(CLASSNAME$1t);
1078
1099
 
1079
1100
  /**
1080
1101
  * Component default props.
@@ -1165,22 +1186,22 @@ const Avatar = forwardRef((props, ref) => {
1165
1186
  })
1166
1187
  });
1167
1188
  });
1168
- Avatar.displayName = COMPONENT_NAME$1u;
1169
- Avatar.className = CLASSNAME$1s;
1189
+ Avatar.displayName = COMPONENT_NAME$1v;
1190
+ Avatar.className = CLASSNAME$1t;
1170
1191
  Avatar.defaultProps = DEFAULT_PROPS$1d;
1171
1192
 
1172
1193
  /**
1173
1194
  * Component display name.
1174
1195
  */
1175
- const COMPONENT_NAME$1t = 'Badge';
1196
+ const COMPONENT_NAME$1u = 'Badge';
1176
1197
 
1177
1198
  /**
1178
1199
  * Component default class name and class prefix.
1179
1200
  */
1180
- const CLASSNAME$1r = 'lumx-badge';
1201
+ const CLASSNAME$1s = 'lumx-badge';
1181
1202
  const {
1182
1203
  block: block$16
1183
- } = bem(CLASSNAME$1r);
1204
+ } = bem(CLASSNAME$1s);
1184
1205
 
1185
1206
  /**
1186
1207
  * Component default props.
@@ -1212,8 +1233,8 @@ const Badge$1 = props => {
1212
1233
  children: children
1213
1234
  });
1214
1235
  };
1215
- Badge$1.displayName = COMPONENT_NAME$1t;
1216
- Badge$1.className = CLASSNAME$1r;
1236
+ Badge$1.displayName = COMPONENT_NAME$1u;
1237
+ Badge$1.className = CLASSNAME$1s;
1217
1238
  Badge$1.defaultProps = DEFAULT_PROPS$1c;
1218
1239
 
1219
1240
  /**
@@ -1237,12 +1258,12 @@ Badge.displayName = Badge$1.displayName;
1237
1258
  Badge.className = Badge$1.className;
1238
1259
  Badge.defaultProps = Badge$1.defaultProps;
1239
1260
 
1240
- const COMPONENT_NAME$1s = 'BadgeWrapper';
1241
- const CLASSNAME$1q = 'lumx-badge-wrapper';
1261
+ const COMPONENT_NAME$1t = 'BadgeWrapper';
1262
+ const CLASSNAME$1r = 'lumx-badge-wrapper';
1242
1263
  const {
1243
1264
  block: block$15,
1244
1265
  element: element$P
1245
- } = bem(CLASSNAME$1q);
1266
+ } = bem(CLASSNAME$1r);
1246
1267
  const BadgeWrapper$1 = props => {
1247
1268
  const {
1248
1269
  badge,
@@ -1268,8 +1289,8 @@ const BadgeWrapper = forwardRef((props, ref) => {
1268
1289
  ref
1269
1290
  });
1270
1291
  });
1271
- BadgeWrapper.displayName = COMPONENT_NAME$1s;
1272
- BadgeWrapper.className = CLASSNAME$1q;
1292
+ BadgeWrapper.displayName = COMPONENT_NAME$1t;
1293
+ BadgeWrapper.className = CLASSNAME$1r;
1273
1294
 
1274
1295
  /**
1275
1296
  * Render clickable element (link, button or custom element)
@@ -1319,7 +1340,7 @@ const RawClickable = props => {
1319
1340
  /**
1320
1341
  * Component display name.
1321
1342
  */
1322
- const COMPONENT_NAME$1r = 'ButtonRoot';
1343
+ const COMPONENT_NAME$1s = 'ButtonRoot';
1323
1344
  const BUTTON_WRAPPER_CLASSNAME = `lumx-button-wrapper`;
1324
1345
  const {
1325
1346
  block: buttonWrapperBlock
@@ -1417,7 +1438,7 @@ const ButtonRoot = props => {
1417
1438
  children
1418
1439
  });
1419
1440
  };
1420
- ButtonRoot.displayName = COMPONENT_NAME$1r;
1441
+ ButtonRoot.displayName = COMPONENT_NAME$1s;
1421
1442
  ButtonRoot.defaultProps = {};
1422
1443
 
1423
1444
  /**
@@ -1427,15 +1448,15 @@ ButtonRoot.defaultProps = {};
1427
1448
  /**
1428
1449
  * Component display name.
1429
1450
  */
1430
- const COMPONENT_NAME$1q = 'Button';
1451
+ const COMPONENT_NAME$1r = 'Button';
1431
1452
 
1432
1453
  /**
1433
1454
  * Component default class name and class prefix.
1434
1455
  */
1435
- const CLASSNAME$1p = 'lumx-button';
1456
+ const CLASSNAME$1q = 'lumx-button';
1436
1457
  const {
1437
1458
  modifier
1438
- } = bem(CLASSNAME$1p);
1459
+ } = bem(CLASSNAME$1q);
1439
1460
 
1440
1461
  /**
1441
1462
  * Component default props.
@@ -1472,8 +1493,8 @@ const Button$1 = props => {
1472
1493
  variant: 'button'
1473
1494
  });
1474
1495
  };
1475
- Button$1.displayName = COMPONENT_NAME$1q;
1476
- Button$1.className = CLASSNAME$1p;
1496
+ Button$1.displayName = COMPONENT_NAME$1r;
1497
+ Button$1.className = CLASSNAME$1q;
1477
1498
  Button$1.defaultProps = DEFAULT_PROPS$1b;
1478
1499
 
1479
1500
  /**
@@ -1547,21 +1568,21 @@ const Button = forwardRef((props, ref) => {
1547
1568
  })
1548
1569
  });
1549
1570
  });
1550
- Button.displayName = COMPONENT_NAME$1q;
1551
- Button.className = CLASSNAME$1p;
1571
+ Button.displayName = COMPONENT_NAME$1r;
1572
+ Button.className = CLASSNAME$1q;
1552
1573
  Button.defaultProps = DEFAULT_PROPS$1b;
1553
1574
 
1554
- const COMPONENT_NAME$1p = 'Icon';
1575
+ const COMPONENT_NAME$1q = 'Icon';
1555
1576
  const IconClassName = 'lumx-icon';
1556
1577
 
1557
1578
  /**
1558
1579
  * Defines the props of the component.
1559
1580
  */
1560
1581
 
1561
- const CLASSNAME$1o = IconClassName;
1582
+ const CLASSNAME$1p = IconClassName;
1562
1583
  const {
1563
1584
  block: block$14
1564
- } = bem(CLASSNAME$1o);
1585
+ } = bem(CLASSNAME$1p);
1565
1586
 
1566
1587
  /**
1567
1588
  * Component default props.
@@ -1644,19 +1665,19 @@ const Icon$1 = props => {
1644
1665
  })
1645
1666
  });
1646
1667
  };
1647
- Icon$1.displayName = COMPONENT_NAME$1p;
1648
- Icon$1.className = CLASSNAME$1o;
1668
+ Icon$1.displayName = COMPONENT_NAME$1q;
1669
+ Icon$1.className = CLASSNAME$1p;
1649
1670
  Icon$1.defaultProps = DEFAULT_PROPS$1a;
1650
1671
 
1651
1672
  /**
1652
1673
  * Component display name.
1653
1674
  */
1654
- const COMPONENT_NAME$1o = 'IconButton';
1675
+ const COMPONENT_NAME$1p = 'IconButton';
1655
1676
 
1656
1677
  /**
1657
1678
  * Component default class name and class prefix.
1658
1679
  */
1659
- const CLASSNAME$1n = 'lumx-icon-button';
1680
+ const CLASSNAME$1o = 'lumx-icon-button';
1660
1681
 
1661
1682
  /**
1662
1683
  * Component default props.
@@ -1697,8 +1718,8 @@ const IconButton$1 = props => {
1697
1718
  children: defaultChildren
1698
1719
  });
1699
1720
  };
1700
- IconButton$1.displayName = COMPONENT_NAME$1o;
1701
- IconButton$1.className = CLASSNAME$1n;
1721
+ IconButton$1.displayName = COMPONENT_NAME$1p;
1722
+ IconButton$1.className = CLASSNAME$1o;
1702
1723
  IconButton$1.defaultProps = DEFAULT_PROPS$19;
1703
1724
 
1704
1725
  /**
@@ -1742,19 +1763,19 @@ const IconButton = forwardRef((props, ref) => {
1742
1763
  })
1743
1764
  });
1744
1765
  });
1745
- IconButton.displayName = COMPONENT_NAME$1o;
1746
- IconButton.className = CLASSNAME$1n;
1766
+ IconButton.displayName = COMPONENT_NAME$1p;
1767
+ IconButton.className = CLASSNAME$1o;
1747
1768
  IconButton.defaultProps = DEFAULT_PROPS$19;
1748
1769
 
1749
1770
  /**
1750
1771
  * Component display name.
1751
1772
  */
1752
- const COMPONENT_NAME$1n = 'ButtonGroup';
1773
+ const COMPONENT_NAME$1o = 'ButtonGroup';
1753
1774
 
1754
1775
  /**
1755
1776
  * Component default class name and class prefix.
1756
1777
  */
1757
- const CLASSNAME$1m = 'lumx-button-group';
1778
+ const CLASSNAME$1n = 'lumx-button-group';
1758
1779
 
1759
1780
  /**
1760
1781
  * Component default props.
@@ -1775,12 +1796,12 @@ const ButtonGroup$1 = props => {
1775
1796
  } = props;
1776
1797
  return /*#__PURE__*/jsx("div", {
1777
1798
  ...forwardedProps,
1778
- className: classnames(className, CLASSNAME$1m),
1799
+ className: classnames(className, CLASSNAME$1n),
1779
1800
  children: children
1780
1801
  });
1781
1802
  };
1782
- ButtonGroup$1.displayName = COMPONENT_NAME$1n;
1783
- ButtonGroup$1.className = CLASSNAME$1m;
1803
+ ButtonGroup$1.displayName = COMPONENT_NAME$1o;
1804
+ ButtonGroup$1.className = CLASSNAME$1n;
1784
1805
  ButtonGroup$1.defaultProps = DEFAULT_PROPS$18;
1785
1806
 
1786
1807
  /**
@@ -1796,16 +1817,16 @@ const ButtonGroup = forwardRef((props, ref) => {
1796
1817
  ...props
1797
1818
  });
1798
1819
  });
1799
- ButtonGroup.displayName = COMPONENT_NAME$1n;
1800
- ButtonGroup.className = CLASSNAME$1m;
1820
+ ButtonGroup.displayName = COMPONENT_NAME$1o;
1821
+ ButtonGroup.className = CLASSNAME$1n;
1801
1822
  ButtonGroup.defaultProps = DEFAULT_PROPS$18;
1802
1823
 
1803
- const COMPONENT_NAME$1m = 'InputLabel';
1824
+ const COMPONENT_NAME$1n = 'InputLabel';
1804
1825
  const InputLabelClassName = 'lumx-input-label';
1805
- const CLASSNAME$1l = InputLabelClassName;
1826
+ const CLASSNAME$1m = InputLabelClassName;
1806
1827
  const {
1807
1828
  block: block$13
1808
- } = bem(CLASSNAME$1l);
1829
+ } = bem(CLASSNAME$1m);
1809
1830
  const DEFAULT_PROPS$17 = {};
1810
1831
 
1811
1832
  /**
@@ -1834,8 +1855,8 @@ function InputLabel$1(props) {
1834
1855
  children: children
1835
1856
  });
1836
1857
  }
1837
- InputLabel$1.displayName = COMPONENT_NAME$1m;
1838
- InputLabel$1.className = CLASSNAME$1l;
1858
+ InputLabel$1.displayName = COMPONENT_NAME$1n;
1859
+ InputLabel$1.className = CLASSNAME$1m;
1839
1860
  InputLabel$1.defaultProps = DEFAULT_PROPS$17;
1840
1861
 
1841
1862
  const INPUT_HELPER_CONFIGURATION = {
@@ -1850,17 +1871,17 @@ const INPUT_HELPER_CONFIGURATION = {
1850
1871
  }
1851
1872
  };
1852
1873
 
1853
- const COMPONENT_NAME$1l = 'InputHelper';
1874
+ const COMPONENT_NAME$1m = 'InputHelper';
1854
1875
  const InputHelperClassName = 'lumx-input-helper';
1855
1876
 
1856
1877
  /**
1857
1878
  * Defines the props of the component.
1858
1879
  */
1859
1880
 
1860
- const CLASSNAME$1k = InputHelperClassName;
1881
+ const CLASSNAME$1l = InputHelperClassName;
1861
1882
  const {
1862
1883
  block: block$12
1863
- } = bem(CLASSNAME$1k);
1884
+ } = bem(CLASSNAME$1l);
1864
1885
 
1865
1886
  /**
1866
1887
  * Component default props.
@@ -1894,8 +1915,8 @@ function InputHelper$1(props) {
1894
1915
  children: children
1895
1916
  });
1896
1917
  }
1897
- InputHelper$1.displayName = COMPONENT_NAME$1l;
1898
- InputHelper$1.className = CLASSNAME$1k;
1918
+ InputHelper$1.displayName = COMPONENT_NAME$1m;
1919
+ InputHelper$1.className = CLASSNAME$1l;
1899
1920
  InputHelper$1.defaultProps = DEFAULT_PROPS$16;
1900
1921
 
1901
1922
  const INTERMEDIATE_STATE = 'intermediate';
@@ -1907,16 +1928,16 @@ const INTERMEDIATE_STATE = 'intermediate';
1907
1928
  /**
1908
1929
  * Component display name.
1909
1930
  */
1910
- const COMPONENT_NAME$1k = 'Checkbox';
1931
+ const COMPONENT_NAME$1l = 'Checkbox';
1911
1932
 
1912
1933
  /**
1913
1934
  * Component default class name and class prefix.
1914
1935
  */
1915
- const CLASSNAME$1j = 'lumx-checkbox';
1936
+ const CLASSNAME$1k = 'lumx-checkbox';
1916
1937
  const {
1917
1938
  block: block$11,
1918
1939
  element: element$O
1919
- } = bem(CLASSNAME$1j);
1940
+ } = bem(CLASSNAME$1k);
1920
1941
 
1921
1942
  /**
1922
1943
  * Checkbox component.
@@ -2071,8 +2092,8 @@ const Checkbox = forwardRef((props, ref) => {
2071
2092
  inputId
2072
2093
  });
2073
2094
  });
2074
- Checkbox.displayName = COMPONENT_NAME$1k;
2075
- Checkbox.className = CLASSNAME$1j;
2095
+ Checkbox.displayName = COMPONENT_NAME$1l;
2096
+ Checkbox.className = CLASSNAME$1k;
2076
2097
  Checkbox.defaultProps = DEFAULT_PROPS$15;
2077
2098
 
2078
2099
  /**
@@ -2094,16 +2115,16 @@ function useStopPropagation(handler) {
2094
2115
  /**
2095
2116
  * Component display name.
2096
2117
  */
2097
- const COMPONENT_NAME$1j = 'Chip';
2118
+ const COMPONENT_NAME$1k = 'Chip';
2098
2119
 
2099
2120
  /**
2100
2121
  * Component default class name and class prefix.
2101
2122
  */
2102
- const CLASSNAME$1i = 'lumx-chip';
2123
+ const CLASSNAME$1j = 'lumx-chip';
2103
2124
  const {
2104
2125
  block: block$10,
2105
2126
  element: element$N
2106
- } = bem(CLASSNAME$1i);
2127
+ } = bem(CLASSNAME$1j);
2107
2128
 
2108
2129
  /**
2109
2130
  * Component default props.
@@ -2255,19 +2276,19 @@ const Chip = forwardRef((props, ref) => {
2255
2276
  ...forwardedProps
2256
2277
  });
2257
2278
  });
2258
- Chip.displayName = COMPONENT_NAME$1j;
2259
- Chip.className = CLASSNAME$1i;
2279
+ Chip.displayName = COMPONENT_NAME$1k;
2280
+ Chip.className = CLASSNAME$1j;
2260
2281
  Chip.defaultProps = DEFAULT_PROPS$14;
2261
2282
 
2262
2283
  /**
2263
2284
  * Component display name.
2264
2285
  */
2265
- const COMPONENT_NAME$1i = 'ChipGroup';
2286
+ const COMPONENT_NAME$1j = 'ChipGroup';
2266
2287
 
2267
2288
  /**
2268
2289
  * Component default class name and class prefix.
2269
2290
  */
2270
- const CLASSNAME$1h = 'lumx-chip-group';
2291
+ const CLASSNAME$1i = 'lumx-chip-group';
2271
2292
 
2272
2293
  /**
2273
2294
  * Component default props.
@@ -2290,7 +2311,7 @@ const ChipGroup$1 = props => {
2290
2311
  return /*#__PURE__*/jsx("div", {
2291
2312
  ref: ref,
2292
2313
  ...forwardedProps,
2293
- className: classnames(className, CLASSNAME$1h),
2314
+ className: classnames(className, CLASSNAME$1i),
2294
2315
  children: children
2295
2316
  });
2296
2317
  };
@@ -2368,8 +2389,8 @@ const InternalChipGroup = forwardRef((props, ref) => {
2368
2389
  ...forwardedProps
2369
2390
  });
2370
2391
  });
2371
- InternalChipGroup.displayName = COMPONENT_NAME$1i;
2372
- InternalChipGroup.className = CLASSNAME$1h;
2392
+ InternalChipGroup.displayName = COMPONENT_NAME$1j;
2393
+ InternalChipGroup.className = CLASSNAME$1i;
2373
2394
  InternalChipGroup.defaultProps = DEFAULT_PROPS$13;
2374
2395
  const ChipGroup = Object.assign(InternalChipGroup, {
2375
2396
  useChipGroupNavigation
@@ -2378,16 +2399,16 @@ const ChipGroup = Object.assign(InternalChipGroup, {
2378
2399
  /**
2379
2400
  * Component display name.
2380
2401
  */
2381
- const COMPONENT_NAME$1h = 'SelectionChipGroup';
2402
+ const COMPONENT_NAME$1i = 'SelectionChipGroup';
2382
2403
 
2383
2404
  /**
2384
2405
  * Component default class name and class prefix.
2385
2406
  */
2386
- const CLASSNAME$1g = 'lumx-selection-chip-group';
2407
+ const CLASSNAME$1h = 'lumx-selection-chip-group';
2387
2408
  const {
2388
2409
  block: block$$,
2389
2410
  element: element$M
2390
- } = bem(CLASSNAME$1g);
2411
+ } = bem(CLASSNAME$1h);
2391
2412
 
2392
2413
  /**
2393
2414
  * SelectionChipGroup component.
@@ -2483,10 +2504,13 @@ function createSelectorTreeWalker(container, selector) {
2483
2504
  }
2484
2505
 
2485
2506
  /** CSS selector for enabled chips (not aria-disabled). */
2486
- const ENABLED_CHIP_SELECTOR = `.${CLASSNAME$1i}:not([aria-disabled="true"])`;
2507
+ const ENABLED_CHIP_SELECTOR = `.${CLASSNAME$1j}:not([aria-disabled="true"])`;
2487
2508
 
2488
2509
  /** Find the closest chip element from an event target. */
2489
- const getChip = target => target?.closest?.(`.${CLASSNAME$1i}`) || null;
2510
+ const getChip = target => target?.closest?.(`.${CLASSNAME$1j}`) || null;
2511
+
2512
+ /** Whether the chip is marked as disabled via aria-disabled. */
2513
+ const isChipDisabled = chip => chip?.getAttribute('aria-disabled') === 'true';
2490
2514
 
2491
2515
  /**
2492
2516
  * Options for setting up selection chip group event handlers.
@@ -2542,7 +2566,9 @@ function setupSelectionChipGroupEvents(options) {
2542
2566
  const handleClick = evt => {
2543
2567
  const chip = getChip(evt.target);
2544
2568
  const optionId = chip?.dataset.optionId;
2545
- if (optionId == null) return;
2569
+ if (optionId == null || isChipDisabled(chip)) {
2570
+ return;
2571
+ }
2546
2572
  evt.stopImmediatePropagation();
2547
2573
  removeOption(options, optionId);
2548
2574
  };
@@ -2555,7 +2581,9 @@ function setupSelectionChipGroupEvents(options) {
2555
2581
  const chip = getChip(evt.target);
2556
2582
  const optionId = chip?.dataset.optionId;
2557
2583
  const activatingKey = evt.key === 'Enter' || evt.key === ' ' || evt.key === 'Backspace';
2558
- if (optionId == null || !activatingKey) return;
2584
+ if (optionId == null || !activatingKey || isChipDisabled(chip)) {
2585
+ return;
2586
+ }
2559
2587
  if (evt.key === 'Backspace') {
2560
2588
  // Move focus to previous option (instead of next in listbox)
2561
2589
  const previousChip = findPreviousChip(container, chip);
@@ -2684,15 +2712,15 @@ function wrapChildrenIconWithSpaces(children) {
2684
2712
  /**
2685
2713
  * Component display name.
2686
2714
  */
2687
- const COMPONENT_NAME$1g = 'Text';
2715
+ const COMPONENT_NAME$1h = 'Text';
2688
2716
 
2689
2717
  /**
2690
2718
  * Component default class name and class prefix.
2691
2719
  */
2692
- const CLASSNAME$1f = 'lumx-text';
2720
+ const CLASSNAME$1g = 'lumx-text';
2693
2721
  const {
2694
2722
  block: block$_
2695
- } = bem(CLASSNAME$1f);
2723
+ } = bem(CLASSNAME$1g);
2696
2724
 
2697
2725
  /**
2698
2726
  * Component default props.
@@ -2782,8 +2810,8 @@ const Text = forwardRef((props, ref) => {
2782
2810
  children: wrapChildrenIconWithSpaces(children)
2783
2811
  });
2784
2812
  });
2785
- Text.displayName = COMPONENT_NAME$1g;
2786
- Text.className = CLASSNAME$1f;
2813
+ Text.displayName = COMPONENT_NAME$1h;
2814
+ Text.className = CLASSNAME$1g;
2787
2815
  Text.defaultProps = DEFAULT_PROPS$12;
2788
2816
 
2789
2817
  /**
@@ -4876,16 +4904,16 @@ const DEFAULT_PROPS$11 = {
4876
4904
  /**
4877
4905
  * Component display name.
4878
4906
  */
4879
- const COMPONENT_NAME$1f = 'Tooltip';
4907
+ const COMPONENT_NAME$1g = 'Tooltip';
4880
4908
 
4881
4909
  /**
4882
4910
  * Component default class name and class prefix.
4883
4911
  */
4884
- const CLASSNAME$1e = 'lumx-tooltip';
4912
+ const CLASSNAME$1f = 'lumx-tooltip';
4885
4913
  const {
4886
4914
  block: block$Z,
4887
4915
  element: element$L
4888
- } = bem(CLASSNAME$1e);
4916
+ } = bem(CLASSNAME$1f);
4889
4917
 
4890
4918
  /**
4891
4919
  * Props for the TooltipPopup rendering component.
@@ -4934,8 +4962,8 @@ const TooltipPopup = props => {
4934
4962
  })]
4935
4963
  });
4936
4964
  };
4937
- TooltipPopup.displayName = COMPONENT_NAME$1f;
4938
- TooltipPopup.className = CLASSNAME$1e;
4965
+ TooltipPopup.displayName = COMPONENT_NAME$1g;
4966
+ TooltipPopup.className = CLASSNAME$1f;
4939
4967
 
4940
4968
  /**
4941
4969
  * Add ref and ARIA attribute(s) in tooltip children or wrapped children.
@@ -5297,8 +5325,8 @@ const Tooltip = forwardRef((props, ref) => {
5297
5325
  })]
5298
5326
  });
5299
5327
  });
5300
- Tooltip.displayName = COMPONENT_NAME$1f;
5301
- Tooltip.className = CLASSNAME$1e;
5328
+ Tooltip.displayName = COMPONENT_NAME$1g;
5329
+ Tooltip.className = CLASSNAME$1f;
5302
5330
  Tooltip.defaultProps = DEFAULT_PROPS$11;
5303
5331
 
5304
5332
  /**
@@ -6177,8 +6205,8 @@ const SelectionChipGroup = ({
6177
6205
  }, [container, inputRef, getOptionId]);
6178
6206
  useRovingTabIndexContainer({
6179
6207
  containerRef: container,
6180
- itemSelector: `.${CLASSNAME$1i}`,
6181
- itemDisabledSelector: `.${CLASSNAME$1i}[aria-disabled="true"]`
6208
+ itemSelector: `.${CLASSNAME$1j}`,
6209
+ itemDisabledSelector: `.${CLASSNAME$1j}[aria-disabled="true"]`
6182
6210
  });
6183
6211
 
6184
6212
  // Merge getChipProps and renderChip: getChipProps provides base props, renderChip overrides them,
@@ -6218,8 +6246,8 @@ const SelectionChipGroup = ({
6218
6246
  Tooltip
6219
6247
  });
6220
6248
  };
6221
- SelectionChipGroup.displayName = COMPONENT_NAME$1h;
6222
- SelectionChipGroup.className = CLASSNAME$1g;
6249
+ SelectionChipGroup.displayName = COMPONENT_NAME$1i;
6250
+ SelectionChipGroup.className = CLASSNAME$1h;
6223
6251
 
6224
6252
  /**
6225
6253
  * Get the value for a combobox option element.
@@ -6442,17 +6470,17 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6442
6470
  /** AbortController for all structural event listeners. */
6443
6471
  let abortController = null;
6444
6472
 
6445
- /** Last notified isEmpty state, to avoid redundant `emptyChange` notifications. */
6446
- let lastIsEmpty = true;
6473
+ /** Last notified visible option count, to avoid redundant `optionsChange` notifications. */
6474
+ let lastOptionsLength = 0;
6447
6475
 
6448
- /** Last notified input value, to re-fire `emptyChange` when the user keeps typing while empty. */
6476
+ /** Last notified input value, to re-fire `optionsChange` when the user keeps typing while empty. */
6449
6477
  let lastInputValue = '';
6450
6478
 
6451
6479
  /** Event subscribers managed by the handle. */
6452
6480
  const subscribers = {
6453
6481
  open: new Set(),
6454
6482
  activeDescendantChange: new Set(),
6455
- emptyChange: new Set(),
6483
+ optionsChange: new Set(),
6456
6484
  loadingChange: new Set(),
6457
6485
  loadingAnnouncement: new Set()
6458
6486
  };
@@ -6463,7 +6491,7 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6463
6491
  }
6464
6492
 
6465
6493
  /**
6466
- * Notify all registered sections and fire `emptyChange` if the visible option count changed
6494
+ * Notify all registered sections and fire `optionsChange` if the visible option count changed
6467
6495
  * or if the input value changed while the list is empty (so `emptyMessage` callbacks get
6468
6496
  * the updated query string).
6469
6497
  * Called whenever the set of visible options may have changed (option register/unregister, filter change).
@@ -6476,13 +6504,13 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6476
6504
  for (const reg of optionRegistrations.values()) {
6477
6505
  if (!reg.lastFiltered) visibleCount += 1;
6478
6506
  }
6479
- const isEmpty = visibleCount === 0;
6480
6507
  const inputValue = trigger?.value ?? '';
6481
- if (isEmpty !== lastIsEmpty || isEmpty && inputValue !== lastInputValue) {
6482
- lastIsEmpty = isEmpty;
6508
+ const isEmpty = visibleCount === 0;
6509
+ if (visibleCount !== lastOptionsLength || isEmpty && inputValue !== lastInputValue) {
6510
+ lastOptionsLength = visibleCount;
6483
6511
  lastInputValue = inputValue;
6484
- notify('emptyChange', {
6485
- isEmpty,
6512
+ notify('optionsChange', {
6513
+ optionsLength: visibleCount,
6486
6514
  inputValue
6487
6515
  });
6488
6516
  }
@@ -6730,15 +6758,15 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6730
6758
  trigger?.setAttribute('aria-expanded', String(isOpen));
6731
6759
  notify('open', isOpen);
6732
6760
 
6733
- // When opening, always notify the current empty state so that
6761
+ // When opening, always notify the current options state so that
6734
6762
  // subscribers (ComboboxState) get the correct initial value.
6735
- // Without this, a list that starts empty never fires `emptyChange`
6736
- // because `lastIsEmpty` is initialized to `true` and `notifyVisibilityChange`
6763
+ // Without this, a list that starts empty never fires `optionsChange`
6764
+ // because `lastOptionsLength` is initialized to `0` and `notifyVisibilityChange`
6737
6765
  // only fires on *changes*.
6738
6766
  if (isOpen) {
6739
6767
  const inputValue = trigger?.value ?? '';
6740
- notify('emptyChange', {
6741
- isEmpty: lastIsEmpty,
6768
+ notify('optionsChange', {
6769
+ optionsLength: lastOptionsLength,
6742
6770
  inputValue
6743
6771
  });
6744
6772
  }
@@ -6778,6 +6806,18 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6778
6806
  }
6779
6807
  notifyVisibilityChange();
6780
6808
  },
6809
+ refilterOption(element) {
6810
+ const reg = optionRegistrations.get(element);
6811
+ if (!reg) return;
6812
+ const filterLower = filterValue.toLowerCase();
6813
+ const text = getOptionValue(element).toLowerCase();
6814
+ const isFiltered = filterLower.length > 0 && !text.includes(filterLower);
6815
+ if (isFiltered !== reg.lastFiltered) {
6816
+ reg.lastFiltered = isFiltered;
6817
+ reg.callback(isFiltered);
6818
+ notifyVisibilityChange();
6819
+ }
6820
+ },
6781
6821
  registerSection(element, callback) {
6782
6822
  sectionRegistrations.set(element, {
6783
6823
  callback,
@@ -6857,7 +6897,7 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6857
6897
  trigger = null;
6858
6898
  listbox = null;
6859
6899
  filterValue = '';
6860
- lastIsEmpty = true;
6900
+ lastOptionsLength = 0;
6861
6901
  lastInputValue = '';
6862
6902
  optionRegistrations.clear();
6863
6903
  sectionRegistrations.clear();
@@ -7095,12 +7135,12 @@ function setupComboboxButton(button, callbacks) {
7095
7135
  /**
7096
7136
  * Component display name.
7097
7137
  */
7098
- const COMPONENT_NAME$1e = 'ComboboxButton';
7138
+ const COMPONENT_NAME$1f = 'ComboboxButton';
7099
7139
 
7100
7140
  /**
7101
7141
  * Component default class name and class prefix.
7102
7142
  */
7103
- const CLASSNAME$1d = 'lumx-combobox-button';
7143
+ const CLASSNAME$1e = 'lumx-combobox-button';
7104
7144
 
7105
7145
  /**
7106
7146
  * ComboboxButton core template.
@@ -7144,7 +7184,7 @@ const ComboboxButton$1 = (props, {
7144
7184
  children: /*#__PURE__*/jsx(Button, {
7145
7185
  ref: ref,
7146
7186
  ...forwardedProps,
7147
- className: classnames(className, CLASSNAME$1d),
7187
+ className: classnames(className, CLASSNAME$1e),
7148
7188
  role: "combobox",
7149
7189
  "aria-controls": listboxId,
7150
7190
  "aria-haspopup": "listbox",
@@ -7275,8 +7315,8 @@ const ComboboxButton = Object.assign(forwardRefPolymorphic((props, ref) => {
7275
7315
  Tooltip
7276
7316
  });
7277
7317
  }), {
7278
- displayName: COMPONENT_NAME$1e,
7279
- className: CLASSNAME$1d
7318
+ displayName: COMPONENT_NAME$1f,
7319
+ className: CLASSNAME$1e
7280
7320
  });
7281
7321
 
7282
7322
  /** Options for configuring the input-mode combobox controller. */
@@ -7435,12 +7475,12 @@ function getDisabledState(context, props) {
7435
7475
  /**
7436
7476
  * Component display name.
7437
7477
  */
7438
- const COMPONENT_NAME$1d = 'ComboboxInput';
7478
+ const COMPONENT_NAME$1e = 'ComboboxInput';
7439
7479
 
7440
7480
  /**
7441
7481
  * Component default class name and class prefix.
7442
7482
  */
7443
- const CLASSNAME$1c = 'lumx-combobox-input';
7483
+ const CLASSNAME$1d = 'lumx-combobox-input';
7444
7484
 
7445
7485
  /**
7446
7486
  * ComboboxInput core template.
@@ -7503,22 +7543,22 @@ const ComboboxInput$1 = (props, {
7503
7543
  /**
7504
7544
  * Component display name.
7505
7545
  */
7506
- const COMPONENT_NAME$1c = 'TextField';
7546
+ const COMPONENT_NAME$1d = 'TextField';
7507
7547
 
7508
7548
  /**
7509
7549
  * Component default class name and class prefix.
7510
7550
  */
7511
- const CLASSNAME$1b = 'lumx-text-field';
7551
+ const CLASSNAME$1c = 'lumx-text-field';
7512
7552
 
7513
7553
  /**
7514
7554
  * Input native element class name.
7515
7555
  */
7516
- const INPUT_NATIVE_CLASSNAME = `${CLASSNAME$1b}__input-native`;
7556
+ const INPUT_NATIVE_CLASSNAME = `${CLASSNAME$1c}__input-native`;
7517
7557
 
7518
7558
  const {
7519
7559
  block: block$Y,
7520
7560
  element: element$K
7521
- } = bem(CLASSNAME$1b);
7561
+ } = bem(CLASSNAME$1c);
7522
7562
 
7523
7563
  /**
7524
7564
  * Defines the props of the component.
@@ -8023,8 +8063,8 @@ const TextField = forwardRef((props, ref) => {
8023
8063
  } : undefined
8024
8064
  });
8025
8065
  });
8026
- TextField.displayName = COMPONENT_NAME$1c;
8027
- TextField.className = CLASSNAME$1b;
8066
+ TextField.displayName = COMPONENT_NAME$1d;
8067
+ TextField.className = CLASSNAME$1c;
8028
8068
  TextField.defaultProps = DEFAULT_PROPS$Z;
8029
8069
 
8030
8070
  /**
@@ -8102,21 +8142,21 @@ const ComboboxInput = forwardRef((props, ref) => {
8102
8142
  IconButton
8103
8143
  });
8104
8144
  });
8105
- ComboboxInput.displayName = COMPONENT_NAME$1d;
8106
- ComboboxInput.className = CLASSNAME$1c;
8145
+ ComboboxInput.displayName = COMPONENT_NAME$1e;
8146
+ ComboboxInput.className = CLASSNAME$1d;
8107
8147
 
8108
8148
  /**
8109
8149
  * Component display name.
8110
8150
  */
8111
- const COMPONENT_NAME$1b = 'List';
8151
+ const COMPONENT_NAME$1c = 'List';
8112
8152
 
8113
8153
  /**
8114
8154
  * Component default class name and class prefix.
8115
8155
  */
8116
- const CLASSNAME$1a = 'lumx-list';
8156
+ const CLASSNAME$1b = 'lumx-list';
8117
8157
  const {
8118
8158
  block: block$V
8119
- } = bem(CLASSNAME$1a);
8159
+ } = bem(CLASSNAME$1b);
8120
8160
 
8121
8161
  /**
8122
8162
  * Component default props.
@@ -8146,8 +8186,8 @@ const List$1 = props => {
8146
8186
  children: children
8147
8187
  });
8148
8188
  };
8149
- List$1.displayName = COMPONENT_NAME$1b;
8150
- List$1.className = CLASSNAME$1a;
8189
+ List$1.displayName = COMPONENT_NAME$1c;
8190
+ List$1.className = CLASSNAME$1b;
8151
8191
  List$1.defaultProps = DEFAULT_PROPS$Y;
8152
8192
 
8153
8193
  /**
@@ -8163,12 +8203,12 @@ List$1.defaultProps = DEFAULT_PROPS$Y;
8163
8203
  /**
8164
8204
  * Component display name.
8165
8205
  */
8166
- const COMPONENT_NAME$1a = 'ComboboxList';
8206
+ const COMPONENT_NAME$1b = 'ComboboxList';
8167
8207
 
8168
8208
  /**
8169
8209
  * Component default class name and class prefix.
8170
8210
  */
8171
- const CLASSNAME$19 = 'lumx-combobox-list';
8211
+ const CLASSNAME$1a = 'lumx-combobox-list';
8172
8212
 
8173
8213
  /**
8174
8214
  * ComboboxList core template.
@@ -8190,7 +8230,7 @@ const ComboboxList$1 = props => {
8190
8230
  } = props;
8191
8231
  return List$1({
8192
8232
  ...forwardedProps,
8193
- className: classnames(className, CLASSNAME$19),
8233
+ className: classnames(className, CLASSNAME$1a),
8194
8234
  ref,
8195
8235
  itemPadding: 'big',
8196
8236
  id,
@@ -8275,22 +8315,22 @@ const ComboboxList = forwardRef((props, ref) => {
8275
8315
  })
8276
8316
  });
8277
8317
  });
8278
- ComboboxList.displayName = COMPONENT_NAME$1a;
8279
- ComboboxList.className = CLASSNAME$19;
8318
+ ComboboxList.displayName = COMPONENT_NAME$1b;
8319
+ ComboboxList.className = CLASSNAME$1a;
8280
8320
 
8281
8321
  /**
8282
8322
  * Component display name.
8283
8323
  */
8284
- const COMPONENT_NAME$19 = 'ListItem';
8324
+ const COMPONENT_NAME$1a = 'ListItem';
8285
8325
 
8286
8326
  /**
8287
8327
  * Component default class name and class prefix.
8288
8328
  */
8289
- const CLASSNAME$18 = 'lumx-list-item';
8329
+ const CLASSNAME$19 = 'lumx-list-item';
8290
8330
  const {
8291
8331
  block: block$U,
8292
8332
  element: element$J
8293
- } = bem(CLASSNAME$18);
8333
+ } = bem(CLASSNAME$19);
8294
8334
 
8295
8335
  /**
8296
8336
  * Component default props.
@@ -8357,8 +8397,8 @@ const ListItem$1 = props => {
8357
8397
  })
8358
8398
  });
8359
8399
  };
8360
- ListItem$1.displayName = COMPONENT_NAME$19;
8361
- ListItem$1.className = CLASSNAME$18;
8400
+ ListItem$1.displayName = COMPONENT_NAME$1a;
8401
+ ListItem$1.className = CLASSNAME$19;
8362
8402
  ListItem$1.defaultProps = DEFAULT_PROPS$X;
8363
8403
 
8364
8404
  /**
@@ -8368,12 +8408,12 @@ ListItem$1.defaultProps = DEFAULT_PROPS$X;
8368
8408
  /**
8369
8409
  * Component display name.
8370
8410
  */
8371
- const COMPONENT_NAME$18 = 'ListItemAction';
8411
+ const COMPONENT_NAME$19 = 'ListItemAction';
8372
8412
 
8373
8413
  /**
8374
8414
  * Component classname (used by action area CSS pattern).
8375
8415
  */
8376
- const CLASSNAME$17 = 'lumx-action-area__action';
8416
+ const CLASSNAME$18 = 'lumx-action-area__action';
8377
8417
  const DEFAULT_PROPS$W = {};
8378
8418
 
8379
8419
  /**
@@ -8407,16 +8447,16 @@ const ListItemAction$1 = props => {
8407
8447
  /**
8408
8448
  * Component display name.
8409
8449
  */
8410
- const COMPONENT_NAME$17 = 'ComboboxOption';
8450
+ const COMPONENT_NAME$18 = 'ComboboxOption';
8411
8451
 
8412
8452
  /**
8413
8453
  * Component default class name and class prefix.
8414
8454
  */
8415
- const CLASSNAME$16 = 'lumx-combobox-option';
8455
+ const CLASSNAME$17 = 'lumx-combobox-option';
8416
8456
  const {
8417
8457
  block: block$T,
8418
8458
  element: element$I
8419
- } = bem(CLASSNAME$16);
8459
+ } = bem(CLASSNAME$17);
8420
8460
 
8421
8461
  /**
8422
8462
  * ComboboxOption core template.
@@ -8563,6 +8603,13 @@ const ComboboxOption = forwardRef((props, ref) => {
8563
8603
  return handle.registerOption(element, setIsFiltered);
8564
8604
  }, [handle]);
8565
8605
 
8606
+ // Re-evaluate filter state when the option value changes.
8607
+ useEffect(() => {
8608
+ const element = internalRef.current;
8609
+ if (!element || !handle) return;
8610
+ handle.refilterOption(element);
8611
+ }, [handle, value]);
8612
+
8566
8613
  // Wrap `after` content in an option context so sub-components (e.g. OptionMoreInfo)
8567
8614
  // can access the parent option's ID for keyboard highlight detection.
8568
8615
  const optionContextValue = useMemo(() => ({
@@ -8593,8 +8640,8 @@ const ComboboxOption = forwardRef((props, ref) => {
8593
8640
  Tooltip
8594
8641
  });
8595
8642
  });
8596
- ComboboxOption.displayName = COMPONENT_NAME$17;
8597
- ComboboxOption.className = CLASSNAME$16;
8643
+ ComboboxOption.displayName = COMPONENT_NAME$18;
8644
+ ComboboxOption.className = CLASSNAME$17;
8598
8645
 
8599
8646
  /**
8600
8647
  * Defines the props for the core ComboboxOptionAction template.
@@ -8603,12 +8650,12 @@ ComboboxOption.className = CLASSNAME$16;
8603
8650
  /**
8604
8651
  * Component display name.
8605
8652
  */
8606
- const COMPONENT_NAME$16 = 'ComboboxOptionAction';
8653
+ const COMPONENT_NAME$17 = 'ComboboxOptionAction';
8607
8654
 
8608
8655
  /**
8609
8656
  * Component default class name and class prefix.
8610
8657
  */
8611
- const CLASSNAME$15 = 'lumx-combobox-option-action';
8658
+ const CLASSNAME$16 = 'lumx-combobox-option-action';
8612
8659
 
8613
8660
  /**
8614
8661
  * ComboboxOptionAction core template.
@@ -8631,7 +8678,7 @@ const ComboboxOptionAction$1 = props => {
8631
8678
  as: Element,
8632
8679
  ...forwardedProps,
8633
8680
  role: 'gridcell',
8634
- className: classnames(className, CLASSNAME$15),
8681
+ className: classnames(className, CLASSNAME$16),
8635
8682
  handleClick,
8636
8683
  children
8637
8684
  });
@@ -8681,23 +8728,23 @@ const ComboboxOptionAction = Object.assign(forwardRefPolymorphic((props, ref) =>
8681
8728
  children
8682
8729
  });
8683
8730
  }), {
8684
- displayName: COMPONENT_NAME$16,
8685
- className: CLASSNAME$15
8731
+ displayName: COMPONENT_NAME$17,
8732
+ className: CLASSNAME$16
8686
8733
  });
8687
8734
 
8688
8735
  /**
8689
8736
  * Component display name.
8690
8737
  */
8691
- const COMPONENT_NAME$15 = 'ComboboxOptionMoreInfo';
8738
+ const COMPONENT_NAME$16 = 'ComboboxOptionMoreInfo';
8692
8739
 
8693
8740
  /**
8694
8741
  * Component default class name and class prefix.
8695
8742
  */
8696
- const CLASSNAME$14 = 'lumx-combobox-option-more-info';
8743
+ const CLASSNAME$15 = 'lumx-combobox-option-more-info';
8697
8744
  const {
8698
8745
  block: block$S,
8699
8746
  element: element$H
8700
- } = bem(CLASSNAME$14);
8747
+ } = bem(CLASSNAME$15);
8701
8748
 
8702
8749
  /**
8703
8750
  * ComboboxOptionMoreInfo core template.
@@ -8936,16 +8983,16 @@ const POPOVER_ZINDEX = 9999;
8936
8983
  /**
8937
8984
  * Component display name.
8938
8985
  */
8939
- const COMPONENT_NAME$14 = 'Popover';
8986
+ const COMPONENT_NAME$15 = 'Popover';
8940
8987
 
8941
8988
  /**
8942
8989
  * Component default class name and class prefix.
8943
8990
  */
8944
- const CLASSNAME$13 = 'lumx-popover';
8991
+ const CLASSNAME$14 = 'lumx-popover';
8945
8992
  const {
8946
8993
  block: block$R,
8947
8994
  element: element$G
8948
- } = bem(CLASSNAME$13);
8995
+ } = bem(CLASSNAME$14);
8949
8996
 
8950
8997
  /**
8951
8998
  * Component default props (used by framework wrappers).
@@ -9397,7 +9444,7 @@ const _InnerPopover = forwardRef((props, ref) => {
9397
9444
  ThemeProvider
9398
9445
  });
9399
9446
  });
9400
- _InnerPopover.displayName = COMPONENT_NAME$14;
9447
+ _InnerPopover.displayName = COMPONENT_NAME$15;
9401
9448
 
9402
9449
  /**
9403
9450
  * Popover component.
@@ -9409,8 +9456,8 @@ _InnerPopover.displayName = COMPONENT_NAME$14;
9409
9456
  const Popover = skipRender(
9410
9457
  // Skip render in SSR
9411
9458
  () => Boolean(DOCUMENT), _InnerPopover);
9412
- Popover.displayName = COMPONENT_NAME$14;
9413
- Popover.className = CLASSNAME$13;
9459
+ Popover.displayName = COMPONENT_NAME$15;
9460
+ Popover.className = CLASSNAME$14;
9414
9461
  Popover.defaultProps = DEFAULT_PROPS$V;
9415
9462
 
9416
9463
  /**
@@ -9473,22 +9520,22 @@ const ComboboxOptionMoreInfo = props => {
9473
9520
  Popover
9474
9521
  });
9475
9522
  };
9476
- ComboboxOptionMoreInfo.displayName = COMPONENT_NAME$15;
9477
- ComboboxOptionMoreInfo.className = CLASSNAME$14;
9523
+ ComboboxOptionMoreInfo.displayName = COMPONENT_NAME$16;
9524
+ ComboboxOptionMoreInfo.className = CLASSNAME$15;
9478
9525
 
9479
9526
  /**
9480
9527
  * Component display name.
9481
9528
  */
9482
- const COMPONENT_NAME$13 = 'SkeletonTypography';
9529
+ const COMPONENT_NAME$14 = 'SkeletonTypography';
9483
9530
 
9484
9531
  /**
9485
9532
  * Component default class name and class prefix.
9486
9533
  */
9487
- const CLASSNAME$12 = 'lumx-skeleton-typography';
9534
+ const CLASSNAME$13 = 'lumx-skeleton-typography';
9488
9535
  const {
9489
9536
  block: block$Q,
9490
9537
  element: element$F
9491
- } = bem(CLASSNAME$12);
9538
+ } = bem(CLASSNAME$13);
9492
9539
 
9493
9540
  /**
9494
9541
  * SkeletonTypography component.
@@ -9527,12 +9574,12 @@ const SkeletonTypography$1 = props => {
9527
9574
  /**
9528
9575
  * Component display name.
9529
9576
  */
9530
- const COMPONENT_NAME$12 = 'ComboboxOptionSkeleton';
9577
+ const COMPONENT_NAME$13 = 'ComboboxOptionSkeleton';
9531
9578
 
9532
9579
  /**
9533
9580
  * Component default class name and class prefix.
9534
9581
  */
9535
- const CLASSNAME$11 = 'lumx-combobox-option-skeleton';
9582
+ const CLASSNAME$12 = 'lumx-combobox-option-skeleton';
9536
9583
 
9537
9584
  /**
9538
9585
  * ComboboxOptionSkeleton core template.
@@ -9559,7 +9606,7 @@ const ComboboxOptionSkeleton$1 = props => {
9559
9606
  size: 'tiny',
9560
9607
  role: 'none',
9561
9608
  ...forwardedProps,
9562
- className: classnames(className, CLASSNAME$11),
9609
+ className: classnames(className, CLASSNAME$12),
9563
9610
  children: children || /*#__PURE__*/jsxs(Fragment, {
9564
9611
  children: [/*#__PURE__*/jsx(SkeletonTypography$1, {
9565
9612
  typography: "body1",
@@ -9612,19 +9659,19 @@ const ComboboxOptionSkeleton = props => {
9612
9659
  ...props
9613
9660
  });
9614
9661
  };
9615
- ComboboxOptionSkeleton.displayName = COMPONENT_NAME$12;
9616
- ComboboxOptionSkeleton.className = CLASSNAME$11;
9662
+ ComboboxOptionSkeleton.displayName = COMPONENT_NAME$13;
9663
+ ComboboxOptionSkeleton.className = CLASSNAME$12;
9617
9664
 
9618
- const COMPONENT_NAME$11 = 'ComboboxPopover';
9665
+ const COMPONENT_NAME$12 = 'ComboboxPopover';
9619
9666
 
9620
9667
  /**
9621
9668
  * Component default class name.
9622
9669
  */
9623
- const CLASSNAME$10 = 'lumx-combobox-popover';
9670
+ const CLASSNAME$11 = 'lumx-combobox-popover';
9624
9671
  const {
9625
9672
  block: block$P,
9626
9673
  element: element$E
9627
- } = bem(CLASSNAME$10);
9674
+ } = bem(CLASSNAME$11);
9628
9675
 
9629
9676
  /**
9630
9677
  * Defines the props for the core ComboboxPopover template.
@@ -9687,15 +9734,15 @@ const ComboboxPopover$1 = (props, {
9687
9734
  /**
9688
9735
  * Component display name.
9689
9736
  */
9690
- const COMPONENT_NAME$10 = 'FlexBox';
9737
+ const COMPONENT_NAME$11 = 'FlexBox';
9691
9738
 
9692
9739
  /**
9693
9740
  * Component default class name and class prefix.
9694
9741
  */
9695
- const CLASSNAME$$ = 'lumx-flex-box';
9742
+ const CLASSNAME$10 = 'lumx-flex-box';
9696
9743
  const {
9697
9744
  block: block$O
9698
- } = bem(CLASSNAME$$);
9745
+ } = bem(CLASSNAME$10);
9699
9746
 
9700
9747
  /**
9701
9748
  * Get FlexBox component props (className computation).
@@ -9751,8 +9798,8 @@ const FlexBox = forwardRef((props, ref) => {
9751
9798
  children: children
9752
9799
  });
9753
9800
  });
9754
- FlexBox.displayName = COMPONENT_NAME$10;
9755
- FlexBox.className = CLASSNAME$$;
9801
+ FlexBox.displayName = COMPONENT_NAME$11;
9802
+ FlexBox.className = CLASSNAME$10;
9756
9803
 
9757
9804
  /**
9758
9805
  * Props for Popover that can be passed to Combobox.Popover.
@@ -9790,8 +9837,8 @@ const ComboboxPopover = props => {
9790
9837
  FlexBox
9791
9838
  });
9792
9839
  };
9793
- ComboboxPopover.displayName = COMPONENT_NAME$11;
9794
- ComboboxPopover.className = CLASSNAME$10;
9840
+ ComboboxPopover.displayName = COMPONENT_NAME$12;
9841
+ ComboboxPopover.className = CLASSNAME$11;
9795
9842
 
9796
9843
  /**
9797
9844
  * Combobox.Provider component.
@@ -9804,7 +9851,8 @@ ComboboxPopover.className = CLASSNAME$10;
9804
9851
  */
9805
9852
  function ComboboxProvider(props) {
9806
9853
  const {
9807
- children
9854
+ children,
9855
+ onOpen
9808
9856
  } = props;
9809
9857
  const listboxId = useId();
9810
9858
  const anchorRef = useRef(null);
@@ -9815,6 +9863,16 @@ function ComboboxProvider(props) {
9815
9863
  listboxId,
9816
9864
  anchorRef
9817
9865
  }), [handle, listboxId]);
9866
+
9867
+ // Subscribe to the combobox open event and forward to the onOpen callback.
9868
+ const onOpenRef = useRef(onOpen);
9869
+ onOpenRef.current = onOpen;
9870
+ useEffect(() => {
9871
+ if (!handle) return undefined;
9872
+ return handle.subscribe('open', isOpen => {
9873
+ onOpenRef.current?.(isOpen);
9874
+ });
9875
+ }, [handle]);
9818
9876
  return /*#__PURE__*/jsx(ComboboxContext.Provider, {
9819
9877
  value: contextValue,
9820
9878
  children: children
@@ -9825,12 +9883,12 @@ ComboboxProvider.displayName = 'Combobox.Provider';
9825
9883
  /**
9826
9884
  * Component display name.
9827
9885
  */
9828
- const COMPONENT_NAME$$ = 'ComboboxSection';
9886
+ const COMPONENT_NAME$10 = 'ComboboxSection';
9829
9887
 
9830
9888
  /**
9831
9889
  * Component default class name and class prefix.
9832
9890
  */
9833
- const CLASSNAME$_ = 'lumx-combobox-section';
9891
+ const CLASSNAME$$ = 'lumx-combobox-section';
9834
9892
 
9835
9893
  /**
9836
9894
  * ComboboxSection core template.
@@ -9857,7 +9915,7 @@ const ComboboxSection$1 = (props, {
9857
9915
  ...forwardedProps,
9858
9916
  hidden: hidden,
9859
9917
  "aria-hidden": ariaHidden || undefined,
9860
- className: !hidden ? classnames(className, CLASSNAME$_) : undefined,
9918
+ className: !hidden ? classnames(className, CLASSNAME$$) : undefined,
9861
9919
  role: !ariaHidden ? 'none' : undefined,
9862
9920
  itemsWrapperProps: {
9863
9921
  role: 'group'
@@ -9869,16 +9927,16 @@ const ComboboxSection$1 = (props, {
9869
9927
  /**
9870
9928
  * Component display name.
9871
9929
  */
9872
- const COMPONENT_NAME$_ = 'ListSection';
9930
+ const COMPONENT_NAME$$ = 'ListSection';
9873
9931
 
9874
9932
  /**
9875
9933
  * Component default class name and class prefix.
9876
9934
  */
9877
- const CLASSNAME$Z = 'lumx-list-section';
9935
+ const CLASSNAME$_ = 'lumx-list-section';
9878
9936
  const {
9879
9937
  block: block$N,
9880
9938
  element: element$D
9881
- } = bem(CLASSNAME$Z);
9939
+ } = bem(CLASSNAME$_);
9882
9940
 
9883
9941
  /**
9884
9942
  * Component default props.
@@ -9925,8 +9983,8 @@ const ListSection$1 = props => {
9925
9983
  })]
9926
9984
  });
9927
9985
  };
9928
- ListSection$1.displayName = COMPONENT_NAME$_;
9929
- ListSection$1.className = CLASSNAME$Z;
9986
+ ListSection$1.displayName = COMPONENT_NAME$$;
9987
+ ListSection$1.className = CLASSNAME$_;
9930
9988
  ListSection$1.defaultProps = DEFAULT_PROPS$U;
9931
9989
 
9932
9990
  /**
@@ -9949,8 +10007,8 @@ const ListSection = forwardRef((props, ref) => {
9949
10007
  Text
9950
10008
  });
9951
10009
  });
9952
- ListSection.displayName = COMPONENT_NAME$_;
9953
- ListSection.className = CLASSNAME$Z;
10010
+ ListSection.displayName = COMPONENT_NAME$$;
10011
+ ListSection.className = CLASSNAME$_;
9954
10012
  ListSection.defaultProps = DEFAULT_PROPS$U;
9955
10013
 
9956
10014
  /**
@@ -9999,21 +10057,21 @@ const ComboboxSection = forwardRef((props, ref) => {
9999
10057
  ListSection
10000
10058
  });
10001
10059
  });
10002
- ComboboxSection.displayName = COMPONENT_NAME$$;
10003
- ComboboxSection.className = CLASSNAME$_;
10060
+ ComboboxSection.displayName = COMPONENT_NAME$10;
10061
+ ComboboxSection.className = CLASSNAME$$;
10004
10062
 
10005
10063
  /**
10006
10064
  * Component display name.
10007
10065
  */
10008
- const COMPONENT_NAME$Z = 'ComboboxState';
10066
+ const COMPONENT_NAME$_ = 'ComboboxState';
10009
10067
 
10010
10068
  /**
10011
10069
  * Component default class name and class prefix.
10012
10070
  */
10013
- const CLASSNAME$Y = 'lumx-combobox-state';
10071
+ const CLASSNAME$Z = 'lumx-combobox-state';
10014
10072
  const {
10015
10073
  block: block$M
10016
- } = bem(CLASSNAME$Y);
10074
+ } = bem(CLASSNAME$Z);
10017
10075
 
10018
10076
  /**
10019
10077
  * Defines the props for the core ComboboxState template.
@@ -10025,12 +10083,13 @@ const {
10025
10083
 
10026
10084
  /**
10027
10085
  * ComboboxState core template.
10028
- * Renders empty/error state messages inside the combobox popover.
10086
+ * Renders empty/error/option-count state messages inside the combobox popover.
10029
10087
  * The block itself acts as a screen reader live region (`role="status" aria-live="polite"`).
10030
10088
  *
10031
10089
  * Activation rules:
10032
10090
  * - Error state: active when `errorMessage` is provided (presence-based).
10033
- * - Empty state: active when `isEmpty` is true and `emptyMessage` is provided, and there is no error.
10091
+ * - Empty state: active when `optionsLength` is 0 and `emptyMessage` is provided, and there is no error.
10092
+ * - Option count: active when `nbOptionMessage` is provided, the list is not empty, not loading, and not in error.
10034
10093
  *
10035
10094
  * @param props Component props.
10036
10095
  * @param components Injected framework-specific components.
@@ -10042,20 +10101,25 @@ const ComboboxState$1 = (props, {
10042
10101
  }) => {
10043
10102
  const {
10044
10103
  emptyMessage,
10104
+ nbOptionMessage,
10045
10105
  errorMessage,
10046
10106
  errorTryReloadMessage,
10047
10107
  loadingMessage,
10048
10108
  state
10049
10109
  } = props;
10050
10110
  const isOpen = state?.isOpen ?? true;
10111
+ const optionsLength = state?.optionsLength ?? 0;
10112
+ const isEmpty = optionsLength === 0;
10051
10113
  const showError = !!errorMessage;
10052
10114
  const resolvedEmptyMessage = typeof emptyMessage === 'function' ? emptyMessage(state?.inputValue || '') : emptyMessage;
10053
10115
  // Suppress empty while loading (immediate flag prevents false "no results" before data arrives)
10054
- const showEmpty = state?.isEmpty && !showError && !state?.isLoading && !!resolvedEmptyMessage;
10116
+ const showEmpty = isEmpty && !showError && !state?.isLoading && !!resolvedEmptyMessage;
10055
10117
  // Show loading message when provided and not in error state.
10056
10118
  // The framework wrapper gates `loadingMessage` via the debounced `loadingAnnouncement` event,
10057
10119
  // passing `undefined` until the 500ms threshold is reached.
10058
10120
  const showLoading = !showError && !!loadingMessage;
10121
+ // Show option count message when the list is open, not empty, not loading, and not in error.
10122
+ const resolvedNbOptionMessage = !isEmpty && !showError && !state?.isLoading && nbOptionMessage ? nbOptionMessage(optionsLength) : undefined;
10059
10123
  const show = showEmpty || showError;
10060
10124
  const alignProps = {
10061
10125
  hAlign: 'center',
@@ -10084,6 +10148,11 @@ const ComboboxState$1 = (props, {
10084
10148
  typography: "body1",
10085
10149
  color: "dark-L2",
10086
10150
  children: loadingMessage
10151
+ }), renderContent && !!resolvedNbOptionMessage && /*#__PURE__*/jsx(Text, {
10152
+ as: "p",
10153
+ typography: "body1",
10154
+ color: "dark-L2",
10155
+ children: resolvedNbOptionMessage
10087
10156
  }), renderContent && !!errorMessage && /*#__PURE__*/jsxs(Fragment, {
10088
10157
  children: [/*#__PURE__*/jsx(Text, {
10089
10158
  as: "p",
@@ -10175,16 +10244,16 @@ function partitionMulti(elements, predicates) {
10175
10244
  /**
10176
10245
  * Component display name.
10177
10246
  */
10178
- const COMPONENT_NAME$Y = 'GenericBlock';
10247
+ const COMPONENT_NAME$Z = 'GenericBlock';
10179
10248
 
10180
10249
  /**
10181
10250
  * Component default class name and class prefix.
10182
10251
  */
10183
- const CLASSNAME$X = 'lumx-generic-block';
10252
+ const CLASSNAME$Y = 'lumx-generic-block';
10184
10253
  const {
10185
10254
  block: block$L,
10186
10255
  element: element$C
10187
- } = bem(CLASSNAME$X);
10256
+ } = bem(CLASSNAME$Y);
10188
10257
 
10189
10258
  /**
10190
10259
  * Component default props.
@@ -10326,8 +10395,8 @@ const BaseGenericBlock = forwardRef((props, ref) => {
10326
10395
  }) : undefined
10327
10396
  });
10328
10397
  });
10329
- BaseGenericBlock.displayName = COMPONENT_NAME$Y;
10330
- BaseGenericBlock.className = CLASSNAME$X;
10398
+ BaseGenericBlock.displayName = COMPONENT_NAME$Z;
10399
+ BaseGenericBlock.className = CLASSNAME$Y;
10331
10400
  BaseGenericBlock.defaultProps = DEFAULT_PROPS$T;
10332
10401
  const GenericBlock = Object.assign(BaseGenericBlock, {
10333
10402
  Figure,
@@ -10367,6 +10436,8 @@ const GenericBlockGapSize = pick(Size, ['tiny', 'regular', 'medium', 'big', 'hug
10367
10436
  * mounted for at least 500ms. Suppresses the empty state while loading.
10368
10437
  * - **Empty state**: active when `emptyMessage` is provided and the list has no visible options
10369
10438
  * and is not loading.
10439
+ * - **Option count**: active when `nbOptionMessage` is provided and the list is not empty,
10440
+ * not loading, and not in error.
10370
10441
  *
10371
10442
  * @param props Component props.
10372
10443
  * @return React element.
@@ -10375,7 +10446,7 @@ const ComboboxState = props => {
10375
10446
  const {
10376
10447
  handle
10377
10448
  } = useComboboxContext();
10378
- const emptyState = useComboboxEvent('emptyChange', undefined);
10449
+ const optionsState = useComboboxEvent('optionsChange', undefined);
10379
10450
  const [isLoading, setIsLoading] = useState(false);
10380
10451
  const [shouldAnnounce, setShouldAnnounce] = useState(false);
10381
10452
  const [isOpen, setIsOpen] = useState(false);
@@ -10388,7 +10459,7 @@ const ComboboxState = props => {
10388
10459
  });
10389
10460
  }, [handle]);
10390
10461
  const state = {
10391
- ...emptyState,
10462
+ ...optionsState,
10392
10463
  isLoading,
10393
10464
  isOpen
10394
10465
  };
@@ -10404,18 +10475,18 @@ const ComboboxState = props => {
10404
10475
  Text
10405
10476
  });
10406
10477
  };
10407
- ComboboxState.displayName = COMPONENT_NAME$Z;
10408
- ComboboxState.className = CLASSNAME$Y;
10478
+ ComboboxState.displayName = COMPONENT_NAME$_;
10479
+ ComboboxState.className = CLASSNAME$Z;
10409
10480
 
10410
10481
  /**
10411
10482
  * Component display name.
10412
10483
  */
10413
- const COMPONENT_NAME$X = 'ListDivider';
10484
+ const COMPONENT_NAME$Y = 'ListDivider';
10414
10485
 
10415
10486
  /**
10416
10487
  * Component default class name and class prefix.
10417
10488
  */
10418
- const CLASSNAME$W = 'lumx-list-divider';
10489
+ const CLASSNAME$X = 'lumx-list-divider';
10419
10490
 
10420
10491
  /**
10421
10492
  * Component default props.
@@ -10439,11 +10510,11 @@ const ListDivider$1 = props => {
10439
10510
  ref: ref,
10440
10511
  role: "none",
10441
10512
  ...forwardedProps,
10442
- className: classnames(className, CLASSNAME$W)
10513
+ className: classnames(className, CLASSNAME$X)
10443
10514
  });
10444
10515
  };
10445
- ListDivider$1.displayName = COMPONENT_NAME$X;
10446
- ListDivider$1.className = CLASSNAME$W;
10516
+ ListDivider$1.displayName = COMPONENT_NAME$Y;
10517
+ ListDivider$1.className = CLASSNAME$X;
10447
10518
  ListDivider$1.defaultProps = DEFAULT_PROPS$S;
10448
10519
 
10449
10520
  /**
@@ -10464,8 +10535,8 @@ const ListDivider = forwardRef((props, ref) => {
10464
10535
  ref
10465
10536
  });
10466
10537
  });
10467
- ListDivider.displayName = COMPONENT_NAME$X;
10468
- ListDivider.className = CLASSNAME$W;
10538
+ ListDivider.displayName = COMPONENT_NAME$Y;
10539
+ ListDivider.className = CLASSNAME$X;
10469
10540
  ListDivider.defaultProps = DEFAULT_PROPS$S;
10470
10541
 
10471
10542
  /**
@@ -10515,16 +10586,16 @@ const CommentBlockVariant = {
10515
10586
  /**
10516
10587
  * Component display name.
10517
10588
  */
10518
- const COMPONENT_NAME$W = 'CommentBlock';
10589
+ const COMPONENT_NAME$X = 'CommentBlock';
10519
10590
 
10520
10591
  /**
10521
10592
  * Component default class name and class prefix.
10522
10593
  */
10523
- const CLASSNAME$V = 'lumx-comment-block';
10594
+ const CLASSNAME$W = 'lumx-comment-block';
10524
10595
  const {
10525
10596
  block: block$K,
10526
10597
  element: element$B
10527
- } = classNames.bem(CLASSNAME$V);
10598
+ } = classNames.bem(CLASSNAME$W);
10528
10599
 
10529
10600
  /**
10530
10601
  * Component default props.
@@ -10626,8 +10697,8 @@ const CommentBlock = forwardRef((props, ref) => {
10626
10697
  })]
10627
10698
  });
10628
10699
  });
10629
- CommentBlock.displayName = COMPONENT_NAME$W;
10630
- CommentBlock.className = CLASSNAME$V;
10700
+ CommentBlock.displayName = COMPONENT_NAME$X;
10701
+ CommentBlock.className = CLASSNAME$W;
10631
10702
  CommentBlock.defaultProps = DEFAULT_PROPS$R;
10632
10703
 
10633
10704
  /**
@@ -10648,12 +10719,12 @@ const isDateValid = date => date instanceof Date && !Number.isNaN(date.getTime()
10648
10719
  /**
10649
10720
  * Component display name.
10650
10721
  */
10651
- const COMPONENT_NAME$V = 'DatePicker';
10722
+ const COMPONENT_NAME$W = 'DatePicker';
10652
10723
 
10653
10724
  /**
10654
10725
  * Component default class name and class prefix.
10655
10726
  */
10656
- const CLASSNAME$U = 'lumx-date-picker';
10727
+ const CLASSNAME$V = 'lumx-date-picker';
10657
10728
 
10658
10729
  /** Get first day of week for locale from the browser API */
10659
10730
  const getFromBrowser = locale => {
@@ -10873,7 +10944,7 @@ function formatDayNumber(locale, date) {
10873
10944
 
10874
10945
  const {
10875
10946
  element: element$A
10876
- } = classNames.bem(CLASSNAME$U);
10947
+ } = classNames.bem(CLASSNAME$V);
10877
10948
 
10878
10949
  /**
10879
10950
  * Defines the props of the component.
@@ -10882,7 +10953,7 @@ const {
10882
10953
  /**
10883
10954
  * Component display name.
10884
10955
  */
10885
- const COMPONENT_NAME$U = 'DatePickerControlled';
10956
+ const COMPONENT_NAME$V = 'DatePickerControlled';
10886
10957
 
10887
10958
  /**
10888
10959
  * DatePickerControlled component.
@@ -10967,7 +11038,7 @@ const DatePickerControlled = forwardRef((props, ref) => {
10967
11038
  const yearLabel = getYearDisplayName(locale);
10968
11039
  return /*#__PURE__*/jsxs("div", {
10969
11040
  ref: ref,
10970
- className: `${CLASSNAME$U}`,
11041
+ className: `${CLASSNAME$V}`,
10971
11042
  style: style,
10972
11043
  children: [/*#__PURE__*/jsx(Toolbar, {
10973
11044
  className: element$A('toolbar'),
@@ -11072,8 +11143,8 @@ const DatePickerControlled = forwardRef((props, ref) => {
11072
11143
  })]
11073
11144
  });
11074
11145
  });
11075
- DatePickerControlled.displayName = COMPONENT_NAME$U;
11076
- DatePickerControlled.className = CLASSNAME$U;
11146
+ DatePickerControlled.displayName = COMPONENT_NAME$V;
11147
+ DatePickerControlled.className = CLASSNAME$V;
11077
11148
 
11078
11149
  /**
11079
11150
  * DatePicker component.
@@ -11115,8 +11186,8 @@ const DatePicker = forwardRef((props, ref) => {
11115
11186
  onMonthChange: setSelectedMonth
11116
11187
  });
11117
11188
  });
11118
- DatePicker.displayName = COMPONENT_NAME$V;
11119
- DatePicker.className = CLASSNAME$U;
11189
+ DatePicker.displayName = COMPONENT_NAME$W;
11190
+ DatePicker.className = CLASSNAME$V;
11120
11191
 
11121
11192
  const useBooleanState = defaultValue => {
11122
11193
  const [booleanValue, setBoolean] = useState(defaultValue);
@@ -11129,7 +11200,7 @@ const useBooleanState = defaultValue => {
11129
11200
  /**
11130
11201
  * Component display name.
11131
11202
  */
11132
- const COMPONENT_NAME$T = 'DatePickerField';
11203
+ const COMPONENT_NAME$U = 'DatePickerField';
11133
11204
 
11134
11205
  /**
11135
11206
  * DatePickerField component.
@@ -11218,7 +11289,7 @@ const DatePickerField = forwardRef((props, ref) => {
11218
11289
  }) : null]
11219
11290
  });
11220
11291
  });
11221
- DatePickerField.displayName = COMPONENT_NAME$T;
11292
+ DatePickerField.displayName = COMPONENT_NAME$U;
11222
11293
 
11223
11294
  /**
11224
11295
  * Convenient hook to create interaction observers.
@@ -11514,16 +11585,16 @@ const useTransitionVisibility = (ref, isComponentVisible, timeout, onVisibilityC
11514
11585
  /**
11515
11586
  * Component display name.
11516
11587
  */
11517
- const COMPONENT_NAME$S = 'Dialog';
11588
+ const COMPONENT_NAME$T = 'Dialog';
11518
11589
 
11519
11590
  /**
11520
11591
  * Component default class name and class prefix.
11521
11592
  */
11522
- const CLASSNAME$T = 'lumx-dialog';
11593
+ const CLASSNAME$U = 'lumx-dialog';
11523
11594
  const {
11524
11595
  block: block$J,
11525
11596
  element: element$z
11526
- } = bem(CLASSNAME$T);
11597
+ } = bem(CLASSNAME$U);
11527
11598
 
11528
11599
  /**
11529
11600
  * Component default props.
@@ -11796,22 +11867,22 @@ const Dialog = forwardRef((props, ref) => {
11796
11867
  ...forwardedProps
11797
11868
  }) : null;
11798
11869
  });
11799
- Dialog.displayName = COMPONENT_NAME$S;
11800
- Dialog.className = CLASSNAME$T;
11870
+ Dialog.displayName = COMPONENT_NAME$T;
11871
+ Dialog.className = CLASSNAME$U;
11801
11872
  Dialog.defaultProps = DEFAULT_PROPS$P;
11802
11873
 
11803
11874
  /**
11804
11875
  * Component display name.
11805
11876
  */
11806
- const COMPONENT_NAME$R = 'Divider';
11877
+ const COMPONENT_NAME$S = 'Divider';
11807
11878
 
11808
11879
  /**
11809
11880
  * Component default class name and class prefix.
11810
11881
  */
11811
- const CLASSNAME$S = 'lumx-divider';
11882
+ const CLASSNAME$T = 'lumx-divider';
11812
11883
  const {
11813
11884
  block: block$I
11814
- } = bem(CLASSNAME$S);
11885
+ } = bem(CLASSNAME$T);
11815
11886
 
11816
11887
  /**
11817
11888
  * Divider component.
@@ -11863,22 +11934,22 @@ const Divider = forwardRef((props, ref) => {
11863
11934
  ...otherProps
11864
11935
  });
11865
11936
  });
11866
- Divider.displayName = COMPONENT_NAME$R;
11867
- Divider.className = CLASSNAME$S;
11937
+ Divider.displayName = COMPONENT_NAME$S;
11938
+ Divider.className = CLASSNAME$T;
11868
11939
  Divider.defaultProps = DEFAULT_PROPS$O;
11869
11940
 
11870
11941
  /**
11871
11942
  * Component display name.
11872
11943
  */
11873
- const COMPONENT_NAME$Q = 'DragHandle';
11944
+ const COMPONENT_NAME$R = 'DragHandle';
11874
11945
 
11875
11946
  /**
11876
11947
  * Component default class name and class prefix.
11877
11948
  */
11878
- const CLASSNAME$R = 'lumx-drag-handle';
11949
+ const CLASSNAME$S = 'lumx-drag-handle';
11879
11950
  const {
11880
11951
  block: block$H
11881
- } = bem(CLASSNAME$R);
11952
+ } = bem(CLASSNAME$S);
11882
11953
 
11883
11954
  /**
11884
11955
  * DragHandle component.
@@ -11935,8 +12006,8 @@ const DragHandle = forwardRef((props, ref) => {
11935
12006
  ...otherProps
11936
12007
  });
11937
12008
  });
11938
- DragHandle.displayName = COMPONENT_NAME$Q;
11939
- DragHandle.className = CLASSNAME$R;
12009
+ DragHandle.displayName = COMPONENT_NAME$R;
12010
+ DragHandle.className = CLASSNAME$S;
11940
12011
  DragHandle.defaultProps = DEFAULT_PROPS$N;
11941
12012
 
11942
12013
  const INITIAL_INDEX = -1;
@@ -12131,8 +12202,8 @@ const InternalList = forwardRef((props, ref) => {
12131
12202
  itemPadding: adjustedItemPadding
12132
12203
  });
12133
12204
  });
12134
- InternalList.displayName = COMPONENT_NAME$1b;
12135
- InternalList.className = CLASSNAME$1a;
12205
+ InternalList.displayName = COMPONENT_NAME$1c;
12206
+ InternalList.className = CLASSNAME$1b;
12136
12207
  InternalList.defaultProps = DEFAULT_PROPS$Y;
12137
12208
  const List = Object.assign(InternalList, {
12138
12209
  useKeyboardListNavigation
@@ -12182,16 +12253,16 @@ const useInfiniteScroll = (ref, callback, callbackOnMount = false, scrollTrigger
12182
12253
  /**
12183
12254
  * Component display name.
12184
12255
  */
12185
- const COMPONENT_NAME$P = 'Dropdown';
12256
+ const COMPONENT_NAME$Q = 'Dropdown';
12186
12257
 
12187
12258
  /**
12188
12259
  * Component default class name and class prefix.
12189
12260
  */
12190
- const CLASSNAME$Q = 'lumx-dropdown';
12261
+ const CLASSNAME$R = 'lumx-dropdown';
12191
12262
  const {
12192
12263
  block: block$G,
12193
12264
  element: element$y
12194
- } = classNames.bem(CLASSNAME$Q);
12265
+ } = classNames.bem(CLASSNAME$R);
12195
12266
 
12196
12267
  /**
12197
12268
  * Component default props.
@@ -12274,23 +12345,23 @@ const Dropdown = forwardRef((props, ref) => {
12274
12345
  })
12275
12346
  }) : null;
12276
12347
  });
12277
- Dropdown.displayName = COMPONENT_NAME$P;
12278
- Dropdown.className = CLASSNAME$Q;
12348
+ Dropdown.displayName = COMPONENT_NAME$Q;
12349
+ Dropdown.className = CLASSNAME$R;
12279
12350
  Dropdown.defaultProps = DEFAULT_PROPS$M;
12280
12351
 
12281
12352
  /**
12282
12353
  * Component display name.
12283
12354
  */
12284
- const COMPONENT_NAME$O = 'ExpansionPanel';
12355
+ const COMPONENT_NAME$P = 'ExpansionPanel';
12285
12356
 
12286
12357
  /**
12287
12358
  * Component default class name and class prefix.
12288
12359
  */
12289
- const CLASSNAME$P = 'lumx-expansion-panel';
12360
+ const CLASSNAME$Q = 'lumx-expansion-panel';
12290
12361
  const {
12291
12362
  block: block$F,
12292
12363
  element: element$x
12293
- } = bem(CLASSNAME$P);
12364
+ } = bem(CLASSNAME$Q);
12294
12365
 
12295
12366
  /**
12296
12367
  * Component default props.
@@ -12479,17 +12550,17 @@ const ExpansionPanel = forwardRef((props, ref) => {
12479
12550
  ...forwardedProps
12480
12551
  });
12481
12552
  });
12482
- ExpansionPanel.displayName = COMPONENT_NAME$O;
12483
- ExpansionPanel.className = CLASSNAME$P;
12553
+ ExpansionPanel.displayName = COMPONENT_NAME$P;
12554
+ ExpansionPanel.className = CLASSNAME$Q;
12484
12555
  ExpansionPanel.defaultProps = DEFAULT_PROPS$L;
12485
12556
 
12486
- const COMPONENT_NAME$N = 'Flag';
12487
- const CLASSNAME$O = 'lumx-flag';
12557
+ const COMPONENT_NAME$O = 'Flag';
12558
+ const CLASSNAME$P = 'lumx-flag';
12488
12559
  const DEFAULT_PROPS$K = {};
12489
12560
  const {
12490
12561
  block: block$E,
12491
12562
  element: element$w
12492
- } = bem(CLASSNAME$O);
12563
+ } = bem(CLASSNAME$P);
12493
12564
 
12494
12565
  /**
12495
12566
  * Flag component.
@@ -12547,8 +12618,8 @@ const Flag = forwardRef((props, ref) => {
12547
12618
  Text
12548
12619
  });
12549
12620
  });
12550
- Flag.displayName = COMPONENT_NAME$N;
12551
- Flag.className = CLASSNAME$O;
12621
+ Flag.displayName = COMPONENT_NAME$O;
12622
+ Flag.className = CLASSNAME$P;
12552
12623
  Flag.defaultProps = DEFAULT_PROPS$K;
12553
12624
 
12554
12625
  /** The maximum authorized heading level. */
@@ -12577,12 +12648,12 @@ const defaultContext = {
12577
12648
  /**
12578
12649
  * Component display name.
12579
12650
  */
12580
- const COMPONENT_NAME$M = 'Heading';
12651
+ const COMPONENT_NAME$N = 'Heading';
12581
12652
 
12582
12653
  /**
12583
12654
  * Component default class name and class prefix.
12584
12655
  */
12585
- const CLASSNAME$N = 'lumx-heading';
12656
+ const CLASSNAME$O = 'lumx-heading';
12586
12657
 
12587
12658
  /**
12588
12659
  * Component default props.
@@ -12607,7 +12678,7 @@ const getHeadingProps = (props, contextHeadingElement) => {
12607
12678
  return {
12608
12679
  ...otherProps,
12609
12680
  as: computedHeadingElement,
12610
- className: classnames(className, CLASSNAME$N),
12681
+ className: classnames(className, CLASSNAME$O),
12611
12682
  typography: typography || DEFAULT_TYPOGRAPHY_BY_LEVEL[computedHeadingElement]
12612
12683
  };
12613
12684
  };
@@ -12645,8 +12716,8 @@ const Heading = forwardRef((props, ref) => {
12645
12716
  children: children
12646
12717
  });
12647
12718
  });
12648
- Heading.displayName = COMPONENT_NAME$M;
12649
- Heading.className = CLASSNAME$N;
12719
+ Heading.displayName = COMPONENT_NAME$N;
12720
+ Heading.className = CLASSNAME$O;
12650
12721
  Heading.defaultProps = DEFAULT_PROPS$J;
12651
12722
 
12652
12723
  /**
@@ -12685,15 +12756,15 @@ const HeadingLevelProvider = ({
12685
12756
  /**
12686
12757
  * Component display name.
12687
12758
  */
12688
- const COMPONENT_NAME$L = 'Grid';
12759
+ const COMPONENT_NAME$M = 'Grid';
12689
12760
 
12690
12761
  /**
12691
12762
  * Component default class name and class prefix.
12692
12763
  */
12693
- const CLASSNAME$M = 'lumx-grid';
12764
+ const CLASSNAME$N = 'lumx-grid';
12694
12765
  const {
12695
12766
  block: block$D
12696
- } = classNames.bem(CLASSNAME$M);
12767
+ } = classNames.bem(CLASSNAME$N);
12697
12768
 
12698
12769
  /**
12699
12770
  * Component default props.
@@ -12724,7 +12795,7 @@ const Grid = forwardRef((props, ref) => {
12724
12795
  return /*#__PURE__*/jsx("div", {
12725
12796
  ref: ref,
12726
12797
  ...forwardedProps,
12727
- className: classNames.join(className, classNames.bem(`${CLASSNAME$M}-container`).block(), block$D({
12798
+ className: classNames.join(className, classNames.bem(`${CLASSNAME$N}-container`).block(), block$D({
12728
12799
  [`h-align-${hAlign}`]: Boolean(hAlign),
12729
12800
  [`v-align-${vAlign}`]: Boolean(vAlign),
12730
12801
  [`orientation-${orientation}`]: Boolean(orientation),
@@ -12734,22 +12805,22 @@ const Grid = forwardRef((props, ref) => {
12734
12805
  children: children
12735
12806
  });
12736
12807
  });
12737
- Grid.displayName = COMPONENT_NAME$L;
12738
- Grid.className = CLASSNAME$M;
12808
+ Grid.displayName = COMPONENT_NAME$M;
12809
+ Grid.className = CLASSNAME$N;
12739
12810
  Grid.defaultProps = DEFAULT_PROPS$I;
12740
12811
 
12741
12812
  /**
12742
12813
  * Component display name.
12743
12814
  */
12744
- const COMPONENT_NAME$K = 'GridItem';
12815
+ const COMPONENT_NAME$L = 'GridItem';
12745
12816
 
12746
12817
  /**
12747
12818
  * Component default class name and class prefix.
12748
12819
  */
12749
- const CLASSNAME$L = 'lumx-grid-item';
12820
+ const CLASSNAME$M = 'lumx-grid-item';
12750
12821
  const {
12751
12822
  block: block$C
12752
- } = classNames.bem(CLASSNAME$L);
12823
+ } = classNames.bem(CLASSNAME$M);
12753
12824
 
12754
12825
  /**
12755
12826
  * GridItem component.
@@ -12778,18 +12849,18 @@ const GridItem = forwardRef((props, ref) => {
12778
12849
  children: children
12779
12850
  });
12780
12851
  });
12781
- GridItem.displayName = COMPONENT_NAME$K;
12782
- GridItem.className = CLASSNAME$L;
12852
+ GridItem.displayName = COMPONENT_NAME$L;
12853
+ GridItem.className = CLASSNAME$M;
12783
12854
 
12784
12855
  /**
12785
12856
  * Component display name.
12786
12857
  */
12787
- const COMPONENT_NAME$J = 'GridColumn';
12858
+ const COMPONENT_NAME$K = 'GridColumn';
12788
12859
 
12789
12860
  /**
12790
12861
  * Component default class name and class prefix.
12791
12862
  */
12792
- const CLASSNAME$K = 'lumx-grid-column';
12863
+ const CLASSNAME$L = 'lumx-grid-column';
12793
12864
 
12794
12865
  /**
12795
12866
  * Component default props.
@@ -12819,7 +12890,7 @@ const GridColumn$1 = props => {
12819
12890
  return /*#__PURE__*/jsx(Component, {
12820
12891
  ...forwardedProps,
12821
12892
  ref: ref,
12822
- className: classnames(className, CLASSNAME$K),
12893
+ className: classnames(className, CLASSNAME$L),
12823
12894
  style: {
12824
12895
  ...style,
12825
12896
  ['--lumx-grid-column-item-min-width']: isInteger(itemMinWidth) && `${itemMinWidth}px`,
@@ -12829,8 +12900,8 @@ const GridColumn$1 = props => {
12829
12900
  children: children
12830
12901
  });
12831
12902
  };
12832
- GridColumn$1.displayName = COMPONENT_NAME$J;
12833
- GridColumn$1.className = CLASSNAME$K;
12903
+ GridColumn$1.displayName = COMPONENT_NAME$K;
12904
+ GridColumn$1.className = CLASSNAME$L;
12834
12905
  GridColumn$1.defaultProps = DEFAULT_PROPS$H;
12835
12906
 
12836
12907
  /**
@@ -12859,8 +12930,8 @@ const GridColumn = forwardRef((props, ref) => {
12859
12930
  ...props
12860
12931
  });
12861
12932
  });
12862
- GridColumn.displayName = COMPONENT_NAME$J;
12863
- GridColumn.className = CLASSNAME$K;
12933
+ GridColumn.displayName = COMPONENT_NAME$K;
12934
+ GridColumn.className = CLASSNAME$L;
12864
12935
  GridColumn.defaultProps = DEFAULT_PROPS$G;
12865
12936
 
12866
12937
  /**
@@ -12882,16 +12953,16 @@ const ImageBlockCaptionPosition = {
12882
12953
  /**
12883
12954
  * Component display name.
12884
12955
  */
12885
- const COMPONENT_NAME$I = 'ImageBlock';
12956
+ const COMPONENT_NAME$J = 'ImageBlock';
12886
12957
 
12887
12958
  /**
12888
12959
  * Component default class name and class prefix.
12889
12960
  */
12890
- const CLASSNAME$J = 'lumx-image-block';
12961
+ const CLASSNAME$K = 'lumx-image-block';
12891
12962
  const {
12892
12963
  block: block$B,
12893
12964
  element: element$v
12894
- } = bem(CLASSNAME$J);
12965
+ } = bem(CLASSNAME$K);
12895
12966
 
12896
12967
  /**
12897
12968
  * Component default props.
@@ -12952,7 +13023,7 @@ const ImageBlock$1 = props => {
12952
13023
  alt: alt || title
12953
13024
  }), /*#__PURE__*/jsx(ImageCaption, {
12954
13025
  as: "figcaption",
12955
- baseClassName: CLASSNAME$J,
13026
+ baseClassName: CLASSNAME$K,
12956
13027
  theme: theme,
12957
13028
  title: title,
12958
13029
  titleProps: titleProps,
@@ -13083,19 +13154,19 @@ const ImageBlock = forwardRef((props, ref) => {
13083
13154
  ImageCaption
13084
13155
  });
13085
13156
  });
13086
- ImageBlock.displayName = COMPONENT_NAME$I;
13087
- ImageBlock.className = CLASSNAME$J;
13157
+ ImageBlock.displayName = COMPONENT_NAME$J;
13158
+ ImageBlock.className = CLASSNAME$K;
13088
13159
  ImageBlock.defaultProps = DEFAULT_PROPS$F;
13089
13160
 
13090
13161
  /**
13091
13162
  * Component display name.
13092
13163
  */
13093
- const COMPONENT_NAME$H = 'ImageLightbox';
13164
+ const COMPONENT_NAME$I = 'ImageLightbox';
13094
13165
 
13095
13166
  /**
13096
13167
  * Component default class name and class prefix.
13097
13168
  */
13098
- const CLASSNAME$I = 'lumx-image-lightbox';
13169
+ const CLASSNAME$J = 'lumx-image-lightbox';
13099
13170
 
13100
13171
  /**
13101
13172
  * Observe element size (only works if it's size depends on the window size).
@@ -13341,7 +13412,7 @@ function useAnimateScroll(scrollAreaRef) {
13341
13412
 
13342
13413
  const {
13343
13414
  element: element$u
13344
- } = classNames.bem(CLASSNAME$I);
13415
+ } = classNames.bem(CLASSNAME$J);
13345
13416
  /** Internal image slide component for ImageLightbox */
13346
13417
  const ImageSlide = /*#__PURE__*/React__default.memo(props => {
13347
13418
  const {
@@ -13433,7 +13504,7 @@ const ImageSlide = /*#__PURE__*/React__default.memo(props => {
13433
13504
 
13434
13505
  const {
13435
13506
  element: element$t
13436
- } = classNames.bem(CLASSNAME$I);
13507
+ } = classNames.bem(CLASSNAME$J);
13437
13508
  /** Internal image slideshow component for ImageLightbox */
13438
13509
  const ImageSlideshow = ({
13439
13510
  activeImageIndex,
@@ -13673,7 +13744,7 @@ function useImageLightbox(props) {
13673
13744
  viewTransitionName: {
13674
13745
  source: currentImageRef,
13675
13746
  target: triggerImageRefs[currentIndex],
13676
- name: CLASSNAME$I
13747
+ name: CLASSNAME$J
13677
13748
  }
13678
13749
  });
13679
13750
  }
@@ -13725,7 +13796,7 @@ function useImageLightbox(props) {
13725
13796
  viewTransitionName: {
13726
13797
  source: triggerImage,
13727
13798
  target: currentImageRef,
13728
- name: CLASSNAME$I
13799
+ name: CLASSNAME$J
13729
13800
  }
13730
13801
  });
13731
13802
  }
@@ -13779,7 +13850,7 @@ const Inner = forwardRef((props, ref) => {
13779
13850
  }, [onClose]);
13780
13851
  return /*#__PURE__*/jsx(Lightbox, {
13781
13852
  ref: ref,
13782
- className: classNames.join(className, CLASSNAME$I),
13853
+ className: classNames.join(className, CLASSNAME$J),
13783
13854
  parentElement: parentElement,
13784
13855
  isOpen: isOpen,
13785
13856
  onClose: onClose,
@@ -13808,8 +13879,8 @@ const Inner = forwardRef((props, ref) => {
13808
13879
  })
13809
13880
  });
13810
13881
  });
13811
- Inner.displayName = COMPONENT_NAME$H;
13812
- Inner.className = CLASSNAME$I;
13882
+ Inner.displayName = COMPONENT_NAME$I;
13883
+ Inner.className = CLASSNAME$J;
13813
13884
 
13814
13885
  /**
13815
13886
  * ImageLightbox component.
@@ -13825,16 +13896,16 @@ const ImageLightbox = Object.assign(Inner, {
13825
13896
  /**
13826
13897
  * Component display name.
13827
13898
  */
13828
- const COMPONENT_NAME$G = 'InlineList';
13899
+ const COMPONENT_NAME$H = 'InlineList';
13829
13900
 
13830
13901
  /**
13831
13902
  * Component default class name and class prefix.
13832
13903
  */
13833
- const CLASSNAME$H = 'lumx-inline-list';
13904
+ const CLASSNAME$I = 'lumx-inline-list';
13834
13905
  const {
13835
13906
  block: block$A,
13836
13907
  element: element$s
13837
- } = bem(CLASSNAME$H);
13908
+ } = bem(CLASSNAME$I);
13838
13909
 
13839
13910
  /**
13840
13911
  * Component default props.
@@ -13886,8 +13957,8 @@ const InlineList$1 = props => {
13886
13957
  })
13887
13958
  );
13888
13959
  };
13889
- InlineList$1.displayName = COMPONENT_NAME$G;
13890
- InlineList$1.className = CLASSNAME$H;
13960
+ InlineList$1.displayName = COMPONENT_NAME$H;
13961
+ InlineList$1.className = CLASSNAME$I;
13891
13962
  InlineList$1.defaultProps = DEFAULT_PROPS$E;
13892
13963
 
13893
13964
  /**
@@ -13912,8 +13983,8 @@ const InlineList = forwardRef((props, ref) => {
13912
13983
  items: Children.toArray(children)
13913
13984
  });
13914
13985
  });
13915
- InlineList.displayName = COMPONENT_NAME$G;
13916
- InlineList.className = CLASSNAME$H;
13986
+ InlineList.displayName = COMPONENT_NAME$H;
13987
+ InlineList.className = CLASSNAME$I;
13917
13988
  InlineList.defaultProps = DEFAULT_PROPS$E;
13918
13989
 
13919
13990
  /**
@@ -13957,16 +14028,16 @@ InputLabel.defaultProps = InputLabel$1.defaultProps;
13957
14028
  /**
13958
14029
  * Component display name.
13959
14030
  */
13960
- const COMPONENT_NAME$F = 'Lightbox';
14031
+ const COMPONENT_NAME$G = 'Lightbox';
13961
14032
 
13962
14033
  /**
13963
14034
  * Component default class name and class prefix.
13964
14035
  */
13965
- const CLASSNAME$G = 'lumx-lightbox';
14036
+ const CLASSNAME$H = 'lumx-lightbox';
13966
14037
  const {
13967
14038
  block: block$z,
13968
14039
  element: element$r
13969
- } = classNames.bem(CLASSNAME$G);
14040
+ } = bem(CLASSNAME$H);
13970
14041
 
13971
14042
  /**
13972
14043
  * Lightbox component.
@@ -13975,12 +14046,97 @@ const {
13975
14046
  * @param ref Component ref.
13976
14047
  * @return React element.
13977
14048
  */
13978
- const Lightbox = forwardRef((props, ref) => {
14049
+ const Lightbox$1 = props => {
13979
14050
  const {
13980
14051
  'aria-labelledby': propAriaLabelledBy,
13981
14052
  ariaLabelledBy = propAriaLabelledBy,
13982
14053
  'aria-label': propAriaLabel,
13983
14054
  ariaLabel = propAriaLabel,
14055
+ children,
14056
+ className,
14057
+ closeButtonProps,
14058
+ isOpen,
14059
+ handleClose,
14060
+ parentElement,
14061
+ focusElement,
14062
+ preventAutoClose,
14063
+ theme,
14064
+ zIndex,
14065
+ isVisible,
14066
+ ref,
14067
+ Portal,
14068
+ HeadingLevelProvider,
14069
+ ThemeProvider,
14070
+ ClickAwayProvider,
14071
+ childrenRef,
14072
+ clickAwayRefs,
14073
+ closeButtonRef,
14074
+ IconButton,
14075
+ ...forwardedProps
14076
+ } = props;
14077
+ if (!isOpen && !isVisible) return null;
14078
+ return /*#__PURE__*/jsx(Portal, {
14079
+ children: /*#__PURE__*/jsxs("div", {
14080
+ ref: ref,
14081
+ ...forwardedProps,
14082
+ "aria-label": ariaLabel,
14083
+ "aria-labelledby": ariaLabelledBy,
14084
+ "aria-modal": "true",
14085
+ role: "dialog",
14086
+ tabIndex: -1,
14087
+ className: classnames(className, block$z({
14088
+ 'is-hidden': !isOpen,
14089
+ 'is-shown': isOpen || isVisible,
14090
+ [`theme-${theme}`]: Boolean(theme)
14091
+ })),
14092
+ style: {
14093
+ zIndex
14094
+ },
14095
+ children: [closeButtonProps && /*#__PURE__*/jsx("div", {
14096
+ className: element$r('close'),
14097
+ children: /*#__PURE__*/jsx(IconButton, {
14098
+ ...closeButtonProps,
14099
+ ref: closeButtonRef,
14100
+ emphasis: "low",
14101
+ hasBackground: true,
14102
+ icon: mdiClose,
14103
+ theme: "dark",
14104
+ type: "button",
14105
+ onClick: handleClose
14106
+ })
14107
+ }), /*#__PURE__*/jsx(HeadingLevelProvider, {
14108
+ level: 2,
14109
+ children: /*#__PURE__*/jsx(ThemeProvider, {
14110
+ value: undefined,
14111
+ children: /*#__PURE__*/jsx(ClickAwayProvider, {
14112
+ callback: !preventAutoClose && handleClose,
14113
+ childrenRefs: clickAwayRefs,
14114
+ children: /*#__PURE__*/jsx("div", {
14115
+ ref: childrenRef,
14116
+ className: element$r('wrapper'),
14117
+ role: "presentation",
14118
+ children: children
14119
+ })
14120
+ })
14121
+ })
14122
+ })]
14123
+ })
14124
+ });
14125
+ };
14126
+
14127
+ /**
14128
+ * Defines the props of the component.
14129
+ */
14130
+
14131
+ /**
14132
+ * Lightbox component.
14133
+ *
14134
+ * @param props Component props.
14135
+ * @param ref Component ref.
14136
+ * @return React element.
14137
+ */
14138
+ const Lightbox = forwardRef((props, ref) => {
14139
+ const {
13984
14140
  children,
13985
14141
  className,
13986
14142
  closeButtonProps,
@@ -14041,56 +14197,32 @@ const Lightbox = forwardRef((props, ref) => {
14041
14197
  // eslint-disable-next-line react-hooks/rules-of-hooks
14042
14198
  const clickAwayRefs = useRef([wrapperRef]);
14043
14199
  if (!isOpen && !isVisible) return null;
14044
- return /*#__PURE__*/jsx(Portal, {
14045
- children: /*#__PURE__*/jsxs("div", {
14046
- ref: mergeRefs(ref, wrapperRef),
14047
- ...forwardedProps,
14048
- "aria-label": ariaLabel,
14049
- "aria-labelledby": ariaLabelledBy,
14050
- "aria-modal": "true",
14051
- role: "dialog",
14052
- tabIndex: -1,
14053
- className: classNames.join(className, block$z({
14054
- 'is-hidden': !isOpen,
14055
- 'is-shown': isOpen || isVisible,
14056
- [`theme-${theme}`]: Boolean(theme)
14057
- })),
14058
- style: {
14059
- zIndex
14060
- },
14061
- children: [closeButtonProps && /*#__PURE__*/jsx("div", {
14062
- className: element$r('close'),
14063
- children: /*#__PURE__*/jsx(IconButton, {
14064
- ...closeButtonProps,
14065
- ref: closeButtonRef,
14066
- emphasis: "low",
14067
- hasBackground: true,
14068
- icon: mdiClose,
14069
- theme: "dark",
14070
- type: "button",
14071
- onClick: onClose
14072
- })
14073
- }), /*#__PURE__*/jsx(HeadingLevelProvider, {
14074
- level: 2,
14075
- children: /*#__PURE__*/jsx(ThemeProvider, {
14076
- value: undefined,
14077
- children: /*#__PURE__*/jsx(ClickAwayProvider, {
14078
- callback: !preventAutoClose && onClose,
14079
- childrenRefs: clickAwayRefs,
14080
- children: /*#__PURE__*/jsx("div", {
14081
- ref: childrenRef,
14082
- className: element$r('wrapper'),
14083
- role: "presentation",
14084
- children: children
14085
- })
14086
- })
14087
- })
14088
- })]
14089
- })
14200
+ return Lightbox$1({
14201
+ ClickAwayProvider,
14202
+ HeadingLevelProvider,
14203
+ IconButton,
14204
+ parentElement,
14205
+ Portal,
14206
+ ThemeProvider,
14207
+ children,
14208
+ childrenRef,
14209
+ className,
14210
+ clickAwayRefs,
14211
+ closeButtonProps,
14212
+ closeButtonRef,
14213
+ focusElement,
14214
+ isOpen,
14215
+ isVisible,
14216
+ ref: mergeRefs(ref, wrapperRef),
14217
+ theme,
14218
+ zIndex,
14219
+ preventAutoClose,
14220
+ handleClose: onClose,
14221
+ ...forwardedProps
14090
14222
  });
14091
14223
  });
14092
- Lightbox.displayName = COMPONENT_NAME$F;
14093
- Lightbox.className = CLASSNAME$G;
14224
+ Lightbox.displayName = COMPONENT_NAME$G;
14225
+ Lightbox.className = CLASSNAME$H;
14094
14226
 
14095
14227
  /**
14096
14228
  * Defines the props of the component.
@@ -14099,15 +14231,15 @@ Lightbox.className = CLASSNAME$G;
14099
14231
  /**
14100
14232
  * Component display name.
14101
14233
  */
14102
- const COMPONENT_NAME$E = 'Link';
14234
+ const COMPONENT_NAME$F = 'Link';
14103
14235
 
14104
14236
  /**
14105
14237
  * Component default class name and class prefix.
14106
14238
  */
14107
- const CLASSNAME$F = 'lumx-link';
14239
+ const CLASSNAME$G = 'lumx-link';
14108
14240
  const {
14109
14241
  block: block$y
14110
- } = bem(CLASSNAME$F);
14242
+ } = bem(CLASSNAME$G);
14111
14243
 
14112
14244
  /**
14113
14245
  * Link component.
@@ -14146,7 +14278,7 @@ const Link$1 = props => {
14146
14278
 
14147
14279
  const {
14148
14280
  element: element$q
14149
- } = classNames.bem(CLASSNAME$F);
14281
+ } = classNames.bem(CLASSNAME$G);
14150
14282
 
14151
14283
  /**
14152
14284
  * Defines the props of the component.
@@ -14192,22 +14324,22 @@ const Link = forwardRef((props, ref) => {
14192
14324
  }))
14193
14325
  });
14194
14326
  });
14195
- Link.displayName = COMPONENT_NAME$E;
14196
- Link.className = CLASSNAME$F;
14327
+ Link.displayName = COMPONENT_NAME$F;
14328
+ Link.className = CLASSNAME$G;
14197
14329
 
14198
14330
  /**
14199
14331
  * Component display name.
14200
14332
  */
14201
- const COMPONENT_NAME$D = 'LinkPreview';
14333
+ const COMPONENT_NAME$E = 'LinkPreview';
14202
14334
 
14203
14335
  /**
14204
14336
  * Component default class name and class prefix.
14205
14337
  */
14206
- const CLASSNAME$E = 'lumx-link-preview';
14338
+ const CLASSNAME$F = 'lumx-link-preview';
14207
14339
  const {
14208
14340
  block: block$x,
14209
14341
  element: element$p
14210
- } = bem(CLASSNAME$E);
14342
+ } = bem(CLASSNAME$F);
14211
14343
 
14212
14344
  /**
14213
14345
  * Component default props.
@@ -14333,8 +14465,8 @@ const LinkPreview = forwardRef((props, ref) => {
14333
14465
  ...forwardedProps
14334
14466
  });
14335
14467
  });
14336
- LinkPreview.displayName = COMPONENT_NAME$D;
14337
- LinkPreview.className = CLASSNAME$E;
14468
+ LinkPreview.displayName = COMPONENT_NAME$E;
14469
+ LinkPreview.className = CLASSNAME$F;
14338
14470
  LinkPreview.defaultProps = DEFAULT_PROPS$D;
14339
14471
 
14340
14472
  /**
@@ -14366,8 +14498,8 @@ const ListItemAction = Object.assign(forwardRefPolymorphic((props, ref) => {
14366
14498
  children
14367
14499
  });
14368
14500
  }), {
14369
- displayName: COMPONENT_NAME$18,
14370
- className: CLASSNAME$17,
14501
+ displayName: COMPONENT_NAME$19,
14502
+ className: CLASSNAME$18,
14371
14503
  defaultProps: DEFAULT_PROPS$W
14372
14504
  });
14373
14505
 
@@ -14406,8 +14538,8 @@ const _ListItem = forwardRef((props, ref) => {
14406
14538
  handleClick: onItemSelected || props.onClick ? handleClick : undefined
14407
14539
  });
14408
14540
  });
14409
- _ListItem.displayName = COMPONENT_NAME$19;
14410
- _ListItem.className = CLASSNAME$18;
14541
+ _ListItem.displayName = COMPONENT_NAME$1a;
14542
+ _ListItem.className = CLASSNAME$19;
14411
14543
  _ListItem.defaultProps = DEFAULT_PROPS$X;
14412
14544
 
14413
14545
  /**
@@ -14421,12 +14553,12 @@ const ListItem = Object.assign(_ListItem, {
14421
14553
  /**
14422
14554
  * Component display name.
14423
14555
  */
14424
- const COMPONENT_NAME$C = 'ListSubheader';
14556
+ const COMPONENT_NAME$D = 'ListSubheader';
14425
14557
 
14426
14558
  /**
14427
14559
  * Component default class name and class prefix.
14428
14560
  */
14429
- const CLASSNAME$D = 'lumx-list-subheader';
14561
+ const CLASSNAME$E = 'lumx-list-subheader';
14430
14562
 
14431
14563
  /**
14432
14564
  * ListSubheader component.
@@ -14445,26 +14577,26 @@ const ListSubheader = forwardRef((props, ref) => {
14445
14577
  return /*#__PURE__*/jsx("li", {
14446
14578
  ref: ref,
14447
14579
  ...forwardedProps,
14448
- className: classNames.join(className, CLASSNAME$D),
14580
+ className: classNames.join(className, CLASSNAME$E),
14449
14581
  children: children
14450
14582
  });
14451
14583
  });
14452
- ListSubheader.displayName = COMPONENT_NAME$C;
14453
- ListSubheader.className = CLASSNAME$D;
14584
+ ListSubheader.displayName = COMPONENT_NAME$D;
14585
+ ListSubheader.className = CLASSNAME$E;
14454
14586
 
14455
14587
  /**
14456
14588
  * Component display name.
14457
14589
  */
14458
- const COMPONENT_NAME$B = 'Message';
14590
+ const COMPONENT_NAME$C = 'Message';
14459
14591
 
14460
14592
  /**
14461
14593
  * Component default class name and class prefix.
14462
14594
  */
14463
- const CLASSNAME$C = 'lumx-message';
14595
+ const CLASSNAME$D = 'lumx-message';
14464
14596
  const {
14465
14597
  block: block$w,
14466
14598
  element: element$o
14467
- } = bem(CLASSNAME$C);
14599
+ } = bem(CLASSNAME$D);
14468
14600
 
14469
14601
  /**
14470
14602
  * Associative map from message kind to color and icon.
@@ -14538,8 +14670,8 @@ const Message$1 = props => {
14538
14670
  })]
14539
14671
  });
14540
14672
  };
14541
- Message$1.displayName = COMPONENT_NAME$B;
14542
- Message$1.className = CLASSNAME$C;
14673
+ Message$1.displayName = COMPONENT_NAME$C;
14674
+ Message$1.className = CLASSNAME$D;
14543
14675
 
14544
14676
  /**
14545
14677
  * Message component.
@@ -14554,22 +14686,22 @@ const Message = forwardRef((props, ref) => {
14554
14686
  ref
14555
14687
  });
14556
14688
  });
14557
- Message.displayName = COMPONENT_NAME$B;
14558
- Message.className = CLASSNAME$C;
14689
+ Message.displayName = COMPONENT_NAME$C;
14690
+ Message.className = CLASSNAME$D;
14559
14691
 
14560
14692
  /**
14561
14693
  * Component display name.
14562
14694
  */
14563
- const COMPONENT_NAME$A = 'Mosaic';
14695
+ const COMPONENT_NAME$B = 'Mosaic';
14564
14696
 
14565
14697
  /**
14566
14698
  * Component default class name and class prefix.
14567
14699
  */
14568
- const CLASSNAME$B = 'lumx-mosaic';
14700
+ const CLASSNAME$C = 'lumx-mosaic';
14569
14701
  const {
14570
14702
  block: block$v,
14571
14703
  element: element$n
14572
- } = bem(CLASSNAME$B);
14704
+ } = bem(CLASSNAME$C);
14573
14705
 
14574
14706
  /**
14575
14707
  * Component default props.
@@ -14667,8 +14799,8 @@ const Mosaic = forwardRef((props, ref) => {
14667
14799
  ...forwardedProps
14668
14800
  });
14669
14801
  });
14670
- Mosaic.displayName = COMPONENT_NAME$A;
14671
- Mosaic.className = CLASSNAME$B;
14802
+ Mosaic.displayName = COMPONENT_NAME$B;
14803
+ Mosaic.className = CLASSNAME$C;
14672
14804
  Mosaic.defaultProps = DEFAULT_PROPS$C;
14673
14805
 
14674
14806
  const NavigationContext = /*#__PURE__*/createContext({
@@ -14688,16 +14820,16 @@ const ITEM_CLASSNAME = 'lumx-navigation-item';
14688
14820
  /**
14689
14821
  * Component display name.
14690
14822
  */
14691
- const COMPONENT_NAME$z = 'NavigationSection';
14823
+ const COMPONENT_NAME$A = 'NavigationSection';
14692
14824
 
14693
14825
  /**
14694
14826
  * Component default class name and class prefix.
14695
14827
  */
14696
- const CLASSNAME$A = 'lumx-navigation-section';
14828
+ const CLASSNAME$B = 'lumx-navigation-section';
14697
14829
  const {
14698
14830
  block: sectionBlock,
14699
14831
  element: sectionElement
14700
- } = classNames.bem(CLASSNAME$A);
14832
+ } = classNames.bem(CLASSNAME$B);
14701
14833
  const {
14702
14834
  block: itemBlock,
14703
14835
  element: itemElement
@@ -14783,8 +14915,8 @@ const NavigationSection = forwardRef((props, ref) => {
14783
14915
  }))]
14784
14916
  });
14785
14917
  });
14786
- NavigationSection.displayName = COMPONENT_NAME$z;
14787
- NavigationSection.className = CLASSNAME$A;
14918
+ NavigationSection.displayName = COMPONENT_NAME$A;
14919
+ NavigationSection.className = CLASSNAME$B;
14788
14920
 
14789
14921
  const {
14790
14922
  block: block$u,
@@ -14853,16 +14985,16 @@ const NavigationItem = Object.assign(forwardRefPolymorphic((props, ref) => {
14853
14985
  /**
14854
14986
  * Component display name.
14855
14987
  */
14856
- const COMPONENT_NAME$y = 'Navigation';
14988
+ const COMPONENT_NAME$z = 'Navigation';
14857
14989
 
14858
14990
  /**
14859
14991
  * Component default class name and class prefix.
14860
14992
  */
14861
- const CLASSNAME$z = 'lumx-navigation';
14993
+ const CLASSNAME$A = 'lumx-navigation';
14862
14994
  const {
14863
14995
  block: block$t,
14864
14996
  element: element$l
14865
- } = classNames.bem(CLASSNAME$z);
14997
+ } = classNames.bem(CLASSNAME$A);
14866
14998
 
14867
14999
  /**
14868
15000
  * Component default props
@@ -14900,8 +15032,8 @@ const Navigation = forwardRef((props, ref) => {
14900
15032
  })
14901
15033
  });
14902
15034
  });
14903
- Navigation.displayName = COMPONENT_NAME$y;
14904
- Navigation.className = CLASSNAME$z;
15035
+ Navigation.displayName = COMPONENT_NAME$z;
15036
+ Navigation.className = CLASSNAME$A;
14905
15037
  Navigation.defaultProps = DEFAULT_PROPS$B;
14906
15038
 
14907
15039
  // Sub components
@@ -14933,16 +15065,16 @@ const NOTIFICATION_CONFIGURATION = {
14933
15065
  /**
14934
15066
  * Component display name.
14935
15067
  */
14936
- const COMPONENT_NAME$x = 'Notification';
15068
+ const COMPONENT_NAME$y = 'Notification';
14937
15069
 
14938
15070
  /**
14939
15071
  * Component default class name and class prefix.
14940
15072
  */
14941
- const CLASSNAME$y = 'lumx-notification';
15073
+ const CLASSNAME$z = 'lumx-notification';
14942
15074
  const {
14943
15075
  block: block$s,
14944
15076
  element: element$k
14945
- } = classNames.bem(CLASSNAME$y);
15077
+ } = classNames.bem(CLASSNAME$z);
14946
15078
 
14947
15079
  /**
14948
15080
  * Component default props.
@@ -15035,8 +15167,8 @@ const Notification = forwardRef((props, ref) => {
15035
15167
  })
15036
15168
  });
15037
15169
  });
15038
- Notification.displayName = COMPONENT_NAME$x;
15039
- Notification.className = CLASSNAME$y;
15170
+ Notification.displayName = COMPONENT_NAME$y;
15171
+ Notification.className = CLASSNAME$z;
15040
15172
  Notification.defaultProps = DEFAULT_PROPS$A;
15041
15173
 
15042
15174
  /**
@@ -15047,12 +15179,12 @@ Notification.defaultProps = DEFAULT_PROPS$A;
15047
15179
  /**
15048
15180
  * Component display name.
15049
15181
  */
15050
- const COMPONENT_NAME$w = 'PopoverDialog';
15182
+ const COMPONENT_NAME$x = 'PopoverDialog';
15051
15183
 
15052
15184
  /**
15053
15185
  * Component default class name and class prefix.
15054
15186
  */
15055
- const CLASSNAME$x = 'lumx-popover-dialog';
15187
+ const CLASSNAME$y = 'lumx-popover-dialog';
15056
15188
 
15057
15189
  /**
15058
15190
  * Component default props.
@@ -15078,7 +15210,7 @@ const PopoverDialog = forwardRef((props, ref) => {
15078
15210
  return /*#__PURE__*/jsx(Popover, {
15079
15211
  ...forwardedProps,
15080
15212
  ref: ref,
15081
- className: classNames.join(className, CLASSNAME$x),
15213
+ className: classNames.join(className, CLASSNAME$y),
15082
15214
  role: "dialog",
15083
15215
  "aria-modal": "true"
15084
15216
  /**
@@ -15095,23 +15227,23 @@ const PopoverDialog = forwardRef((props, ref) => {
15095
15227
  })
15096
15228
  });
15097
15229
  });
15098
- PopoverDialog.displayName = COMPONENT_NAME$w;
15099
- PopoverDialog.className = CLASSNAME$x;
15230
+ PopoverDialog.displayName = COMPONENT_NAME$x;
15231
+ PopoverDialog.className = CLASSNAME$y;
15100
15232
  PopoverDialog.defaultProps = DEFAULT_PROPS$z;
15101
15233
 
15102
15234
  /**
15103
15235
  * Component display name.
15104
15236
  */
15105
- const COMPONENT_NAME$v = 'PostBlock';
15237
+ const COMPONENT_NAME$w = 'PostBlock';
15106
15238
 
15107
15239
  /**
15108
15240
  * Component default class name and class prefix.
15109
15241
  */
15110
- const CLASSNAME$w = 'lumx-post-block';
15242
+ const CLASSNAME$x = 'lumx-post-block';
15111
15243
  const {
15112
15244
  block: block$r,
15113
15245
  element: element$j
15114
- } = classNames.bem(CLASSNAME$w);
15246
+ } = classNames.bem(CLASSNAME$x);
15115
15247
 
15116
15248
  /**
15117
15249
  * Component default props.
@@ -15196,23 +15328,23 @@ const PostBlock = forwardRef((props, ref) => {
15196
15328
  })]
15197
15329
  });
15198
15330
  });
15199
- PostBlock.displayName = COMPONENT_NAME$v;
15200
- PostBlock.className = CLASSNAME$w;
15331
+ PostBlock.displayName = COMPONENT_NAME$w;
15332
+ PostBlock.className = CLASSNAME$x;
15201
15333
  PostBlock.defaultProps = DEFAULT_PROPS$y;
15202
15334
 
15203
15335
  /**
15204
15336
  * Component display name.
15205
15337
  */
15206
- const COMPONENT_NAME$u = 'ProgressLinear';
15338
+ const COMPONENT_NAME$v = 'ProgressLinear';
15207
15339
 
15208
15340
  /**
15209
15341
  * Component default class name and class prefix.
15210
15342
  */
15211
- const CLASSNAME$v = 'lumx-progress-linear';
15343
+ const CLASSNAME$w = 'lumx-progress-linear';
15212
15344
  const {
15213
15345
  block: block$q,
15214
15346
  element: element$i
15215
- } = bem(CLASSNAME$v);
15347
+ } = bem(CLASSNAME$w);
15216
15348
 
15217
15349
  /**
15218
15350
  * Component default props.
@@ -15269,8 +15401,8 @@ const ProgressLinear = forwardRef((props, ref) => {
15269
15401
  ...otherProps
15270
15402
  });
15271
15403
  });
15272
- ProgressLinear.displayName = COMPONENT_NAME$u;
15273
- ProgressLinear.className = CLASSNAME$v;
15404
+ ProgressLinear.displayName = COMPONENT_NAME$v;
15405
+ ProgressLinear.className = CLASSNAME$w;
15274
15406
  ProgressLinear.defaultProps = DEFAULT_PROPS$x;
15275
15407
 
15276
15408
  /* eslint-disable react/no-unknown-property */
@@ -15278,16 +15410,16 @@ ProgressLinear.defaultProps = DEFAULT_PROPS$x;
15278
15410
  /**
15279
15411
  * Component display name.
15280
15412
  */
15281
- const COMPONENT_NAME$t = 'ProgressCircular';
15413
+ const COMPONENT_NAME$u = 'ProgressCircular';
15282
15414
 
15283
15415
  /**
15284
15416
  * Component default class name and class prefix.
15285
15417
  */
15286
- const CLASSNAME$u = 'lumx-progress-circular';
15418
+ const CLASSNAME$v = 'lumx-progress-circular';
15287
15419
  const {
15288
15420
  block: block$p,
15289
15421
  element: element$h
15290
- } = bem(CLASSNAME$u);
15422
+ } = bem(CLASSNAME$v);
15291
15423
 
15292
15424
  /**
15293
15425
  * Component default props.
@@ -15371,8 +15503,8 @@ const ProgressCircular = forwardRef((props, ref) => {
15371
15503
  }
15372
15504
  });
15373
15505
  });
15374
- ProgressCircular.displayName = COMPONENT_NAME$t;
15375
- ProgressCircular.className = CLASSNAME$u;
15506
+ ProgressCircular.displayName = COMPONENT_NAME$u;
15507
+ ProgressCircular.className = CLASSNAME$v;
15376
15508
  ProgressCircular.defaultProps = DEFAULT_PROPS$w;
15377
15509
 
15378
15510
  const ProgressVariant = {
@@ -15387,15 +15519,15 @@ const ProgressVariant = {
15387
15519
  /**
15388
15520
  * Component display name.
15389
15521
  */
15390
- const COMPONENT_NAME$s = 'Progress';
15522
+ const COMPONENT_NAME$t = 'Progress';
15391
15523
 
15392
15524
  /**
15393
15525
  * Component default class name and class prefix.
15394
15526
  */
15395
- const CLASSNAME$t = 'lumx-progress';
15527
+ const CLASSNAME$u = 'lumx-progress';
15396
15528
  const {
15397
15529
  block: block$o
15398
- } = classNames.bem(CLASSNAME$t);
15530
+ } = classNames.bem(CLASSNAME$u);
15399
15531
 
15400
15532
  /**
15401
15533
  * Component default props.
@@ -15434,8 +15566,8 @@ const Progress = forwardRef((props, ref) => {
15434
15566
  })]
15435
15567
  });
15436
15568
  });
15437
- Progress.displayName = COMPONENT_NAME$s;
15438
- Progress.className = CLASSNAME$t;
15569
+ Progress.displayName = COMPONENT_NAME$t;
15570
+ Progress.className = CLASSNAME$u;
15439
15571
  Progress.defaultProps = DEFAULT_PROPS$v;
15440
15572
 
15441
15573
  const INIT_STATE = {
@@ -15619,16 +15751,16 @@ ProgressTrackerProvider.defaultProps = DEFAULT_PROPS$u;
15619
15751
  /**
15620
15752
  * Component display name.
15621
15753
  */
15622
- const COMPONENT_NAME$r = 'ProgressTracker';
15754
+ const COMPONENT_NAME$s = 'ProgressTracker';
15623
15755
 
15624
15756
  /**
15625
15757
  * Component default class name and class prefix.
15626
15758
  */
15627
- const CLASSNAME$s = 'lumx-progress-tracker';
15759
+ const CLASSNAME$t = 'lumx-progress-tracker';
15628
15760
  const {
15629
15761
  block: block$n,
15630
15762
  element: element$g
15631
- } = classNames.bem(CLASSNAME$s);
15763
+ } = classNames.bem(CLASSNAME$t);
15632
15764
 
15633
15765
  /**
15634
15766
  * Component default props.
@@ -15685,23 +15817,23 @@ const ProgressTracker = forwardRef((props, ref) => {
15685
15817
  })]
15686
15818
  });
15687
15819
  });
15688
- ProgressTracker.displayName = COMPONENT_NAME$r;
15689
- ProgressTracker.className = CLASSNAME$s;
15820
+ ProgressTracker.displayName = COMPONENT_NAME$s;
15821
+ ProgressTracker.className = CLASSNAME$t;
15690
15822
  ProgressTracker.defaultProps = DEFAULT_PROPS$t;
15691
15823
 
15692
15824
  /**
15693
15825
  * Component display name.
15694
15826
  */
15695
- const COMPONENT_NAME$q = 'ProgressTrackerStep';
15827
+ const COMPONENT_NAME$r = 'ProgressTrackerStep';
15696
15828
 
15697
15829
  /**
15698
15830
  * Component default class name and class prefix.
15699
15831
  */
15700
- const CLASSNAME$r = 'lumx-progress-tracker-step';
15832
+ const CLASSNAME$s = 'lumx-progress-tracker-step';
15701
15833
  const {
15702
15834
  block: block$m,
15703
15835
  element: element$f
15704
- } = classNames.bem(CLASSNAME$r);
15836
+ } = classNames.bem(CLASSNAME$s);
15705
15837
 
15706
15838
  /**
15707
15839
  * Component default props.
@@ -15799,22 +15931,22 @@ const ProgressTrackerStep = forwardRef((props, ref) => {
15799
15931
  })]
15800
15932
  });
15801
15933
  });
15802
- ProgressTrackerStep.displayName = COMPONENT_NAME$q;
15803
- ProgressTrackerStep.className = CLASSNAME$r;
15934
+ ProgressTrackerStep.displayName = COMPONENT_NAME$r;
15935
+ ProgressTrackerStep.className = CLASSNAME$s;
15804
15936
  ProgressTrackerStep.defaultProps = DEFAULT_PROPS$s;
15805
15937
 
15806
15938
  /**
15807
15939
  * Component display name.
15808
15940
  */
15809
- const COMPONENT_NAME$p = 'ProgressTrackerStepPanel';
15941
+ const COMPONENT_NAME$q = 'ProgressTrackerStepPanel';
15810
15942
 
15811
15943
  /**
15812
15944
  * Component default class name and class prefix.
15813
15945
  */
15814
- const CLASSNAME$q = `lumx-step-panel`;
15946
+ const CLASSNAME$r = `lumx-step-panel`;
15815
15947
  const {
15816
15948
  block: block$l
15817
- } = classNames.bem(CLASSNAME$q);
15949
+ } = classNames.bem(CLASSNAME$r);
15818
15950
 
15819
15951
  /**
15820
15952
  * Component default props.
@@ -15853,23 +15985,23 @@ const ProgressTrackerStepPanel = forwardRef((props, ref) => {
15853
15985
  children: (!state?.isLazy || isActive) && children
15854
15986
  });
15855
15987
  });
15856
- ProgressTrackerStepPanel.displayName = COMPONENT_NAME$p;
15857
- ProgressTrackerStepPanel.className = CLASSNAME$q;
15988
+ ProgressTrackerStepPanel.displayName = COMPONENT_NAME$q;
15989
+ ProgressTrackerStepPanel.className = CLASSNAME$r;
15858
15990
  ProgressTrackerStepPanel.defaultProps = DEFAULT_PROPS$r;
15859
15991
 
15860
15992
  /**
15861
15993
  * Component display name.
15862
15994
  */
15863
- const COMPONENT_NAME$o = 'RadioButton';
15995
+ const COMPONENT_NAME$p = 'RadioButton';
15864
15996
 
15865
15997
  /**
15866
15998
  * Component default class name and class prefix.
15867
15999
  */
15868
- const CLASSNAME$p = 'lumx-radio-button';
16000
+ const CLASSNAME$q = 'lumx-radio-button';
15869
16001
  const {
15870
16002
  block: block$k,
15871
16003
  element: element$e
15872
- } = bem(CLASSNAME$p);
16004
+ } = bem(CLASSNAME$q);
15873
16005
 
15874
16006
  /**
15875
16007
  * RadioButton component.
@@ -16012,19 +16144,19 @@ const RadioButton = forwardRef((props, ref) => {
16012
16144
  inputId
16013
16145
  });
16014
16146
  });
16015
- RadioButton.displayName = COMPONENT_NAME$o;
16016
- RadioButton.className = CLASSNAME$p;
16147
+ RadioButton.displayName = COMPONENT_NAME$p;
16148
+ RadioButton.className = CLASSNAME$q;
16017
16149
  RadioButton.defaultProps = DEFAULT_PROPS$q;
16018
16150
 
16019
16151
  /**
16020
16152
  * Component display name.
16021
16153
  */
16022
- const COMPONENT_NAME$n = 'RadioGroup';
16154
+ const COMPONENT_NAME$o = 'RadioGroup';
16023
16155
 
16024
16156
  /**
16025
16157
  * Component default class name and class prefix.
16026
16158
  */
16027
- const CLASSNAME$o = 'lumx-radio-group';
16159
+ const CLASSNAME$p = 'lumx-radio-group';
16028
16160
 
16029
16161
  /**
16030
16162
  * Component default props.
@@ -16047,12 +16179,12 @@ const RadioGroup$1 = props => {
16047
16179
  return /*#__PURE__*/jsx("div", {
16048
16180
  ref: ref,
16049
16181
  ...forwardedProps,
16050
- className: classnames(className, CLASSNAME$o),
16182
+ className: classnames(className, CLASSNAME$p),
16051
16183
  children: children
16052
16184
  });
16053
16185
  };
16054
- RadioGroup$1.displayName = COMPONENT_NAME$n;
16055
- RadioGroup$1.className = CLASSNAME$o;
16186
+ RadioGroup$1.displayName = COMPONENT_NAME$o;
16187
+ RadioGroup$1.className = CLASSNAME$p;
16056
16188
  RadioGroup$1.defaultProps = DEFAULT_PROPS$p;
16057
16189
 
16058
16190
  /**
@@ -16079,8 +16211,8 @@ const RadioGroup = forwardRef((props, ref) => {
16079
16211
  ...forwardedProps
16080
16212
  });
16081
16213
  });
16082
- RadioGroup.displayName = COMPONENT_NAME$n;
16083
- RadioGroup.className = CLASSNAME$o;
16214
+ RadioGroup.displayName = COMPONENT_NAME$o;
16215
+ RadioGroup.className = CLASSNAME$p;
16084
16216
 
16085
16217
  /**
16086
16218
  * Listen on element focus to store the focus status.
@@ -16107,11 +16239,11 @@ function useListenFocus(ref) {
16107
16239
  }
16108
16240
 
16109
16241
  /** The default class name and classes prefix for this component. */
16110
- const CLASSNAME$n = 'lumx-select';
16242
+ const CLASSNAME$o = 'lumx-select';
16111
16243
  const {
16112
16244
  block: block$j,
16113
16245
  element: element$d
16114
- } = classNames.bem(CLASSNAME$n);
16246
+ } = classNames.bem(CLASSNAME$o);
16115
16247
  const WithSelectContext = (SelectElement, props, ref) => {
16116
16248
  const defaultTheme = useTheme() || Theme$1.light;
16117
16249
  const {
@@ -16227,14 +16359,14 @@ const SelectVariant = {
16227
16359
  };
16228
16360
 
16229
16361
  /** The display name of the component. */
16230
- const COMPONENT_NAME$m = 'Select';
16362
+ const COMPONENT_NAME$n = 'Select';
16231
16363
 
16232
16364
  /** The default class name and classes prefix for this component. */
16233
- const CLASSNAME$m = 'lumx-select';
16365
+ const CLASSNAME$n = 'lumx-select';
16234
16366
  const {
16235
16367
  block: block$i,
16236
16368
  element: element$c
16237
- } = classNames.bem(CLASSNAME$m);
16369
+ } = classNames.bem(CLASSNAME$n);
16238
16370
 
16239
16371
  /** The default value of props. */
16240
16372
  const DEFAULT_PROPS$o = {
@@ -16352,6 +16484,7 @@ const SelectField = props => {
16352
16484
  /**
16353
16485
  * Select component.
16354
16486
  *
16487
+ * @deprecated use `SelectTextField` instead
16355
16488
  * @param props Component props.
16356
16489
  * @param ref Component ref.
16357
16490
  * @return React element.
@@ -16370,20 +16503,20 @@ const Select = forwardRef((props, ref) => {
16370
16503
  isEmpty: isEmpty$1
16371
16504
  }, ref);
16372
16505
  });
16373
- Select.displayName = COMPONENT_NAME$m;
16374
- Select.className = CLASSNAME$m;
16506
+ Select.displayName = COMPONENT_NAME$n;
16507
+ Select.className = CLASSNAME$n;
16375
16508
  Select.defaultProps = DEFAULT_PROPS$o;
16376
- Select.className = CLASSNAME$m;
16509
+ Select.className = CLASSNAME$n;
16377
16510
 
16378
16511
  /** The display name of the component. */
16379
- const COMPONENT_NAME$l = 'Select';
16512
+ const COMPONENT_NAME$m = 'Select';
16380
16513
 
16381
16514
  /** The default class name and classes prefix for this component. */
16382
- const CLASSNAME$l = 'lumx-select';
16515
+ const CLASSNAME$m = 'lumx-select';
16383
16516
  const {
16384
16517
  block: block$h,
16385
16518
  element: element$b
16386
- } = classNames.bem(CLASSNAME$l);
16519
+ } = classNames.bem(CLASSNAME$m);
16387
16520
 
16388
16521
  /** The default value of props. */
16389
16522
  const DEFAULT_PROPS$n = {
@@ -16467,13 +16600,13 @@ const SelectMultipleField = props => {
16467
16600
  children: placeholder
16468
16601
  })
16469
16602
  }), (isValid || hasError) && /*#__PURE__*/jsx("div", {
16470
- className: `${CLASSNAME$l}__input-validity`,
16603
+ className: `${CLASSNAME$m}__input-validity`,
16471
16604
  children: /*#__PURE__*/jsx(Icon, {
16472
16605
  icon: isValid ? mdiCheckCircle : mdiAlertCircle,
16473
16606
  size: Size$1.xxs
16474
16607
  })
16475
16608
  }), /*#__PURE__*/jsx("div", {
16476
- className: `${CLASSNAME$l}__input-indicator`,
16609
+ className: `${CLASSNAME$m}__input-indicator`,
16477
16610
  children: /*#__PURE__*/jsx(Icon, {
16478
16611
  icon: mdiMenuDown,
16479
16612
  size: Size$1.s
@@ -16508,6 +16641,7 @@ const SelectMultipleField = props => {
16508
16641
  /**
16509
16642
  * SelectMultiple component.
16510
16643
  *
16644
+ * @deprecated use `SelectTextField` instead
16511
16645
  * @param props Component props.
16512
16646
  * @param ref Component ref.
16513
16647
  * @return React element.
@@ -16523,10 +16657,479 @@ const SelectMultiple = forwardRef((props, ref) => {
16523
16657
  isMultiple: true
16524
16658
  }, ref);
16525
16659
  });
16526
- SelectMultiple.displayName = COMPONENT_NAME$l;
16527
- SelectMultiple.className = CLASSNAME$l;
16660
+ SelectMultiple.displayName = COMPONENT_NAME$m;
16661
+ SelectMultiple.className = CLASSNAME$m;
16528
16662
  SelectMultiple.defaultProps = DEFAULT_PROPS$n;
16529
16663
 
16664
+ /**
16665
+ * Get the display name for a single option value.
16666
+ *
16667
+ * Resolves the option's display name by trying `getOptionName` first,
16668
+ * then falling back to `getOptionId`, returning `''` for nullish values.
16669
+ */
16670
+ function getOptionDisplayName(value, getOptionName, getOptionId) {
16671
+ if (value === undefined || value === null) return '';
16672
+ if (getOptionName) {
16673
+ const name = getWithSelector(getOptionName, value);
16674
+ if (name != null) return String(name);
16675
+ }
16676
+ if (getOptionId) {
16677
+ return String(getWithSelector(getOptionId, value));
16678
+ }
16679
+ return '';
16680
+ }
16681
+
16682
+ /**
16683
+ * Render options as ComboboxOption elements.
16684
+ * Framework-specific components are passed as a second argument.
16685
+ */
16686
+ function renderSelectOptions(props, components) {
16687
+ const {
16688
+ options,
16689
+ getOptionId,
16690
+ getOptionName,
16691
+ getOptionDescription,
16692
+ renderOption,
16693
+ selected,
16694
+ getSectionId,
16695
+ renderSectionTitle
16696
+ } = props;
16697
+ const {
16698
+ Combobox
16699
+ } = components;
16700
+
16701
+ // Render sections when getSectionId is provided.
16702
+ if (getSectionId && options) {
16703
+ const sections = groupBySelector(options, option => getWithSelector(getSectionId, option));
16704
+ return Array.from(sections.entries()).map(([sectionId, sectionOptions]) => {
16705
+ // When renderSectionTitle is provided, use the custom JSX as the label; otherwise fall back to sectionId.
16706
+ const sectionLabel = renderSectionTitle ? renderSectionTitle(sectionId, sectionOptions) : sectionId;
16707
+ return /*#__PURE__*/jsx(Combobox.Section, {
16708
+ label: sectionLabel,
16709
+ children: renderSelectOptions({
16710
+ options: sectionOptions,
16711
+ getOptionId,
16712
+ getOptionName,
16713
+ getOptionDescription,
16714
+ renderOption,
16715
+ selected
16716
+ // getSectionId intentionally omitted to render flat options inside.
16717
+ }, components)
16718
+ }, sectionId);
16719
+ });
16720
+ }
16721
+
16722
+ // Build a Set of selected IDs (works for both single value and arrays).
16723
+ const selectedIds = selected ? new Set((Array.isArray(selected) ? selected : [selected]).map(s => getWithSelector(getOptionId, s))) : undefined;
16724
+ return options?.map((item, index) => {
16725
+ const id = getWithSelector(getOptionId || getOptionName, item);
16726
+ const name = getWithSelector(getOptionName || getOptionId, item);
16727
+ const description = getOptionDescription && getWithSelector(getOptionDescription, item);
16728
+ const isSelected = selectedIds?.has(id) ?? false;
16729
+
16730
+ // Delegate to the consumer's render function when provided.
16731
+ // The consumer receives core-computed context and is responsible for rendering
16732
+ // a <Combobox.Option> with those values forwarded.
16733
+ if (renderOption) {
16734
+ return renderOption(item, {
16735
+ index,
16736
+ value: id,
16737
+ isSelected,
16738
+ description
16739
+ });
16740
+ }
16741
+ return /*#__PURE__*/jsx(Combobox.Option, {
16742
+ value: id,
16743
+ description: description,
16744
+ isSelected: isSelected,
16745
+ children: name
16746
+ }, id);
16747
+ });
16748
+ }
16749
+
16750
+ /**
16751
+ * Component display name.
16752
+ */
16753
+ const COMPONENT_NAME$l = 'SelectTextField';
16754
+
16755
+ /**
16756
+ * Component default class name.
16757
+ */
16758
+ const CLASSNAME$l = 'lumx-select-text-field';
16759
+
16760
+ /**
16761
+ * SelectTextField core template.
16762
+ * Renders a Combobox with a text input trigger and a dropdown list of options.
16763
+ * Supports search/filter, single selection, and multiple selection with chips.
16764
+ *
16765
+ * Framework-specific components are passed as a second argument by the React/Vue wrappers.
16766
+ *
16767
+ * @param props Component props.
16768
+ * @param components Injected framework-specific components.
16769
+ * @return JSX element.
16770
+ */
16771
+ const SelectTextField$2 = (props, {
16772
+ Combobox,
16773
+ InfiniteScroll
16774
+ }) => {
16775
+ const {
16776
+ options,
16777
+ getOptionId,
16778
+ getOptionName,
16779
+ getOptionDescription,
16780
+ renderOption,
16781
+ getSectionId,
16782
+ renderSectionTitle,
16783
+ selected,
16784
+ label,
16785
+ isMultiselectable,
16786
+ inputProps,
16787
+ popoverProps,
16788
+ listProps,
16789
+ listStatus = 'idle',
16790
+ loadingMessage,
16791
+ emptyMessage,
16792
+ nbOptionMessage,
16793
+ errorMessage,
16794
+ errorTryReloadMessage,
16795
+ onOpen,
16796
+ chips,
16797
+ beforeOptions,
16798
+ afterOptions,
16799
+ onLoadMore,
16800
+ infiniteScrollOptions
16801
+ } = props;
16802
+ const isFullLoading = listStatus === 'loading';
16803
+ const isLoadingMore = listStatus === 'loadingMore';
16804
+ const isError = listStatus === 'error';
16805
+ return /*#__PURE__*/jsxs(Combobox.Provider, {
16806
+ onOpen: onOpen,
16807
+ children: [/*#__PURE__*/jsx(Combobox.Input, {
16808
+ label: label,
16809
+ ...inputProps,
16810
+ chips: chips
16811
+ }), /*#__PURE__*/jsxs(Combobox.Popover, {
16812
+ fitToAnchorWidth: "minWidth",
16813
+ fitWithinViewportHeight: true,
16814
+ placement: "bottom-start",
16815
+ ...popoverProps,
16816
+ children: [/*#__PURE__*/jsxs(Combobox.List, {
16817
+ ...listProps,
16818
+ "aria-label": label,
16819
+ "aria-multiselectable": isMultiselectable || undefined,
16820
+ children: [beforeOptions, isFullLoading ? /*#__PURE__*/jsx(Combobox.OptionSkeleton, {
16821
+ count: 3
16822
+ }) : renderSelectOptions({
16823
+ options,
16824
+ getOptionId,
16825
+ getOptionName,
16826
+ getOptionDescription,
16827
+ renderOption,
16828
+ getSectionId,
16829
+ renderSectionTitle,
16830
+ selected
16831
+ }, {
16832
+ Combobox
16833
+ }), afterOptions, onLoadMore && InfiniteScroll && /*#__PURE__*/jsx(InfiniteScroll, {
16834
+ callback: () => {
16835
+ // Guard: prevent firing during loading or error states to avoid duplicate fetches.
16836
+ if (listStatus && listStatus !== 'idle') return;
16837
+ onLoadMore();
16838
+ },
16839
+ options: infiniteScrollOptions
16840
+ }), isLoadingMore && /*#__PURE__*/jsx(Combobox.OptionSkeleton, {
16841
+ count: 1
16842
+ })]
16843
+ }), /*#__PURE__*/jsx(Combobox.State, {
16844
+ loadingMessage: loadingMessage,
16845
+ emptyMessage: emptyMessage,
16846
+ nbOptionMessage: nbOptionMessage,
16847
+ errorMessage: isError ? errorMessage : undefined,
16848
+ errorTryReloadMessage: isError ? errorTryReloadMessage : undefined
16849
+ })]
16850
+ })]
16851
+ });
16852
+ };
16853
+ SelectTextField$2.displayName = COMPONENT_NAME$l;
16854
+ SelectTextField$2.className = CLASSNAME$l;
16855
+
16856
+ /**
16857
+ * A text field with a select dropdown to choose between a list of options.
16858
+ * Supports search/filter, single selection, and multiple selection with chips.
16859
+ */
16860
+ const SelectTextField$1 = props => {
16861
+ const {
16862
+ // Options
16863
+ options,
16864
+ getOptionId,
16865
+ getOptionName,
16866
+ getOptionDescription,
16867
+ renderOption,
16868
+ getSectionId,
16869
+ renderSectionTitle,
16870
+ // Selection
16871
+ selectionType,
16872
+ value,
16873
+ onChange,
16874
+ // Search / filter
16875
+ filter,
16876
+ openOnFocus,
16877
+ onSearch,
16878
+ searchInputValue: externalSearchValue,
16879
+ // Clear
16880
+ hasClearButton = true,
16881
+ // Status
16882
+ listStatus = 'idle',
16883
+ // Text field
16884
+ className,
16885
+ label,
16886
+ placeholder,
16887
+ icon,
16888
+ isDisabled,
16889
+ 'aria-disabled': ariaDisabled,
16890
+ isRequired,
16891
+ hasError,
16892
+ error,
16893
+ helper,
16894
+ id,
16895
+ name,
16896
+ isValid,
16897
+ maxLength,
16898
+ ariaLabel,
16899
+ inputRef: externalInputRef,
16900
+ // Event callbacks
16901
+ onBlur: externalOnBlur,
16902
+ onFocus,
16903
+ onKeyDown,
16904
+ onClear: externalOnClear,
16905
+ onOpen,
16906
+ // Forwarding
16907
+ inputProps: consumerInputProps,
16908
+ // Load more
16909
+ onLoadMore,
16910
+ beforeOptions,
16911
+ // Popover
16912
+ popoverProps,
16913
+ // Theme
16914
+ theme,
16915
+ // Translations
16916
+ translations
16917
+ } = props;
16918
+ const isAnyDisabled = !!isDisabled || ariaDisabled === true || ariaDisabled === 'true';
16919
+ const isMultiple = selectionType === 'multiple';
16920
+ const renderChip = isMultiple ? props.renderChip : undefined;
16921
+ const getChipProps = isMultiple ? props.getChipProps : undefined;
16922
+
16923
+ /* Wrap the consumer's renderOption to inject core-computed props.
16924
+ * The consumer returns a <Combobox.Option> with custom children/props.
16925
+ * This wrapper validates the element type, extracts the consumer's props, and
16926
+ * re-renders a <Combobox.Option> merging them with core-computed value/isSelected/description/key. */
16927
+ const wrappedRenderOption = renderOption ? (option, {
16928
+ index,
16929
+ value: optionValue,
16930
+ isSelected,
16931
+ description
16932
+ }) => {
16933
+ const node = renderOption(option, index);
16934
+ if (!isComponentType(Combobox.Option)(node)) return null;
16935
+ const {
16936
+ children,
16937
+ ...customProps
16938
+ } = node.props;
16939
+ return /*#__PURE__*/jsx(Combobox.Option, {
16940
+ ...customProps,
16941
+ value: optionValue,
16942
+ isSelected: isSelected,
16943
+ description: description,
16944
+ children: children
16945
+ }, optionValue);
16946
+ } : undefined;
16947
+ const [listElement, setListElement] = useState(null);
16948
+ const localInputRef = useRef(null);
16949
+ const mergedInputRef = useMergeRefs(localInputRef, externalInputRef);
16950
+
16951
+ // Track whether the user is actively typing a search.
16952
+ const [isSearching, setIsSearching] = useState(() => Boolean(externalSearchValue));
16953
+ const [searchText, setSearchText] = useState(() => externalSearchValue ?? '');
16954
+
16955
+ /* Sync external controlled search value into internal state when it changes.
16956
+ * This allows the parent to seed or reset the visible search text
16957
+ * (e.g., setting searchInputValue='' after creating an entry from beforeOptions). */
16958
+ useEffect(() => {
16959
+ if (externalSearchValue !== undefined) {
16960
+ setSearchText(externalSearchValue);
16961
+ setIsSearching(Boolean(externalSearchValue));
16962
+ }
16963
+ }, [externalSearchValue]);
16964
+
16965
+ // The displayed value shown in the input
16966
+ let displayValue;
16967
+ if (isMultiple || isSearching) {
16968
+ displayValue = searchText;
16969
+ } else if (!isMultiple) {
16970
+ displayValue = getOptionDisplayName(value, getOptionName, getOptionId);
16971
+ }
16972
+
16973
+ // Map option id selection to option object selection.
16974
+ const handleSelect = useCallback(selectedOption => {
16975
+ const selectedValue = selectedOption.value;
16976
+ const newOption = selectedValue && options?.find(option => getWithSelector$1(getOptionId, option) === selectedValue);
16977
+ if (!isMultiple) {
16978
+ onChange?.(newOption);
16979
+ } else {
16980
+ const currentValue = value || [];
16981
+ const existingIndex = currentValue.findIndex(item => getWithSelector$1(getOptionId, item) === selectedValue);
16982
+ if (existingIndex === -1) {
16983
+ // Skip if no matching option found (e.g. beforeOptions custom actions).
16984
+ if (newOption) {
16985
+ onChange?.([...currentValue, newOption]);
16986
+ }
16987
+ } else {
16988
+ // Remove option (toggle off)
16989
+ const updated = [...currentValue];
16990
+ updated.splice(existingIndex, 1);
16991
+ onChange?.(updated);
16992
+ }
16993
+ }
16994
+
16995
+ // Reset search state after selection.
16996
+ setIsSearching(false);
16997
+ setSearchText('');
16998
+ onSearch?.('');
16999
+ }, [getOptionId, isMultiple, onChange, onSearch, options, value]);
17000
+
17001
+ // Handle text input changes (search).
17002
+ const handleInputChange = useCallback(inputValue => {
17003
+ setIsSearching(true);
17004
+ setSearchText(inputValue);
17005
+ onSearch?.(inputValue);
17006
+
17007
+ // When the user clears the input (single mode only), clear the selection too.
17008
+ if (!isMultiple && inputValue === '' && value !== undefined && value !== null) {
17009
+ onChange?.(undefined);
17010
+ }
17011
+ }, [isMultiple, onChange, onSearch, value]);
17012
+
17013
+ // Handle clear button click (single mode only).
17014
+ const handleClear = useCallback(event => {
17015
+ // Prevent the clear event from being handled as a regular input change.
17016
+ event?.stopPropagation();
17017
+ onChange?.(undefined);
17018
+ setIsSearching(false);
17019
+ setSearchText('');
17020
+ onSearch?.('');
17021
+ externalOnClear?.(event);
17022
+ }, [onChange, onSearch, externalOnClear]);
17023
+
17024
+ // Handle blur: reset input to selected value name, then call consumer's onBlur.
17025
+ const handleBlur = useCallback(event => {
17026
+ setIsSearching(false);
17027
+ setSearchText('');
17028
+ onSearch?.('');
17029
+ externalOnBlur?.(event);
17030
+ }, [externalOnBlur, onSearch]);
17031
+ const showClear = !isMultiple && !isAnyDisabled && hasClearButton && value !== undefined && value !== null;
17032
+ const chips = isMultiple ? /*#__PURE__*/jsx(SelectionChipGroup, {
17033
+ value: value,
17034
+ theme: theme,
17035
+ getOptionId: getOptionId,
17036
+ getOptionName: getOptionName,
17037
+ onChange: onChange,
17038
+ inputRef: localInputRef,
17039
+ isDisabled: isAnyDisabled,
17040
+ label: translations.chipGroupLabel ?? label,
17041
+ chipRemoveLabel: translations.chipRemoveLabel,
17042
+ renderChip: renderChip,
17043
+ getChipProps: getChipProps
17044
+ }) : undefined;
17045
+
17046
+ // The core template is not generic, so we cast selectors when forwarding to UI().
17047
+ return SelectTextField$2({
17048
+ options,
17049
+ getOptionId: getOptionId,
17050
+ getOptionName: getOptionName,
17051
+ getOptionDescription: getOptionDescription,
17052
+ renderOption: wrappedRenderOption,
17053
+ getSectionId: getSectionId,
17054
+ renderSectionTitle: renderSectionTitle,
17055
+ selected: value,
17056
+ label,
17057
+ isMultiselectable: isMultiple,
17058
+ listStatus,
17059
+ onOpen,
17060
+ loadingMessage: translations.loadingMessage,
17061
+ emptyMessage: translations.emptyMessage,
17062
+ nbOptionMessage: translations.nbOptionMessage,
17063
+ errorMessage: translations.errorMessage,
17064
+ errorTryReloadMessage: translations.errorTryReloadMessage,
17065
+ inputProps: {
17066
+ ...consumerInputProps,
17067
+ placeholder,
17068
+ icon,
17069
+ value: displayValue,
17070
+ onChange: handleInputChange,
17071
+ onSelect: handleSelect,
17072
+ onBlur: handleBlur,
17073
+ onFocus,
17074
+ onKeyDown,
17075
+ inputRef: mergedInputRef,
17076
+ isDisabled,
17077
+ 'aria-disabled': ariaDisabled,
17078
+ isRequired,
17079
+ hasError,
17080
+ error,
17081
+ helper,
17082
+ id,
17083
+ name,
17084
+ isValid,
17085
+ maxLength,
17086
+ 'aria-label': ariaLabel,
17087
+ clearButtonProps: showClear ? {
17088
+ label: translations.clearLabel
17089
+ } : undefined,
17090
+ onClear: handleClear,
17091
+ toggleButtonProps: translations.showSuggestionsLabel ? {
17092
+ label: translations.showSuggestionsLabel
17093
+ } : undefined,
17094
+ filter,
17095
+ openOnFocus,
17096
+ className,
17097
+ theme
17098
+ },
17099
+ popoverProps,
17100
+ listProps: {
17101
+ ref: setListElement
17102
+ },
17103
+ chips,
17104
+ beforeOptions,
17105
+ onLoadMore,
17106
+ infiniteScrollOptions: {
17107
+ root: listElement,
17108
+ rootMargin: '100px'
17109
+ }
17110
+ }, {
17111
+ Combobox,
17112
+ InfiniteScroll
17113
+ });
17114
+ };
17115
+ SelectTextField$1.displayName = 'SelectTextField';
17116
+
17117
+ /**
17118
+ * SelectTextField compound component.
17119
+ */
17120
+ const SelectTextField = Object.assign(SelectTextField$1, {
17121
+ /** Selectable option within the dropdown list. */
17122
+ Option: ComboboxOption,
17123
+ /** Labelled group of options. */
17124
+ Section: ComboboxSection,
17125
+ /** Info icon on an option that reveals a popover with additional details. */
17126
+ OptionMoreInfo: ComboboxOptionMoreInfo,
17127
+ /** Skeleton loading placeholder for options being fetched. */
17128
+ OptionSkeleton: ComboboxOptionSkeleton,
17129
+ /** Visual separator between option groups (alias for ListDivider). Purely decorative — invisible to screen readers. */
17130
+ Divider: ListDivider
17131
+ });
17132
+
16530
17133
  /**
16531
17134
  * Component display name.
16532
17135
  */
@@ -16902,9 +17505,9 @@ const SkeletonTypography = forwardRef((props, ref) => {
16902
17505
  ...forwardedProps
16903
17506
  });
16904
17507
  });
16905
- SkeletonTypography.displayName = COMPONENT_NAME$13;
17508
+ SkeletonTypography.displayName = COMPONENT_NAME$14;
16906
17509
  SkeletonTypography.defaultProps = DEFAULT_PROPS$i;
16907
- SkeletonTypography.className = CLASSNAME$12;
17510
+ SkeletonTypography.className = CLASSNAME$13;
16908
17511
 
16909
17512
  /**
16910
17513
  * Clamp value in range.
@@ -20107,5 +20710,5 @@ UserBlock.displayName = COMPONENT_NAME;
20107
20710
  UserBlock.className = CLASSNAME;
20108
20711
  UserBlock.defaultProps = DEFAULT_PROPS;
20109
20712
 
20110
- export { AlertDialog, Autocomplete, AutocompleteMultiple, Avatar, Badge, BadgeWrapper, Button, ButtonGroup, CLASSNAME$1p as CLASSNAME, COMPONENT_NAME$1q as COMPONENT_NAME, Checkbox, Chip, ChipGroup, Combobox, CommentBlock, CommentBlockVariant, DEFAULT_PROPS$1b as DEFAULT_PROPS, DatePicker, DatePickerControlled, DatePickerField, Dialog, Divider, DragHandle, Dropdown, ExpansionPanel, Flag, FlexBox, GenericBlock, GenericBlockGapSize, Grid, GridColumn, GridItem, Heading, HeadingLevelProvider, Icon, IconButton, ImageBlock, ImageBlockCaptionPosition, ImageLightbox, InlineList, InputHelper, InputLabel, Lightbox, Link, LinkPreview, List, ListDivider, ListItem, ListSection, ListSubheader, Message, Mosaic, Navigation, Notification, Placement, Popover, PopoverDialog, PostBlock, Progress, ProgressCircular, ProgressLinear, ProgressTracker, ProgressTrackerProvider, ProgressTrackerStep, ProgressTrackerStepPanel, ProgressVariant, RadioButton, RadioGroup, RawInputText, RawInputTextarea, Select, SelectMultiple, SelectMultipleField, SelectVariant, SelectionChipGroup, SideNavigation, SideNavigationItem, SkeletonCircle, SkeletonRectangle, SkeletonRectangleVariant, SkeletonTypography, Slider, Slides, Slideshow, SlideshowControls, SlideshowItem, Switch, Tab, TabList, TabListLayout, TabPanel, TabProvider, Table, TableBody, TableCell, TableCellVariant, TableHeader, TableRow, Text, TextField, ThOrder, ThemeProvider, Thumbnail, ThumbnailAspectRatio, ThumbnailObjectFit, ThumbnailVariant, Toolbar, Tooltip, Uploader, UploaderVariant, UserBlock, clamp, useFocusPointStyle, useHeadingLevel, useTheme };
20713
+ export { AlertDialog, Autocomplete, AutocompleteMultiple, Avatar, Badge, BadgeWrapper, Button, ButtonGroup, CLASSNAME$1q as CLASSNAME, COMPONENT_NAME$1r as COMPONENT_NAME, Checkbox, Chip, ChipGroup, Combobox, CommentBlock, CommentBlockVariant, DEFAULT_PROPS$1b as DEFAULT_PROPS, DatePicker, DatePickerControlled, DatePickerField, Dialog, Divider, DragHandle, Dropdown, ExpansionPanel, Flag, FlexBox, GenericBlock, GenericBlockGapSize, Grid, GridColumn, GridItem, Heading, HeadingLevelProvider, Icon, IconButton, ImageBlock, ImageBlockCaptionPosition, ImageLightbox, InlineList, InputHelper, InputLabel, Lightbox, Link, LinkPreview, List, ListDivider, ListItem, ListSection, ListSubheader, Message, Mosaic, Navigation, Notification, Placement, Popover, PopoverDialog, PostBlock, Progress, ProgressCircular, ProgressLinear, ProgressTracker, ProgressTrackerProvider, ProgressTrackerStep, ProgressTrackerStepPanel, ProgressVariant, RadioButton, RadioGroup, RawInputText, RawInputTextarea, Select, SelectMultiple, SelectMultipleField, SelectTextField, SelectVariant, SelectionChipGroup, SideNavigation, SideNavigationItem, SkeletonCircle, SkeletonRectangle, SkeletonRectangleVariant, SkeletonTypography, Slider, Slides, Slideshow, SlideshowControls, SlideshowItem, Switch, Tab, TabList, TabListLayout, TabPanel, TabProvider, Table, TableBody, TableCell, TableCellVariant, TableHeader, TableRow, Text, TextField, ThOrder, ThemeProvider, Thumbnail, ThumbnailAspectRatio, ThumbnailObjectFit, ThumbnailVariant, Toolbar, Tooltip, Uploader, UploaderVariant, UserBlock, clamp, useFocusPointStyle, useHeadingLevel, useTheme };
20111
20714
  //# sourceMappingURL=index.js.map