@lumx/react 4.2.0 → 4.2.1-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
@@ -1,4 +1,4 @@
1
- import { Kind as Kind$1, Size as Size$1, ColorPalette as ColorPalette$1, Emphasis as Emphasis$1, Theme as Theme$1, AspectRatio, ColorVariant, DIALOG_TRANSITION_DURATION, Orientation, Typography, Alignment, NOTIFICATION_TRANSITION_DURATION, TOOLTIP_LONG_PRESS_DELAY, TOOLTIP_HOVER_DELAY } from '@lumx/core/js/constants';
1
+ import { Kind as Kind$1, Size as Size$1, ColorPalette as ColorPalette$1, Emphasis as Emphasis$1, Theme as Theme$1, AspectRatio, ColorVariant, DIALOG_TRANSITION_DURATION, Orientation, Alignment, NOTIFICATION_TRANSITION_DURATION, TOOLTIP_LONG_PRESS_DELAY, TOOLTIP_HOVER_DELAY } from '@lumx/core/js/constants';
2
2
  export * from '@lumx/core/js/constants';
3
3
  export * from '@lumx/core/js/types';
4
4
  import * as React from 'react';
@@ -7,9 +7,6 @@ import { mdiAlert } from '@lumx/icons/esm/alert';
7
7
  import { mdiAlertCircle } from '@lumx/icons/esm/alert-circle';
8
8
  import { mdiCheckCircle } from '@lumx/icons/esm/check-circle';
9
9
  import { mdiInformation } from '@lumx/icons/esm/information';
10
- import isBoolean from 'lodash/isBoolean';
11
- import isEmpty from 'lodash/isEmpty';
12
- import kebabCase from 'lodash/kebabCase';
13
10
  import { classNames, onEnterPressed, onEscapePressed, onButtonPressed, detectHorizontalSwipe } from '@lumx/core/js/utils';
14
11
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
15
12
  import last from 'lodash/last';
@@ -20,6 +17,7 @@ import dropRight from 'lodash/dropRight';
20
17
  import partition from 'lodash/partition';
21
18
  import reduce from 'lodash/reduce';
22
19
  import { u as useDisabledStateContext, P as Portal, C as ClickAwayProvider } from './_internal/DpdvhbTO.js';
20
+ import isEmpty from 'lodash/isEmpty';
23
21
  import { getDisabledState } from '@lumx/core/js/utils/disabledState';
24
22
  import { mdiCloseCircle } from '@lumx/icons/esm/close-circle';
25
23
  import memoize from 'lodash/memoize';
@@ -53,147 +51,6 @@ import { mdiArrowDown } from '@lumx/icons/esm/arrow-down';
53
51
  import { mdiArrowUp } from '@lumx/icons/esm/arrow-up';
54
52
  import set from 'lodash/set';
55
53
 
56
- function getDefaultExportFromCjs (x) {
57
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
58
- }
59
-
60
- var classnames$1 = {exports: {}};
61
-
62
- /*!
63
- Copyright (c) 2018 Jed Watson.
64
- Licensed under the MIT License (MIT), see
65
- http://jedwatson.github.io/classnames
66
- */
67
-
68
- var hasRequiredClassnames;
69
-
70
- function requireClassnames () {
71
- if (hasRequiredClassnames) return classnames$1.exports;
72
- hasRequiredClassnames = 1;
73
- (function (module) {
74
- /* global define */
75
-
76
- (function () {
77
-
78
- var hasOwn = {}.hasOwnProperty;
79
-
80
- function classNames() {
81
- var classes = [];
82
-
83
- for (var i = 0; i < arguments.length; i++) {
84
- var arg = arguments[i];
85
- if (!arg) continue;
86
-
87
- var argType = typeof arg;
88
-
89
- if (argType === 'string' || argType === 'number') {
90
- classes.push(arg);
91
- } else if (Array.isArray(arg)) {
92
- if (arg.length) {
93
- var inner = classNames.apply(null, arg);
94
- if (inner) {
95
- classes.push(inner);
96
- }
97
- }
98
- } else if (argType === 'object') {
99
- if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
100
- classes.push(arg.toString());
101
- continue;
102
- }
103
-
104
- for (var key in arg) {
105
- if (hasOwn.call(arg, key) && arg[key]) {
106
- classes.push(key);
107
- }
108
- }
109
- }
110
- }
111
-
112
- return classes.join(' ');
113
- }
114
-
115
- if (module.exports) {
116
- classNames.default = classNames;
117
- module.exports = classNames;
118
- } else {
119
- window.classNames = classNames;
120
- }
121
- }());
122
- } (classnames$1));
123
- return classnames$1.exports;
124
- }
125
-
126
- var classnamesExports = requireClassnames();
127
- var classnames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
128
-
129
- /**
130
- * Get the basic CSS class for the given type.
131
- *
132
- * @param prefix The class name prefix for the generated CSS class.
133
- * @param type The type of CSS class we want to generate (e.g.: 'color', 'variant', ...).
134
- * @param value The value of the type of the CSS class (e.g.: 'primary', 'button', ...).
135
- * @return The basic CSS class.
136
- */
137
- function getBasicClass({
138
- prefix,
139
- type,
140
- value
141
- }) {
142
- if (isBoolean(value)) {
143
- if (!value) {
144
- // False value should not return a class.
145
- return '';
146
- }
147
- const booleanPrefixes = ['has', 'is'];
148
- if (booleanPrefixes.some(booleanPrefix => type.toString().startsWith(booleanPrefix))) {
149
- return `${prefix}--${kebabCase(type)}`;
150
- }
151
- return `${prefix}--is-${kebabCase(type)}`;
152
- }
153
- return `${prefix}--${kebabCase(type)}-${value}`;
154
- }
155
-
156
- /**
157
- * Enhance isEmpty method to also works with numbers.
158
- *
159
- * @param value The value to check.
160
- * @return Whether the input value is empty or != 0.
161
- */
162
- const _isEmpty = value => {
163
- if (typeof value === 'number') {
164
- return value === 0;
165
- }
166
- return isEmpty(value);
167
- };
168
-
169
- /**
170
- * Return all basic LumX CSS classes which are available for every components.
171
- *
172
- * @see {@link /src/components/index.d.ts} for the possible values of each parameter.
173
- *
174
- * @param prefix The class name prefix for the generated CSS class.
175
- * @param props All the other props you want to generate a class.
176
- * The rule of thumb: the key is the name of the prop in the class, the value a string that will
177
- * be used in the classname to represent the value of the given prop.
178
- * @return All LumX basic CSS classes.
179
- */
180
- function handleBasicClasses({
181
- prefix,
182
- ...props
183
- }) {
184
- const otherClasses = {};
185
- if (!isEmpty(props)) {
186
- Object.keys(props).forEach(prop => {
187
- otherClasses[getBasicClass({
188
- prefix,
189
- type: prop,
190
- value: props[prop]
191
- })] = isBoolean(props[prop]) ? props[prop] : !_isEmpty(props[prop]);
192
- });
193
- }
194
- return classnames(prefix, otherClasses);
195
- }
196
-
197
54
  let i = 0;
198
55
 
199
56
  /**
@@ -244,6 +101,9 @@ const COMPONENT_NAME$1k = 'AlertDialog';
244
101
  * Component default class name and class prefix.
245
102
  */
246
103
  const CLASSNAME$1i = 'lumx-alert-dialog';
104
+ const {
105
+ block: block$13
106
+ } = classNames.bem(CLASSNAME$1i);
247
107
 
248
108
  /**
249
109
  * Component default props.
@@ -311,9 +171,8 @@ const AlertDialog = forwardRef((props, ref) => {
311
171
  'aria-describedby': descriptionId,
312
172
  ...dialogProps
313
173
  },
314
- className: classNames.join(className, handleBasicClasses({
315
- kind,
316
- prefix: CLASSNAME$1i
174
+ className: classNames.join(className, block$13({
175
+ [`kind-${kind}`]: Boolean(kind)
317
176
  })),
318
177
  ...forwardedProps,
319
178
  children: [/*#__PURE__*/jsx("header", {
@@ -701,6 +560,10 @@ const COMPONENT_NAME$1h = 'Avatar';
701
560
  * Component default class name and class prefix.
702
561
  */
703
562
  const CLASSNAME$1f = 'lumx-avatar';
563
+ const {
564
+ block: block$12,
565
+ element: element$M
566
+ } = classNames.bem(CLASSNAME$1f);
704
567
 
705
568
  /**
706
569
  * Component default props.
@@ -736,15 +599,14 @@ const Avatar = forwardRef((props, ref) => {
736
599
  return /*#__PURE__*/jsxs("div", {
737
600
  ref: ref,
738
601
  ...forwardedProps,
739
- className: classNames.join(className, handleBasicClasses({
740
- prefix: CLASSNAME$1f,
741
- size,
742
- theme
602
+ className: classNames.join(className, block$12({
603
+ [`size-${size}`]: Boolean(size),
604
+ [`theme-${theme}`]: Boolean(theme)
743
605
  })),
744
606
  children: [/*#__PURE__*/jsx(Thumbnail, {
745
607
  linkProps: linkProps,
746
608
  linkAs: linkAs,
747
- className: `${CLASSNAME$1f}__thumbnail`,
609
+ className: element$M('thumbnail'),
748
610
  onClick: onClick,
749
611
  onKeyPress: onKeyPress,
750
612
  ...thumbnailProps,
@@ -754,10 +616,10 @@ const Avatar = forwardRef((props, ref) => {
754
616
  alt: alt,
755
617
  theme: theme
756
618
  }), actions && /*#__PURE__*/jsx("div", {
757
- className: `${CLASSNAME$1f}__actions`,
619
+ className: element$M('actions'),
758
620
  children: actions
759
621
  }), badge && /*#__PURE__*/jsx("div", {
760
- className: `${CLASSNAME$1f}__badge`,
622
+ className: element$M('badge'),
761
623
  children: badge
762
624
  })]
763
625
  });
@@ -775,6 +637,9 @@ const COMPONENT_NAME$1g = 'Badge';
775
637
  * Component default class name and class prefix.
776
638
  */
777
639
  const CLASSNAME$1e = 'lumx-badge';
640
+ const {
641
+ block: block$11
642
+ } = classNames.bem(CLASSNAME$1e);
778
643
 
779
644
  /**
780
645
  * Component default props.
@@ -800,9 +665,8 @@ const Badge = forwardRef((props, ref) => {
800
665
  return /*#__PURE__*/jsx("div", {
801
666
  ref: ref,
802
667
  ...forwardedProps,
803
- className: classNames.join(className, handleBasicClasses({
804
- prefix: CLASSNAME$1e,
805
- color
668
+ className: classNames.join(className, block$11({
669
+ [`color-${color}`]: Boolean(color)
806
670
  })),
807
671
  children: children
808
672
  });
@@ -815,6 +679,10 @@ Badge.defaultProps = DEFAULT_PROPS$12;
815
679
  * Component default class name and class prefix.
816
680
  */
817
681
  const CLASSNAME$1d = 'lumx-badge-wrapper';
682
+ const {
683
+ block: block$10,
684
+ element: element$L
685
+ } = classNames.bem(CLASSNAME$1d);
818
686
  const BadgeWrapper = forwardRef((props, ref) => {
819
687
  const {
820
688
  badge,
@@ -825,9 +693,9 @@ const BadgeWrapper = forwardRef((props, ref) => {
825
693
  return /*#__PURE__*/jsxs("div", {
826
694
  ref: ref,
827
695
  ...forwardedProps,
828
- className: classNames.join(className, CLASSNAME$1d),
696
+ className: classNames.join(className, block$10()),
829
697
  children: [children, badge && /*#__PURE__*/jsx("div", {
830
- className: `${CLASSNAME$1d}__badge`,
698
+ className: element$L('badge'),
831
699
  children: badge
832
700
  })]
833
701
  });
@@ -853,6 +721,25 @@ const Emphasis = {
853
721
  low: 'low',
854
722
  high: 'high'
855
723
  };
724
+ /**
725
+ * List of typographies that can't be customized.
726
+ */
727
+ const TypographyInterface = {
728
+ overline: 'overline',
729
+ caption: 'caption',
730
+ body1: 'body1',
731
+ body2: 'body2',
732
+ subtitle1: 'subtitle1',
733
+ subtitle2: 'subtitle2',
734
+ title: 'title',
735
+ headline: 'headline',
736
+ display1: 'display1'
737
+ };
738
+ /**
739
+ * List of all typographies.
740
+ */
741
+ const Typography = {
742
+ ...TypographyInterface};
856
743
  /**
857
744
  * Semantic info about the purpose of the component
858
745
  */
@@ -867,12 +754,88 @@ const Kind = {
867
754
  */
868
755
  const ColorPalette = {
869
756
  primary: 'primary',
757
+ blue: 'blue',
870
758
  dark: 'dark',
759
+ green: 'green',
871
760
  yellow: 'yellow',
761
+ red: 'red',
872
762
  light: 'light'};
873
763
 
874
764
  /** ColorPalette with all possible color variant combination */
875
765
 
766
+ function getDefaultExportFromCjs (x) {
767
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
768
+ }
769
+
770
+ var classnames$1 = {exports: {}};
771
+
772
+ /*!
773
+ Copyright (c) 2018 Jed Watson.
774
+ Licensed under the MIT License (MIT), see
775
+ http://jedwatson.github.io/classnames
776
+ */
777
+
778
+ var hasRequiredClassnames;
779
+
780
+ function requireClassnames () {
781
+ if (hasRequiredClassnames) return classnames$1.exports;
782
+ hasRequiredClassnames = 1;
783
+ (function (module) {
784
+ /* global define */
785
+
786
+ (function () {
787
+
788
+ var hasOwn = {}.hasOwnProperty;
789
+
790
+ function classNames() {
791
+ var classes = [];
792
+
793
+ for (var i = 0; i < arguments.length; i++) {
794
+ var arg = arguments[i];
795
+ if (!arg) continue;
796
+
797
+ var argType = typeof arg;
798
+
799
+ if (argType === 'string' || argType === 'number') {
800
+ classes.push(arg);
801
+ } else if (Array.isArray(arg)) {
802
+ if (arg.length) {
803
+ var inner = classNames.apply(null, arg);
804
+ if (inner) {
805
+ classes.push(inner);
806
+ }
807
+ }
808
+ } else if (argType === 'object') {
809
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
810
+ classes.push(arg.toString());
811
+ continue;
812
+ }
813
+
814
+ for (var key in arg) {
815
+ if (hasOwn.call(arg, key) && arg[key]) {
816
+ classes.push(key);
817
+ }
818
+ }
819
+ }
820
+ }
821
+
822
+ return classes.join(' ');
823
+ }
824
+
825
+ if (module.exports) {
826
+ classNames.default = classNames;
827
+ module.exports = classNames;
828
+ } else {
829
+ window.classNames = classNames;
830
+ }
831
+ }());
832
+ } (classnames$1));
833
+ return classnames$1.exports;
834
+ }
835
+
836
+ var classnamesExports = requireClassnames();
837
+ var classnames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
838
+
876
839
  /** Resolve color & color variant from a `ColorWithVariants` and optionally a `ColorVariant`. */
877
840
  function resolveColorWithVariants(colorWithVariants, colorVariant) {
878
841
  if (!colorWithVariants) return [undefined, colorVariant];
@@ -923,6 +886,108 @@ function typography(typo) {
923
886
  return `lumx-typography-${typo}`;
924
887
  }
925
888
 
889
+ /**
890
+ * Modifier
891
+ * @example { 'is-disabled': true, 'is-selected': false }
892
+ */
893
+
894
+ /**
895
+ * Generates BEM modifier class names.
896
+ *
897
+ * @param baseName The base BEM class to attach modifiers to.
898
+ * @param modifiers Map of modifier names to boolean values.
899
+ * @returns Combined modifier class names string.
900
+ *
901
+ * @example
902
+ * modifier('button', { active: true }); // 'button--active'
903
+ * modifier('button', { active: true, disabled: false }); // 'button--active'
904
+ */
905
+ function modifier$1(baseName, modifiers) {
906
+ const modifierClasses = [];
907
+ for (const [key, value] of Object.entries(modifiers)) {
908
+ if (value) modifierClasses.push(`${baseName}--${key}`);
909
+ }
910
+ return modifierClasses.join(' ');
911
+ }
912
+
913
+ /**
914
+ * Generates a BEM block + modifier class name string.
915
+ * Combines a base class with optional modifiers and additional classes.
916
+ *
917
+ * @param baseName The base BEM class
918
+ * @param modifier Optional modifiers
919
+ * @returns Combined class name string
920
+ *
921
+ * @example
922
+ * block('button'); // 'button'
923
+ * block('button', { active: true, disabled: false }); // 'button button--active'
924
+ */
925
+
926
+ function block$$(baseName, modifiersOrAdditionalClasses, additionalClasses) {
927
+ let modifiers;
928
+ let classes;
929
+ if (Array.isArray(modifiersOrAdditionalClasses)) {
930
+ classes = modifiersOrAdditionalClasses;
931
+ } else {
932
+ modifiers = modifiersOrAdditionalClasses;
933
+ classes = additionalClasses;
934
+ }
935
+ if (!modifiers && !classes) {
936
+ return baseName;
937
+ }
938
+ return classnames(
939
+ // Additional classes
940
+ classes,
941
+ // Base class
942
+ baseName,
943
+ // Modifier(s)
944
+ modifiers ? modifier$1(baseName, modifiers) : null);
945
+ }
946
+
947
+ /**
948
+ * Creates a BEM element class generator function for the given base class.
949
+ * Returns a function that generates BEM element class names with optional modifiers.
950
+ *
951
+ * @param baseClass The base BEM block class name (e.g., 'button', 'card')
952
+ * @param elem The BEM element name (e.g., 'icon', 'title')
953
+ * @param modifier Optional BEM modifier ()
954
+ * @returns combined BEM element class name
955
+ *
956
+ * @example
957
+ * element('my-button', 'icon'); // 'my-button__icon'
958
+ * element('my-button', 'icon', { active: true }); // 'my-button__icon my-button__icon--active'
959
+ */
960
+
961
+ function element$K(baseClass, elem, modifiersOrAdditionalClasses, additionalClasses) {
962
+ if (Array.isArray(modifiersOrAdditionalClasses)) {
963
+ return block$$(`${baseClass}__${elem}`, modifiersOrAdditionalClasses);
964
+ }
965
+ return block$$(`${baseClass}__${elem}`, modifiersOrAdditionalClasses, additionalClasses);
966
+ }
967
+
968
+ /**
969
+ * Setup BEM block & element generation for a given base name.
970
+ */
971
+ function bem(baseName) {
972
+ function blockFn(modifiersOrAdditionalClasses, additionalClasses) {
973
+ if (Array.isArray(modifiersOrAdditionalClasses)) {
974
+ return block$$(baseName, modifiersOrAdditionalClasses);
975
+ }
976
+ return block$$(baseName, modifiersOrAdditionalClasses, additionalClasses);
977
+ }
978
+ function elementFn(elem, modifiersOrAdditionalClasses, additionalClasses) {
979
+ if (Array.isArray(modifiersOrAdditionalClasses)) {
980
+ return element$K(baseName, elem, modifiersOrAdditionalClasses);
981
+ }
982
+ return element$K(baseName, elem, modifiersOrAdditionalClasses, additionalClasses);
983
+ }
984
+ return {
985
+ block: blockFn,
986
+ element: elementFn,
987
+ modifier: modifiers => modifier$1(baseName, modifiers)
988
+ };
989
+ }
990
+
926
991
  /**
927
992
  * Render clickable element (link, button or custom element)
928
993
  * (also does some basic disabled state handling)
@@ -971,7 +1036,13 @@ const RawClickable$1 = props => {
971
1036
  */
972
1037
  const COMPONENT_NAME$1f = 'ButtonRoot';
973
1038
  const BUTTON_WRAPPER_CLASSNAME = `lumx-button-wrapper`;
1039
+ const {
1040
+ block: buttonWrapperBlock
1041
+ } = bem(BUTTON_WRAPPER_CLASSNAME);
974
1042
  const BUTTON_CLASSNAME = `lumx-button`;
1043
+ const {
1044
+ block: buttonBlock
1045
+ } = bem(BUTTON_CLASSNAME);
975
1046
 
976
1047
  /**
977
1048
  * Render a button wrapper with the ButtonRoot inside.
@@ -987,12 +1058,11 @@ const renderButtonWrapper = props => {
987
1058
  fullWidth
988
1059
  } = props;
989
1060
  const adaptedColor = emphasis === Emphasis.low && (color === ColorPalette.light ? ColorPalette.dark : ColorPalette.light);
990
- const wrapperClassName = classnames(handleBasicClasses({
991
- color: adaptedColor,
992
- prefix: BUTTON_WRAPPER_CLASSNAME,
993
- variant,
994
- fullWidth
995
- }));
1061
+ const wrapperClassName = buttonWrapperBlock({
1062
+ [`color-${adaptedColor}`]: Boolean(adaptedColor),
1063
+ [`variant-${variant}`]: Boolean(variant),
1064
+ 'is-full-width': fullWidth
1065
+ });
996
1066
  const buttonProps = {
997
1067
  ...props,
998
1068
  hasBackground: false
@@ -1039,19 +1109,18 @@ const ButtonRoot = props => {
1039
1109
  color: adaptedColor
1040
1110
  });
1041
1111
  }
1042
- const buttonClassName = classnames(className, handleBasicClasses({
1043
- color: adaptedColor,
1044
- emphasis,
1045
- isSelected,
1046
- isDisabled: props.isDisabled || props['aria-disabled'],
1047
- isActive,
1048
- isFocused,
1049
- isHovered,
1050
- prefix: BUTTON_CLASSNAME,
1051
- size,
1052
- theme: emphasis === Emphasis.high && theme,
1053
- variant,
1054
- fullWidth
1112
+ const buttonClassName = classnames(className, buttonBlock({
1113
+ [`color-${adaptedColor}`]: Boolean(adaptedColor),
1114
+ [`emphasis-${emphasis}`]: Boolean(emphasis),
1115
+ 'is-selected': isSelected,
1116
+ 'is-disabled': Boolean(props.isDisabled || props['aria-disabled']),
1117
+ 'is-active': isActive,
1118
+ 'is-focused': isFocused,
1119
+ 'is-hovered': isHovered,
1120
+ [`size-${size}`]: Boolean(size),
1121
+ [`theme-${theme}`]: Boolean(emphasis === Emphasis.high && theme),
1122
+ [`variant-${variant}`]: Boolean(variant),
1123
+ 'is-full-width': fullWidth
1055
1124
  }));
1056
1125
  return RawClickable$1({
1057
1126
  as: linkAs || (forwardedProps.href ? 'a' : 'button'),
@@ -1079,6 +1148,9 @@ const COMPONENT_NAME$1e = 'Button';
1079
1148
  * Component default class name and class prefix.
1080
1149
  */
1081
1150
  const CLASSNAME$1c = 'lumx-button';
1151
+ const {
1152
+ modifier
1153
+ } = bem(CLASSNAME$1c);
1082
1154
 
1083
1155
  /**
1084
1156
  * Component default props.
@@ -1103,14 +1175,9 @@ const Button$1 = props => {
1103
1175
  size = DEFAULT_PROPS$11.size,
1104
1176
  ...forwardedProps
1105
1177
  } = props;
1106
- const buttonClassName = classnames(className, getBasicClass({
1107
- prefix: CLASSNAME$1c,
1108
- type: 'hasLeftIcon',
1109
- value: !isEmpty(leftIcon)
1110
- }), getBasicClass({
1111
- prefix: CLASSNAME$1c,
1112
- type: 'hasRightIcon',
1113
- value: !isEmpty(rightIcon)
1178
+ const buttonClassName = classnames(className, modifier({
1179
+ 'has-left-icon': Boolean(leftIcon),
1180
+ 'has-right-icon': Boolean(rightIcon)
1114
1181
  }));
1115
1182
  return ButtonRoot({
1116
1183
  emphasis,
@@ -1200,6 +1267,9 @@ const IconClassName = 'lumx-icon';
1200
1267
  */
1201
1268
 
1202
1269
  const CLASSNAME$1b = IconClassName;
1270
+ const {
1271
+ block: block$_
1272
+ } = bem(CLASSNAME$1b);
1203
1273
 
1204
1274
  /**
1205
1275
  * Component default props.
@@ -1253,15 +1323,17 @@ const Icon$1 = props => {
1253
1323
  return /*#__PURE__*/jsx("i", {
1254
1324
  ref: ref,
1255
1325
  ...forwardedProps,
1256
- className: classnames(className, handleBasicClasses({
1257
- color: iconColor,
1258
- colorVariant: iconColorVariant,
1259
- hasShape,
1260
- prefix: CLASSNAME$1b,
1261
- theme,
1262
- size: iconSize,
1263
- verticalAlign
1264
- }), !hasShape && `${CLASSNAME$1b}--no-shape`, !hasShape && iconColor === ColorPalette.yellow && icon === mdiAlertCircle && `${CLASSNAME$1b}--has-dark-layer`, `${CLASSNAME$1b}--path`),
1326
+ className: classnames(className, block$_({
1327
+ [`color-${iconColor}`]: Boolean(iconColor),
1328
+ [`color-variant-${iconColorVariant}`]: Boolean(iconColorVariant),
1329
+ 'has-shape': hasShape,
1330
+ [`theme-${theme}`]: Boolean(theme),
1331
+ [`size-${iconSize}`]: Boolean(iconSize),
1332
+ 'no-shape': !hasShape,
1333
+ 'has-dark-layer': Boolean(!hasShape && iconColor === ColorPalette.yellow && icon === mdiAlertCircle),
1334
+ path: true,
1335
+ 'vertical-align-middle': verticalAlign === 'middle'
1336
+ })),
1265
1337
  children: /*#__PURE__*/jsx("svg", {
1266
1338
  "aria-hidden": alt ? undefined : 'true',
1267
1339
  role: alt ? 'img' : undefined,
@@ -1393,8 +1465,7 @@ const DEFAULT_PROPS$_ = {};
1393
1465
  * ButtonGroup component.
1394
1466
  *
1395
1467
  * @param props Component props.
1396
- * @param ref Component ref.
1397
- * @return React element.
1468
+ * @return JSX element.
1398
1469
  */
1399
1470
  const ButtonGroup$1 = props => {
1400
1471
  const {
@@ -1444,6 +1515,10 @@ const COMPONENT_NAME$1a = 'Checkbox';
1444
1515
  * Component default class name and class prefix.
1445
1516
  */
1446
1517
  const CLASSNAME$18 = 'lumx-checkbox';
1518
+ const {
1519
+ block: block$Z,
1520
+ element: element$J
1521
+ } = classNames.bem(CLASSNAME$18);
1447
1522
 
1448
1523
  /**
1449
1524
  * Component default props.
@@ -1495,21 +1570,20 @@ const Checkbox = forwardRef((props, ref) => {
1495
1570
  return /*#__PURE__*/jsxs("div", {
1496
1571
  ref: ref,
1497
1572
  ...forwardedProps,
1498
- className: classNames.join(className, handleBasicClasses({
1573
+ className: classNames.join(className, block$Z({
1499
1574
  // Whether state is intermediate class name will "-checked"
1500
- isChecked: intermediateState ? true : isChecked,
1501
- isDisabled: isAnyDisabled,
1502
- isUnchecked: !isChecked,
1503
- prefix: CLASSNAME$18,
1504
- theme
1575
+ 'is-checked': intermediateState ? true : isChecked,
1576
+ 'is-disabled': isAnyDisabled,
1577
+ 'is-unchecked': !isChecked,
1578
+ [`theme-${theme}`]: Boolean(theme)
1505
1579
  })),
1506
1580
  children: [/*#__PURE__*/jsxs("div", {
1507
- className: `${CLASSNAME$18}__input-wrapper`,
1581
+ className: element$J('input-wrapper'),
1508
1582
  children: [/*#__PURE__*/jsx("input", {
1509
1583
  ref: useMergeRefs(inputRef, localInputRef),
1510
1584
  type: "checkbox",
1511
1585
  id: inputId,
1512
- className: `${CLASSNAME$18}__input-native`,
1586
+ className: element$J('input-native'),
1513
1587
  ...disabledStateProps,
1514
1588
  name: name,
1515
1589
  value: value,
@@ -1520,26 +1594,26 @@ const Checkbox = forwardRef((props, ref) => {
1520
1594
  readOnly: inputProps.readOnly || disabledStateProps['aria-disabled'],
1521
1595
  ...inputProps
1522
1596
  }), /*#__PURE__*/jsxs("div", {
1523
- className: `${CLASSNAME$18}__input-placeholder`,
1597
+ className: element$J('input-placeholder'),
1524
1598
  children: [/*#__PURE__*/jsx("div", {
1525
- className: `${CLASSNAME$18}__input-background`
1599
+ className: element$J('input-background')
1526
1600
  }), /*#__PURE__*/jsx("div", {
1527
- className: `${CLASSNAME$18}__input-indicator`,
1601
+ className: element$J('input-indicator'),
1528
1602
  children: /*#__PURE__*/jsx(Icon, {
1529
1603
  icon: intermediateState ? mdiMinus : mdiCheck
1530
1604
  })
1531
1605
  })]
1532
1606
  })]
1533
1607
  }), /*#__PURE__*/jsxs("div", {
1534
- className: `${CLASSNAME$18}__content`,
1608
+ className: element$J('content'),
1535
1609
  children: [label && /*#__PURE__*/jsx(InputLabel, {
1536
1610
  htmlFor: inputId,
1537
- className: `${CLASSNAME$18}__label`,
1611
+ className: element$J('label'),
1538
1612
  theme: theme,
1539
1613
  children: label
1540
1614
  }), helper && /*#__PURE__*/jsx(InputHelper, {
1541
1615
  id: `${inputId}-helper`,
1542
- className: `${CLASSNAME$18}__helper`,
1616
+ className: element$J('helper'),
1543
1617
  theme: theme,
1544
1618
  children: helper
1545
1619
  })]
@@ -1575,6 +1649,10 @@ const COMPONENT_NAME$19 = 'Chip';
1575
1649
  * Component default class name and class prefix.
1576
1650
  */
1577
1651
  const CLASSNAME$17 = 'lumx-chip';
1652
+ const {
1653
+ block: block$Y,
1654
+ element: element$I
1655
+ } = classNames.bem(CLASSNAME$17);
1578
1656
 
1579
1657
  /**
1580
1658
  * Component default props.
@@ -1640,17 +1718,16 @@ const Chip = forwardRef((props, ref) => {
1640
1718
  ...forwardedProps,
1641
1719
  href: !disabledStateProps.disabled ? href : undefined,
1642
1720
  ref: ref,
1643
- className: classNames.join(className, handleBasicClasses({
1644
- clickable: isClickable,
1645
- color: chipColor,
1646
- isDisabled: isAnyDisabled,
1647
- hasAfter: Boolean(after),
1648
- hasBefore: Boolean(before),
1649
- highlighted: Boolean(isHighlighted),
1650
- prefix: CLASSNAME$17,
1651
- selected: Boolean(isSelected),
1652
- size,
1653
- unselected: Boolean(!isSelected)
1721
+ className: classNames.join(className, block$Y({
1722
+ 'is-clickable': isClickable,
1723
+ [`color-${chipColor}`]: Boolean(chipColor),
1724
+ 'is-disabled': isAnyDisabled,
1725
+ 'has-after': Boolean(after),
1726
+ 'has-before': Boolean(before),
1727
+ 'is-highlighted': Boolean(isHighlighted),
1728
+ 'is-selected': Boolean(isSelected),
1729
+ [`size-${size}`]: Boolean(size),
1730
+ 'is-unselected': Boolean(!isSelected)
1654
1731
  })),
1655
1732
  "aria-disabled": isClickable && isAnyDisabled || undefined,
1656
1733
  onClick: hasOnClick ? onClick : undefined,
@@ -1659,20 +1736,20 @@ const Chip = forwardRef((props, ref) => {
1659
1736
  /*#__PURE__*/
1660
1737
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
1661
1738
  jsx("div", {
1662
- className: classNames.join(`${CLASSNAME$17}__before`, {
1663
- [`${CLASSNAME$17}__before--is-clickable`]: hasBeforeClick
1739
+ className: element$I('before', {
1740
+ 'is-clickable': hasBeforeClick
1664
1741
  }),
1665
1742
  onClick: handleOnBeforeClick,
1666
1743
  children: before
1667
1744
  }), /*#__PURE__*/jsx("div", {
1668
- className: `${CLASSNAME$17}__label`,
1745
+ className: element$I('label'),
1669
1746
  children: children
1670
1747
  }), after &&
1671
1748
  /*#__PURE__*/
1672
1749
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
1673
1750
  jsx("div", {
1674
- className: classNames.join(`${CLASSNAME$17}__after`, {
1675
- [`${CLASSNAME$17}__after--is-clickable`]: hasAfterClick
1751
+ className: element$I('after', {
1752
+ 'is-clickable': hasAfterClick
1676
1753
  }),
1677
1754
  onClick: handleOnAfterClick,
1678
1755
  children: after
@@ -1799,6 +1876,10 @@ const COMPONENT_NAME$17 = 'CommentBlock';
1799
1876
  * Component default class name and class prefix.
1800
1877
  */
1801
1878
  const CLASSNAME$15 = 'lumx-comment-block';
1879
+ const {
1880
+ block: block$X,
1881
+ element: element$H
1882
+ } = classNames.bem(CLASSNAME$15);
1802
1883
 
1803
1884
  /**
1804
1885
  * Component default props.
@@ -1839,64 +1920,63 @@ const CommentBlock = forwardRef((props, ref) => {
1839
1920
  const hasChildren = Children.count(children) > 0;
1840
1921
  return /*#__PURE__*/jsxs("div", {
1841
1922
  ref: ref,
1842
- className: classNames.join(className, handleBasicClasses({
1843
- hasChildren: hasChildren && isOpen,
1844
- hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,
1845
- hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,
1846
- isRelevant,
1847
- prefix: CLASSNAME$15,
1848
- theme
1923
+ className: classNames.join(className, block$X({
1924
+ 'has-children': hasChildren && isOpen,
1925
+ 'has-indented-children': hasChildren && variant === CommentBlockVariant.indented,
1926
+ 'has-linear-children': hasChildren && variant === CommentBlockVariant.linear,
1927
+ 'is-relevant': isRelevant,
1928
+ [`theme-${theme}`]: Boolean(theme)
1849
1929
  })),
1850
1930
  ...forwardedProps,
1851
1931
  children: [/*#__PURE__*/jsxs("div", {
1852
- className: `${CLASSNAME$15}__wrapper`,
1932
+ className: element$H('wrapper'),
1853
1933
  children: [/*#__PURE__*/jsx("div", {
1854
- className: `${CLASSNAME$15}__avatar`,
1934
+ className: element$H('avatar'),
1855
1935
  children: /*#__PURE__*/jsx(Avatar, {
1856
1936
  ...avatarProps,
1857
1937
  size: Size$1.m,
1858
1938
  onClick: onClick
1859
1939
  })
1860
1940
  }), /*#__PURE__*/jsxs("div", {
1861
- className: `${CLASSNAME$15}__container`,
1941
+ className: element$H('container'),
1862
1942
  children: [/*#__PURE__*/jsxs("div", {
1863
- className: `${CLASSNAME$15}__content`,
1943
+ className: element$H('content'),
1864
1944
  children: [/*#__PURE__*/jsxs("div", {
1865
- className: `${CLASSNAME$15}__meta`,
1945
+ className: element$H('meta'),
1866
1946
  children: [name &&
1867
1947
  /*#__PURE__*/
1868
1948
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
1869
1949
  jsx("span", {
1870
- className: `${CLASSNAME$15}__name`,
1950
+ className: element$H('name'),
1871
1951
  onClick: onClick,
1872
1952
  onMouseEnter: onMouseEnter,
1873
1953
  onMouseLeave: onMouseLeave,
1874
1954
  children: name
1875
1955
  }), headerActions && /*#__PURE__*/jsx("span", {
1876
- className: `${CLASSNAME$15}__header-actions`,
1956
+ className: element$H('header-actions'),
1877
1957
  children: headerActions
1878
1958
  })]
1879
1959
  }), /*#__PURE__*/jsx("div", {
1880
- className: `${CLASSNAME$15}__text`,
1960
+ className: element$H('text'),
1881
1961
  children: text
1882
1962
  }), date && (fullDate ? /*#__PURE__*/jsx(Tooltip, {
1883
1963
  label: fullDate,
1884
1964
  placement: "top",
1885
1965
  children: /*#__PURE__*/jsx("span", {
1886
- className: `${CLASSNAME$15}__date`,
1966
+ className: element$H('date'),
1887
1967
  children: date
1888
1968
  })
1889
1969
  }) : /*#__PURE__*/jsx("span", {
1890
- className: `${CLASSNAME$15}__date`,
1970
+ className: element$H('date'),
1891
1971
  children: date
1892
1972
  }))]
1893
1973
  }), hasActions && /*#__PURE__*/jsx("div", {
1894
- className: `${CLASSNAME$15}__actions`,
1974
+ className: element$H('actions'),
1895
1975
  children: actions
1896
1976
  })]
1897
1977
  })]
1898
1978
  }), hasChildren && isOpen && /*#__PURE__*/jsx("div", {
1899
- className: `${CLASSNAME$15}__children`,
1979
+ className: element$H('children'),
1900
1980
  children: children
1901
1981
  })]
1902
1982
  });
@@ -2146,6 +2226,14 @@ function formatDayNumber(locale, date) {
2146
2226
  return formattedDate;
2147
2227
  }
2148
2228
 
2229
+ const {
2230
+ element: element$G
2231
+ } = classNames.bem(CLASSNAME$14);
2232
+
2233
+ /**
2234
+ * Defines the props of the component.
2235
+ */
2236
+
2149
2237
  /**
2150
2238
  * Component display name.
2151
2239
  */
@@ -2237,7 +2325,7 @@ const DatePickerControlled = forwardRef((props, ref) => {
2237
2325
  className: `${CLASSNAME$14}`,
2238
2326
  style: style,
2239
2327
  children: [/*#__PURE__*/jsx(Toolbar, {
2240
- className: `${CLASSNAME$14}__toolbar`,
2328
+ className: element$G('toolbar'),
2241
2329
  after: /*#__PURE__*/jsx(IconButton, {
2242
2330
  ...nextButtonProps,
2243
2331
  emphasis: Emphasis$1.low,
@@ -2257,7 +2345,7 @@ const DatePickerControlled = forwardRef((props, ref) => {
2257
2345
  dir: "auto",
2258
2346
  children: monthYear
2259
2347
  }), onMonthChange && /*#__PURE__*/jsx(FlexBox, {
2260
- className: `${CLASSNAME$14}__month`,
2348
+ className: element$G('month'),
2261
2349
  orientation: "horizontal",
2262
2350
  hAlign: "center",
2263
2351
  gap: "regular",
@@ -2272,7 +2360,7 @@ const DatePickerControlled = forwardRef((props, ref) => {
2272
2360
  min: 0,
2273
2361
  onBlur: updateYear,
2274
2362
  onKeyPress: updateYearOnEnterPressed,
2275
- className: `${CLASSNAME$14}__year`
2363
+ className: element$G('year')
2276
2364
  }, "year") : /*#__PURE__*/jsx(Text, {
2277
2365
  as: "p",
2278
2366
  children: part
@@ -2280,17 +2368,17 @@ const DatePickerControlled = forwardRef((props, ref) => {
2280
2368
  })]
2281
2369
  })
2282
2370
  }), /*#__PURE__*/jsxs("div", {
2283
- className: `${CLASSNAME$14}__calendar`,
2371
+ className: element$G('calendar'),
2284
2372
  children: [/*#__PURE__*/jsx("div", {
2285
- className: `${CLASSNAME$14}__week-days ${CLASSNAME$14}__days-wrapper`,
2373
+ className: classNames.join(element$G('week-days'), element$G('days-wrapper')),
2286
2374
  children: weekDays.map(({
2287
2375
  letter,
2288
2376
  number,
2289
2377
  long
2290
2378
  }) => /*#__PURE__*/jsxs("div", {
2291
- className: `${CLASSNAME$14}__day-wrapper`,
2379
+ className: element$G('day-wrapper'),
2292
2380
  children: [/*#__PURE__*/jsx("span", {
2293
- className: `${CLASSNAME$14}__week-day`,
2381
+ className: element$G('week-day'),
2294
2382
  "aria-hidden": true,
2295
2383
  children: letter.toLocaleUpperCase()
2296
2384
  }), /*#__PURE__*/jsx("span", {
@@ -2299,7 +2387,7 @@ const DatePickerControlled = forwardRef((props, ref) => {
2299
2387
  })]
2300
2388
  }, number))
2301
2389
  }), /*#__PURE__*/jsx("div", {
2302
- className: `${CLASSNAME$14}__month-days ${CLASSNAME$14}__days-wrapper`,
2390
+ className: classNames.join(element$G('month-days'), element$G('days-wrapper')),
2303
2391
  children: weeks.flatMap((week, weekIndex) => {
2304
2392
  return weekDays.map((weekDay, dayIndex) => {
2305
2393
  const {
@@ -2310,11 +2398,11 @@ const DatePickerControlled = forwardRef((props, ref) => {
2310
2398
  const isToday = !isOutOfRange && date && isSameDay(date, new Date());
2311
2399
  const isSelected = date && value && isSameDay(value, date);
2312
2400
  return /*#__PURE__*/jsx("div", {
2313
- className: `${CLASSNAME$14}__day-wrapper`,
2401
+ className: element$G('day-wrapper'),
2314
2402
  children: date && /*#__PURE__*/jsxs(Button, {
2315
2403
  ref: isSelected || !value && isToday ? todayOrSelectedDateRef : null,
2316
- className: classNames.join(`${CLASSNAME$14}__month-day`, {
2317
- [`${CLASSNAME$14}__month-day--is-today`]: isToday
2404
+ className: element$G('month-day', {
2405
+ 'is-today': isToday
2318
2406
  }),
2319
2407
  disabled: isOutOfRange,
2320
2408
  isSelected: isSelected,
@@ -2997,6 +3085,10 @@ const COMPONENT_NAME$13 = 'Dialog';
2997
3085
  * Component default class name and class prefix.
2998
3086
  */
2999
3087
  const CLASSNAME$13 = 'lumx-dialog';
3088
+ const {
3089
+ block: block$W,
3090
+ element: element$F
3091
+ } = classNames.bem(CLASSNAME$13);
3000
3092
 
3001
3093
  /**
3002
3094
  * Component default props.
@@ -3107,24 +3199,23 @@ const Dialog = forwardRef((props, ref) => {
3107
3199
  children: /*#__PURE__*/jsxs("div", {
3108
3200
  ref: mergeRefs(rootRef, ref),
3109
3201
  ...forwardedProps,
3110
- className: classNames.join(className, handleBasicClasses({
3111
- isHidden: !isOpen,
3112
- isLoading,
3113
- isShown: isOpen || isVisible,
3114
- prefix: CLASSNAME$13,
3115
- size
3202
+ className: classNames.join(className, block$W({
3203
+ 'is-hidden': !isOpen,
3204
+ 'is-loading': isLoading,
3205
+ 'is-shown': isOpen || isVisible,
3206
+ [`size-${size}`]: Boolean(size)
3116
3207
  })),
3117
3208
  style: {
3118
3209
  zIndex
3119
3210
  },
3120
3211
  children: [/*#__PURE__*/jsx("div", {
3121
- className: `${CLASSNAME$13}__overlay`
3212
+ className: element$F('overlay')
3122
3213
  }), /*#__PURE__*/jsx(HeadingLevelProvider, {
3123
3214
  level: 2,
3124
3215
  children: /*#__PURE__*/jsx(ThemeProvider, {
3125
3216
  value: undefined,
3126
3217
  children: /*#__PURE__*/jsx("div", {
3127
- className: `${CLASSNAME$13}__container`,
3218
+ className: element$F('container'),
3128
3219
  role: "dialog",
3129
3220
  "aria-modal": "true",
3130
3221
  ...dialogProps,
@@ -3133,28 +3224,36 @@ const Dialog = forwardRef((props, ref) => {
3133
3224
  childrenRefs: clickAwayRefs,
3134
3225
  parentRef: rootRef,
3135
3226
  children: /*#__PURE__*/jsxs("section", {
3136
- className: `${CLASSNAME$13}__wrapper`,
3227
+ className: element$F('wrapper'),
3137
3228
  ref: wrapperRef,
3138
3229
  children: [(header || headerChildContent) && /*#__PURE__*/jsxs("header", {
3139
3230
  ...headerChildProps,
3140
- className: classNames.join(`${CLASSNAME$13}__header`, (forceHeaderDivider || hasTopIntersection) && `${CLASSNAME$13}__header--has-divider`, headerChildProps?.className),
3231
+ className: classNames.join(element$F('header', {
3232
+ 'has-divider': Boolean(forceHeaderDivider || hasTopIntersection)
3233
+ }), headerChildProps?.className),
3141
3234
  children: [header, headerChildContent]
3142
3235
  }), /*#__PURE__*/jsxs("div", {
3143
3236
  ref: mergeRefs(contentRef, localContentRef),
3144
- className: `${CLASSNAME$13}__content`,
3237
+ className: element$F('content'),
3145
3238
  children: [/*#__PURE__*/jsx("div", {
3146
- className: `${CLASSNAME$13}__sentinel ${CLASSNAME$13}__sentinel--top`,
3239
+ className: element$F('sentinel', {
3240
+ top: true
3241
+ }),
3147
3242
  ref: setSentinelTop
3148
3243
  }), content, /*#__PURE__*/jsx("div", {
3149
- className: `${CLASSNAME$13}__sentinel ${CLASSNAME$13}__sentinel--bottom`,
3244
+ className: element$F('sentinel', {
3245
+ bottom: true
3246
+ }),
3150
3247
  ref: setSentinelBottom
3151
3248
  })]
3152
3249
  }), (footer || footerChildContent) && /*#__PURE__*/jsxs("footer", {
3153
3250
  ...footerChildProps,
3154
- className: classNames.join(`${CLASSNAME$13}__footer`, (forceFooterDivider || hasBottomIntersection) && `${CLASSNAME$13}__footer--has-divider`, footerChildProps?.className),
3251
+ className: classNames.join(element$F('footer', {
3252
+ 'has-divider': Boolean(forceFooterDivider || hasBottomIntersection)
3253
+ }), footerChildProps?.className),
3155
3254
  children: [footer, footerChildContent]
3156
3255
  }), isLoading && /*#__PURE__*/jsx("div", {
3157
- className: `${CLASSNAME$13}__progress-overlay`,
3256
+ className: element$F('progress-overlay'),
3158
3257
  children: /*#__PURE__*/jsx(Progress, {
3159
3258
  variant: ProgressVariant.circular
3160
3259
  })
@@ -3180,6 +3279,9 @@ const COMPONENT_NAME$12 = 'Divider';
3180
3279
  * Component default class name and class prefix.
3181
3280
  */
3182
3281
  const CLASSNAME$12 = 'lumx-divider';
3282
+ const {
3283
+ block: block$V
3284
+ } = classNames.bem(CLASSNAME$12);
3183
3285
 
3184
3286
  /**
3185
3287
  * Component default props.
@@ -3203,9 +3305,8 @@ const Divider = forwardRef((props, ref) => {
3203
3305
  return /*#__PURE__*/jsx("hr", {
3204
3306
  ref: ref,
3205
3307
  ...forwardedProps,
3206
- className: classNames.join(className, handleBasicClasses({
3207
- prefix: CLASSNAME$12,
3208
- theme
3308
+ className: classNames.join(className, block$V({
3309
+ [`theme-${theme}`]: Boolean(theme)
3209
3310
  }))
3210
3311
  });
3211
3312
  });
@@ -3222,6 +3323,9 @@ const COMPONENT_NAME$11 = 'DragHandle';
3222
3323
  * Component default class name and class prefix.
3223
3324
  */
3224
3325
  const CLASSNAME$11 = 'lumx-drag-handle';
3326
+ const {
3327
+ block: block$U
3328
+ } = classNames.bem(CLASSNAME$11);
3225
3329
 
3226
3330
  /**
3227
3331
  * DragHandle component.
@@ -3240,9 +3344,8 @@ const DragHandle = forwardRef((props, ref) => {
3240
3344
  return /*#__PURE__*/jsx("div", {
3241
3345
  ref: ref,
3242
3346
  ...forwardedProps,
3243
- className: classNames.join(className, handleBasicClasses({
3244
- prefix: CLASSNAME$11,
3245
- theme
3347
+ className: classNames.join(className, block$U({
3348
+ [`theme-${theme}`]: Boolean(theme)
3246
3349
  })),
3247
3350
  children: /*#__PURE__*/jsx(Icon, {
3248
3351
  icon: mdiDragVertical,
@@ -3427,6 +3530,9 @@ const COMPONENT_NAME$10 = 'List';
3427
3530
  * Component default class name and class prefix.
3428
3531
  */
3429
3532
  const CLASSNAME$10 = 'lumx-list';
3533
+ const {
3534
+ block: block$T
3535
+ } = classNames.bem(CLASSNAME$10);
3430
3536
 
3431
3537
  /**
3432
3538
  * Component default props.
@@ -3453,11 +3559,11 @@ const InternalList = forwardRef((props, ref) => {
3453
3559
  tabIndex = DEFAULT_PROPS$T.tabIndex,
3454
3560
  ...forwardedProps
3455
3561
  } = props;
3562
+ const adjustedItemPadding = itemPadding ?? (isClickable ? Size$1.big : undefined);
3456
3563
  return /*#__PURE__*/jsx("ul", {
3457
3564
  ...forwardedProps,
3458
- className: classNames.join(className, handleBasicClasses({
3459
- prefix: CLASSNAME$10,
3460
- itemPadding: itemPadding ?? (isClickable ? Size$1.big : undefined)
3565
+ className: classNames.join(className, block$T({
3566
+ [`item-padding-${adjustedItemPadding}`]: Boolean(adjustedItemPadding)
3461
3567
  })),
3462
3568
  tabIndex: tabIndex,
3463
3569
  ref: ref,
@@ -5903,6 +6009,10 @@ const COMPONENT_NAME$$ = 'Popover';
5903
6009
  * Component default class name and class prefix.
5904
6010
  */
5905
6011
  const CLASSNAME$$ = 'lumx-popover';
6012
+ const {
6013
+ block: block$S,
6014
+ element: element$E
6015
+ } = classNames.bem(CLASSNAME$$);
5906
6016
 
5907
6017
  /**
5908
6018
  * Component default props.
@@ -5977,17 +6087,17 @@ const _InnerPopover = forwardRef((props, ref) => {
5977
6087
  useFocusTrap(withFocusTrap && isOpen && focusZoneElement, focusElement?.current);
5978
6088
  const clickAwayRefs = useRef([popoverRef, anchorRef]);
5979
6089
  const mergedRefs = useMergeRefs(setPopperElement, ref, popoverRef);
6090
+ const adjustedElevation = Math.min(elevation || 0, 5);
5980
6091
  return isOpen ? /*#__PURE__*/jsx(Portal, {
5981
6092
  enabled: usePortal,
5982
6093
  children: /*#__PURE__*/jsxs(Component, {
5983
6094
  ...forwardedProps,
5984
6095
  ref: mergedRefs,
5985
- className: classNames.join(className, handleBasicClasses({
5986
- prefix: CLASSNAME$$,
5987
- theme,
5988
- elevation: Math.min(elevation || 0, 5),
5989
- position,
5990
- isInitializing: !styles.popover?.transform
6096
+ className: classNames.join(className, block$S({
6097
+ [`theme-${theme}`]: Boolean(theme),
6098
+ [`elevation-${adjustedElevation}`]: Boolean(adjustedElevation),
6099
+ [`position-${position}`]: Boolean(position),
6100
+ 'is-initializing': !styles.popover?.transform
5991
6101
  })),
5992
6102
  style: styles.popover,
5993
6103
  ...attributes.popper,
@@ -5996,7 +6106,7 @@ const _InnerPopover = forwardRef((props, ref) => {
5996
6106
  childrenRefs: clickAwayRefs,
5997
6107
  children: [hasArrow && /*#__PURE__*/jsx("div", {
5998
6108
  ref: setArrowElement,
5999
- className: `${CLASSNAME$$}__arrow`,
6109
+ className: element$E('arrow'),
6000
6110
  style: styles.arrow,
6001
6111
  children: /*#__PURE__*/jsx("svg", {
6002
6112
  viewBox: "0 0 14 14",
@@ -6079,6 +6189,10 @@ const COMPONENT_NAME$_ = 'Dropdown';
6079
6189
  * Component default class name and class prefix.
6080
6190
  */
6081
6191
  const CLASSNAME$_ = 'lumx-dropdown';
6192
+ const {
6193
+ block: block$R,
6194
+ element: element$D
6195
+ } = classNames.bem(CLASSNAME$_);
6082
6196
 
6083
6197
  /**
6084
6198
  * Component default props.
@@ -6142,7 +6256,7 @@ const Dropdown = forwardRef((props, ref) => {
6142
6256
  ...forwardedProps,
6143
6257
  focusAnchorOnClose: focusAnchorOnClose,
6144
6258
  anchorRef: anchorRef,
6145
- className: classNames.join(className, CLASSNAME$_),
6259
+ className: classNames.join(className, block$R()),
6146
6260
  elevation: 0,
6147
6261
  closeOnClickAway: closeOnClickAway,
6148
6262
  closeOnEscape: closeOnEscape,
@@ -6155,7 +6269,7 @@ const Dropdown = forwardRef((props, ref) => {
6155
6269
  placement: placement,
6156
6270
  zIndex: zIndex,
6157
6271
  children: /*#__PURE__*/jsx("div", {
6158
- className: `${CLASSNAME$_}__menu`,
6272
+ className: element$D('menu'),
6159
6273
  ref: innerRef,
6160
6274
  children: popperElement
6161
6275
  })
@@ -6174,6 +6288,10 @@ const COMPONENT_NAME$Z = 'ExpansionPanel';
6174
6288
  * Component default class name and class prefix.
6175
6289
  */
6176
6290
  const CLASSNAME$Z = 'lumx-expansion-panel';
6291
+ const {
6292
+ block: block$Q,
6293
+ element: element$C
6294
+ } = classNames.bem(CLASSNAME$Z);
6177
6295
 
6178
6296
  /**
6179
6297
  * Component default props.
@@ -6217,7 +6335,7 @@ const ExpansionPanel = forwardRef((props, ref) => {
6217
6335
  // Either take the header in children or create one with the label.
6218
6336
  const headerProps = /*#__PURE__*/React__default.isValidElement(header) ? header.props : {};
6219
6337
  const headerContent = !isEmpty(headerProps.children) ? headerProps.children : /*#__PURE__*/jsx("span", {
6220
- className: `${CLASSNAME$Z}__label`,
6338
+ className: element$C('label'),
6221
6339
  children: label
6222
6340
  });
6223
6341
  const toggleOpen = event => {
@@ -6233,15 +6351,14 @@ const ExpansionPanel = forwardRef((props, ref) => {
6233
6351
  }
6234
6352
  };
6235
6353
  const color = theme === Theme$1.dark ? ColorPalette$1.light : ColorPalette$1.dark;
6236
- const rootClassName = classNames.join(className, handleBasicClasses({
6237
- hasBackground,
6238
- hasHeader: Boolean(!isEmpty(headerProps.children)),
6239
- hasHeaderDivider,
6240
- isClose: !isOpen,
6241
- isDraggable: Boolean(dragHandle),
6242
- isOpen,
6243
- prefix: CLASSNAME$Z,
6244
- theme
6354
+ const rootClassName = classNames.join(className, block$Q({
6355
+ 'has-background': hasBackground,
6356
+ 'has-header': Boolean(!isEmpty(headerProps.children)),
6357
+ 'has-header-divider': hasHeaderDivider,
6358
+ 'is-close': !isOpen,
6359
+ 'is-draggable': Boolean(dragHandle),
6360
+ 'is-open': isOpen,
6361
+ [`theme-${theme}`]: Boolean(theme)
6245
6362
  }));
6246
6363
  const wrapperRef = useRef(null);
6247
6364
 
@@ -6277,17 +6394,17 @@ const ExpansionPanel = forwardRef((props, ref) => {
6277
6394
  ...forwardedProps,
6278
6395
  className: rootClassName,
6279
6396
  children: [/*#__PURE__*/jsxs("header", {
6280
- className: `${CLASSNAME$Z}__header`,
6397
+ className: element$C('header'),
6281
6398
  onClick: toggleOpen,
6282
6399
  children: [dragHandle && /*#__PURE__*/jsx("div", {
6283
- className: `${CLASSNAME$Z}__header-drag`,
6400
+ className: element$C('header-drag'),
6284
6401
  children: dragHandle
6285
6402
  }), /*#__PURE__*/jsx("div", {
6286
6403
  ...headerProps,
6287
- className: `${CLASSNAME$Z}__header-content`,
6404
+ className: element$C('header-content'),
6288
6405
  children: headerContent
6289
6406
  }), /*#__PURE__*/jsx("div", {
6290
- className: `${CLASSNAME$Z}__header-toggle`,
6407
+ className: element$C('header-toggle'),
6291
6408
  children: /*#__PURE__*/jsx(IconButton, {
6292
6409
  ...toggleButtonProps,
6293
6410
  color: color,
@@ -6297,15 +6414,15 @@ const ExpansionPanel = forwardRef((props, ref) => {
6297
6414
  })
6298
6415
  })]
6299
6416
  }), /*#__PURE__*/jsx("div", {
6300
- className: `${CLASSNAME$Z}__wrapper`,
6417
+ className: element$C('wrapper'),
6301
6418
  ref: wrapperRef,
6302
6419
  children: (isOpen || isChildrenVisible) && /*#__PURE__*/jsxs("div", {
6303
- className: `${CLASSNAME$Z}__container`,
6420
+ className: element$C('container'),
6304
6421
  children: [/*#__PURE__*/jsx("div", {
6305
- className: `${CLASSNAME$Z}__content`,
6422
+ className: element$C('content'),
6306
6423
  children: content
6307
6424
  }), footer && /*#__PURE__*/jsx("div", {
6308
- className: `${CLASSNAME$Z}__footer`,
6425
+ className: element$C('footer'),
6309
6426
  children: footer
6310
6427
  })]
6311
6428
  })
@@ -6319,47 +6436,69 @@ ExpansionPanel.defaultProps = DEFAULT_PROPS$Q;
6319
6436
  const COMPONENT_NAME$Y = 'Flag';
6320
6437
  const CLASSNAME$Y = 'lumx-flag';
6321
6438
  const DEFAULT_PROPS$P = {};
6439
+ const {
6440
+ block: block$P,
6441
+ element: element$B
6442
+ } = bem(CLASSNAME$Y);
6322
6443
 
6323
6444
  /**
6324
6445
  * Flag component.
6325
6446
  *
6326
6447
  * @param props Component props.
6327
- * @param ref Component ref.
6328
- * @return React element.
6448
+ * @return JSX element.
6329
6449
  */
6330
- const Flag = forwardRef((props, ref) => {
6331
- const defaultTheme = useTheme() || Theme$1.light;
6450
+ const Flag$1 = (props, nestedComponents) => {
6332
6451
  const {
6333
- label,
6452
+ Text
6453
+ } = nestedComponents || {};
6454
+ const {
6455
+ children,
6334
6456
  icon,
6335
6457
  color,
6336
6458
  className,
6337
- theme = defaultTheme,
6459
+ theme,
6338
6460
  truncate,
6339
6461
  ...forwardedProps
6340
6462
  } = props;
6341
- const flagColor = color || (theme === Theme$1.light ? ColorPalette$1.dark : ColorPalette$1.light);
6463
+ const flagColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);
6342
6464
  const isTruncated = !!truncate;
6343
6465
  return /*#__PURE__*/jsxs("div", {
6344
6466
  ...forwardedProps,
6345
- className: classNames.join(className, handleBasicClasses({
6346
- prefix: CLASSNAME$Y,
6347
- color: flagColor,
6348
- isTruncated
6467
+ className: classnames(className, block$P({
6468
+ [`color-${flagColor}`]: Boolean(flagColor),
6469
+ 'is-truncated': isTruncated
6349
6470
  })),
6350
- ref: ref,
6351
- children: [icon && /*#__PURE__*/jsx(Icon, {
6352
- icon: icon,
6353
- size: Size$1.xxs,
6354
- className: `${CLASSNAME$Y}__icon`
6471
+ children: [icon && Icon$1({
6472
+ icon,
6473
+ size: Size.xxs,
6474
+ className: element$B('icon')
6355
6475
  }), /*#__PURE__*/jsx(Text, {
6356
6476
  as: "span",
6357
- truncate: isTruncated,
6477
+ truncate: !!props.truncate,
6358
6478
  typography: "overline",
6359
- className: `${CLASSNAME$Y}__label`,
6360
- children: label
6479
+ className: element$B('label'),
6480
+ children: children
6361
6481
  })]
6362
6482
  });
6483
+ };
6484
+
6485
+ /**
6486
+ * Flag component.
6487
+ *
6488
+ * @param props Component props.
6489
+ * @param ref Component ref.
6490
+ * @return React element.
6491
+ */
6492
+ const Flag = forwardRef((props, ref) => {
6493
+ const defaultTheme = useTheme() || Theme$1.light;
6494
+ return Flag$1({
6495
+ ...props,
6496
+ theme: props.theme || defaultTheme,
6497
+ ref,
6498
+ children: props.label
6499
+ }, {
6500
+ Text
6501
+ });
6363
6502
  });
6364
6503
  Flag.displayName = COMPONENT_NAME$Y;
6365
6504
  Flag.className = CLASSNAME$Y;
@@ -6374,6 +6513,9 @@ const COMPONENT_NAME$X = 'FlexBox';
6374
6513
  * Component default class name and class prefix.
6375
6514
  */
6376
6515
  const CLASSNAME$X = 'lumx-flex-box';
6516
+ const {
6517
+ block: block$O
6518
+ } = classNames.bem(CLASSNAME$X);
6377
6519
 
6378
6520
  /**
6379
6521
  * FlexBox component.
@@ -6392,21 +6534,25 @@ const FlexBox = forwardRef((props, ref) => {
6392
6534
  hAlign,
6393
6535
  marginAuto,
6394
6536
  noShrink,
6395
- orientation,
6396
6537
  vAlign,
6397
6538
  wrap,
6539
+ orientation,
6398
6540
  ...forwardedProps
6399
6541
  } = props;
6542
+ const adjustedOrientation = orientation ?? (wrap || hAlign || vAlign ? Orientation.horizontal : null);
6400
6543
  return /*#__PURE__*/jsx(Component, {
6401
6544
  ref: ref,
6402
6545
  ...forwardedProps,
6403
- className: classNames.join(className, handleBasicClasses({
6404
- prefix: CLASSNAME$X,
6405
- orientation: orientation ?? (wrap || hAlign || vAlign ? Orientation.horizontal : null),
6406
- vAlign,
6407
- hAlign,
6408
- gap
6409
- }), wrap && `${CLASSNAME$X}--wrap`, fillSpace && `${CLASSNAME$X}--fill-space`, noShrink && `${CLASSNAME$X}--no-shrink`, marginAuto && castArray(marginAuto).map(align => `${CLASSNAME$X}--margin-auto-${align}`)),
6546
+ className: classNames.join(className, block$O({
6547
+ [`orientation-${adjustedOrientation}`]: Boolean(adjustedOrientation),
6548
+ [`v-align-${vAlign}`]: Boolean(vAlign),
6549
+ [`h-align-${hAlign}`]: Boolean(hAlign),
6550
+ [`gap-${gap}`]: Boolean(gap),
6551
+ wrap: Boolean(wrap),
6552
+ 'fill-space': fillSpace,
6553
+ 'no-shrink': noShrink,
6554
+ ...Object.fromEntries(castArray(marginAuto).filter(Boolean).map(align => [`margin-auto-${align}`, true]))
6555
+ })),
6410
6556
  children: children
6411
6557
  });
6412
6558
  });
@@ -6422,6 +6568,10 @@ const COMPONENT_NAME$W = 'GenericBlock';
6422
6568
  * Component default class name and class prefix.
6423
6569
  */
6424
6570
  const CLASSNAME$W = 'lumx-generic-block';
6571
+ const {
6572
+ block: block$N,
6573
+ element: element$A
6574
+ } = classNames.bem(CLASSNAME$W);
6425
6575
 
6426
6576
  /**
6427
6577
  * Component default props.
@@ -6476,7 +6626,7 @@ const BaseGenericBlock = forwardRef((props, ref) => {
6476
6626
  }, [children]);
6477
6627
  return /*#__PURE__*/jsxs(FlexBox, {
6478
6628
  ref: ref,
6479
- className: classNames.join(className, CLASSNAME$W),
6629
+ className: classNames.join(className, block$N()),
6480
6630
  gap: gap,
6481
6631
  orientation: orientation,
6482
6632
  ...forwardedProps,
@@ -6486,7 +6636,7 @@ const BaseGenericBlock = forwardRef((props, ref) => {
6486
6636
  hAlign: forwardedProps.hAlign,
6487
6637
  ...figureProps,
6488
6638
  ...sections.figureChildProps,
6489
- className: classNames.join(figureProps?.className, sections.figureChildProps?.className, `${CLASSNAME$W}__figure`),
6639
+ className: classNames.join(figureProps?.className, sections.figureChildProps?.className, element$A('figure')),
6490
6640
  children: [figure, sections.figureChildProps?.children]
6491
6641
  }), (sections.contentChildProps?.children || sections.otherChildren.length > 0) && /*#__PURE__*/jsxs(FlexBox, {
6492
6642
  ref: sections.contentChild?.ref,
@@ -6496,7 +6646,7 @@ const BaseGenericBlock = forwardRef((props, ref) => {
6496
6646
  hAlign: forwardedProps.hAlign,
6497
6647
  ...contentProps,
6498
6648
  ...sections.contentChildProps,
6499
- className: classNames.join(contentProps?.className, sections.contentChildProps?.className, `${CLASSNAME$W}__content`),
6649
+ className: classNames.join(contentProps?.className, sections.contentChildProps?.className, element$A('content')),
6500
6650
  children: [sections.contentChildProps?.children, sections.otherChildren]
6501
6651
  }), (actions || sections.actionsChildProps?.children) && /*#__PURE__*/jsxs(FlexBox, {
6502
6652
  ref: sections.actionsChild?.ref,
@@ -6504,7 +6654,7 @@ const BaseGenericBlock = forwardRef((props, ref) => {
6504
6654
  hAlign: forwardedProps.hAlign,
6505
6655
  ...actionsProps,
6506
6656
  ...sections.actionsChildProps,
6507
- className: classNames.join(actionsProps?.className, sections.actionsChildProps?.className, `${CLASSNAME$W}__actions`),
6657
+ className: classNames.join(actionsProps?.className, sections.actionsChildProps?.className, element$A('actions')),
6508
6658
  children: [actions, sections.actionsChildProps?.children]
6509
6659
  })]
6510
6660
  });
@@ -6523,6 +6673,67 @@ const GenericBlock = Object.assign(BaseGenericBlock, {
6523
6673
  */
6524
6674
  const GenericBlockGapSize = pick(Size$1, ['tiny', 'regular', 'medium', 'big', 'huge']);
6525
6675
 
6676
+ /** The maximum authorized heading level. */
6677
+ const MAX_HEADING_LEVEL = 6;
6678
+
6679
+ /**
6680
+ * Typography to use by default depending on the heading level.
6681
+ */
6682
+ const DEFAULT_TYPOGRAPHY_BY_LEVEL = {
6683
+ h1: Typography.display1,
6684
+ h2: Typography.headline,
6685
+ h3: Typography.title,
6686
+ h4: Typography.subtitle2,
6687
+ h5: Typography.subtitle1,
6688
+ h6: Typography.body2
6689
+ };
6690
+ const defaultContext = {
6691
+ level: 1,
6692
+ headingElement: 'h1'
6693
+ };
6694
+
6695
+ /**
6696
+ * Defines the props of the component.
6697
+ */
6698
+
6699
+ /**
6700
+ * Component display name.
6701
+ */
6702
+ const COMPONENT_NAME$V = 'Heading';
6703
+
6704
+ /**
6705
+ * Component default class name and class prefix.
6706
+ */
6707
+ const CLASSNAME$V = 'lumx-heading';
6708
+
6709
+ /**
6710
+ * Component default props.
6711
+ */
6712
+ const DEFAULT_PROPS$N = {};
6713
+
6714
+ /**
6715
+ * Get Heading component common props
6716
+ *
6717
+ * @param props Component props.
6718
+ * @param contextHeadingElement Heading element from context.
6719
+ * @return Common Props
6720
+ */
6721
+ const getHeadingProps = (props, contextHeadingElement) => {
6722
+ const {
6723
+ as,
6724
+ className,
6725
+ typography,
6726
+ ...otherProps
6727
+ } = props;
6728
+ const computedHeadingElement = as || contextHeadingElement || 'h1';
6729
+ return {
6730
+ ...otherProps,
6731
+ as: computedHeadingElement,
6732
+ className: classnames(className, CLASSNAME$V),
6733
+ typography: typography || DEFAULT_TYPOGRAPHY_BY_LEVEL[computedHeadingElement]
6734
+ };
6735
+ };
6736
+
6526
6737
  const DEFAULT_VALUE = {};
6527
6738
 
6528
6739
  /**
@@ -6586,17 +6797,20 @@ function wrapChildrenIconWithSpaces(children) {
6586
6797
  /**
6587
6798
  * Component display name.
6588
6799
  */
6589
- const COMPONENT_NAME$V = 'Text';
6800
+ const COMPONENT_NAME$U = 'Text';
6590
6801
 
6591
6802
  /**
6592
6803
  * Component default class name and class prefix.
6593
6804
  */
6594
- const CLASSNAME$V = 'lumx-text';
6805
+ const CLASSNAME$U = 'lumx-text';
6806
+ const {
6807
+ block: block$M
6808
+ } = bem(CLASSNAME$U);
6595
6809
 
6596
6810
  /**
6597
6811
  * Component default props.
6598
6812
  */
6599
- const DEFAULT_PROPS$N = {};
6813
+ const DEFAULT_PROPS$M = {};
6600
6814
 
6601
6815
  /**
6602
6816
  * Text component common props
@@ -6632,11 +6846,11 @@ const getTextProps = props => {
6632
6846
  '--lumx-text-white-space': whiteSpace
6633
6847
  };
6634
6848
  return {
6635
- className: classnames(className, handleBasicClasses({
6636
- prefix: CLASSNAME$V,
6637
- isTruncated: isTruncated && !isTruncatedMultiline,
6638
- isTruncatedMultiline
6639
- }), typography$1 && typography(typography$1), color && font(color, colorVariant), noWrap && `${CLASSNAME$V}--no-wrap`),
6849
+ className: classnames(className, block$M({
6850
+ 'is-truncated': isTruncated && !isTruncatedMultiline,
6851
+ 'is-truncated-multiline': isTruncatedMultiline,
6852
+ 'no-wrap': noWrap
6853
+ }), typography$1 && typography(typography$1), color && font(color, colorVariant)),
6640
6854
  style: {
6641
6855
  ...truncateLinesStyle,
6642
6856
  ...whiteSpaceStyle,
@@ -6681,29 +6895,10 @@ const Text = forwardRef((props, ref) => {
6681
6895
  children: wrapChildrenIconWithSpaces(children)
6682
6896
  });
6683
6897
  });
6684
- Text.displayName = COMPONENT_NAME$V;
6685
- Text.className = CLASSNAME$V;
6686
- Text.defaultProps = DEFAULT_PROPS$N;
6687
-
6688
- /** The maximum authorized heading level. */
6689
- const MAX_HEADING_LEVEL = 6;
6690
-
6691
- /**
6692
- * Typography to use by default depending on the heading level.
6693
- */
6694
- const DEFAULT_TYPOGRAPHY_BY_LEVEL = {
6695
- h1: Typography.display1,
6696
- h2: Typography.headline,
6697
- h3: Typography.title,
6698
- h4: Typography.subtitle2,
6699
- h5: Typography.subtitle1,
6700
- h6: Typography.body2
6701
- };
6898
+ Text.displayName = COMPONENT_NAME$U;
6899
+ Text.className = CLASSNAME$U;
6900
+ Text.defaultProps = DEFAULT_PROPS$M;
6702
6901
 
6703
- const defaultContext = {
6704
- level: 1,
6705
- headingElement: 'h1'
6706
- };
6707
6902
  const HeadingLevelContext = /*#__PURE__*/createContext(defaultContext);
6708
6903
 
6709
6904
  const useHeadingLevel = () => {
@@ -6717,21 +6912,6 @@ const useHeadingLevel = () => {
6717
6912
  };
6718
6913
  };
6719
6914
 
6720
- /**
6721
- * Component display name.
6722
- */
6723
- const COMPONENT_NAME$U = 'Heading';
6724
-
6725
- /**
6726
- * Component default class name and class prefix.
6727
- */
6728
- const CLASSNAME$U = 'lumx-heading';
6729
-
6730
- /**
6731
- * Component default props.
6732
- */
6733
- const DEFAULT_PROPS$M = {};
6734
-
6735
6915
  /**
6736
6916
  * Renders a heading component.
6737
6917
  * Extends the `Text` Component with the heading level automatically computed based on
@@ -6740,26 +6920,33 @@ const DEFAULT_PROPS$M = {};
6740
6920
  const Heading = forwardRef((props, ref) => {
6741
6921
  const {
6742
6922
  children,
6743
- as,
6744
- className,
6745
- ...forwardedProps
6923
+ ...otherProps
6746
6924
  } = props;
6747
6925
  const {
6748
6926
  headingElement
6749
6927
  } = useHeadingLevel();
6750
- const computedHeadingElement = as || headingElement;
6928
+ const headingProps = getHeadingProps(otherProps, headingElement);
6751
6929
  return /*#__PURE__*/jsx(Text, {
6752
6930
  ref: ref,
6753
- className: classNames.join(className, CLASSNAME$U),
6754
- as: computedHeadingElement,
6755
- typography: DEFAULT_TYPOGRAPHY_BY_LEVEL[computedHeadingElement],
6756
- ...forwardedProps,
6931
+ ...headingProps,
6757
6932
  children: children
6758
6933
  });
6759
6934
  });
6760
- Heading.displayName = COMPONENT_NAME$U;
6761
- Heading.className = CLASSNAME$U;
6762
- Heading.defaultProps = DEFAULT_PROPS$M;
6935
+ Heading.displayName = COMPONENT_NAME$V;
6936
+ Heading.className = CLASSNAME$V;
6937
+ Heading.defaultProps = DEFAULT_PROPS$N;
6938
+
6939
+ /**
6940
+ * Computes the next heading level based on the optional prop level or the parent context level.
6941
+ *
6942
+ * @param levelProp - The explicit level provided via props (optional).
6943
+ * @param parentLevel - The level from the parent context.
6944
+ * @returns The calculated heading level, clamped to the maximum allowed level.
6945
+ */
6946
+ const computeHeadingLevel = (levelProp, parentLevel) => {
6947
+ const nextLevel = levelProp || parentLevel + 1;
6948
+ return nextLevel > MAX_HEADING_LEVEL ? MAX_HEADING_LEVEL : nextLevel;
6949
+ };
6763
6950
 
6764
6951
  /**
6765
6952
  * Provide a new heading level context.
@@ -6771,9 +6958,7 @@ const HeadingLevelProvider = ({
6771
6958
  const {
6772
6959
  level: contextLevel
6773
6960
  } = useHeadingLevel();
6774
- const incrementedLevel = level || contextLevel + 1;
6775
- /** Don't allow a level beyond the maximum level. */
6776
- const nextLevel = incrementedLevel > MAX_HEADING_LEVEL ? MAX_HEADING_LEVEL : incrementedLevel;
6961
+ const nextLevel = computeHeadingLevel(level, contextLevel);
6777
6962
  const headingElement = `h${nextLevel}`;
6778
6963
  return /*#__PURE__*/jsx(HeadingLevelContext.Provider, {
6779
6964
  value: {
@@ -6793,6 +6978,9 @@ const COMPONENT_NAME$T = 'Grid';
6793
6978
  * Component default class name and class prefix.
6794
6979
  */
6795
6980
  const CLASSNAME$T = 'lumx-grid';
6981
+ const {
6982
+ block: block$L
6983
+ } = classNames.bem(CLASSNAME$T);
6796
6984
 
6797
6985
  /**
6798
6986
  * Component default props.
@@ -6823,15 +7011,12 @@ const Grid = forwardRef((props, ref) => {
6823
7011
  return /*#__PURE__*/jsx("div", {
6824
7012
  ref: ref,
6825
7013
  ...forwardedProps,
6826
- className: classNames.join(className, `${CLASSNAME$T}-container`, {
6827
- [`${CLASSNAME$T}--h-align-${hAlign}`]: hAlign
6828
- }, {
6829
- [`${CLASSNAME$T}--v-align-${vAlign}`]: vAlign
6830
- }, handleBasicClasses({
6831
- prefix: CLASSNAME$T,
6832
- orientation,
6833
- wrap,
6834
- gutter
7014
+ className: classNames.join(className, classNames.bem(`${CLASSNAME$T}-container`).block(), block$L({
7015
+ [`h-align-${hAlign}`]: Boolean(hAlign),
7016
+ [`v-align-${vAlign}`]: Boolean(vAlign),
7017
+ [`orientation-${orientation}`]: Boolean(orientation),
7018
+ [`wrap-${wrap}`]: Boolean(wrap),
7019
+ [`gutter-${gutter}`]: Boolean(gutter)
6835
7020
  })),
6836
7021
  children: children
6837
7022
  });
@@ -6849,6 +7034,9 @@ const COMPONENT_NAME$S = 'GridItem';
6849
7034
  * Component default class name and class prefix.
6850
7035
  */
6851
7036
  const CLASSNAME$S = 'lumx-grid-item';
7037
+ const {
7038
+ block: block$K
7039
+ } = classNames.bem(CLASSNAME$S);
6852
7040
 
6853
7041
  /**
6854
7042
  * GridItem component.
@@ -6869,11 +7057,10 @@ const GridItem = forwardRef((props, ref) => {
6869
7057
  return /*#__PURE__*/jsx("div", {
6870
7058
  ref: ref,
6871
7059
  ...forwardedProps,
6872
- className: classNames.join(className, handleBasicClasses({
6873
- prefix: CLASSNAME$S,
6874
- width,
6875
- order,
6876
- align
7060
+ className: classNames.join(className, block$K({
7061
+ [`width-${width}`]: Boolean(width),
7062
+ [`order-${order}`]: Boolean(order),
7063
+ [`align-${align}`]: Boolean(align)
6877
7064
  })),
6878
7065
  children: children
6879
7066
  });
@@ -7041,6 +7228,10 @@ const COMPONENT_NAME$Q = 'ImageBlock';
7041
7228
  * Component default class name and class prefix.
7042
7229
  */
7043
7230
  const CLASSNAME$Q = 'lumx-image-block';
7231
+ const {
7232
+ block: block$J,
7233
+ element: element$z
7234
+ } = classNames.bem(CLASSNAME$Q);
7044
7235
 
7045
7236
  /**
7046
7237
  * Component default props.
@@ -7081,16 +7272,16 @@ const ImageBlock = forwardRef((props, ref) => {
7081
7272
  return /*#__PURE__*/jsxs("figure", {
7082
7273
  ref: ref,
7083
7274
  ...forwardedProps,
7084
- className: classNames.join(className, handleBasicClasses({
7085
- prefix: CLASSNAME$Q,
7086
- captionPosition,
7087
- align,
7088
- size,
7089
- theme
7090
- }), fillHeight && `${CLASSNAME$Q}--fill-height`),
7275
+ className: classNames.join(className, block$J({
7276
+ [`caption-position-${captionPosition}`]: Boolean(captionPosition),
7277
+ [`align-${align}`]: Boolean(align),
7278
+ [`size-${size}`]: Boolean(size),
7279
+ [`theme-${theme}`]: Boolean(theme),
7280
+ 'fill-height': fillHeight
7281
+ })),
7091
7282
  children: [/*#__PURE__*/jsx(Thumbnail, {
7092
7283
  ...thumbnailProps,
7093
- className: classNames.join(`${CLASSNAME$Q}__image`, thumbnailProps?.className),
7284
+ className: classNames.join(element$z('image'), thumbnailProps?.className),
7094
7285
  fillHeight: fillHeight,
7095
7286
  align: align,
7096
7287
  image: image,
@@ -7110,7 +7301,7 @@ const ImageBlock = forwardRef((props, ref) => {
7110
7301
  align: align,
7111
7302
  truncate: captionPosition === 'over'
7112
7303
  }), actions && /*#__PURE__*/jsx("div", {
7113
- className: `${CLASSNAME$Q}__actions`,
7304
+ className: element$z('actions'),
7114
7305
  children: actions
7115
7306
  })]
7116
7307
  });
@@ -7371,6 +7562,9 @@ function useAnimateScroll(scrollAreaRef) {
7371
7562
  }, [scrollAreaRef]);
7372
7563
  }
7373
7564
 
7565
+ const {
7566
+ element: element$y
7567
+ } = classNames.bem(CLASSNAME$P);
7374
7568
  /** Internal image slide component for ImageLightbox */
7375
7569
  const ImageSlide = /*#__PURE__*/React__default.memo(props => {
7376
7570
  const {
@@ -7437,12 +7631,12 @@ const ImageSlide = /*#__PURE__*/React__default.memo(props => {
7437
7631
  // Make it accessible to keyboard nav when the zone is scrollable
7438
7632
  ,
7439
7633
  tabIndex: isScrollable ? 0 : undefined,
7440
- className: `${CLASSNAME$P}__image-slide`,
7634
+ className: element$y('image-slide'),
7441
7635
  children: /*#__PURE__*/jsx(Thumbnail, {
7442
7636
  imgRef: useMergeRefs(imgRef, propImgRef),
7443
7637
  image: image,
7444
7638
  alt: alt,
7445
- className: `${CLASSNAME$P}__thumbnail`,
7639
+ className: element$y('thumbnail'),
7446
7640
  imgProps: {
7447
7641
  ...imgProps,
7448
7642
  style: {
@@ -7460,6 +7654,9 @@ const ImageSlide = /*#__PURE__*/React__default.memo(props => {
7460
7654
  });
7461
7655
  }, isEqual);
7462
7656
 
7657
+ const {
7658
+ element: element$x
7659
+ } = classNames.bem(CLASSNAME$P);
7463
7660
  /** Internal image slideshow component for ImageLightbox */
7464
7661
  const ImageSlideshow = ({
7465
7662
  activeImageIndex,
@@ -7580,12 +7777,12 @@ const ImageSlideshow = ({
7580
7777
  })
7581
7778
  }), (metadata || slideShowControls || zoomControls) && /*#__PURE__*/jsxs(FlexBox, {
7582
7779
  ref: footerRef,
7583
- className: `${CLASSNAME$P}__footer`,
7780
+ className: element$x('footer'),
7584
7781
  orientation: "vertical",
7585
7782
  vAlign: "center",
7586
7783
  gap: "big",
7587
7784
  children: [metadata, /*#__PURE__*/jsxs(FlexBox, {
7588
- className: `${CLASSNAME$P}__footer-actions`,
7785
+ className: element$x('footer-actions'),
7589
7786
  orientation: "horizontal",
7590
7787
  gap: "regular",
7591
7788
  children: [slideShowControls, zoomControls]
@@ -7863,6 +8060,10 @@ const COMPONENT_NAME$O = 'InlineList';
7863
8060
  * Component default class name and class prefix.
7864
8061
  */
7865
8062
  const CLASSNAME$O = 'lumx-inline-list';
8063
+ const {
8064
+ block: block$I,
8065
+ element: element$w
8066
+ } = classNames.bem(CLASSNAME$O);
7866
8067
 
7867
8068
  /**
7868
8069
  * Component default props.
@@ -7892,7 +8093,9 @@ const InlineList = forwardRef((props, ref) => {
7892
8093
  jsx("ul", {
7893
8094
  ...forwardedProps,
7894
8095
  ref: ref,
7895
- className: classNames.join(className, CLASSNAME$O, wrap && `${CLASSNAME$O}--wrap`, color && classNames.font(color, colorVariant), typography && classNames.typography(typography))
8096
+ className: classNames.join(className, block$I({
8097
+ wrap: Boolean(wrap)
8098
+ }), color && classNames.font(color, colorVariant), typography && classNames.typography(typography))
7896
8099
  // Lists with removed bullet style can lose their a11y list role on some browsers
7897
8100
  ,
7898
8101
  role: "list",
@@ -7904,9 +8107,9 @@ const InlineList = forwardRef((props, ref) => {
7904
8107
  // eslint-disable-next-line jsx-a11y/no-redundant-roles
7905
8108
  jsxs("li", {
7906
8109
  role: "listitem",
7907
- className: `${CLASSNAME$O}__item`,
8110
+ className: element$w('item'),
7908
8111
  children: [index !== 0 && /*#__PURE__*/jsx("span", {
7909
- className: `${CLASSNAME$O}__item-separator`,
8112
+ className: element$w('item-separator'),
7910
8113
  "aria-hidden": "true",
7911
8114
  children: '\u00A0•\u00A0'
7912
8115
  }), child]
@@ -7940,6 +8143,9 @@ const InputHelperClassName = 'lumx-input-helper';
7940
8143
  */
7941
8144
 
7942
8145
  const CLASSNAME$N = InputHelperClassName;
8146
+ const {
8147
+ block: block$H
8148
+ } = bem(CLASSNAME$N);
7943
8149
 
7944
8150
  /**
7945
8151
  * Component default props.
@@ -7966,10 +8172,9 @@ function InputHelper$1(props) {
7966
8172
  return /*#__PURE__*/jsx("p", {
7967
8173
  ref: ref,
7968
8174
  ...forwardedProps,
7969
- className: classnames(className, handleBasicClasses({
7970
- prefix: CLASSNAME$N,
7971
- color,
7972
- theme
8175
+ className: classnames(className, block$H({
8176
+ [`color-${color}`]: Boolean(color),
8177
+ [`theme-${theme}`]: Boolean(theme)
7973
8178
  })),
7974
8179
  children: children
7975
8180
  });
@@ -8000,6 +8205,9 @@ InputHelper.defaultProps = InputHelper$1.defaultProps;
8000
8205
  const COMPONENT_NAME$M = 'InputLabel';
8001
8206
  const InputLabelClassName = 'lumx-input-label';
8002
8207
  const CLASSNAME$M = InputLabelClassName;
8208
+ const {
8209
+ block: block$G
8210
+ } = bem(CLASSNAME$M);
8003
8211
  const DEFAULT_PROPS$G = {};
8004
8212
 
8005
8213
  /**
@@ -8020,11 +8228,10 @@ function InputLabel$1(props) {
8020
8228
  ref: ref,
8021
8229
  ...forwardedProps,
8022
8230
  htmlFor: htmlFor,
8023
- className: classnames(className, handleBasicClasses({
8024
- prefix: CLASSNAME$M,
8025
- isRequired,
8026
- theme,
8027
- hasCustomTypography: Boolean(typography$1)
8231
+ className: classnames(className, block$G({
8232
+ 'is-required': isRequired,
8233
+ [`theme-${theme}`]: Boolean(theme),
8234
+ 'has-custom-typography': Boolean(typography$1)
8028
8235
  }), typography$1 && typography(typography$1)),
8029
8236
  children: children
8030
8237
  });
@@ -8061,6 +8268,10 @@ const COMPONENT_NAME$L = 'Lightbox';
8061
8268
  * Component default class name and class prefix.
8062
8269
  */
8063
8270
  const CLASSNAME$L = 'lumx-lightbox';
8271
+ const {
8272
+ block: block$F,
8273
+ element: element$v
8274
+ } = classNames.bem(CLASSNAME$L);
8064
8275
 
8065
8276
  /**
8066
8277
  * Lightbox component.
@@ -8144,17 +8355,16 @@ const Lightbox = forwardRef((props, ref) => {
8144
8355
  "aria-modal": "true",
8145
8356
  role: "dialog",
8146
8357
  tabIndex: -1,
8147
- className: classNames.join(className, handleBasicClasses({
8148
- prefix: CLASSNAME$L,
8149
- isHidden: !isOpen,
8150
- isShown: isOpen || isVisible,
8151
- theme
8358
+ className: classNames.join(className, block$F({
8359
+ 'is-hidden': !isOpen,
8360
+ 'is-shown': isOpen || isVisible,
8361
+ [`theme-${theme}`]: Boolean(theme)
8152
8362
  })),
8153
8363
  style: {
8154
8364
  zIndex
8155
8365
  },
8156
8366
  children: [closeButtonProps && /*#__PURE__*/jsx("div", {
8157
- className: `${CLASSNAME$L}__close`,
8367
+ className: element$v('close'),
8158
8368
  children: /*#__PURE__*/jsx(IconButton, {
8159
8369
  ...closeButtonProps,
8160
8370
  ref: closeButtonRef,
@@ -8174,7 +8384,7 @@ const Lightbox = forwardRef((props, ref) => {
8174
8384
  childrenRefs: clickAwayRefs,
8175
8385
  children: /*#__PURE__*/jsx("div", {
8176
8386
  ref: childrenRef,
8177
- className: `${CLASSNAME$L}__wrapper`,
8387
+ className: element$v('wrapper'),
8178
8388
  role: "presentation",
8179
8389
  children: children
8180
8390
  })
@@ -8210,6 +8420,10 @@ const COMPONENT_NAME$K = 'Link';
8210
8420
  * Component default class name and class prefix.
8211
8421
  */
8212
8422
  const CLASSNAME$K = 'lumx-link';
8423
+ const {
8424
+ block: block$E,
8425
+ element: element$u
8426
+ } = classNames.bem(CLASSNAME$K);
8213
8427
 
8214
8428
  /**
8215
8429
  * Link component.
@@ -8240,22 +8454,21 @@ const Link = forwardRef((props, ref) => {
8240
8454
  as: linkAs || (forwardedProps.href ? 'a' : 'button'),
8241
8455
  ...forwardedProps,
8242
8456
  ...disabledStateProps,
8243
- className: classNames.join(className, handleBasicClasses({
8244
- prefix: CLASSNAME$K,
8245
- color,
8246
- colorVariant,
8247
- hasTypography: !!typography
8457
+ className: classNames.join(className, block$E({
8458
+ [`color-${color}`]: Boolean(color),
8459
+ [`color-variant-${colorVariant}`]: Boolean(colorVariant),
8460
+ 'has-typography': !!typography
8248
8461
  }), typography && classNames.typography(typography)),
8249
8462
  children: wrapChildrenIconWithSpaces(/*#__PURE__*/jsxs(Fragment, {
8250
8463
  children: [leftIcon && /*#__PURE__*/jsx(Icon, {
8251
8464
  icon: leftIcon,
8252
- className: `${CLASSNAME$K}__left-icon`
8465
+ className: element$u('left-icon')
8253
8466
  }), children && /*#__PURE__*/jsx("span", {
8254
- className: `${CLASSNAME$K}__content`,
8467
+ className: element$u('content'),
8255
8468
  children: children
8256
8469
  }), rightIcon && /*#__PURE__*/jsx(Icon, {
8257
8470
  icon: rightIcon,
8258
- className: `${CLASSNAME$K}__right-icon`
8471
+ className: element$u('right-icon')
8259
8472
  })]
8260
8473
  }))
8261
8474
  });
@@ -8272,6 +8485,10 @@ const COMPONENT_NAME$J = 'LinkPreview';
8272
8485
  * Component default class name and class prefix.
8273
8486
  */
8274
8487
  const CLASSNAME$J = 'lumx-link-preview';
8488
+ const {
8489
+ block: block$D,
8490
+ element: element$t
8491
+ } = classNames.bem(CLASSNAME$J);
8275
8492
 
8276
8493
  /**
8277
8494
  * Component default props.
@@ -8305,18 +8522,18 @@ const LinkPreview = forwardRef((props, ref) => {
8305
8522
  } = props;
8306
8523
  // Use title heading as title wrapper (see DEFAULT_PROPS for the default value).
8307
8524
  const TitleHeading = titleHeading;
8525
+ const adjustedSize = size === Size$1.big && thumbnailProps ? Size$1.big : Size$1.regular;
8308
8526
  return /*#__PURE__*/jsx("article", {
8309
8527
  ref: ref,
8310
8528
  ...forwardedProps,
8311
- className: classNames.join(className, handleBasicClasses({
8312
- prefix: CLASSNAME$J,
8313
- size: size === Size$1.big && thumbnailProps ? Size$1.big : Size$1.regular,
8314
- theme
8529
+ className: classNames.join(className, block$D({
8530
+ [`size-${adjustedSize}`]: Boolean(adjustedSize),
8531
+ [`theme-${theme}`]: Boolean(theme)
8315
8532
  })),
8316
8533
  children: /*#__PURE__*/jsxs("div", {
8317
- className: `${CLASSNAME$J}__wrapper`,
8534
+ className: element$t('wrapper'),
8318
8535
  children: [thumbnailProps && /*#__PURE__*/jsx("div", {
8319
- className: `${CLASSNAME$J}__thumbnail`,
8536
+ className: element$t('thumbnail'),
8320
8537
  children: /*#__PURE__*/jsx(Thumbnail, {
8321
8538
  ...thumbnailProps,
8322
8539
  linkAs: linkAs,
@@ -8331,9 +8548,9 @@ const LinkPreview = forwardRef((props, ref) => {
8331
8548
  fillHeight: true
8332
8549
  })
8333
8550
  }), /*#__PURE__*/jsxs("div", {
8334
- className: `${CLASSNAME$J}__container`,
8551
+ className: element$t('container'),
8335
8552
  children: [title && /*#__PURE__*/jsx(TitleHeading, {
8336
- className: `${CLASSNAME$J}__title`,
8553
+ className: element$t('title'),
8337
8554
  children: /*#__PURE__*/jsx(Link, {
8338
8555
  ...linkProps,
8339
8556
  linkAs: linkAs,
@@ -8344,14 +8561,14 @@ const LinkPreview = forwardRef((props, ref) => {
8344
8561
  children: title
8345
8562
  })
8346
8563
  }), description && /*#__PURE__*/jsx("p", {
8347
- className: `${CLASSNAME$J}__description`,
8564
+ className: element$t('description'),
8348
8565
  children: description
8349
8566
  }), /*#__PURE__*/jsx("div", {
8350
- className: `${CLASSNAME$J}__link`,
8567
+ className: element$t('link'),
8351
8568
  children: /*#__PURE__*/jsx(Link, {
8352
8569
  ...linkProps,
8353
8570
  linkAs: linkAs,
8354
- className: classNames.join(`${CLASSNAME$J}__link`, linkProps?.className),
8571
+ className: classNames.join(element$t('link'), linkProps?.className),
8355
8572
  target: "_blank",
8356
8573
  href: link,
8357
8574
  color: theme === Theme$1.light ? ColorPalette$1.primary : ColorPalette$1.light,
@@ -8393,6 +8610,10 @@ const COMPONENT_NAME$I = 'ListItem';
8393
8610
  * Component default class name and class prefix.
8394
8611
  */
8395
8612
  const CLASSNAME$I = 'lumx-list-item';
8613
+ const {
8614
+ block: block$C,
8615
+ element: element$s
8616
+ } = classNames.bem(CLASSNAME$I);
8396
8617
 
8397
8618
  /**
8398
8619
  * Component default props.
@@ -8447,22 +8668,21 @@ const ListItem = forwardRef((props, ref) => {
8447
8668
  }, [role, onItemSelected]);
8448
8669
  const content = /*#__PURE__*/jsxs(Fragment, {
8449
8670
  children: [before && /*#__PURE__*/jsx("div", {
8450
- className: `${CLASSNAME$I}__before`,
8671
+ className: element$s('before'),
8451
8672
  children: before
8452
8673
  }), /*#__PURE__*/jsx("div", {
8453
- className: `${CLASSNAME$I}__content`,
8674
+ className: element$s('content'),
8454
8675
  children: children
8455
8676
  }), after && /*#__PURE__*/jsx("div", {
8456
- className: `${CLASSNAME$I}__after`,
8677
+ className: element$s('after'),
8457
8678
  children: after
8458
8679
  })]
8459
8680
  });
8460
8681
  return /*#__PURE__*/jsx("li", {
8461
8682
  ref: ref,
8462
8683
  ...forwardedProps,
8463
- className: classNames.join(className, handleBasicClasses({
8464
- prefix: CLASSNAME$I,
8465
- size
8684
+ className: classNames.join(className, block$C({
8685
+ [`size-${size}`]: Boolean(size)
8466
8686
  })),
8467
8687
  children: isClickable({
8468
8688
  linkProps,
@@ -8475,11 +8695,10 @@ const ListItem = forwardRef((props, ref) => {
8475
8695
  'aria-disabled': isAnyDisabled,
8476
8696
  ...linkProps,
8477
8697
  href: isAnyDisabled ? undefined : linkProps.href,
8478
- className: classNames.join(handleBasicClasses({
8479
- prefix: `${CLASSNAME$I}__link`,
8480
- isHighlighted,
8481
- isSelected,
8482
- isDisabled: isAnyDisabled
8698
+ className: classNames.join(element$s('link', {
8699
+ 'is-highlighted': isHighlighted,
8700
+ 'is-selected': isSelected,
8701
+ 'is-disabled': isAnyDisabled
8483
8702
  })),
8484
8703
  onClick: isAnyDisabled ? undefined : onItemSelected,
8485
8704
  onKeyDown: isAnyDisabled ? undefined : onKeyDown,
@@ -8488,7 +8707,7 @@ const ListItem = forwardRef((props, ref) => {
8488
8707
  /*#__PURE__*/
8489
8708
  /* Non clickable list item */
8490
8709
  jsx("div", {
8491
- className: `${CLASSNAME$I}__wrapper`,
8710
+ className: element$s('wrapper'),
8492
8711
  children: content
8493
8712
  })
8494
8713
  });
@@ -8570,25 +8789,29 @@ const COMPONENT_NAME$F = 'Message';
8570
8789
  * Component default class name and class prefix.
8571
8790
  */
8572
8791
  const CLASSNAME$F = 'lumx-message';
8792
+ const {
8793
+ block: block$B,
8794
+ element: element$r
8795
+ } = bem(CLASSNAME$F);
8573
8796
 
8574
8797
  /**
8575
8798
  * Associative map from message kind to color and icon.
8576
8799
  */
8577
8800
  const CONFIG = {
8578
- [Kind$1.error]: {
8579
- color: ColorPalette$1.red,
8801
+ [Kind.error]: {
8802
+ color: ColorPalette.red,
8580
8803
  icon: mdiAlert
8581
8804
  },
8582
- [Kind$1.info]: {
8583
- color: ColorPalette$1.blue,
8805
+ [Kind.info]: {
8806
+ color: ColorPalette.blue,
8584
8807
  icon: mdiInformation
8585
8808
  },
8586
- [Kind$1.success]: {
8587
- color: ColorPalette$1.green,
8809
+ [Kind.success]: {
8810
+ color: ColorPalette.green,
8588
8811
  icon: mdiCheckCircle
8589
8812
  },
8590
- [Kind$1.warning]: {
8591
- color: ColorPalette$1.yellow,
8813
+ [Kind.warning]: {
8814
+ color: ColorPalette.yellow,
8592
8815
  icon: mdiAlertCircle
8593
8816
  }
8594
8817
  };
@@ -8597,10 +8820,9 @@ const CONFIG = {
8597
8820
  * Message component.
8598
8821
  *
8599
8822
  * @param props Component props.
8600
- * @param ref Component ref.
8601
- * @return React element.
8823
+ * @return JSX element.
8602
8824
  */
8603
- const Message = forwardRef((props, ref) => {
8825
+ const Message$1 = props => {
8604
8826
  const {
8605
8827
  children,
8606
8828
  className,
@@ -8620,29 +8842,43 @@ const Message = forwardRef((props, ref) => {
8620
8842
  } = closeButtonProps || {};
8621
8843
  const isCloseButtonDisplayed = hasBackground && kind === 'info' && onClick && closeButtonLabel;
8622
8844
  return /*#__PURE__*/jsxs("div", {
8623
- ref: ref,
8624
- className: classNames.join(className, handleBasicClasses({
8625
- color,
8626
- hasBackground,
8627
- prefix: CLASSNAME$F
8628
- })),
8629
8845
  ...forwardedProps,
8630
- children: [(customIcon || icon) && /*#__PURE__*/jsx(Icon, {
8631
- className: `${CLASSNAME$F}__icon`,
8846
+ className: classnames(className, block$B({
8847
+ [`color-${color}`]: Boolean(color),
8848
+ 'has-background': hasBackground
8849
+ })),
8850
+ children: [(customIcon || icon) && Icon$1({
8851
+ className: element$r('icon'),
8632
8852
  icon: customIcon || icon,
8633
- size: Size$1.xs,
8634
- color: color
8853
+ size: Size.xs,
8854
+ color
8635
8855
  }), /*#__PURE__*/jsx("div", {
8636
- className: `${CLASSNAME$F}__text`,
8856
+ className: element$r('text'),
8637
8857
  children: children
8638
- }), isCloseButtonDisplayed && /*#__PURE__*/jsx(IconButton, {
8639
- className: `${CLASSNAME$F}__close-button`,
8858
+ }), isCloseButtonDisplayed && IconButton$1({
8859
+ className: element$r('close-button'),
8640
8860
  icon: mdiClose,
8641
- onClick: onClick,
8861
+ onClick,
8642
8862
  label: closeButtonLabel,
8643
- emphasis: Emphasis$1.low
8863
+ emphasis: Emphasis.low
8644
8864
  })]
8645
8865
  });
8866
+ };
8867
+ Message$1.displayName = COMPONENT_NAME$F;
8868
+ Message$1.className = CLASSNAME$F;
8869
+
8870
+ /**
8871
+ * Message component.
8872
+ *
8873
+ * @param props Component props.
8874
+ * @param ref Component ref.
8875
+ * @return React element.
8876
+ */
8877
+ const Message = forwardRef((props, ref) => {
8878
+ return Message$1({
8879
+ ...props,
8880
+ ref
8881
+ });
8646
8882
  });
8647
8883
  Message.displayName = COMPONENT_NAME$F;
8648
8884
  Message.className = CLASSNAME$F;
@@ -8656,6 +8892,10 @@ const COMPONENT_NAME$E = 'Mosaic';
8656
8892
  * Component default class name and class prefix.
8657
8893
  */
8658
8894
  const CLASSNAME$E = 'lumx-mosaic';
8895
+ const {
8896
+ block: block$A,
8897
+ element: element$q
8898
+ } = classNames.bem(CLASSNAME$E);
8659
8899
 
8660
8900
  /**
8661
8901
  * Component default props.
@@ -8688,17 +8928,15 @@ const Mosaic = forwardRef((props, ref) => {
8688
8928
  return /*#__PURE__*/jsx("div", {
8689
8929
  ref: ref,
8690
8930
  ...forwardedProps,
8691
- className: classNames.join(className, handleBasicClasses({
8692
- prefix: CLASSNAME$E,
8693
- theme
8694
- }), {
8695
- [`${CLASSNAME$E}--has-1-thumbnail`]: thumbnails?.length === 1,
8696
- [`${CLASSNAME$E}--has-2-thumbnails`]: thumbnails?.length === 2,
8697
- [`${CLASSNAME$E}--has-3-thumbnails`]: thumbnails?.length === 3,
8698
- [`${CLASSNAME$E}--has-4-thumbnails`]: thumbnails?.length >= 4
8699
- }),
8931
+ className: classNames.join(className, block$A({
8932
+ [`theme-${theme}`]: Boolean(theme),
8933
+ 'has-1-thumbnail': thumbnails?.length === 1,
8934
+ 'has-2-thumbnails': thumbnails?.length === 2,
8935
+ 'has-3-thumbnails': thumbnails?.length === 3,
8936
+ 'has-4-thumbnails': thumbnails?.length >= 4
8937
+ })),
8700
8938
  children: /*#__PURE__*/jsx("div", {
8701
- className: `${CLASSNAME$E}__wrapper`,
8939
+ className: element$q('wrapper'),
8702
8940
  children: take(thumbnails, 4).map((thumbnail, index) => {
8703
8941
  const {
8704
8942
  image,
@@ -8707,7 +8945,7 @@ const Mosaic = forwardRef((props, ref) => {
8707
8945
  ...thumbnailProps
8708
8946
  } = thumbnail;
8709
8947
  return /*#__PURE__*/jsxs("div", {
8710
- className: `${CLASSNAME$E}__thumbnail`,
8948
+ className: element$q('thumbnail'),
8711
8949
  children: [/*#__PURE__*/jsx(Thumbnail, {
8712
8950
  ...thumbnailProps,
8713
8951
  align: align || Alignment.left,
@@ -8717,7 +8955,7 @@ const Mosaic = forwardRef((props, ref) => {
8717
8955
  fillHeight: true,
8718
8956
  onClick: handleImageClick?.(index, onClick) || onClick
8719
8957
  }), thumbnails.length > 4 && index === 3 && /*#__PURE__*/jsx("div", {
8720
- className: `${CLASSNAME$E}__overlay`,
8958
+ className: element$q('overlay'),
8721
8959
  children: /*#__PURE__*/jsxs("span", {
8722
8960
  children: ["+", thumbnails.length - 4]
8723
8961
  })
@@ -8754,6 +8992,14 @@ const COMPONENT_NAME$D = 'NavigationSection';
8754
8992
  * Component default class name and class prefix.
8755
8993
  */
8756
8994
  const CLASSNAME$D = 'lumx-navigation-section';
8995
+ const {
8996
+ block: sectionBlock,
8997
+ element: sectionElement
8998
+ } = classNames.bem(CLASSNAME$D);
8999
+ const {
9000
+ block: itemBlock,
9001
+ element: itemElement
9002
+ } = classNames.bem(ITEM_CLASSNAME);
8757
9003
  const NavigationSection = forwardRef((props, ref) => {
8758
9004
  const {
8759
9005
  children,
@@ -8771,9 +9017,8 @@ const NavigationSection = forwardRef((props, ref) => {
8771
9017
  const theme = useTheme();
8772
9018
  const isDropdown = orientation === Orientation.horizontal;
8773
9019
  return /*#__PURE__*/jsxs("li", {
8774
- className: classNames.join(className, CLASSNAME$D, ITEM_CLASSNAME, handleBasicClasses({
8775
- prefix: ITEM_CLASSNAME,
8776
- theme
9020
+ className: classNames.join(className, sectionBlock(), itemBlock({
9021
+ [`theme-${theme}`]: Boolean(theme)
8777
9022
  })),
8778
9023
  ref: ref,
8779
9024
  children: [/*#__PURE__*/jsxs(RawClickable, {
@@ -8781,24 +9026,24 @@ const NavigationSection = forwardRef((props, ref) => {
8781
9026
  ...forwardedProps,
8782
9027
  "aria-controls": sectionId,
8783
9028
  "aria-expanded": isOpen,
8784
- className: classNames.join(`${ITEM_CLASSNAME}__link`),
9029
+ className: itemElement('link'),
8785
9030
  ref: buttonRef,
8786
9031
  onClick: event => {
8787
9032
  setIsOpen(!isOpen);
8788
9033
  event.stopPropagation();
8789
9034
  },
8790
9035
  children: [icon ? /*#__PURE__*/jsx(Icon, {
8791
- className: `${ITEM_CLASSNAME}__icon`,
9036
+ className: itemElement('icon'),
8792
9037
  icon: icon,
8793
9038
  size: Size$1.xs
8794
9039
  }) : null, /*#__PURE__*/jsx(Text, {
8795
9040
  as: "span",
8796
9041
  truncate: true,
8797
- className: `${ITEM_CLASSNAME}__label`,
9042
+ className: itemElement('label'),
8798
9043
  ref: ref,
8799
9044
  children: label
8800
9045
  }), /*#__PURE__*/jsx(Icon, {
8801
- className: classNames.join(`${ITEM_CLASSNAME}__icon`, `${CLASSNAME$D}__chevron`),
9046
+ className: classNames.join(itemElement('icon'), sectionElement('chevron')),
8802
9047
  icon: isOpen ? mdiChevronUp : mdiChevronDown
8803
9048
  })]
8804
9049
  }), isOpen && (isDropdown ? /*#__PURE__*/jsx(Popover, {
@@ -8814,7 +9059,9 @@ const NavigationSection = forwardRef((props, ref) => {
8814
9059
  children: /*#__PURE__*/jsx(ThemeProvider, {
8815
9060
  value: Theme$1.light,
8816
9061
  children: /*#__PURE__*/jsx("ul", {
8817
- className: `${CLASSNAME$D}__drawer--popover`,
9062
+ className: sectionElement('drawer', {
9063
+ popover: true
9064
+ }),
8818
9065
  id: sectionId,
8819
9066
  children: /*#__PURE__*/jsx(NavigationContext.Provider, {
8820
9067
  value: {
@@ -8825,7 +9072,7 @@ const NavigationSection = forwardRef((props, ref) => {
8825
9072
  })
8826
9073
  })
8827
9074
  }) : /*#__PURE__*/jsx("ul", {
8828
- className: `${CLASSNAME$D}__drawer`,
9075
+ className: sectionElement('drawer'),
8829
9076
  id: sectionId,
8830
9077
  children: children
8831
9078
  }))]
@@ -8834,6 +9081,15 @@ const NavigationSection = forwardRef((props, ref) => {
8834
9081
  NavigationSection.displayName = COMPONENT_NAME$D;
8835
9082
  NavigationSection.className = CLASSNAME$D;
8836
9083
 
9084
+ const {
9085
+ block: block$z,
9086
+ element: element$p
9087
+ } = classNames.bem(ITEM_CLASSNAME);
9088
+
9089
+ /**
9090
+ * Navigation item props
9091
+ */
9092
+
8837
9093
  const NavigationItem = Object.assign(forwardRefPolymorphic((props, ref) => {
8838
9094
  const {
8839
9095
  className,
@@ -8849,31 +9105,29 @@ const NavigationItem = Object.assign(forwardRefPolymorphic((props, ref) => {
8849
9105
  labelRef
8850
9106
  } = useOverflowTooltipLabel(label);
8851
9107
  return /*#__PURE__*/jsx("li", {
8852
- className: classNames.join(className, handleBasicClasses({
8853
- prefix: ITEM_CLASSNAME,
8854
- theme
9108
+ className: classNames.join(className, block$z({
9109
+ [`theme-${theme}`]: Boolean(theme)
8855
9110
  })),
8856
9111
  children: /*#__PURE__*/jsx(Tooltip, {
8857
9112
  label: tooltipLabel,
8858
9113
  placement: Placement.TOP,
8859
9114
  children: /*#__PURE__*/jsxs(RawClickable, {
8860
9115
  as: Element,
8861
- className: handleBasicClasses({
8862
- prefix: `${ITEM_CLASSNAME}__link`,
8863
- isSelected: isCurrentPage
9116
+ className: element$p('link', {
9117
+ 'is-selected': isCurrentPage
8864
9118
  }),
8865
9119
  ref: ref,
8866
9120
  "aria-current": isCurrentPage ? 'page' : undefined,
8867
9121
  ...forwardedProps,
8868
9122
  children: [icon ? /*#__PURE__*/jsx(Icon, {
8869
- className: `${ITEM_CLASSNAME}__icon`,
9123
+ className: element$p('icon'),
8870
9124
  icon: icon,
8871
9125
  size: Size$1.xs,
8872
9126
  theme: theme
8873
9127
  }) : null, /*#__PURE__*/jsx(Text, {
8874
9128
  as: "span",
8875
9129
  truncate: true,
8876
- className: `${ITEM_CLASSNAME}__label`,
9130
+ className: element$p('label'),
8877
9131
  ref: labelRef,
8878
9132
  children: label
8879
9133
  })]
@@ -8894,6 +9148,10 @@ const COMPONENT_NAME$C = 'Navigation';
8894
9148
  * Component default class name and class prefix.
8895
9149
  */
8896
9150
  const CLASSNAME$C = 'lumx-navigation';
9151
+ const {
9152
+ block: block$y,
9153
+ element: element$o
9154
+ } = classNames.bem(CLASSNAME$C);
8897
9155
 
8898
9156
  /**
8899
9157
  * Component default props
@@ -8913,10 +9171,9 @@ const Navigation = forwardRef((props, ref) => {
8913
9171
  return /*#__PURE__*/jsx(ThemeProvider, {
8914
9172
  value: theme,
8915
9173
  children: /*#__PURE__*/jsx("nav", {
8916
- className: classNames.join(className, handleBasicClasses({
8917
- prefix: CLASSNAME$C,
8918
- theme,
8919
- orientation
9174
+ className: classNames.join(className, block$y({
9175
+ [`theme-${theme}`]: Boolean(theme),
9176
+ [`orientation-${orientation}`]: Boolean(orientation)
8920
9177
  })),
8921
9178
  ref: ref,
8922
9179
  ...forwardedProps,
@@ -8925,7 +9182,7 @@ const Navigation = forwardRef((props, ref) => {
8925
9182
  orientation
8926
9183
  },
8927
9184
  children: /*#__PURE__*/jsx("ul", {
8928
- className: `${CLASSNAME$C}__list`,
9185
+ className: element$o('list'),
8929
9186
  children: children
8930
9187
  })
8931
9188
  })
@@ -8971,6 +9228,10 @@ const COMPONENT_NAME$B = 'Notification';
8971
9228
  * Component default class name and class prefix.
8972
9229
  */
8973
9230
  const CLASSNAME$B = 'lumx-notification';
9231
+ const {
9232
+ block: block$x,
9233
+ element: element$n
9234
+ } = classNames.bem(CLASSNAME$B);
8974
9235
 
8975
9236
  /**
8976
9237
  * Component default props.
@@ -9030,11 +9291,10 @@ const Notification = forwardRef((props, ref) => {
9030
9291
  ref: mergeRefs(ref, rootRef),
9031
9292
  role: "alert",
9032
9293
  ...forwardedProps,
9033
- className: classNames.join(className, handleBasicClasses({
9034
- color,
9035
- hasAction,
9036
- isHidden: !isOpen,
9037
- prefix: CLASSNAME$B
9294
+ className: classNames.join(className, block$x({
9295
+ [`color-${color}`]: Boolean(color),
9296
+ 'has-action': hasAction,
9297
+ 'is-hidden': !isOpen
9038
9298
  })),
9039
9299
  onClick: onClick,
9040
9300
  style: {
@@ -9042,16 +9302,16 @@ const Notification = forwardRef((props, ref) => {
9042
9302
  zIndex
9043
9303
  },
9044
9304
  children: [/*#__PURE__*/jsx("div", {
9045
- className: `${CLASSNAME$B}__icon`,
9305
+ className: element$n('icon'),
9046
9306
  children: /*#__PURE__*/jsx(Icon, {
9047
9307
  icon: icon,
9048
9308
  size: Size$1.s
9049
9309
  })
9050
9310
  }), /*#__PURE__*/jsx("div", {
9051
- className: `${CLASSNAME$B}__content`,
9311
+ className: element$n('content'),
9052
9312
  children: content
9053
9313
  }), hasAction && /*#__PURE__*/jsx("div", {
9054
- className: `${CLASSNAME$B}__action`,
9314
+ className: element$n('action'),
9055
9315
  children: /*#__PURE__*/jsx(Button, {
9056
9316
  emphasis: Emphasis$1.medium,
9057
9317
  theme: theme,
@@ -9135,6 +9395,10 @@ const COMPONENT_NAME$z = 'PostBlock';
9135
9395
  * Component default class name and class prefix.
9136
9396
  */
9137
9397
  const CLASSNAME$z = 'lumx-post-block';
9398
+ const {
9399
+ block: block$w,
9400
+ element: element$m
9401
+ } = classNames.bem(CLASSNAME$z);
9138
9402
 
9139
9403
  /**
9140
9404
  * Component default props.
@@ -9169,51 +9433,50 @@ const PostBlock = forwardRef((props, ref) => {
9169
9433
  } = props;
9170
9434
  return /*#__PURE__*/jsxs("div", {
9171
9435
  ref: ref,
9172
- className: classNames.join(className, handleBasicClasses({
9173
- prefix: CLASSNAME$z,
9174
- orientation,
9175
- theme
9436
+ className: classNames.join(className, block$w({
9437
+ [`orientation-${orientation}`]: Boolean(orientation),
9438
+ [`theme-${theme}`]: Boolean(theme)
9176
9439
  })),
9177
9440
  ...forwardedProps,
9178
9441
  children: [thumbnailProps && /*#__PURE__*/jsx("div", {
9179
- className: `${CLASSNAME$z}__thumbnail`,
9442
+ className: element$m('thumbnail'),
9180
9443
  children: /*#__PURE__*/jsx(Thumbnail, {
9181
9444
  ...thumbnailProps,
9182
9445
  theme: theme,
9183
9446
  variant: ThumbnailVariant.rounded
9184
9447
  })
9185
9448
  }), /*#__PURE__*/jsxs("div", {
9186
- className: `${CLASSNAME$z}__wrapper`,
9449
+ className: element$m('wrapper'),
9187
9450
  children: [author && /*#__PURE__*/jsx("div", {
9188
- className: `${CLASSNAME$z}__author`,
9451
+ className: element$m('author'),
9189
9452
  children: author
9190
9453
  }), title && /*#__PURE__*/jsx("button", {
9191
9454
  type: "button",
9192
- className: `${CLASSNAME$z}__title`,
9455
+ className: element$m('title'),
9193
9456
  onClick: onClick,
9194
9457
  children: title
9195
9458
  }), meta && /*#__PURE__*/jsx("span", {
9196
- className: `${CLASSNAME$z}__meta`,
9459
+ className: element$m('meta'),
9197
9460
  children: meta
9198
9461
  }), typeof text === 'string' ? /*#__PURE__*/jsx("p", {
9199
- className: `${CLASSNAME$z}__text`,
9462
+ className: element$m('text'),
9200
9463
  children: text
9201
9464
  }) :
9202
9465
  /*#__PURE__*/
9203
9466
  // eslint-disable-next-line react/no-danger
9204
9467
  jsx("p", {
9205
9468
  dangerouslySetInnerHTML: text,
9206
- className: `${CLASSNAME$z}__text`
9469
+ className: element$m('text')
9207
9470
  }), attachments && /*#__PURE__*/jsx("div", {
9208
- className: `${CLASSNAME$z}__attachments`,
9471
+ className: element$m('attachments'),
9209
9472
  children: attachments
9210
9473
  }), (tags || actions) && /*#__PURE__*/jsxs("div", {
9211
- className: `${CLASSNAME$z}__toolbar`,
9474
+ className: element$m('toolbar'),
9212
9475
  children: [tags && /*#__PURE__*/jsx("div", {
9213
- className: `${CLASSNAME$z}__tags`,
9476
+ className: element$m('tags'),
9214
9477
  children: tags
9215
9478
  }), actions && /*#__PURE__*/jsx("div", {
9216
- className: `${CLASSNAME$z}__actions`,
9479
+ className: element$m('actions'),
9217
9480
  children: actions
9218
9481
  })]
9219
9482
  })]
@@ -9233,6 +9496,10 @@ const COMPONENT_NAME$y = 'ProgressLinear';
9233
9496
  * Component default class name and class prefix.
9234
9497
  */
9235
9498
  const CLASSNAME$y = 'lumx-progress-linear';
9499
+ const {
9500
+ block: block$v,
9501
+ element: element$l
9502
+ } = classNames.bem(CLASSNAME$y);
9236
9503
 
9237
9504
  /**
9238
9505
  * Component default props.
@@ -9256,14 +9523,13 @@ const ProgressLinear = forwardRef((props, ref) => {
9256
9523
  return /*#__PURE__*/jsxs("div", {
9257
9524
  ref: ref,
9258
9525
  ...forwardedProps,
9259
- className: classNames.join(className, handleBasicClasses({
9260
- prefix: CLASSNAME$y,
9261
- theme
9526
+ className: classNames.join(className, block$v({
9527
+ [`theme-${theme}`]: Boolean(theme)
9262
9528
  })),
9263
9529
  children: [/*#__PURE__*/jsx("div", {
9264
- className: "lumx-progress-linear__line1"
9530
+ className: element$l('line1')
9265
9531
  }), /*#__PURE__*/jsx("div", {
9266
- className: "lumx-progress-linear__line2"
9532
+ className: element$l('line2')
9267
9533
  })]
9268
9534
  });
9269
9535
  });
@@ -9280,6 +9546,10 @@ const COMPONENT_NAME$x = 'ProgressCircular';
9280
9546
  * Component default class name and class prefix.
9281
9547
  */
9282
9548
  const CLASSNAME$x = 'lumx-progress-circular';
9549
+ const {
9550
+ block: block$u,
9551
+ element: element$k
9552
+ } = classNames.bem(CLASSNAME$x);
9283
9553
 
9284
9554
  /**
9285
9555
  * Component default props.
@@ -9309,21 +9579,20 @@ const ProgressCircular = forwardRef((props, ref) => {
9309
9579
  return /*#__PURE__*/jsxs(Element, {
9310
9580
  ref: ref,
9311
9581
  ...forwardedProps,
9312
- className: classNames.join(className, handleBasicClasses({
9313
- prefix: CLASSNAME$x,
9314
- theme,
9315
- size,
9316
- display
9582
+ className: classNames.join(className, block$u({
9583
+ [`theme-${theme}`]: Boolean(theme),
9584
+ [`size-${size}`]: Boolean(size),
9585
+ [`display-${display}`]: Boolean(display)
9317
9586
  })),
9318
9587
  children: [/*#__PURE__*/jsx(Element, {
9319
- className: "lumx-progress-circular__double-bounce1"
9588
+ className: element$k('double-bounce1')
9320
9589
  }), /*#__PURE__*/jsx(Element, {
9321
- className: "lumx-progress-circular__double-bounce2"
9590
+ className: element$k('double-bounce2')
9322
9591
  }), /*#__PURE__*/jsx("svg", {
9323
- className: "lumx-progress-circular__svg",
9592
+ className: element$k('svg'),
9324
9593
  viewBox: "25 25 50 50",
9325
9594
  children: /*#__PURE__*/jsx("circle", {
9326
- className: "lumx-progress-circular__path",
9595
+ className: element$k('path'),
9327
9596
  cx: "50",
9328
9597
  cy: "50",
9329
9598
  r: "20",
@@ -9355,6 +9624,9 @@ const COMPONENT_NAME$w = 'Progress';
9355
9624
  * Component default class name and class prefix.
9356
9625
  */
9357
9626
  const CLASSNAME$w = 'lumx-progress';
9627
+ const {
9628
+ block: block$t
9629
+ } = classNames.bem(CLASSNAME$w);
9358
9630
 
9359
9631
  /**
9360
9632
  * Component default props.
@@ -9382,10 +9654,9 @@ const Progress = forwardRef((props, ref) => {
9382
9654
  return /*#__PURE__*/jsxs("div", {
9383
9655
  ref: ref,
9384
9656
  ...forwardedProps,
9385
- className: classNames.join(className, handleBasicClasses({
9386
- prefix: CLASSNAME$w,
9387
- theme,
9388
- variant
9657
+ className: classNames.join(className, block$t({
9658
+ [`theme-${theme}`]: Boolean(theme),
9659
+ [`variant-${variant}`]: Boolean(variant)
9389
9660
  })),
9390
9661
  children: [variant === ProgressVariant.circular && /*#__PURE__*/jsx(ProgressCircular, {
9391
9662
  theme: theme
@@ -9659,6 +9930,10 @@ const COMPONENT_NAME$v = 'ProgressTracker';
9659
9930
  * Component default class name and class prefix.
9660
9931
  */
9661
9932
  const CLASSNAME$v = 'lumx-progress-tracker';
9933
+ const {
9934
+ block: block$s,
9935
+ element: element$j
9936
+ } = classNames.bem(CLASSNAME$v);
9662
9937
 
9663
9938
  /**
9664
9939
  * Component default props.
@@ -9695,20 +9970,20 @@ const ProgressTracker = forwardRef((props, ref) => {
9695
9970
  return /*#__PURE__*/jsxs("div", {
9696
9971
  ref: mergeRefs(ref, stepListRef),
9697
9972
  ...forwardedProps,
9698
- className: classNames.join(className, CLASSNAME$v),
9973
+ className: classNames.join(className, block$s()),
9699
9974
  children: [/*#__PURE__*/jsx("div", {
9700
- className: `${CLASSNAME$v}__steps`,
9975
+ className: element$j('steps'),
9701
9976
  role: "tablist",
9702
9977
  "aria-label": ariaLabel,
9703
9978
  children: children
9704
9979
  }), /*#__PURE__*/jsx("div", {
9705
- className: `${CLASSNAME$v}__background-bar`,
9980
+ className: element$j('background-bar'),
9706
9981
  style: {
9707
9982
  left: `${backgroundPosition}%`,
9708
9983
  right: `${backgroundPosition}%`
9709
9984
  }
9710
9985
  }), /*#__PURE__*/jsx("div", {
9711
- className: `${CLASSNAME$v}__foreground-bar`,
9986
+ className: element$j('foreground-bar'),
9712
9987
  style: {
9713
9988
  left: `${backgroundPosition}%`,
9714
9989
  right: `${backgroundPosition}%`,
@@ -9730,6 +10005,10 @@ const COMPONENT_NAME$u = 'ProgressTrackerStep';
9730
10005
  * Component default class name and class prefix.
9731
10006
  */
9732
10007
  const CLASSNAME$u = 'lumx-progress-tracker-step';
10008
+ const {
10009
+ block: block$r,
10010
+ element: element$i
10011
+ } = classNames.bem(CLASSNAME$u);
9733
10012
 
9734
10013
  /**
9735
10014
  * Component default props.
@@ -9798,12 +10077,11 @@ const ProgressTrackerStep = forwardRef((props, ref) => {
9798
10077
  ...forwardedProps,
9799
10078
  type: "button",
9800
10079
  id: state?.tabId,
9801
- className: classNames.join(className, handleBasicClasses({
9802
- prefix: CLASSNAME$u,
9803
- hasError,
9804
- isActive,
9805
- isClickable: state && !isAnyDisabled,
9806
- isComplete
10080
+ className: classNames.join(className, block$r({
10081
+ 'has-error': hasError,
10082
+ 'is-active': isActive,
10083
+ 'is-clickable': state && !isAnyDisabled,
10084
+ 'is-complete': isComplete
9807
10085
  })),
9808
10086
  onClick: changeToCurrentTab,
9809
10087
  onKeyPress: handleKeyPress,
@@ -9814,16 +10092,16 @@ const ProgressTrackerStep = forwardRef((props, ref) => {
9814
10092
  "aria-selected": isActive,
9815
10093
  "aria-controls": state?.tabPanelId,
9816
10094
  children: [/*#__PURE__*/jsx(Icon, {
9817
- className: `${CLASSNAME$u}__state`,
10095
+ className: element$i('state'),
9818
10096
  icon: getIcon(),
9819
10097
  size: Size$1.s
9820
10098
  }), /*#__PURE__*/jsx(InputLabel, {
9821
10099
  htmlFor: state?.tabId || '',
9822
- className: `${CLASSNAME$u}__label`,
10100
+ className: element$i('label'),
9823
10101
  children: label
9824
10102
  }), helper && /*#__PURE__*/jsx(InputHelper, {
9825
10103
  kind: hasError ? Kind$1.error : Kind$1.info,
9826
- className: `${CLASSNAME$u}__helper`,
10104
+ className: element$i('helper'),
9827
10105
  children: helper
9828
10106
  })]
9829
10107
  });
@@ -9841,6 +10119,9 @@ const COMPONENT_NAME$t = 'ProgressTrackerStepPanel';
9841
10119
  * Component default class name and class prefix.
9842
10120
  */
9843
10121
  const CLASSNAME$t = `lumx-step-panel`;
10122
+ const {
10123
+ block: block$q
10124
+ } = classNames.bem(CLASSNAME$t);
9844
10125
 
9845
10126
  /**
9846
10127
  * Component default props.
@@ -9870,9 +10151,8 @@ const ProgressTrackerStepPanel = forwardRef((props, ref) => {
9870
10151
  ref: ref,
9871
10152
  ...forwardedProps,
9872
10153
  id: state?.tabPanelId,
9873
- className: classNames.join(className, handleBasicClasses({
9874
- prefix: CLASSNAME$t,
9875
- isActive
10154
+ className: classNames.join(className, block$q({
10155
+ 'is-active': isActive
9876
10156
  })),
9877
10157
  role: "tabpanel",
9878
10158
  tabIndex: isActive ? 0 : -1,
@@ -9893,6 +10173,10 @@ const COMPONENT_NAME$s = 'RadioButton';
9893
10173
  * Component default class name and class prefix.
9894
10174
  */
9895
10175
  const CLASSNAME$s = 'lumx-radio-button';
10176
+ const {
10177
+ block: block$p,
10178
+ element: element$h
10179
+ } = classNames.bem(CLASSNAME$s);
9896
10180
 
9897
10181
  /**
9898
10182
  * Component default props.
@@ -9938,18 +10222,17 @@ const RadioButton = forwardRef((props, ref) => {
9938
10222
  return /*#__PURE__*/jsxs("div", {
9939
10223
  ref: ref,
9940
10224
  ...forwardedProps,
9941
- className: classNames.join(className, handleBasicClasses({
9942
- isChecked,
9943
- isDisabled: isAnyDisabled,
9944
- isUnchecked: !isChecked,
9945
- prefix: CLASSNAME$s,
9946
- theme
10225
+ className: classNames.join(className, block$p({
10226
+ 'is-checked': isChecked,
10227
+ 'is-disabled': isAnyDisabled,
10228
+ 'is-unchecked': !isChecked,
10229
+ [`theme-${theme}`]: Boolean(theme)
9947
10230
  })),
9948
10231
  children: [/*#__PURE__*/jsxs("div", {
9949
- className: `${CLASSNAME$s}__input-wrapper`,
10232
+ className: element$h('input-wrapper'),
9950
10233
  children: [/*#__PURE__*/jsx("input", {
9951
10234
  ref: inputRef,
9952
- className: `${CLASSNAME$s}__input-native`,
10235
+ className: element$h('input-native'),
9953
10236
  ...disabledStateProps,
9954
10237
  id: inputId,
9955
10238
  type: "radio",
@@ -9961,24 +10244,24 @@ const RadioButton = forwardRef((props, ref) => {
9961
10244
  "aria-describedby": helper ? `${inputId}-helper` : undefined,
9962
10245
  ...inputProps
9963
10246
  }), /*#__PURE__*/jsxs("div", {
9964
- className: `${CLASSNAME$s}__input-placeholder`,
10247
+ className: element$h('input-placeholder'),
9965
10248
  children: [/*#__PURE__*/jsx("div", {
9966
- className: `${CLASSNAME$s}__input-background`
10249
+ className: element$h('input-background')
9967
10250
  }), /*#__PURE__*/jsx("div", {
9968
- className: `${CLASSNAME$s}__input-indicator`
10251
+ className: element$h('input-indicator')
9969
10252
  })]
9970
10253
  })]
9971
10254
  }), /*#__PURE__*/jsxs("div", {
9972
- className: `${CLASSNAME$s}__content`,
10255
+ className: element$h('content'),
9973
10256
  children: [label && /*#__PURE__*/jsx(InputLabel, {
9974
10257
  htmlFor: inputId,
9975
10258
  theme: theme,
9976
- className: `${CLASSNAME$s}__label`,
10259
+ className: element$h('label'),
9977
10260
  children: label
9978
10261
  }), helper && /*#__PURE__*/jsx(InputHelper, {
9979
10262
  id: `${inputId}-helper`,
9980
10263
  theme: theme,
9981
- className: `${CLASSNAME$s}__helper`,
10264
+ className: element$h('helper'),
9982
10265
  children: helper
9983
10266
  })]
9984
10267
  })]
@@ -10047,6 +10330,10 @@ function useListenFocus(ref) {
10047
10330
 
10048
10331
  /** The default class name and classes prefix for this component. */
10049
10332
  const CLASSNAME$q = 'lumx-select';
10333
+ const {
10334
+ block: block$o,
10335
+ element: element$g
10336
+ } = classNames.bem(CLASSNAME$q);
10050
10337
  const WithSelectContext = (SelectElement, props, ref) => {
10051
10338
  const defaultTheme = useTheme() || Theme$1.light;
10052
10339
  const {
@@ -10099,18 +10386,17 @@ const WithSelectContext = (SelectElement, props, ref) => {
10099
10386
  useFocusTrap(isOpen && dropdownRef.current, focusElement?.current);
10100
10387
  return /*#__PURE__*/jsxs("div", {
10101
10388
  ref: mergeRefs(ref, selectRef),
10102
- className: classNames.join(className, handleBasicClasses({
10103
- hasError,
10104
- hasLabel: Boolean(label),
10105
- hasPlaceholder: Boolean(placeholder),
10106
- hasValue: !isEmpty,
10107
- isDisabled,
10108
- isEmpty,
10109
- isFocus,
10110
- isOpen,
10111
- isValid,
10112
- prefix: CLASSNAME$q,
10113
- theme: theme === Theme$1.light ? Theme$1.light : Theme$1.dark
10389
+ className: classNames.join(className, block$o({
10390
+ 'has-error': hasError,
10391
+ 'has-label': Boolean(label),
10392
+ 'has-placeholder': Boolean(placeholder),
10393
+ 'has-value': !isEmpty,
10394
+ 'is-disabled': isDisabled,
10395
+ 'is-empty': isEmpty,
10396
+ 'is-focus': isFocus,
10397
+ 'is-open': isOpen,
10398
+ 'is-valid': isValid,
10399
+ [`theme-${theme}`]: Boolean(theme)
10114
10400
  })),
10115
10401
  children: [/*#__PURE__*/jsx(SelectElement, {
10116
10402
  ...forwardedProps,
@@ -10142,12 +10428,12 @@ const WithSelectContext = (SelectElement, props, ref) => {
10142
10428
  ref: dropdownRef,
10143
10429
  children: children
10144
10430
  }), hasError && error && /*#__PURE__*/jsx(InputHelper, {
10145
- className: `${CLASSNAME$q}__helper`,
10431
+ className: element$g('helper'),
10146
10432
  kind: Kind$1.error,
10147
10433
  theme: theme,
10148
10434
  children: error
10149
10435
  }), helper && /*#__PURE__*/jsx(InputHelper, {
10150
- className: `${CLASSNAME$q}__helper`,
10436
+ className: element$g('helper'),
10151
10437
  theme: theme,
10152
10438
  children: helper
10153
10439
  })]
@@ -10167,6 +10453,10 @@ const COMPONENT_NAME$q = 'Select';
10167
10453
 
10168
10454
  /** The default class name and classes prefix for this component. */
10169
10455
  const CLASSNAME$p = 'lumx-select';
10456
+ const {
10457
+ block: block$n,
10458
+ element: element$f
10459
+ } = classNames.bem(CLASSNAME$p);
10170
10460
 
10171
10461
  /** The default value of props. */
10172
10462
  const DEFAULT_PROPS$q = {
@@ -10206,10 +10496,10 @@ const SelectField = props => {
10206
10496
  return /*#__PURE__*/jsxs(Fragment, {
10207
10497
  children: [variant === SelectVariant.input && /*#__PURE__*/jsxs(Fragment, {
10208
10498
  children: [label && /*#__PURE__*/jsx("div", {
10209
- className: `${CLASSNAME$p}__header`,
10499
+ className: element$f('header'),
10210
10500
  children: /*#__PURE__*/jsx(InputLabel, {
10211
10501
  htmlFor: id,
10212
- className: `${CLASSNAME$p}__label`,
10502
+ className: element$f('label'),
10213
10503
  isRequired: isRequired,
10214
10504
  theme: theme,
10215
10505
  children: label
@@ -10217,33 +10507,35 @@ const SelectField = props => {
10217
10507
  }), /*#__PURE__*/jsxs("div", {
10218
10508
  ref: mergeRefs(anchorRef, selectElementRef),
10219
10509
  id: id,
10220
- className: `${CLASSNAME$p}__wrapper`,
10510
+ className: element$f('wrapper'),
10221
10511
  onClick: onInputClick,
10222
10512
  onKeyDown: handleKeyboardNav,
10223
10513
  tabIndex: isDisabled ? undefined : 0,
10224
10514
  "aria-disabled": isDisabled || undefined,
10225
10515
  ...forwardedProps,
10226
10516
  children: [icon && /*#__PURE__*/jsx(Icon, {
10227
- className: `${CLASSNAME$p}__input-icon`,
10517
+ className: element$f('input-icon'),
10228
10518
  color: theme === Theme$1.dark ? 'light' : undefined,
10229
10519
  icon: icon,
10230
10520
  size: Size$1.xs
10231
10521
  }), /*#__PURE__*/jsxs("div", {
10232
- className: classNames.join([`${CLASSNAME$p}__input-native`, isEmpty && placeholder && `${CLASSNAME$p}__input-native--placeholder`]),
10522
+ className: element$f('input-native', {
10523
+ placeholder: isEmpty && placeholder
10524
+ }),
10233
10525
  children: [!isEmpty && /*#__PURE__*/jsx("span", {
10234
10526
  children: selectedValueRender?.(value)
10235
10527
  }), isEmpty && placeholder && /*#__PURE__*/jsx("span", {
10236
10528
  children: placeholder
10237
10529
  })]
10238
10530
  }), (isValid || hasError) && /*#__PURE__*/jsx("div", {
10239
- className: `${CLASSNAME$p}__input-validity`,
10531
+ className: element$f('input-validity'),
10240
10532
  children: /*#__PURE__*/jsx(Icon, {
10241
10533
  icon: isValid ? mdiCheckCircle : mdiAlertCircle,
10242
10534
  size: Size$1.xxs
10243
10535
  })
10244
10536
  }), hasInputClear && clearButtonProps && /*#__PURE__*/jsx(IconButton, {
10245
10537
  ...clearButtonProps,
10246
- className: `${CLASSNAME$p}__input-clear`,
10538
+ className: element$f('input-clear'),
10247
10539
  icon: mdiCloseCircle,
10248
10540
  emphasis: Emphasis$1.low,
10249
10541
  size: Size$1.s,
@@ -10251,7 +10543,7 @@ const SelectField = props => {
10251
10543
  onClick: onClear,
10252
10544
  onKeyDown: stopPropagation
10253
10545
  }), /*#__PURE__*/jsx("div", {
10254
- className: `${CLASSNAME$p}__input-indicator`,
10546
+ className: element$f('input-indicator'),
10255
10547
  children: /*#__PURE__*/jsx(Icon, {
10256
10548
  icon: mdiMenuDown,
10257
10549
  size: Size$1.s
@@ -10292,10 +10584,9 @@ const Select = forwardRef((props, ref) => {
10292
10584
  return WithSelectContext(SelectField, {
10293
10585
  ...DEFAULT_PROPS$q,
10294
10586
  ...props,
10295
- className: classNames.join(props.className, handleBasicClasses({
10296
- hasInputClear,
10297
- hasUnique: !props.isEmpty,
10298
- prefix: CLASSNAME$p
10587
+ className: classNames.join(props.className, block$n({
10588
+ 'has-input-clear': hasInputClear,
10589
+ 'has-unique': !props.isEmpty
10299
10590
  })),
10300
10591
  hasInputClear,
10301
10592
  isEmpty: isEmpty$1
@@ -10311,6 +10602,10 @@ const COMPONENT_NAME$p = 'Select';
10311
10602
 
10312
10603
  /** The default class name and classes prefix for this component. */
10313
10604
  const CLASSNAME$o = 'lumx-select';
10605
+ const {
10606
+ block: block$m,
10607
+ element: element$e
10608
+ } = classNames.bem(CLASSNAME$o);
10314
10609
 
10315
10610
  /** The default value of props. */
10316
10611
  const DEFAULT_PROPS$p = {
@@ -10359,10 +10654,10 @@ const SelectMultipleField = props => {
10359
10654
  return /*#__PURE__*/jsxs(Fragment, {
10360
10655
  children: [variant === SelectVariant.input && /*#__PURE__*/jsxs(Fragment, {
10361
10656
  children: [label && /*#__PURE__*/jsx("div", {
10362
- className: `${CLASSNAME$o}__header`,
10657
+ className: element$e('header'),
10363
10658
  children: /*#__PURE__*/jsx(InputLabel, {
10364
10659
  htmlFor: id,
10365
- className: `${CLASSNAME$o}__label`,
10660
+ className: element$e('label'),
10366
10661
  isRequired: isRequired,
10367
10662
  theme: theme,
10368
10663
  children: label
@@ -10370,22 +10665,24 @@ const SelectMultipleField = props => {
10370
10665
  }), /*#__PURE__*/jsxs("div", {
10371
10666
  ref: mergeRefs(anchorRef, selectElementRef),
10372
10667
  id: id,
10373
- className: `${CLASSNAME$o}__wrapper`,
10668
+ className: element$e('wrapper'),
10374
10669
  onClick: onInputClick,
10375
10670
  onKeyDown: handleKeyboardNav,
10376
10671
  tabIndex: isDisabled ? undefined : 0,
10377
10672
  "aria-disabled": isDisabled || undefined,
10378
10673
  ...forwardedProps,
10379
10674
  children: [icon && /*#__PURE__*/jsx(Icon, {
10380
- className: `${CLASSNAME$o}__input-icon`,
10675
+ className: element$e('input-icon'),
10381
10676
  color: theme === Theme$1.dark ? 'light' : undefined,
10382
10677
  icon: icon,
10383
10678
  size: Size$1.xs
10384
10679
  }), /*#__PURE__*/jsx("div", {
10385
- className: `${CLASSNAME$o}__chips`,
10680
+ className: element$e('chips'),
10386
10681
  children: !isEmpty && value.map((val, index) => selectedChipRender?.(val, index, onClear, isDisabled, theme))
10387
10682
  }), isEmpty && placeholder && /*#__PURE__*/jsx("div", {
10388
- className: classNames.join([`${CLASSNAME$o}__input-native`, `${CLASSNAME$o}__input-native--placeholder`]),
10683
+ className: element$e('input-native', {
10684
+ placeholder: true
10685
+ }),
10389
10686
  children: /*#__PURE__*/jsx("span", {
10390
10687
  children: placeholder
10391
10688
  })
@@ -10439,9 +10736,8 @@ const SelectMultiple = forwardRef((props, ref) => {
10439
10736
  return WithSelectContext(SelectMultipleField, {
10440
10737
  ...DEFAULT_PROPS$p,
10441
10738
  ...props,
10442
- className: classNames.join(props.className, handleBasicClasses({
10443
- hasMultiple: !props.isEmpty,
10444
- prefix: CLASSNAME$o
10739
+ className: classNames.join(props.className, block$m({
10740
+ 'has-multiple': !props.isEmpty
10445
10741
  })),
10446
10742
  isEmpty: props.value.length === 0,
10447
10743
  isMultiple: true
@@ -10496,6 +10792,10 @@ const COMPONENT_NAME$n = 'SideNavigationItem';
10496
10792
  * Component default class name and class prefix.
10497
10793
  */
10498
10794
  const CLASSNAME$m = 'lumx-side-navigation-item';
10795
+ const {
10796
+ block: block$l,
10797
+ element: element$d
10798
+ } = classNames.bem(CLASSNAME$m);
10499
10799
 
10500
10800
  /**
10501
10801
  * Component default props.
@@ -10543,21 +10843,20 @@ const SideNavigationItem = forwardRef((props, ref) => {
10543
10843
  return /*#__PURE__*/jsxs("li", {
10544
10844
  ref: ref,
10545
10845
  ...forwardedProps,
10546
- className: classNames.join(className, handleBasicClasses({
10547
- emphasis,
10548
- isOpen: showChildren,
10549
- isSelected,
10550
- prefix: CLASSNAME$m
10846
+ className: classNames.join(className, block$l({
10847
+ [`emphasis-${emphasis}`]: Boolean(emphasis),
10848
+ 'is-open': showChildren,
10849
+ 'is-selected': isSelected
10551
10850
  })),
10552
10851
  children: [shouldSplitActions ? /*#__PURE__*/jsxs("div", {
10553
- className: `${CLASSNAME$m}__wrapper`,
10852
+ className: element$d('wrapper'),
10554
10853
  children: [/*#__PURE__*/jsxs(RawClickable, {
10555
10854
  as: linkAs || (linkProps?.href ? 'a' : 'button'),
10556
10855
  ...linkProps,
10557
- className: `${CLASSNAME$m}__link`,
10856
+ className: element$d('link'),
10558
10857
  onClick: onClick,
10559
10858
  children: [icon && /*#__PURE__*/jsx(Icon, {
10560
- className: `${CLASSNAME$m}__icon`,
10859
+ className: element$d('icon'),
10561
10860
  icon: icon,
10562
10861
  size: Size$1.xs
10563
10862
  }), /*#__PURE__*/jsx("span", {
@@ -10565,7 +10864,7 @@ const SideNavigationItem = forwardRef((props, ref) => {
10565
10864
  })]
10566
10865
  }), /*#__PURE__*/jsx(IconButton, {
10567
10866
  ...toggleButtonProps,
10568
- className: `${CLASSNAME$m}__toggle`,
10867
+ className: element$d('toggle'),
10569
10868
  icon: isOpen ? mdiChevronUp : mdiChevronDown,
10570
10869
  size: Size$1.m,
10571
10870
  emphasis: Emphasis$1.low,
@@ -10575,22 +10874,22 @@ const SideNavigationItem = forwardRef((props, ref) => {
10575
10874
  }) : /*#__PURE__*/jsxs(RawClickable, {
10576
10875
  as: linkAs || (linkProps?.href ? 'a' : 'button'),
10577
10876
  ...linkProps,
10578
- className: `${CLASSNAME$m}__link`,
10877
+ className: element$d('link'),
10579
10878
  onClick: onClick,
10580
10879
  ...ariaProps,
10581
10880
  children: [icon && /*#__PURE__*/jsx(Icon, {
10582
- className: `${CLASSNAME$m}__icon`,
10881
+ className: element$d('icon'),
10583
10882
  icon: icon,
10584
10883
  size: Size$1.xs
10585
10884
  }), /*#__PURE__*/jsx("span", {
10586
10885
  children: label
10587
10886
  }), hasContent && /*#__PURE__*/jsx(Icon, {
10588
- className: `${CLASSNAME$m}__chevron`,
10887
+ className: element$d('chevron'),
10589
10888
  icon: isOpen ? mdiChevronUp : mdiChevronDown,
10590
10889
  size: Size$1.xs
10591
10890
  })]
10592
10891
  }), (closeMode === 'hide' || showChildren) && /*#__PURE__*/jsx("ul", {
10593
- className: `${CLASSNAME$m}__children`,
10892
+ className: element$d('children'),
10594
10893
  id: contentId,
10595
10894
  children: content
10596
10895
  })]
@@ -10611,6 +10910,9 @@ const COMPONENT_NAME$m = 'SkeletonCircle';
10611
10910
  * Component default class name and class prefix.
10612
10911
  */
10613
10912
  const CLASSNAME$l = 'lumx-skeleton-circle';
10913
+ const {
10914
+ block: block$k
10915
+ } = classNames.bem(CLASSNAME$l);
10614
10916
 
10615
10917
  /**
10616
10918
  * SkeletonCircle component.
@@ -10631,11 +10933,10 @@ const SkeletonCircle = forwardRef((props, ref) => {
10631
10933
  return /*#__PURE__*/jsx("div", {
10632
10934
  ref: ref,
10633
10935
  ...forwardedProps,
10634
- className: classNames.join(className, handleBasicClasses({
10635
- prefix: CLASSNAME$l,
10636
- size,
10637
- color,
10638
- theme
10936
+ className: classNames.join(className, block$k({
10937
+ [`size-${size}`]: Boolean(size),
10938
+ [`color-${color}`]: Boolean(color),
10939
+ [`theme-${theme}`]: Boolean(theme)
10639
10940
  }))
10640
10941
  });
10641
10942
  });
@@ -10666,6 +10967,10 @@ const COMPONENT_NAME$l = 'SkeletonRectangle';
10666
10967
  * Component default class name and class prefix.
10667
10968
  */
10668
10969
  const CLASSNAME$k = 'lumx-skeleton-rectangle';
10970
+ const {
10971
+ block: block$j,
10972
+ element: element$c
10973
+ } = classNames.bem(CLASSNAME$k);
10669
10974
 
10670
10975
  /**
10671
10976
  * SkeletonRectangle component.
@@ -10689,17 +10994,16 @@ const SkeletonRectangle = forwardRef((props, ref) => {
10689
10994
  return /*#__PURE__*/jsx("div", {
10690
10995
  ref: ref,
10691
10996
  ...forwardedProps,
10692
- className: classNames.join(className, handleBasicClasses({
10693
- prefix: CLASSNAME$k,
10694
- aspectRatio,
10695
- height: aspectRatio ? undefined : height,
10696
- theme,
10697
- variant,
10698
- width,
10699
- color
10997
+ className: classNames.join(className, block$j({
10998
+ [`aspect-ratio-${aspectRatio}`]: Boolean(aspectRatio),
10999
+ [`height-${height}`]: Boolean(aspectRatio ? undefined : height),
11000
+ [`theme-${theme}`]: Boolean(theme),
11001
+ [`variant-${variant}`]: Boolean(variant),
11002
+ [`width-${width}`]: Boolean(width),
11003
+ [`color-${color}`]: Boolean(color)
10700
11004
  })),
10701
11005
  children: /*#__PURE__*/jsx("div", {
10702
- className: `${CLASSNAME$k}__inner`
11006
+ className: element$c('inner')
10703
11007
  })
10704
11008
  });
10705
11009
  });
@@ -10718,6 +11022,10 @@ const COMPONENT_NAME$k = 'SkeletonTypography';
10718
11022
  * Component default class name and class prefix.
10719
11023
  */
10720
11024
  const CLASSNAME$j = 'lumx-skeleton-typography';
11025
+ const {
11026
+ block: block$i,
11027
+ element: element$b
11028
+ } = classNames.bem(CLASSNAME$j);
10721
11029
 
10722
11030
  /**
10723
11031
  * SkeletonTypography component.
@@ -10739,18 +11047,17 @@ const SkeletonTypography = forwardRef((props, ref) => {
10739
11047
  return /*#__PURE__*/jsx("div", {
10740
11048
  ref: ref,
10741
11049
  ...forwardedProps,
10742
- className: classNames.join(className, handleBasicClasses({
10743
- prefix: CLASSNAME$j,
10744
- theme,
10745
- typography,
10746
- color
11050
+ className: classNames.join(className, block$i({
11051
+ [`theme-${theme}`]: Boolean(theme),
11052
+ [`typography-${typography}`]: Boolean(typography),
11053
+ [`color-${color}`]: Boolean(color)
10747
11054
  })),
10748
11055
  style: {
10749
11056
  ...forwardedProps.style,
10750
11057
  width
10751
11058
  },
10752
11059
  children: /*#__PURE__*/jsx("div", {
10753
- className: `${CLASSNAME$j}__inner`
11060
+ className: element$b('inner')
10754
11061
  })
10755
11062
  });
10756
11063
  });
@@ -10802,6 +11109,10 @@ const COMPONENT_NAME$j = 'Slider';
10802
11109
  * Component default class name and class prefix.
10803
11110
  */
10804
11111
  const CLASSNAME$i = 'lumx-slider';
11112
+ const {
11113
+ block: block$h,
11114
+ element: element$a
11115
+ } = classNames.bem(CLASSNAME$i);
10805
11116
 
10806
11117
  /**
10807
11118
  * Component default props.
@@ -10994,41 +11305,46 @@ const Slider = forwardRef((props, ref) => {
10994
11305
  return /*#__PURE__*/jsxs("div", {
10995
11306
  ref: ref,
10996
11307
  ...forwardedProps,
10997
- className: classNames.join(className, handleBasicClasses({
10998
- prefix: CLASSNAME$i,
10999
- theme,
11000
- hasLabel: Boolean(label)
11308
+ className: classNames.join(className, block$h({
11309
+ [`theme-${theme}`]: Boolean(theme),
11310
+ 'has-label': Boolean(label)
11001
11311
  })),
11002
11312
  onMouseDown: handleMouseDown,
11003
11313
  children: [label && /*#__PURE__*/jsx(InputLabel, {
11004
11314
  id: sliderLabelId,
11005
11315
  htmlFor: sliderId,
11006
- className: `${CLASSNAME$i}__label`,
11316
+ className: element$a('label'),
11007
11317
  theme: theme,
11008
11318
  children: label
11009
11319
  }), helper && /*#__PURE__*/jsx(InputHelper, {
11010
- className: `${CLASSNAME$i}__helper`,
11320
+ className: element$a('helper'),
11011
11321
  theme: theme,
11012
11322
  children: helper
11013
11323
  }), /*#__PURE__*/jsxs("div", {
11014
- className: `${CLASSNAME$i}__ui-wrapper`,
11324
+ className: element$a('ui-wrapper'),
11015
11325
  children: [!hideMinMaxLabel && /*#__PURE__*/jsx("span", {
11016
- className: `${CLASSNAME$i}__value-label ${CLASSNAME$i}__value-label--min`,
11326
+ className: element$a('value-label', {
11327
+ min: true
11328
+ }),
11017
11329
  children: min
11018
11330
  }), /*#__PURE__*/jsxs("div", {
11019
- className: `${CLASSNAME$i}__wrapper`,
11331
+ className: element$a('wrapper'),
11020
11332
  ref: sliderRef,
11021
11333
  children: [/*#__PURE__*/jsx("div", {
11022
- className: `${CLASSNAME$i}__track ${CLASSNAME$i}__track--background`
11334
+ className: element$a('track', {
11335
+ background: true
11336
+ })
11023
11337
  }), /*#__PURE__*/jsx("div", {
11024
- className: `${CLASSNAME$i}__track ${CLASSNAME$i}__track--active`,
11338
+ className: element$a('track', {
11339
+ active: true
11340
+ }),
11025
11341
  style: {
11026
11342
  width: percentString
11027
11343
  }
11028
11344
  }), steps ? /*#__PURE__*/jsx("div", {
11029
- className: `${CLASSNAME$i}__ticks`,
11345
+ className: element$a('ticks'),
11030
11346
  children: availableSteps.map((step, idx) => /*#__PURE__*/jsx("div", {
11031
- className: `${CLASSNAME$i}__tick`,
11347
+ className: element$a('tick'),
11032
11348
  style: {
11033
11349
  left: `${step * 100}%`
11034
11350
  }
@@ -11038,7 +11354,7 @@ const Slider = forwardRef((props, ref) => {
11038
11354
  "aria-labelledby": sliderLabelId,
11039
11355
  name: name,
11040
11356
  id: sliderId,
11041
- className: `${CLASSNAME$i}__handle`,
11357
+ className: element$a('handle'),
11042
11358
  style: {
11043
11359
  left: percentString
11044
11360
  },
@@ -11046,7 +11362,9 @@ const Slider = forwardRef((props, ref) => {
11046
11362
  ...disabledStateProps
11047
11363
  })]
11048
11364
  }), !hideMinMaxLabel && /*#__PURE__*/jsx("span", {
11049
- className: `${CLASSNAME$i}__value-label ${CLASSNAME$i}__value-label--max`,
11365
+ className: element$a('value-label', {
11366
+ max: true
11367
+ }),
11050
11368
  children: max
11051
11369
  })]
11052
11370
  })]
@@ -11653,6 +11971,10 @@ const COMPONENT_NAME$g = 'SlideshowControls';
11653
11971
  * Component default class name and class prefix.
11654
11972
  */
11655
11973
  const CLASSNAME$f = 'lumx-slideshow-controls';
11974
+ const {
11975
+ block: block$g,
11976
+ element: element$9
11977
+ } = classNames.bem(CLASSNAME$f);
11656
11978
 
11657
11979
  /**
11658
11980
  * Component default props.
@@ -11708,8 +12030,8 @@ const InternalSlideshowControls = forwardRef((props, ref) => {
11708
12030
  parentRef: paginationRef,
11709
12031
  elementSelector: 'button',
11710
12032
  keepTabIndex: true,
11711
- onElementFocus: element => {
11712
- element.click();
12033
+ onElementFocus: el => {
12034
+ el.click();
11713
12035
  }
11714
12036
  });
11715
12037
 
@@ -11723,24 +12045,22 @@ const InternalSlideshowControls = forwardRef((props, ref) => {
11723
12045
  return /*#__PURE__*/jsxs("div", {
11724
12046
  ref: ref,
11725
12047
  ...forwardedProps,
11726
- className: classNames.join(className, handleBasicClasses({
11727
- prefix: CLASSNAME$f,
11728
- theme
11729
- }), {
11730
- [`${CLASSNAME$f}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX
11731
- }),
12048
+ className: classNames.join(className, block$g({
12049
+ [`theme-${theme}`]: Boolean(theme),
12050
+ 'has-infinite-pagination': slidesCount > PAGINATION_ITEMS_MAX
12051
+ })),
11732
12052
  children: [/*#__PURE__*/jsx(IconButton, {
11733
12053
  ...previousButtonProps,
11734
12054
  icon: mdiChevronLeft,
11735
- className: `${CLASSNAME$f}__navigation`,
12055
+ className: element$9('navigation'),
11736
12056
  color: theme === Theme$1.dark ? 'light' : 'dark',
11737
12057
  emphasis: Emphasis$1.low,
11738
12058
  onClick: onPreviousClick
11739
12059
  }), /*#__PURE__*/jsx("div", {
11740
12060
  ref: paginationRef,
11741
- className: `${CLASSNAME$f}__pagination`,
12061
+ className: element$9('pagination'),
11742
12062
  children: /*#__PURE__*/jsx("div", {
11743
- className: `${CLASSNAME$f}__pagination-items`,
12063
+ className: element$9('pagination-items'),
11744
12064
  style: wrapperStyle,
11745
12065
  role: "tablist",
11746
12066
  ...paginationProps,
@@ -11755,11 +12075,10 @@ const InternalSlideshowControls = forwardRef((props, ref) => {
11755
12075
  } = paginationItemProps ? paginationItemProps(index) : {};
11756
12076
  const ariaLabel = label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;
11757
12077
  return /*#__PURE__*/jsx("button", {
11758
- className: classNames.join(handleBasicClasses({
11759
- prefix: `${CLASSNAME$f}__pagination-item`,
11760
- isActive,
11761
- isOnEdge,
11762
- isOutRange
12078
+ className: classNames.join(element$9('pagination-item', {
12079
+ 'is-active': isActive,
12080
+ 'is-on-edge': isOnEdge,
12081
+ 'is-out-range': isOutRange
11763
12082
  }), itemClassName),
11764
12083
  type: "button",
11765
12084
  tabIndex: isActive ? undefined : -1,
@@ -11774,13 +12093,13 @@ const InternalSlideshowControls = forwardRef((props, ref) => {
11774
12093
  }), playButtonProps ? /*#__PURE__*/jsx(IconButton, {
11775
12094
  ...playButtonProps,
11776
12095
  icon: isAutoPlaying ? mdiPauseCircleOutline : mdiPlayCircleOutline,
11777
- className: `${CLASSNAME$f}__play`,
12096
+ className: element$9('play'),
11778
12097
  color: theme === Theme$1.dark ? 'light' : 'dark',
11779
12098
  emphasis: Emphasis$1.low
11780
12099
  }) : null, /*#__PURE__*/jsx(IconButton, {
11781
12100
  ...nextButtonProps,
11782
12101
  icon: mdiChevronRight,
11783
- className: `${CLASSNAME$f}__navigation`,
12102
+ className: element$9('navigation'),
11784
12103
  color: theme === Theme$1.dark ? 'light' : 'dark',
11785
12104
  emphasis: Emphasis$1.low,
11786
12105
  onClick: onNextClick
@@ -11913,6 +12232,10 @@ const COMPONENT_NAME$f = 'Slideshow';
11913
12232
  * Component default class name and class prefix.
11914
12233
  */
11915
12234
  const CLASSNAME$e = 'lumx-slideshow';
12235
+ const {
12236
+ block: block$f,
12237
+ element: element$8
12238
+ } = classNames.bem(CLASSNAME$e);
11916
12239
 
11917
12240
  /**
11918
12241
  * Component default props.
@@ -11982,23 +12305,23 @@ const Slides = forwardRef((props, ref) => {
11982
12305
  id: id,
11983
12306
  ref: ref,
11984
12307
  ...forwardedProps,
11985
- className: classNames.join(className, handleBasicClasses({
11986
- prefix: CLASSNAME$e,
11987
- theme
11988
- }), {
11989
- [`${CLASSNAME$e}--fill-height`]: fillHeight,
11990
- [`${CLASSNAME$e}--group-by-${groupBy}`]: Boolean(groupBy)
11991
- }),
12308
+ className: classNames.join(className, block$f({
12309
+ [`theme-${theme}`]: Boolean(theme),
12310
+ 'fill-height': fillHeight,
12311
+ [`group-by-${groupBy}`]: Boolean(groupBy)
12312
+ })),
11992
12313
  "aria-roledescription": "carousel",
11993
12314
  children: [/*#__PURE__*/jsx("div", {
11994
12315
  id: slidesId,
11995
- className: `${CLASSNAME$e}__slides`,
12316
+ className: element$8('slides'),
11996
12317
  onMouseEnter: toggleAutoPlay,
11997
12318
  onMouseLeave: toggleAutoPlay,
11998
12319
  "aria-live": isAutoPlaying ? 'off' : 'polite',
11999
12320
  children: /*#__PURE__*/jsx("div", {
12000
12321
  ref: wrapperRef,
12001
- className: classNames.join(`${CLASSNAME$e}__wrapper`, isScrollSnapEnabled && `${CLASSNAME$e}__wrapper--${slideMode}`),
12322
+ className: element$8('wrapper', {
12323
+ [`${slideMode}`]: isScrollSnapEnabled
12324
+ }),
12002
12325
  ...wrapperProps,
12003
12326
  children: groups.map((group, index) => /*#__PURE__*/jsx(SlideshowItemGroup, {
12004
12327
  id: slidesId && buildSlideShowGroupId(slidesId, index),
@@ -12023,6 +12346,10 @@ const COMPONENT_NAME$e = 'Switch';
12023
12346
  * Component default class name and class prefix.
12024
12347
  */
12025
12348
  const CLASSNAME$d = 'lumx-switch';
12349
+ const {
12350
+ block: block$e,
12351
+ element: element$7
12352
+ } = classNames.bem(CLASSNAME$d);
12026
12353
 
12027
12354
  /**
12028
12355
  * Component default props.
@@ -12070,21 +12397,20 @@ const Switch = forwardRef((props, ref) => {
12070
12397
  return /*#__PURE__*/jsxs("div", {
12071
12398
  ref: ref,
12072
12399
  ...forwardedProps,
12073
- className: classNames.join(className, handleBasicClasses({
12074
- prefix: CLASSNAME$d,
12075
- isChecked,
12076
- isDisabled: isAnyDisabled,
12077
- position,
12078
- theme,
12079
- isUnchecked: !isChecked
12400
+ className: classNames.join(className, block$e({
12401
+ 'is-checked': isChecked,
12402
+ 'is-disabled': isAnyDisabled,
12403
+ [`position-${position}`]: Boolean(position),
12404
+ [`theme-${theme}`]: Boolean(theme),
12405
+ 'is-unchecked': !isChecked
12080
12406
  })),
12081
12407
  children: [/*#__PURE__*/jsxs("div", {
12082
- className: `${CLASSNAME$d}__input-wrapper`,
12408
+ className: element$7('input-wrapper'),
12083
12409
  children: [/*#__PURE__*/jsx("input", {
12084
12410
  type: "checkbox",
12085
12411
  role: "switch",
12086
12412
  id: inputId,
12087
- className: `${CLASSNAME$d}__input-native`,
12413
+ className: element$7('input-native'),
12088
12414
  name: name,
12089
12415
  value: value,
12090
12416
  ...disabledStateProps,
@@ -12095,24 +12421,24 @@ const Switch = forwardRef((props, ref) => {
12095
12421
  "aria-describedby": helper ? `${inputId}-helper` : undefined,
12096
12422
  ...inputProps
12097
12423
  }), /*#__PURE__*/jsxs("div", {
12098
- className: `${CLASSNAME$d}__input-placeholder`,
12424
+ className: element$7('input-placeholder'),
12099
12425
  children: [/*#__PURE__*/jsx("div", {
12100
- className: `${CLASSNAME$d}__input-background`
12426
+ className: element$7('input-background')
12101
12427
  }), /*#__PURE__*/jsx("div", {
12102
- className: `${CLASSNAME$d}__input-indicator`
12428
+ className: element$7('input-indicator')
12103
12429
  })]
12104
12430
  })]
12105
12431
  }), Children.count(children) > 0 && /*#__PURE__*/jsxs("div", {
12106
- className: `${CLASSNAME$d}__content`,
12432
+ className: element$7('content'),
12107
12433
  children: [/*#__PURE__*/jsx(InputLabel, {
12108
12434
  htmlFor: inputId,
12109
12435
  theme: theme,
12110
- className: `${CLASSNAME$d}__label`,
12436
+ className: element$7('label'),
12111
12437
  children: children
12112
12438
  }), !isEmpty(helper) && /*#__PURE__*/jsx(InputHelper, {
12113
12439
  id: `${inputId}-helper`,
12114
12440
  theme: theme,
12115
- className: `${CLASSNAME$d}__helper`,
12441
+ className: element$7('helper'),
12116
12442
  children: helper
12117
12443
  })]
12118
12444
  })]
@@ -12132,6 +12458,14 @@ const COMPONENT_NAME$d = 'Table';
12132
12458
  */
12133
12459
  const CLASSNAME$c = 'lumx-table';
12134
12460
 
12461
+ const {
12462
+ block: block$d
12463
+ } = classNames.bem(CLASSNAME$c);
12464
+
12465
+ /**
12466
+ * Defines the props of the component.
12467
+ */
12468
+
12135
12469
  /**
12136
12470
  * Component default props.
12137
12471
  */
@@ -12157,11 +12491,10 @@ const Table = forwardRef((props, ref) => {
12157
12491
  return /*#__PURE__*/jsx("table", {
12158
12492
  ref: ref,
12159
12493
  ...forwardedProps,
12160
- className: classNames.join(className, handleBasicClasses({
12161
- prefix: CLASSNAME$c,
12162
- hasBefore,
12163
- hasDividers,
12164
- theme
12494
+ className: classNames.join(className, block$d({
12495
+ 'has-before': hasBefore,
12496
+ 'has-dividers': hasDividers,
12497
+ [`theme-${theme}`]: Boolean(theme)
12165
12498
  })),
12166
12499
  children: children
12167
12500
  });
@@ -12228,6 +12561,9 @@ const COMPONENT_NAME$b = 'TableCell';
12228
12561
  * Component default class name and class prefix.
12229
12562
  */
12230
12563
  const CLASSNAME$a = `${CLASSNAME$c}__cell`;
12564
+ const {
12565
+ block: block$c
12566
+ } = classNames.bem(CLASSNAME$a);
12231
12567
 
12232
12568
  /**
12233
12569
  * Component default props.
@@ -12273,11 +12609,11 @@ const TableCell = forwardRef((props, ref) => {
12273
12609
  children: [variant === TableCellVariant.head && /*#__PURE__*/jsx("th", {
12274
12610
  ref: ref,
12275
12611
  ...forwardedProps,
12276
- className: classNames.join(handleBasicClasses({
12277
- prefix: CLASSNAME$a,
12278
- isSortable,
12279
- isSorted: isSortable && !!sortOrder
12280
- }), className, `${CLASSNAME$a}--head`),
12612
+ className: classNames.join(className, block$c({
12613
+ 'is-sortable': isSortable,
12614
+ 'is-sorted': isSortable && !!sortOrder,
12615
+ head: true
12616
+ })),
12281
12617
  "aria-sort": ariaSort,
12282
12618
  children: /*#__PURE__*/jsxs(Wrapper, {
12283
12619
  className: `${CLASSNAME$a}-wrapper`,
@@ -12301,7 +12637,9 @@ const TableCell = forwardRef((props, ref) => {
12301
12637
  })
12302
12638
  }), variant === TableCellVariant.body && /*#__PURE__*/jsx("td", {
12303
12639
  ...forwardedProps,
12304
- className: classNames.join(className, CLASSNAME$a, `${CLASSNAME$a}--body`),
12640
+ className: classNames.join(className, block$c({
12641
+ body: true
12642
+ })),
12305
12643
  children: /*#__PURE__*/jsx("div", {
12306
12644
  className: `${CLASSNAME$a}-content`,
12307
12645
  children: children
@@ -12361,6 +12699,9 @@ const COMPONENT_NAME$9 = 'TableRow';
12361
12699
  * Component default class name and class prefix.
12362
12700
  */
12363
12701
  const CLASSNAME$8 = `${CLASSNAME$c}__row`;
12702
+ const {
12703
+ block: block$b
12704
+ } = classNames.bem(CLASSNAME$8);
12364
12705
 
12365
12706
  /**
12366
12707
  * Component default props.
@@ -12391,11 +12732,10 @@ const TableRow = forwardRef((props, ref) => {
12391
12732
  ref: ref,
12392
12733
  tabIndex: isClickable && !disabledStateProps.disabled ? 0 : -1,
12393
12734
  ...forwardedProps,
12394
- className: classNames.join(className, handleBasicClasses({
12395
- isClickable: isClickable && !isAnyDisabled,
12396
- isDisabled: isAnyDisabled,
12397
- isSelected: isSelected && !isAnyDisabled,
12398
- prefix: CLASSNAME$8
12735
+ className: classNames.join(className, block$b({
12736
+ 'is-clickable': isClickable && !isAnyDisabled,
12737
+ 'is-disabled': isAnyDisabled,
12738
+ 'is-selected': isSelected && !isAnyDisabled
12399
12739
  })),
12400
12740
  "aria-disabled": isAnyDisabled,
12401
12741
  children: children
@@ -12468,6 +12808,10 @@ TabProvider.defaultProps = DEFAULT_PROPS$b;
12468
12808
  */
12469
12809
  const TABS_CLASSNAME = `lumx-tabs`;
12470
12810
 
12811
+ const {
12812
+ block: block$a,
12813
+ element: element$6
12814
+ } = classNames.bem(TABS_CLASSNAME);
12471
12815
  let TabListLayout = /*#__PURE__*/function (TabListLayout) {
12472
12816
  TabListLayout["clustered"] = "clustered";
12473
12817
  TabListLayout["fixed"] = "fixed";
@@ -12521,14 +12865,13 @@ const TabList = forwardRef((props, ref) => {
12521
12865
  return /*#__PURE__*/jsx("div", {
12522
12866
  ref: mergeRefs(ref, tabListRef),
12523
12867
  ...forwardedProps,
12524
- className: classNames.join(className, handleBasicClasses({
12525
- prefix: TABS_CLASSNAME,
12526
- layout,
12527
- position,
12528
- theme
12868
+ className: classNames.join(className, block$a({
12869
+ [`layout-${layout}`]: Boolean(layout),
12870
+ [`position-${position}`]: Boolean(position),
12871
+ [`theme-${theme}`]: Boolean(theme)
12529
12872
  })),
12530
12873
  children: /*#__PURE__*/jsx("div", {
12531
- className: `${TABS_CLASSNAME}__links`,
12874
+ className: element$6('links'),
12532
12875
  role: "tablist",
12533
12876
  "aria-label": ariaLabel,
12534
12877
  children: children
@@ -12548,6 +12891,9 @@ const COMPONENT_NAME$7 = 'Tab';
12548
12891
  * Component default class name and class prefix.
12549
12892
  */
12550
12893
  const CLASSNAME$7 = `${TABS_CLASSNAME}__link`;
12894
+ const {
12895
+ block: block$9
12896
+ } = classNames.bem(CLASSNAME$7);
12551
12897
 
12552
12898
  /**
12553
12899
  * Component default props.
@@ -12606,10 +12952,9 @@ const Tab = forwardRef((props, ref) => {
12606
12952
  ...forwardedProps,
12607
12953
  type: "button",
12608
12954
  id: state?.tabId,
12609
- className: classNames.join(className, handleBasicClasses({
12610
- prefix: CLASSNAME$7,
12611
- isActive,
12612
- isDisabled: isAnyDisabled
12955
+ className: classNames.join(className, block$9({
12956
+ 'is-active': isActive,
12957
+ 'is-disabled': isAnyDisabled
12613
12958
  })),
12614
12959
  onClick: changeToCurrentTab,
12615
12960
  onKeyPress: handleKeyPress,
@@ -12643,6 +12988,9 @@ const COMPONENT_NAME$6 = 'TabPanel';
12643
12988
  * Component default class name and class prefix.
12644
12989
  */
12645
12990
  const CLASSNAME$6 = `lumx-tab-panel`;
12991
+ const {
12992
+ block: block$8
12993
+ } = classNames.bem(CLASSNAME$6);
12646
12994
 
12647
12995
  /**
12648
12996
  * Component default props.
@@ -12672,9 +13020,8 @@ const TabPanel = forwardRef((props, ref) => {
12672
13020
  ref: ref,
12673
13021
  ...forwardedProps,
12674
13022
  id: state?.tabPanelId,
12675
- className: classNames.join(className, handleBasicClasses({
12676
- prefix: CLASSNAME$6,
12677
- isActive
13023
+ className: classNames.join(className, block$8({
13024
+ 'is-active': isActive
12678
13025
  })),
12679
13026
  role: "tabpanel",
12680
13027
  tabIndex: isActive ? 0 : -1,
@@ -12701,6 +13048,14 @@ const CLASSNAME$5 = 'lumx-text-field';
12701
13048
  */
12702
13049
  const INPUT_NATIVE_CLASSNAME = `${CLASSNAME$5}__input-native`;
12703
13050
 
13051
+ const {
13052
+ block: block$7
13053
+ } = classNames.bem(INPUT_NATIVE_CLASSNAME);
13054
+
13055
+ /**
13056
+ * Defines the props of the component.
13057
+ */
13058
+
12704
13059
  /**
12705
13060
  * Component default props.
12706
13061
  */
@@ -12732,10 +13087,10 @@ const RawInputText = forwardRef((props, ref) => {
12732
13087
  name: name,
12733
13088
  type: type,
12734
13089
  ref: useMergeRefs(ref, textareaRef),
12735
- className: classNames.join(className, handleBasicClasses({
12736
- prefix: INPUT_NATIVE_CLASSNAME,
12737
- theme
12738
- }), `${INPUT_NATIVE_CLASSNAME}--text`),
13090
+ className: classNames.join(className, block$7({
13091
+ [`theme-${theme}`]: Boolean(theme),
13092
+ text: true
13093
+ })),
12739
13094
  onChange: handleChange,
12740
13095
  value: value
12741
13096
  });
@@ -12782,6 +13137,14 @@ function useFitRowsToContent(minimumRows, textareaRef, value) {
12782
13137
  return rows;
12783
13138
  }
12784
13139
 
13140
+ const {
13141
+ block: block$6
13142
+ } = classNames.bem(INPUT_NATIVE_CLASSNAME);
13143
+
13144
+ /**
13145
+ * Defines the props of the component.
13146
+ */
13147
+
12785
13148
  /**
12786
13149
  * Component default props.
12787
13150
  */
@@ -12812,10 +13175,10 @@ const RawInputTextarea = forwardRef((props, ref) => {
12812
13175
  return /*#__PURE__*/jsx("textarea", {
12813
13176
  ...forwardedProps,
12814
13177
  name: name,
12815
- className: classNames.join(className, handleBasicClasses({
12816
- prefix: INPUT_NATIVE_CLASSNAME,
12817
- theme
12818
- }), `${INPUT_NATIVE_CLASSNAME}--textarea`),
13178
+ className: classNames.join(className, block$6({
13179
+ [`theme-${theme}`]: Boolean(theme),
13180
+ textarea: true
13181
+ })),
12819
13182
  ref: useMergeRefs(ref, textareaRef),
12820
13183
  onChange: handleChange,
12821
13184
  value: value,
@@ -12823,6 +13186,15 @@ const RawInputTextarea = forwardRef((props, ref) => {
12823
13186
  });
12824
13187
  });
12825
13188
 
13189
+ const {
13190
+ block: block$5,
13191
+ element: element$5
13192
+ } = classNames.bem(CLASSNAME$5);
13193
+
13194
+ /**
13195
+ * Defines the props of the component.
13196
+ */
13197
+
12826
13198
  /**
12827
13199
  * Component default props.
12828
13200
  */
@@ -12949,33 +13321,32 @@ const TextField = forwardRef((props, ref) => {
12949
13321
  });
12950
13322
  return /*#__PURE__*/jsxs("div", {
12951
13323
  ref: ref,
12952
- className: classNames.join(className, handleBasicClasses({
12953
- hasChips: Boolean(chips),
12954
- hasError: !isValid && hasError,
12955
- hasIcon: Boolean(icon),
12956
- hasInput: !multiline,
12957
- hasInputClear: clearButtonProps && isNotEmpty,
12958
- hasLabel: Boolean(label),
12959
- hasPlaceholder: Boolean(placeholder),
12960
- hasTextarea: multiline,
12961
- hasValue: Boolean(value),
12962
- isDisabled: isAnyDisabled,
12963
- isFocus: isFocus || forceFocusStyle,
12964
- isValid,
12965
- prefix: CLASSNAME$5,
12966
- theme
13324
+ className: classNames.join(className, block$5({
13325
+ 'has-chips': Boolean(chips),
13326
+ 'has-error': !isValid && hasError,
13327
+ 'has-icon': Boolean(icon),
13328
+ 'has-input': !multiline,
13329
+ 'has-input-clear': Boolean(clearButtonProps && isNotEmpty),
13330
+ 'has-label': Boolean(label),
13331
+ 'has-placeholder': Boolean(placeholder),
13332
+ 'has-textarea': multiline,
13333
+ 'has-value': Boolean(value),
13334
+ 'is-disabled': isAnyDisabled,
13335
+ 'is-focus': isFocus || forceFocusStyle,
13336
+ 'is-valid': isValid,
13337
+ [`theme-${theme}`]: Boolean(theme)
12967
13338
  })),
12968
13339
  children: [(label || maxLength) && /*#__PURE__*/jsxs("div", {
12969
- className: `${CLASSNAME$5}__header`,
13340
+ className: element$5('header'),
12970
13341
  children: [label && /*#__PURE__*/jsx(InputLabel, {
12971
13342
  ...labelProps,
12972
13343
  htmlFor: textFieldId,
12973
- className: `${CLASSNAME$5}__label`,
13344
+ className: element$5('label'),
12974
13345
  isRequired: isRequired,
12975
13346
  theme: theme,
12976
13347
  children: label
12977
13348
  }), maxLength && /*#__PURE__*/jsxs("div", {
12978
- className: `${CLASSNAME$5}__char-counter`,
13349
+ className: element$5('char-counter'),
12979
13350
  children: [/*#__PURE__*/jsx("span", {
12980
13351
  children: maxLength - valueLength
12981
13352
  }), maxLength - valueLength === 0 && /*#__PURE__*/jsx(Icon, {
@@ -12984,27 +13355,27 @@ const TextField = forwardRef((props, ref) => {
12984
13355
  })]
12985
13356
  })]
12986
13357
  }), /*#__PURE__*/jsxs("div", {
12987
- className: `${CLASSNAME$5}__wrapper`,
13358
+ className: element$5('wrapper'),
12988
13359
  ref: textFieldRef,
12989
13360
  children: [icon && /*#__PURE__*/jsx(Icon, {
12990
- className: `${CLASSNAME$5}__input-icon`,
13361
+ className: element$5('input-icon'),
12991
13362
  color: theme === Theme$1.dark ? 'light' : undefined,
12992
13363
  icon: icon,
12993
13364
  size: Size$1.xs
12994
13365
  }), chips ? /*#__PURE__*/jsxs("div", {
12995
- className: `${CLASSNAME$5}__chips`,
13366
+ className: element$5('chips'),
12996
13367
  children: [chips, input]
12997
13368
  }) : /*#__PURE__*/jsx("div", {
12998
- className: `${CLASSNAME$5}__input-wrapper`,
13369
+ className: element$5('input-wrapper'),
12999
13370
  children: input
13000
13371
  }), (isValid || hasError) && /*#__PURE__*/jsx(Icon, {
13001
- className: `${CLASSNAME$5}__input-validity`,
13372
+ className: element$5('input-validity'),
13002
13373
  color: theme === Theme$1.dark ? 'light' : undefined,
13003
13374
  icon: isValid ? mdiCheckCircle : mdiAlertCircle,
13004
13375
  size: Size$1.xxs
13005
13376
  }), clearButtonProps && isNotEmpty && !isAnyDisabled && /*#__PURE__*/jsx(IconButton, {
13006
13377
  ...clearButtonProps,
13007
- className: `${CLASSNAME$5}__input-clear`,
13378
+ className: element$5('input-clear'),
13008
13379
  icon: mdiCloseCircle,
13009
13380
  emphasis: Emphasis$1.low,
13010
13381
  size: Size$1.s,
@@ -13012,17 +13383,17 @@ const TextField = forwardRef((props, ref) => {
13012
13383
  onClick: handleClear,
13013
13384
  type: "button"
13014
13385
  }), afterElement && /*#__PURE__*/jsx("div", {
13015
- className: `${CLASSNAME$5}__after-element`,
13386
+ className: element$5('after-element'),
13016
13387
  children: afterElement
13017
13388
  })]
13018
13389
  }), hasError && error && /*#__PURE__*/jsx(InputHelper, {
13019
- className: `${CLASSNAME$5}__helper`,
13390
+ className: element$5('helper'),
13020
13391
  kind: Kind$1.error,
13021
13392
  theme: theme,
13022
13393
  id: errorId,
13023
13394
  children: error
13024
13395
  }), helper && /*#__PURE__*/jsx(InputHelper, {
13025
- className: `${CLASSNAME$5}__helper`,
13396
+ className: element$5('helper'),
13026
13397
  theme: theme,
13027
13398
  id: helperId,
13028
13399
  children: helper
@@ -13179,6 +13550,10 @@ const COMPONENT_NAME$4 = 'Thumbnail';
13179
13550
  * Component default class name and class prefix.
13180
13551
  */
13181
13552
  const CLASSNAME$4 = 'lumx-thumbnail';
13553
+ const {
13554
+ block: block$4,
13555
+ element: element$4
13556
+ } = classNames.bem(CLASSNAME$4);
13182
13557
 
13183
13558
  /**
13184
13559
  * Component default props.
@@ -13275,23 +13650,23 @@ const Thumbnail = forwardRef((props, ref) => {
13275
13650
  return /*#__PURE__*/jsxs(Wrapper, {
13276
13651
  ...wrapperProps,
13277
13652
  ref: ref,
13278
- className: classNames.join(linkProps?.className, className, handleBasicClasses({
13279
- align,
13280
- aspectRatio,
13281
- prefix: CLASSNAME$4,
13282
- size,
13283
- theme,
13284
- variant,
13285
- isClickable,
13286
- hasError,
13287
- hasIconErrorFallback,
13288
- hasCustomErrorFallback,
13289
- isLoading,
13290
- objectFit,
13291
- hasBadge: !!badge
13292
- }), fillHeight && `${CLASSNAME$4}--fill-height`),
13653
+ className: classNames.join(linkProps?.className, className, block$4({
13654
+ [`align-${align}`]: Boolean(align),
13655
+ [`aspect-ratio-${aspectRatio}`]: Boolean(aspectRatio),
13656
+ [`size-${size}`]: Boolean(size),
13657
+ [`theme-${theme}`]: Boolean(theme),
13658
+ [`variant-${variant}`]: Boolean(variant),
13659
+ 'is-clickable': isClickable,
13660
+ 'has-error': hasError,
13661
+ 'has-icon-error-fallback': hasIconErrorFallback,
13662
+ 'has-custom-error-fallback': hasCustomErrorFallback,
13663
+ 'is-loading': isLoading,
13664
+ [`object-fit-${objectFit}`]: Boolean(objectFit),
13665
+ 'has-badge': !!badge,
13666
+ 'fill-height': fillHeight
13667
+ })),
13293
13668
  children: [/*#__PURE__*/jsxs("span", {
13294
- className: `${CLASSNAME$4}__background`,
13669
+ className: element$4('background'),
13295
13670
  children: [/*#__PURE__*/jsx("img", {
13296
13671
  // Use placeholder image size
13297
13672
  width: loadingPlaceholderImage?.naturalWidth,
@@ -13306,17 +13681,16 @@ const Thumbnail = forwardRef((props, ref) => {
13306
13681
  ...loadingStyle
13307
13682
  },
13308
13683
  ref: useMergeRefs(setImgElement, propImgRef),
13309
- className: classNames.join(handleBasicClasses({
13310
- prefix: `${CLASSNAME$4}__image`,
13311
- isLoading,
13312
- hasDefinedSize: Boolean(imgProps?.height && imgProps.width)
13684
+ className: classNames.join(element$4('image', {
13685
+ 'is-loading': isLoading,
13686
+ 'has-defined-size': Boolean(imgProps?.height && imgProps.width)
13313
13687
  }), imgProps?.className),
13314
13688
  crossOrigin: crossOrigin,
13315
13689
  src: image,
13316
13690
  alt: alt,
13317
13691
  loading: loading
13318
13692
  }), !isLoading && hasError && /*#__PURE__*/jsx("span", {
13319
- className: `${CLASSNAME$4}__fallback`,
13693
+ className: element$4('fallback'),
13320
13694
  children: hasIconErrorFallback ? /*#__PURE__*/jsx(Icon, {
13321
13695
  icon: fallback,
13322
13696
  size: Size$1.xxs,
@@ -13324,7 +13698,7 @@ const Thumbnail = forwardRef((props, ref) => {
13324
13698
  }) : fallback
13325
13699
  })]
13326
13700
  }), badge && /*#__PURE__*/React__default.cloneElement(badge, {
13327
- className: classNames.join(`${CLASSNAME$4}__badge`, badge.props.className)
13701
+ className: classNames.join(element$4('badge'), badge.props.className)
13328
13702
  })]
13329
13703
  });
13330
13704
  });
@@ -13378,6 +13752,10 @@ const COMPONENT_NAME$3 = 'Toolbar';
13378
13752
  * Component default class name and class prefix.
13379
13753
  */
13380
13754
  const CLASSNAME$3 = 'lumx-toolbar';
13755
+ const {
13756
+ block: block$3,
13757
+ element: element$3
13758
+ } = classNames.bem(CLASSNAME$3);
13381
13759
 
13382
13760
  /**
13383
13761
  * Component default props.
@@ -13402,20 +13780,19 @@ const Toolbar = forwardRef((props, ref) => {
13402
13780
  return /*#__PURE__*/jsxs("div", {
13403
13781
  ref: ref,
13404
13782
  ...forwardedProps,
13405
- className: classNames.join(className, handleBasicClasses({
13406
- hasAfter: Boolean(after),
13407
- hasBefore: Boolean(before),
13408
- hasLabel: Boolean(label),
13409
- prefix: CLASSNAME$3
13783
+ className: classNames.join(className, block$3({
13784
+ 'has-after': Boolean(after),
13785
+ 'has-before': Boolean(before),
13786
+ 'has-label': Boolean(label)
13410
13787
  })),
13411
13788
  children: [before && /*#__PURE__*/jsx("div", {
13412
- className: `${CLASSNAME$3}__before`,
13789
+ className: element$3('before'),
13413
13790
  children: before
13414
13791
  }), label && /*#__PURE__*/jsx("div", {
13415
- className: `${CLASSNAME$3}__label`,
13792
+ className: element$3('label'),
13416
13793
  children: label
13417
13794
  }), after && /*#__PURE__*/jsx("div", {
13418
- className: `${CLASSNAME$3}__after`,
13795
+ className: element$3('after'),
13419
13796
  children: after
13420
13797
  })]
13421
13798
  });
@@ -13620,6 +13997,10 @@ const COMPONENT_NAME$2 = 'Tooltip';
13620
13997
  * Component default class name and class prefix.
13621
13998
  */
13622
13999
  const CLASSNAME$2 = 'lumx-tooltip';
14000
+ const {
14001
+ block: block$2,
14002
+ element: element$2
14003
+ } = classNames.bem(CLASSNAME$2);
13623
14004
 
13624
14005
  /**
13625
14006
  * Component default props.
@@ -13710,10 +14091,9 @@ const Tooltip = forwardRef((props, ref) => {
13710
14091
  ...forwardedProps,
13711
14092
  id: id,
13712
14093
  role: "tooltip",
13713
- className: classNames.join(className, handleBasicClasses({
13714
- prefix: CLASSNAME$2,
13715
- position,
13716
- isInitializing: !styles.popper?.transform
14094
+ className: classNames.join(className, block$2({
14095
+ [`position-${position}`]: Boolean(position),
14096
+ 'is-initializing': !styles.popper?.transform
13717
14097
  }), isHidden && classNames.visuallyHidden()),
13718
14098
  style: {
13719
14099
  ...(isHidden ? undefined : styles.popper),
@@ -13721,9 +14101,9 @@ const Tooltip = forwardRef((props, ref) => {
13721
14101
  },
13722
14102
  ...attributes.popper,
13723
14103
  children: [/*#__PURE__*/jsx("div", {
13724
- className: `${CLASSNAME$2}__arrow`
14104
+ className: element$2('arrow')
13725
14105
  }), /*#__PURE__*/jsx("div", {
13726
- className: `${CLASSNAME$2}__inner`,
14106
+ className: element$2('inner'),
13727
14107
  children: labelLines.map(line => /*#__PURE__*/jsx("p", {
13728
14108
  children: line
13729
14109
  }, line))
@@ -13763,6 +14143,10 @@ const COMPONENT_NAME$1 = 'Uploader';
13763
14143
  * Component default class name and class prefix.
13764
14144
  */
13765
14145
  const CLASSNAME$1 = 'lumx-uploader';
14146
+ const {
14147
+ block: block$1,
14148
+ element: element$1
14149
+ } = classNames.bem(CLASSNAME$1);
13766
14150
 
13767
14151
  /**
13768
14152
  * Component default props.
@@ -13836,31 +14220,30 @@ const Uploader = forwardRef((props, ref) => {
13836
14220
  ...wrapper.props,
13837
14221
  ...forwardedProps,
13838
14222
  onClick: handleClick,
13839
- className: classNames.join(className, handleBasicClasses({
13840
- aspectRatio: adjustedAspectRatio,
13841
- prefix: CLASSNAME$1,
13842
- size,
13843
- theme,
13844
- variant,
13845
- isDragHovering,
13846
- isDisabled: isAnyDisabled
14223
+ className: classNames.join(className, block$1({
14224
+ [`aspect-ratio-${adjustedAspectRatio}`]: Boolean(adjustedAspectRatio),
14225
+ [`size-${size}`]: Boolean(size),
14226
+ [`theme-${theme}`]: Boolean(theme),
14227
+ [`variant-${variant}`]: Boolean(variant),
14228
+ 'is-drag-hovering': isDragHovering,
14229
+ 'is-disabled': isAnyDisabled
13847
14230
  })),
13848
14231
  children: [/*#__PURE__*/jsx("span", {
13849
- className: `${CLASSNAME$1}__background`
14232
+ className: element$1('background')
13850
14233
  }), /*#__PURE__*/jsxs("span", {
13851
- className: `${CLASSNAME$1}__wrapper`,
14234
+ className: element$1('wrapper'),
13852
14235
  children: [icon && /*#__PURE__*/jsx(Icon, {
13853
- className: `${CLASSNAME$1}__icon`,
14236
+ className: element$1('icon'),
13854
14237
  icon: icon,
13855
14238
  size: Size$1.s
13856
14239
  }), label && /*#__PURE__*/jsx("span", {
13857
- className: `${CLASSNAME$1}__label`,
14240
+ className: element$1('label'),
13858
14241
  children: label
13859
14242
  })]
13860
14243
  }), fileInputProps && /*#__PURE__*/jsx("input", {
13861
14244
  type: "file",
13862
14245
  id: inputId,
13863
- className: `${CLASSNAME$1}__input ${classNames.visuallyHidden()}`,
14246
+ className: classNames.join(element$1('input'), classNames.visuallyHidden()),
13864
14247
  ...disabledStateProps,
13865
14248
  ...fileInputProps,
13866
14249
  readOnly: isAnyDisabled,
@@ -13884,6 +14267,10 @@ const COMPONENT_NAME = 'UserBlock';
13884
14267
  * Component default class name and class prefix.
13885
14268
  */
13886
14269
  const CLASSNAME = 'lumx-user-block';
14270
+ const {
14271
+ block,
14272
+ element
14273
+ } = classNames.bem(CLASSNAME);
13887
14274
 
13888
14275
  /**
13889
14276
  * Component default props.
@@ -13939,7 +14326,7 @@ const UserBlock = forwardRef((props, ref) => {
13939
14326
  let NameComponent = 'span';
13940
14327
  const nProps = {
13941
14328
  ...nameProps,
13942
- className: classNames.join(`${CLASSNAME}__name`, linkProps?.className, nameProps?.className)
14329
+ className: classNames.join(element('name'), linkProps?.className, nameProps?.className)
13943
14330
  };
13944
14331
  if (isClickable) {
13945
14332
  NameComponent = Link;
@@ -13964,22 +14351,21 @@ const UserBlock = forwardRef((props, ref) => {
13964
14351
  }, [avatarProps, isClickable, linkAs, linkProps, name, nameProps, onClick]);
13965
14352
  const shouldDisplayFields = componentSize !== Size$1.s && componentSize !== Size$1.xs;
13966
14353
  const fieldsBlock = fields && shouldDisplayFields && /*#__PURE__*/jsx("div", {
13967
- className: `${CLASSNAME}__fields`,
14354
+ className: element('fields'),
13968
14355
  children: fields.map((field, idx) => /*#__PURE__*/jsx(Text, {
13969
14356
  as: "span",
13970
- className: `${CLASSNAME}__field`,
14357
+ className: element('field'),
13971
14358
  children: field
13972
14359
  }, idx))
13973
14360
  });
13974
14361
  return /*#__PURE__*/jsxs("div", {
13975
14362
  ref: ref,
13976
14363
  ...forwardedProps,
13977
- className: classNames.join(className, handleBasicClasses({
13978
- prefix: CLASSNAME,
13979
- orientation,
13980
- size: componentSize,
13981
- theme,
13982
- isClickable
14364
+ className: classNames.join(className, block({
14365
+ [`orientation-${orientation}`]: Boolean(orientation),
14366
+ [`size-${componentSize}`]: Boolean(componentSize),
14367
+ [`theme-${theme}`]: Boolean(theme),
14368
+ 'is-clickable': isClickable
13983
14369
  })),
13984
14370
  onMouseLeave: onMouseLeave,
13985
14371
  onMouseEnter: onMouseEnter,
@@ -13988,21 +14374,21 @@ const UserBlock = forwardRef((props, ref) => {
13988
14374
  linkProps: linkProps,
13989
14375
  alt: "",
13990
14376
  ...avatarProps,
13991
- className: classNames.join(`${CLASSNAME}__avatar`, avatarProps.className),
14377
+ className: classNames.join(element('avatar'), avatarProps.className),
13992
14378
  size: componentSize,
13993
14379
  onClick: onClick,
13994
14380
  theme: theme
13995
14381
  }), (fields || name || children || additionalFields) && /*#__PURE__*/jsxs("div", {
13996
- className: `${CLASSNAME}__wrapper`,
14382
+ className: element('wrapper'),
13997
14383
  children: [children || nameBlock, fieldsBlock, shouldDisplayFields ? additionalFields : null]
13998
14384
  }), shouldDisplayActions && simpleAction && /*#__PURE__*/jsx("div", {
13999
- className: `${CLASSNAME}__action`,
14385
+ className: element('action'),
14000
14386
  children: simpleAction
14001
14387
  }), shouldDisplayActions && multipleActions && /*#__PURE__*/jsx("div", {
14002
- className: `${CLASSNAME}__actions`,
14388
+ className: element('actions'),
14003
14389
  children: multipleActions
14004
14390
  }), after ? /*#__PURE__*/jsx("div", {
14005
- className: `${CLASSNAME}__after`,
14391
+ className: element('after'),
14006
14392
  children: after
14007
14393
  }) : null]
14008
14394
  });