@elementor/editor-editing-panel 1.45.0 → 1.47.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/index.d.mts +22 -4
  3. package/dist/index.d.ts +22 -4
  4. package/dist/index.js +1187 -1051
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +1027 -893
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +18 -17
  9. package/src/components/css-classes/css-class-menu.tsx +6 -8
  10. package/src/components/css-classes/css-class-selector.tsx +17 -11
  11. package/src/components/popover-scrollable-content.tsx +12 -0
  12. package/src/components/section-content.tsx +6 -16
  13. package/src/components/section.tsx +8 -4
  14. package/src/components/settings-tab.tsx +30 -4
  15. package/src/components/style-indicator.tsx +19 -15
  16. package/src/components/style-sections/background-section/background-section.tsx +4 -1
  17. package/src/components/style-sections/border-section/border-color-field.tsx +10 -16
  18. package/src/components/style-sections/border-section/border-field.tsx +4 -6
  19. package/src/components/style-sections/border-section/border-radius-field.tsx +4 -2
  20. package/src/components/style-sections/border-section/border-style-field.tsx +11 -16
  21. package/src/components/style-sections/border-section/border-width-field.tsx +4 -2
  22. package/src/components/style-sections/effects-section/effects-section.tsx +22 -2
  23. package/src/components/style-sections/layout-section/align-content-field.tsx +11 -12
  24. package/src/components/style-sections/layout-section/align-items-field.tsx +8 -11
  25. package/src/components/style-sections/layout-section/align-self-child-field.tsx +11 -16
  26. package/src/components/style-sections/layout-section/display-field.tsx +6 -6
  27. package/src/components/style-sections/layout-section/flex-direction-field.tsx +11 -14
  28. package/src/components/style-sections/layout-section/flex-order-field.tsx +32 -37
  29. package/src/components/style-sections/layout-section/flex-size-field.tsx +35 -58
  30. package/src/components/style-sections/layout-section/gap-control-field.tsx +5 -6
  31. package/src/components/style-sections/layout-section/justify-content-field.tsx +11 -12
  32. package/src/components/style-sections/layout-section/layout-section.tsx +2 -2
  33. package/src/components/style-sections/layout-section/opacity-control-field.tsx +21 -0
  34. package/src/components/style-sections/layout-section/utils/rotated-icon.tsx +1 -1
  35. package/src/components/style-sections/layout-section/wrap-field.tsx +10 -14
  36. package/src/components/style-sections/position-section/dimensions-field.tsx +4 -4
  37. package/src/components/style-sections/position-section/offset-field.tsx +12 -14
  38. package/src/components/style-sections/position-section/position-field.tsx +7 -11
  39. package/src/components/style-sections/position-section/position-section.tsx +6 -6
  40. package/src/components/style-sections/position-section/z-index-field.tsx +7 -11
  41. package/src/components/style-sections/size-section/object-fit-field.tsx +7 -11
  42. package/src/components/style-sections/size-section/object-position-field.tsx +4 -23
  43. package/src/components/style-sections/size-section/overflow-field.tsx +7 -11
  44. package/src/components/style-sections/size-section/size-section.tsx +10 -8
  45. package/src/components/style-sections/spacing-section/spacing-section.tsx +7 -4
  46. package/src/components/style-sections/typography-section/column-count-field.tsx +7 -11
  47. package/src/components/style-sections/typography-section/column-gap-field.tsx +9 -13
  48. package/src/components/style-sections/typography-section/font-family-field.tsx +9 -11
  49. package/src/components/style-sections/typography-section/font-size-field.tsx +9 -13
  50. package/src/components/style-sections/typography-section/font-style-field.tsx +13 -13
  51. package/src/components/style-sections/typography-section/font-weight-field.tsx +7 -11
  52. package/src/components/style-sections/typography-section/letter-spacing-field.tsx +9 -13
  53. package/src/components/style-sections/typography-section/line-height-field.tsx +9 -13
  54. package/src/components/style-sections/typography-section/text-alignment-field.tsx +11 -14
  55. package/src/components/style-sections/typography-section/text-color-field.tsx +7 -11
  56. package/src/components/style-sections/typography-section/text-decoration-field.tsx +7 -11
  57. package/src/components/style-sections/typography-section/text-direction-field.tsx +7 -11
  58. package/src/components/style-sections/typography-section/text-stroke-field.tsx +8 -8
  59. package/src/components/style-sections/typography-section/transform-field.tsx +7 -11
  60. package/src/components/style-sections/typography-section/typography-section.tsx +4 -2
  61. package/src/components/style-sections/typography-section/word-spacing-field.tsx +9 -13
  62. package/src/components/styles-field-layout.tsx +50 -0
  63. package/src/contexts/section-context.tsx +14 -0
  64. package/src/controls-registry/control-type-container.tsx +6 -2
  65. package/src/controls-registry/controls-registry.tsx +30 -10
  66. package/src/controls-registry/settings-field.tsx +65 -6
  67. package/src/controls-registry/styles-field.tsx +11 -5
  68. package/src/dynamics/components/dynamic-selection-control.tsx +20 -22
  69. package/src/dynamics/components/dynamic-selection.tsx +64 -79
  70. package/src/dynamics/hooks/use-prop-dynamic-action.tsx +1 -1
  71. package/src/hooks/use-default-panel-settings.ts +4 -0
  72. package/src/hooks/use-styles-field.ts +9 -3
  73. package/src/hooks/use-styles-fields.ts +4 -4
  74. package/src/index.ts +5 -0
  75. package/src/popover-action.tsx +11 -6
  76. package/src/provider-colors-registry.ts +20 -0
  77. package/src/styles-inheritance/components/infotip/label-chip.tsx +4 -5
  78. package/src/styles-inheritance/components/styles-inheritance-indicator.tsx +36 -41
  79. package/src/styles-inheritance/components/styles-inheritance-infotip.tsx +10 -24
  80. package/src/styles-inheritance/components/styles-inheritance-section-indicators.tsx +29 -44
  81. package/src/styles-inheritance/hooks/use-normalized-inheritance-chain-items.tsx +1 -17
  82. package/src/styles-inheritance/types.ts +0 -2
  83. package/src/styles-inheritance/utils.ts +17 -1
  84. package/src/sync/experiments-flags.ts +1 -0
  85. package/src/utils/get-styles-provider-color.ts +28 -0
  86. package/src/components/popover-content.tsx +0 -15
package/dist/index.mjs CHANGED
@@ -1,3 +1,9 @@
1
+ // src/sync/experiments-flags.ts
2
+ var EXPERIMENTAL_FEATURES = {
3
+ V_3_30: "e_v_3_30",
4
+ V_3_31: "e_v_3_31"
5
+ };
6
+
1
7
  // src/index.ts
2
8
  import { useBoundProp as useBoundProp9 } from "@elementor/editor-controls";
3
9
 
@@ -5,6 +11,17 @@ import { useBoundProp as useBoundProp9 } from "@elementor/editor-controls";
5
11
  import { createControlReplacementsRegistry } from "@elementor/editor-controls";
6
12
  var { registerControlReplacement, getControlReplacements } = createControlReplacementsRegistry();
7
13
 
14
+ // src/provider-colors-registry.ts
15
+ var DEFAULT_COLORS = {
16
+ name: "default",
17
+ getThemeColor: null
18
+ };
19
+ var providerColorsRegistry = /* @__PURE__ */ new Map();
20
+ var registerStyleProviderToColors = (provider, colors) => {
21
+ providerColorsRegistry.set(provider, colors);
22
+ };
23
+ var getStyleProviderColors = (provider) => providerColorsRegistry.get(provider) ?? DEFAULT_COLORS;
24
+
8
25
  // src/components/css-classes/css-class-selector.tsx
9
26
  import * as React8 from "react";
10
27
  import { useRef, useState as useState4 } from "react";
@@ -19,7 +36,14 @@ import {
19
36
  import { InfoAlert, WarningInfotip } from "@elementor/editor-ui";
20
37
  import { ColorSwatchIcon, MapPinIcon } from "@elementor/icons";
21
38
  import { createLocation } from "@elementor/locations";
22
- import { Box as Box2, Chip as Chip3, FormLabel, Link, Stack as Stack3, Typography as Typography3 } from "@elementor/ui";
39
+ import {
40
+ Box as Box2,
41
+ Chip as Chip3,
42
+ FormLabel,
43
+ Link,
44
+ Stack as Stack3,
45
+ Typography as Typography3
46
+ } from "@elementor/ui";
23
47
  import { __ as __4 } from "@wordpress/i18n";
24
48
 
25
49
  // src/contexts/classes-prop-context.tsx
@@ -104,6 +128,27 @@ function useIsStyle() {
104
128
  return !!useContext3(Context3);
105
129
  }
106
130
 
131
+ // src/utils/get-styles-provider-color.ts
132
+ import { ELEMENTS_BASE_STYLES_PROVIDER_KEY, isElementsStylesProvider } from "@elementor/editor-styles-repository";
133
+ var getStylesProviderColorName = (provider) => {
134
+ if (!provider || provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY) {
135
+ return "default";
136
+ }
137
+ if (isElementsStylesProvider(provider)) {
138
+ return "accent";
139
+ }
140
+ return getStyleProviderColors(provider).name;
141
+ };
142
+ var getStylesProviderThemeColor = (provider) => {
143
+ if (!provider || provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY) {
144
+ return null;
145
+ }
146
+ if (isElementsStylesProvider(provider)) {
147
+ return (theme) => theme.palette.accent.main;
148
+ }
149
+ return getStyleProviderColors(provider).getThemeColor;
150
+ };
151
+
107
152
  // src/components/creatable-autocomplete/creatable-autocomplete.tsx
108
153
  import * as React4 from "react";
109
154
  import { useId, useMemo } from "react";
@@ -470,11 +515,7 @@ function CssClassProvider({ children, ...contextValue }) {
470
515
 
471
516
  // src/components/css-classes/css-class-menu.tsx
472
517
  import * as React6 from "react";
473
- import {
474
- isElementsStylesProvider,
475
- stylesRepository as stylesRepository2,
476
- useUserStylesCapability as useUserStylesCapability2
477
- } from "@elementor/editor-styles-repository";
518
+ import { stylesRepository as stylesRepository2, useUserStylesCapability as useUserStylesCapability2 } from "@elementor/editor-styles-repository";
478
519
  import { MenuItemInfotip, MenuListItem } from "@elementor/editor-ui";
479
520
  import { bindMenu, Divider, Menu, MenuSubheader, Stack } from "@elementor/ui";
480
521
  import { __ as __2 } from "@wordpress/i18n";
@@ -482,22 +523,17 @@ import { __ as __2 } from "@wordpress/i18n";
482
523
  // src/components/style-indicator.tsx
483
524
  import { styled as styled2 } from "@elementor/ui";
484
525
  var StyleIndicator = styled2("div", {
485
- shouldForwardProp: (prop) => prop !== "variant"
526
+ shouldForwardProp: (prop) => !["isOverridden", "getColor"].includes(prop)
486
527
  })`
487
528
  width: 5px;
488
529
  height: 5px;
489
530
  border-radius: 50%;
490
- background-color: ${({ theme, variant }) => {
491
- switch (variant) {
492
- case "overridden":
493
- return theme.palette.warning.light;
494
- case "global":
495
- return theme.palette.global.dark;
496
- case "local":
497
- return theme.palette.accent.main;
498
- default:
499
- return theme.palette.text.disabled;
531
+ background-color: ${({ theme, isOverridden, getColor }) => {
532
+ if (isOverridden) {
533
+ return theme.palette.warning.light;
500
534
  }
535
+ const providerColor = getColor?.(theme);
536
+ return providerColor ?? theme.palette.text.disabled;
501
537
  }};
502
538
  `;
503
539
 
@@ -509,13 +545,6 @@ import { classesPropTypeUtil } from "@elementor/editor-props";
509
545
  import { useGetStylesRepositoryCreateAction } from "@elementor/editor-styles-repository";
510
546
  import { isExperimentActive, undoable } from "@elementor/editor-v1-adapters";
511
547
  import { __ } from "@wordpress/i18n";
512
-
513
- // src/sync/experiments-flags.ts
514
- var EXPERIMENTAL_FEATURES = {
515
- V_3_30: "e_v_3_30"
516
- };
517
-
518
- // src/components/css-classes/use-apply-and-unapply-class.ts
519
548
  function useApplyClass() {
520
549
  const { id: activeId, setId: setActiveId } = useStyle();
521
550
  const { element } = useElement();
@@ -775,7 +804,6 @@ function StateMenuItem({ state, closeMenu, ...props }) {
775
804
  const { userCan } = useUserStylesCapability2();
776
805
  const modifiedStates = useModifiedStates(styleId);
777
806
  const isUpdateAllowed = !state || userCan(provider ?? "").updateProps;
778
- const indicatorVariant = !provider || isElementsStylesProvider(provider) ? "local" : "global";
779
807
  const isStyled = modifiedStates[state ?? "normal"] ?? false;
780
808
  const disabled = !isUpdateAllowed && !isStyled;
781
809
  const isActive = styleId === activeId;
@@ -801,7 +829,13 @@ function StateMenuItem({ state, closeMenu, ...props }) {
801
829
  showInfoTip: disabled,
802
830
  content: __2("With your current role, you can only use existing states.", "elementor")
803
831
  },
804
- /* @__PURE__ */ React6.createElement(Stack, { gap: 0.75, direction: "row", alignItems: "center" }, isStyled && /* @__PURE__ */ React6.createElement(StyleIndicator, { "aria-label": __2("Has style", "elementor"), variant: indicatorVariant }), state ?? "normal")
832
+ /* @__PURE__ */ React6.createElement(Stack, { gap: 0.75, direction: "row", alignItems: "center" }, isStyled && /* @__PURE__ */ React6.createElement(
833
+ StyleIndicator,
834
+ {
835
+ "aria-label": __2("Has style", "elementor"),
836
+ getColor: getStylesProviderThemeColor(provider ?? "")
837
+ }
838
+ ), state ?? "normal")
805
839
  )
806
840
  );
807
841
  }
@@ -1025,16 +1059,7 @@ function CssClassSelector() {
1025
1059
  })
1026
1060
  }
1027
1061
  )
1028
- ), !canEdit && /* @__PURE__ */ React8.createElement(
1029
- InfoAlert,
1030
- {
1031
- content: __4(
1032
- "With your current role, you can use existing classes but can\u2019t modify them.",
1033
- "elementor"
1034
- ),
1035
- sx: { mt: 1 }
1036
- }
1037
- ));
1062
+ ), !canEdit && /* @__PURE__ */ React8.createElement(InfoAlert, { sx: { mt: 1 } }, __4("With your current role, you can use existing classes but can\u2019t modify them.", "elementor")));
1038
1063
  }
1039
1064
  var EmptyState = ({ searchValue, onClear }) => /* @__PURE__ */ React8.createElement(Box2, { sx: { py: 4 } }, /* @__PURE__ */ React8.createElement(
1040
1065
  Stack3,
@@ -1074,7 +1099,7 @@ function useOptions() {
1074
1099
  label: styleDef.label,
1075
1100
  value: styleDef.id,
1076
1101
  fixed: isElements,
1077
- color: isElements ? "accent" : "global",
1102
+ color: getStylesProviderColorName(provider.getKey()),
1078
1103
  icon: isElements ? /* @__PURE__ */ React8.createElement(MapPinIcon, null) : null,
1079
1104
  provider: provider.getKey()
1080
1105
  };
@@ -1142,7 +1167,7 @@ function useHandleSelect() {
1142
1167
  import { __createPanel as createPanel } from "@elementor/editor-panels";
1143
1168
 
1144
1169
  // src/components/editing-panel.tsx
1145
- import * as React84 from "react";
1170
+ import * as React86 from "react";
1146
1171
  import { ControlActionsProvider, ControlReplacementsProvider } from "@elementor/editor-controls";
1147
1172
  import { useSelectedElement } from "@elementor/editor-elements";
1148
1173
  import { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from "@elementor/editor-panels";
@@ -1150,7 +1175,7 @@ import { ThemeProvider as ThemeProvider2 } from "@elementor/editor-ui";
1150
1175
  import { AtomIcon } from "@elementor/icons";
1151
1176
  import { SessionStorageProvider as SessionStorageProvider3 } from "@elementor/session";
1152
1177
  import { ErrorBoundary } from "@elementor/ui";
1153
- import { __ as __55 } from "@wordpress/i18n";
1178
+ import { __ as __59 } from "@wordpress/i18n";
1154
1179
 
1155
1180
  // src/controls-actions.ts
1156
1181
  import { createMenu } from "@elementor/menus";
@@ -1169,14 +1194,13 @@ function Action({ title, visible = true, icon: Icon, onClick }) {
1169
1194
  // src/popover-action.tsx
1170
1195
  import * as React10 from "react";
1171
1196
  import { useId as useId2 } from "react";
1172
- import { PopoverHeader } from "@elementor/editor-ui";
1173
1197
  import { bindPopover, bindToggle, IconButton as IconButton2, Popover, Tooltip as Tooltip2, usePopupState as usePopupState2 } from "@elementor/ui";
1174
1198
  var SIZE2 = "tiny";
1175
1199
  function PopoverAction({
1176
1200
  title,
1177
1201
  visible = true,
1178
1202
  icon: Icon,
1179
- popoverContent: PopoverContent2
1203
+ content: PopoverContent
1180
1204
  }) {
1181
1205
  const id = useId2();
1182
1206
  const popupState = usePopupState2({
@@ -1193,12 +1217,18 @@ function PopoverAction({
1193
1217
  disableScrollLock: true,
1194
1218
  anchorOrigin: {
1195
1219
  vertical: "bottom",
1196
- horizontal: "center"
1220
+ horizontal: "right"
1221
+ },
1222
+ transformOrigin: {
1223
+ vertical: "top",
1224
+ horizontal: "right"
1225
+ },
1226
+ PaperProps: {
1227
+ sx: { my: 2.5 }
1197
1228
  },
1198
1229
  ...bindPopover(popupState)
1199
1230
  },
1200
- /* @__PURE__ */ React10.createElement(PopoverHeader, { title, onClose: popupState.close, icon: /* @__PURE__ */ React10.createElement(Icon, { fontSize: SIZE2 }) }),
1201
- /* @__PURE__ */ React10.createElement(PopoverContent2, { closePopover: popupState.close })
1231
+ /* @__PURE__ */ React10.createElement(PopoverContent, { close: popupState.close })
1202
1232
  ));
1203
1233
  }
1204
1234
 
@@ -1218,11 +1248,11 @@ function EditorPanelErrorFallback() {
1218
1248
  }
1219
1249
 
1220
1250
  // src/components/editing-panel-tabs.tsx
1221
- import * as React83 from "react";
1222
- import { Fragment as Fragment9 } from "react";
1223
- import { isExperimentActive as isExperimentActive13 } from "@elementor/editor-v1-adapters";
1224
- import { Divider as Divider6, Stack as Stack18, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
1225
- import { __ as __54 } from "@wordpress/i18n";
1251
+ import * as React85 from "react";
1252
+ import { Fragment as Fragment10 } from "react";
1253
+ import { isExperimentActive as isExperimentActive16 } from "@elementor/editor-v1-adapters";
1254
+ import { Divider as Divider6, Stack as Stack15, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
1255
+ import { __ as __58 } from "@wordpress/i18n";
1226
1256
 
1227
1257
  // src/contexts/scroll-context.tsx
1228
1258
  import * as React12 from "react";
@@ -1280,6 +1310,10 @@ var defaultPanelSettingsContext = createContext6({
1280
1310
  "e-flexbox": {
1281
1311
  defaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,
1282
1312
  defaultTab: "style"
1313
+ },
1314
+ "e-divider": {
1315
+ defaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,
1316
+ defaultTab: "style"
1283
1317
  }
1284
1318
  });
1285
1319
  var useDefaultPanelSettings = () => {
@@ -1308,7 +1342,7 @@ var useStateByElement = (key, initialValue) => {
1308
1342
  // src/components/settings-tab.tsx
1309
1343
  import * as React19 from "react";
1310
1344
  import { ControlFormLabel } from "@elementor/editor-controls";
1311
- import { isExperimentActive as isExperimentActive4 } from "@elementor/editor-v1-adapters";
1345
+ import { isExperimentActive as isExperimentActive5 } from "@elementor/editor-v1-adapters";
1312
1346
  import { SessionStorageProvider } from "@elementor/session";
1313
1347
  import { Divider as Divider3 } from "@elementor/ui";
1314
1348
 
@@ -1318,7 +1352,9 @@ import * as React13 from "react";
1318
1352
  // src/controls-registry/controls-registry.tsx
1319
1353
  import {
1320
1354
  ImageControl,
1355
+ KeyValueControl,
1321
1356
  LinkControl,
1357
+ RepeatableControl,
1322
1358
  SelectControl,
1323
1359
  SizeControl,
1324
1360
  SvgMediaControl,
@@ -1327,19 +1363,31 @@ import {
1327
1363
  TextControl,
1328
1364
  UrlControl
1329
1365
  } from "@elementor/editor-controls";
1366
+ import {
1367
+ booleanPropTypeUtil,
1368
+ imagePropTypeUtil,
1369
+ imageSrcPropTypeUtil,
1370
+ keyValuePropTypeUtil,
1371
+ linkPropTypeUtil,
1372
+ sizePropTypeUtil,
1373
+ stringPropTypeUtil
1374
+ } from "@elementor/editor-props";
1330
1375
  var controlTypes = {
1331
- image: { component: ImageControl, layout: "full" },
1332
- "svg-media": { component: SvgMediaControl, layout: "full" },
1333
- text: { component: TextControl, layout: "full" },
1334
- textarea: { component: TextAreaControl, layout: "full" },
1335
- size: { component: SizeControl, layout: "two-columns" },
1336
- select: { component: SelectControl, layout: "two-columns" },
1337
- link: { component: LinkControl, layout: "full" },
1338
- url: { component: UrlControl, layout: "full" },
1339
- switch: { component: SwitchControl, layout: "two-columns" }
1376
+ image: { component: ImageControl, layout: "full", propTypeUtil: imagePropTypeUtil },
1377
+ "svg-media": { component: SvgMediaControl, layout: "full", propTypeUtil: imageSrcPropTypeUtil },
1378
+ text: { component: TextControl, layout: "full", propTypeUtil: stringPropTypeUtil },
1379
+ textarea: { component: TextAreaControl, layout: "full", propTypeUtil: stringPropTypeUtil },
1380
+ size: { component: SizeControl, layout: "two-columns", propTypeUtil: sizePropTypeUtil },
1381
+ select: { component: SelectControl, layout: "two-columns", propTypeUtil: stringPropTypeUtil },
1382
+ link: { component: LinkControl, layout: "custom", propTypeUtil: linkPropTypeUtil },
1383
+ url: { component: UrlControl, layout: "full", propTypeUtil: stringPropTypeUtil },
1384
+ switch: { component: SwitchControl, layout: "two-columns", propTypeUtil: booleanPropTypeUtil },
1385
+ repeatable: { component: RepeatableControl, layout: "full", propTypeUtil: void 0 },
1386
+ "key-value": { component: KeyValueControl, layout: "full", propTypeUtil: keyValuePropTypeUtil }
1340
1387
  };
1341
1388
  var getControl = (type) => controlTypes[type]?.component;
1342
1389
  var getDefaultLayout = (type) => controlTypes[type].layout;
1390
+ var getPropTypeUtil = (type) => controlTypes[type]?.propTypeUtil;
1343
1391
 
1344
1392
  // src/controls-registry/control.tsx
1345
1393
  var Control = ({ props, type }) => {
@@ -1357,6 +1405,9 @@ var Control = ({ props, type }) => {
1357
1405
  import * as React14 from "react";
1358
1406
  import { Box as Box4, styled as styled4 } from "@elementor/ui";
1359
1407
  var ControlTypeContainer = ({ children, layout }) => {
1408
+ if (layout === "custom") {
1409
+ return children;
1410
+ }
1360
1411
  return /* @__PURE__ */ React14.createElement(StyledContainer, { layout }, children);
1361
1412
  };
1362
1413
  var StyledContainer = styled4(Box4, {
@@ -1376,8 +1427,17 @@ var getGridLayout = (layout) => ({
1376
1427
 
1377
1428
  // src/controls-registry/settings-field.tsx
1378
1429
  import * as React15 from "react";
1430
+ import { useMemo as useMemo3 } from "react";
1379
1431
  import { PropKeyProvider, PropProvider } from "@elementor/editor-controls";
1380
- import { updateElementSettings as updateElementSettings2, useElementSetting as useElementSetting2 } from "@elementor/editor-elements";
1432
+ import { setDocumentModifiedStatus as setDocumentModifiedStatus2 } from "@elementor/editor-documents";
1433
+ import {
1434
+ getElementLabel as getElementLabel2,
1435
+ getElementSetting as getElementSetting2,
1436
+ updateElementSettings as updateElementSettings2,
1437
+ useElementSetting as useElementSetting2
1438
+ } from "@elementor/editor-elements";
1439
+ import { isExperimentActive as isExperimentActive3, undoable as undoable2 } from "@elementor/editor-v1-adapters";
1440
+ import { __ as __5 } from "@wordpress/i18n";
1381
1441
 
1382
1442
  // src/controls-registry/create-top-level-object-type.ts
1383
1443
  var createTopLevelOjectType = ({ schema }) => {
@@ -1393,26 +1453,69 @@ var createTopLevelOjectType = ({ schema }) => {
1393
1453
  };
1394
1454
 
1395
1455
  // src/controls-registry/settings-field.tsx
1396
- var SettingsField = ({ bind, children }) => {
1456
+ var SettingsField = ({ bind, children, propDisplayName }) => {
1397
1457
  const { element, elementType } = useElement();
1398
1458
  const settingsValue = useElementSetting2(element.id, bind);
1399
1459
  const value = { [bind]: settingsValue };
1400
1460
  const propType = createTopLevelOjectType({ schema: elementType.propsSchema });
1461
+ const undoableUpdateElementProp = useUndoableUpdateElementProp({
1462
+ propKey: bind,
1463
+ elementId: element.id,
1464
+ propDisplayName
1465
+ });
1401
1466
  const setValue = (newValue) => {
1402
- updateElementSettings2({
1403
- id: element.id,
1404
- props: { ...newValue }
1405
- });
1467
+ const isVersion331Active = isExperimentActive3(EXPERIMENTAL_FEATURES.V_3_31);
1468
+ if (isVersion331Active) {
1469
+ undoableUpdateElementProp({ newValue });
1470
+ } else {
1471
+ updateElementSettings2({ id: element.id, props: newValue });
1472
+ }
1406
1473
  };
1407
1474
  return /* @__PURE__ */ React15.createElement(PropProvider, { propType, value, setValue }, /* @__PURE__ */ React15.createElement(PropKeyProvider, { bind }, children));
1408
1475
  };
1476
+ function useUndoableUpdateElementProp({
1477
+ propKey,
1478
+ elementId,
1479
+ propDisplayName
1480
+ }) {
1481
+ return useMemo3(() => {
1482
+ return undoable2(
1483
+ {
1484
+ do: ({ newValue }) => {
1485
+ const prevPropValue = getElementSetting2(elementId, propKey);
1486
+ updateElementSettings2({ id: elementId, props: { ...newValue }, withHistory: false });
1487
+ setDocumentModifiedStatus2(true);
1488
+ return { [propKey]: prevPropValue };
1489
+ },
1490
+ undo: ({}, prevProps) => {
1491
+ updateElementSettings2({ id: elementId, props: prevProps, withHistory: false });
1492
+ }
1493
+ },
1494
+ {
1495
+ title: getElementLabel2(elementId),
1496
+ // translators: %s is the name of the property that was edited.
1497
+ subtitle: __5("%s edited", "elementor").replace("%s", propDisplayName)
1498
+ }
1499
+ );
1500
+ }, [propKey, elementId, propDisplayName]);
1501
+ }
1409
1502
 
1410
1503
  // src/components/section.tsx
1411
1504
  import * as React17 from "react";
1412
- import { useId as useId3 } from "react";
1413
- import { isExperimentActive as isExperimentActive3 } from "@elementor/editor-v1-adapters";
1505
+ import { useId as useId3, useRef as useRef3 } from "react";
1506
+ import { isExperimentActive as isExperimentActive4 } from "@elementor/editor-v1-adapters";
1414
1507
  import { Collapse as Collapse2, Divider as Divider2, ListItemButton, ListItemText, Stack as Stack5 } from "@elementor/ui";
1415
1508
 
1509
+ // src/contexts/section-context.tsx
1510
+ import { createContext as createContext7, useContext as useContext7 } from "react";
1511
+ var FALLBACK_SECTION_WIDTH = 320;
1512
+ var SectionRefContext = createContext7(null);
1513
+ var useSectionRef = () => useContext7(SectionRefContext);
1514
+ var useSectionWidth = () => {
1515
+ const sectionRef = useSectionRef();
1516
+ return sectionRef?.current?.offsetWidth ?? FALLBACK_SECTION_WIDTH;
1517
+ };
1518
+
1416
1519
  // src/components/collapse-icon.tsx
1417
1520
  import { ChevronDownIcon } from "@elementor/icons";
1418
1521
  import { styled as styled5 } from "@elementor/ui";
@@ -1429,7 +1532,7 @@ var CollapseIcon = styled5(ChevronDownIcon, {
1429
1532
  import * as React16 from "react";
1430
1533
  import { useState as useState7 } from "react";
1431
1534
  import { Button, Collapse, Stack as Stack4, styled as styled6 } from "@elementor/ui";
1432
- import { __ as __5 } from "@wordpress/i18n";
1535
+ import { __ as __6 } from "@wordpress/i18n";
1433
1536
  var IndicatorsWrapper = styled6("div")`
1434
1537
  position: absolute;
1435
1538
  top: 0;
@@ -1456,7 +1559,7 @@ var CollapsibleContent = ({ children, defaultOpen = false, titleEnd = null }) =>
1456
1559
  endIcon: /* @__PURE__ */ React16.createElement(CollapseIcon, { open }),
1457
1560
  sx: { my: 0.5 }
1458
1561
  },
1459
- open ? __5("Show less", "elementor") : __5("Show more", "elementor")
1562
+ open ? __6("Show less", "elementor") : __6("Show more", "elementor")
1460
1563
  ), titleEnd && /* @__PURE__ */ React16.createElement(IndicatorsWrapper, null, getCollapsibleValue(titleEnd, open))), /* @__PURE__ */ React16.createElement(Collapse, { in: open, timeout: "auto", unmountOnExit: true }, children));
1461
1564
  };
1462
1565
  function getCollapsibleValue(value, isOpen) {
@@ -1469,13 +1572,14 @@ function getCollapsibleValue(value, isOpen) {
1469
1572
  // src/components/section.tsx
1470
1573
  function Section({ title, children, defaultExpanded = false, titleEnd }) {
1471
1574
  const [isOpen, setIsOpen] = useStateByElement(title, !!defaultExpanded);
1575
+ const ref = useRef3(null);
1472
1576
  const handleClick = () => {
1473
1577
  setIsOpen(!isOpen);
1474
1578
  };
1475
1579
  const id = useId3();
1476
1580
  const labelId = `label-${id}`;
1477
1581
  const contentId = `content-${id}`;
1478
- const isUsingTitleEnd = isExperimentActive3(EXPERIMENTAL_FEATURES.V_3_30);
1582
+ const isUsingTitleEnd = isExperimentActive4(EXPERIMENTAL_FEATURES.V_3_30);
1479
1583
  return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
1480
1584
  ListItemButton,
1481
1585
  {
@@ -1493,7 +1597,7 @@ function Section({ title, children, defaultExpanded = false, titleEnd }) {
1493
1597
  }
1494
1598
  ), isUsingTitleEnd ? getCollapsibleValue(titleEnd, isOpen) : null),
1495
1599
  /* @__PURE__ */ React17.createElement(CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
1496
- ), /* @__PURE__ */ React17.createElement(Collapse2, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React17.createElement(Stack5, { gap: 2.5, p: 2 }, children)), /* @__PURE__ */ React17.createElement(Divider2, null));
1600
+ ), /* @__PURE__ */ React17.createElement(Collapse2, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto", unmountOnExit: true }, /* @__PURE__ */ React17.createElement(SectionRefContext.Provider, { value: ref }, /* @__PURE__ */ React17.createElement(Stack5, { ref, gap: 2.5, p: 2 }, children))), /* @__PURE__ */ React17.createElement(Divider2, null));
1497
1601
  }
1498
1602
 
1499
1603
  // src/components/sections-list.tsx
@@ -1507,7 +1611,7 @@ function SectionsList(props) {
1507
1611
  var SettingsTab = () => {
1508
1612
  const { elementType, element } = useElement();
1509
1613
  const settingsDefault = useDefaultPanelSettings();
1510
- const isDefaultExpanded = (sectionId) => isExperimentActive4(EXPERIMENTAL_FEATURES.V_3_30) ? settingsDefault.defaultSectionsExpanded.settings?.includes(sectionId) : true;
1614
+ const isDefaultExpanded = (sectionId) => isExperimentActive5(EXPERIMENTAL_FEATURES.V_3_30) ? settingsDefault.defaultSectionsExpanded.settings?.includes(sectionId) : true;
1511
1615
  return /* @__PURE__ */ React19.createElement(SessionStorageProvider, { prefix: element.id }, /* @__PURE__ */ React19.createElement(SectionsList, null, elementType.controls.map(({ type, value }, index) => {
1512
1616
  if (type === "control") {
1513
1617
  return /* @__PURE__ */ React19.createElement(Control2, { key: value.bind, control: value });
@@ -1536,21 +1640,40 @@ var Control2 = ({ control }) => {
1536
1640
  return null;
1537
1641
  }
1538
1642
  const layout = control.meta?.layout || getDefaultLayout(control.type);
1539
- return /* @__PURE__ */ React19.createElement(SettingsField, { bind: control.bind }, control.meta?.topDivider && /* @__PURE__ */ React19.createElement(Divider3, null), /* @__PURE__ */ React19.createElement(ControlTypeContainer, { layout }, control.label ? /* @__PURE__ */ React19.createElement(ControlFormLabel, null, control.label) : null, /* @__PURE__ */ React19.createElement(Control, { type: control.type, props: control.props })));
1643
+ const controlProps = populateChildControlProps(control.props);
1644
+ if (layout === "custom") {
1645
+ controlProps.label = control.label;
1646
+ }
1647
+ return /* @__PURE__ */ React19.createElement(SettingsField, { bind: control.bind, propDisplayName: control.label || control.bind }, control.meta?.topDivider && /* @__PURE__ */ React19.createElement(Divider3, null), /* @__PURE__ */ React19.createElement(ControlTypeContainer, { layout }, control.label && layout !== "custom" ? /* @__PURE__ */ React19.createElement(ControlFormLabel, null, control.label) : null, /* @__PURE__ */ React19.createElement(Control, { type: control.type, props: controlProps })));
1540
1648
  };
1649
+ function populateChildControlProps(props) {
1650
+ if (props.childControlType) {
1651
+ const childComponent = getControl(props.childControlType);
1652
+ const childPropType = getPropTypeUtil(props.childControlType);
1653
+ props = {
1654
+ ...props,
1655
+ childControlConfig: {
1656
+ component: childComponent,
1657
+ props: props.childControlProps || {},
1658
+ propTypeUtil: childPropType
1659
+ }
1660
+ };
1661
+ }
1662
+ return props;
1663
+ }
1541
1664
 
1542
1665
  // src/components/style-tab.tsx
1543
- import * as React82 from "react";
1666
+ import * as React84 from "react";
1544
1667
  import { useState as useState12 } from "react";
1545
1668
  import { CLASSES_PROP_KEY } from "@elementor/editor-props";
1546
1669
  import { useActiveBreakpoint } from "@elementor/editor-responsive";
1547
1670
  import { SessionStorageProvider as SessionStorageProvider2 } from "@elementor/session";
1548
- import { Divider as Divider5, Stack as Stack17 } from "@elementor/ui";
1549
- import { __ as __53 } from "@wordpress/i18n";
1671
+ import { Divider as Divider5, Stack as Stack14 } from "@elementor/ui";
1672
+ import { __ as __57 } from "@wordpress/i18n";
1550
1673
 
1551
1674
  // src/contexts/styles-inheritance-context.tsx
1552
1675
  import * as React20 from "react";
1553
- import { createContext as createContext7, useContext as useContext7 } from "react";
1676
+ import { createContext as createContext8, useContext as useContext8 } from "react";
1554
1677
  import { getWidgetsCache, useElementSetting as useElementSetting3 } from "@elementor/editor-elements";
1555
1678
  import { classesPropTypeUtil as classesPropTypeUtil2 } from "@elementor/editor-props";
1556
1679
  import { getBreakpointsTree } from "@elementor/editor-responsive";
@@ -1579,6 +1702,14 @@ var DEFAULT_STATE = "normal";
1579
1702
  var DEFAULT_BREAKPOINT = "desktop";
1580
1703
  var getStateKey = (state) => state ?? DEFAULT_STATE;
1581
1704
  var getBreakpointKey = (breakpoint) => breakpoint ?? DEFAULT_BREAKPOINT;
1705
+ var getValueFromInheritanceChain = (inheritanceChain, styleId, meta) => inheritanceChain.find(
1706
+ ({
1707
+ style,
1708
+ variant: {
1709
+ meta: { breakpoint, state }
1710
+ }
1711
+ }) => style.id === styleId && breakpoint === meta.breakpoint && state === meta.state
1712
+ );
1582
1713
 
1583
1714
  // src/styles-inheritance/create-snapshots-manager.ts
1584
1715
  function createSnapshotsManager(getStylesByMeta, breakpointsRoot) {
@@ -1783,7 +1914,7 @@ var getFilterPropType = (propType, path) => {
1783
1914
  };
1784
1915
 
1785
1916
  // src/contexts/styles-inheritance-context.tsx
1786
- var Context4 = createContext7(null);
1917
+ var Context4 = createContext8(null);
1787
1918
  function StyleInheritanceProvider({ children }) {
1788
1919
  const styleDefs = useAppliedStyles();
1789
1920
  const breakpointsTree = getBreakpointsTree();
@@ -1791,7 +1922,7 @@ function StyleInheritanceProvider({ children }) {
1791
1922
  return /* @__PURE__ */ React20.createElement(Context4.Provider, { value: { getSnapshot, getInheritanceChain } }, children);
1792
1923
  }
1793
1924
  function useStylesInheritanceSnapshot() {
1794
- const context = useContext7(Context4);
1925
+ const context = useContext8(Context4);
1795
1926
  const { meta } = useStyle();
1796
1927
  if (!context) {
1797
1928
  throw new Error("useStylesInheritanceSnapshot must be used within a StyleInheritanceProvider");
@@ -1802,7 +1933,7 @@ function useStylesInheritanceSnapshot() {
1802
1933
  return context.getSnapshot(meta) ?? null;
1803
1934
  }
1804
1935
  function useStylesInheritanceChain(path) {
1805
- const context = useContext7(Context4);
1936
+ const context = useContext8(Context4);
1806
1937
  if (!context) {
1807
1938
  throw new Error("useStylesInheritanceChain must be used within a StyleInheritanceProvider");
1808
1939
  }
@@ -1859,38 +1990,40 @@ function useActiveAndAppliedClassId(id, appliedClassesIds) {
1859
1990
  // src/components/style-sections/background-section/background-section.tsx
1860
1991
  import * as React29 from "react";
1861
1992
  import { BackgroundControl } from "@elementor/editor-controls";
1993
+ import { __ as __12 } from "@wordpress/i18n";
1862
1994
 
1863
1995
  // src/controls-registry/styles-field.tsx
1864
- import * as React28 from "react";
1996
+ import * as React27 from "react";
1865
1997
  import { ControlAdornmentsProvider, PropKeyProvider as PropKeyProvider2, PropProvider as PropProvider2 } from "@elementor/editor-controls";
1866
1998
  import { getStylesSchema as getStylesSchema2 } from "@elementor/editor-styles";
1999
+ import { isExperimentActive as isExperimentActive8 } from "@elementor/editor-v1-adapters";
1867
2000
 
1868
2001
  // src/hooks/use-styles-fields.ts
1869
- import { useMemo as useMemo3 } from "react";
2002
+ import { useMemo as useMemo4 } from "react";
1870
2003
  import {
1871
2004
  createElementStyle,
1872
2005
  deleteElementStyle,
1873
- getElementLabel as getElementLabel2
2006
+ getElementLabel as getElementLabel3
1874
2007
  } from "@elementor/editor-elements";
1875
2008
  import { getVariantByMeta } from "@elementor/editor-styles";
1876
2009
  import { ELEMENTS_STYLES_RESERVED_LABEL } from "@elementor/editor-styles-repository";
1877
- import { undoable as undoable2 } from "@elementor/editor-v1-adapters";
1878
- import { __ as __6 } from "@wordpress/i18n";
2010
+ import { undoable as undoable3 } from "@elementor/editor-v1-adapters";
2011
+ import { __ as __7 } from "@wordpress/i18n";
1879
2012
  function useStylesFields(propNames) {
1880
2013
  const { element } = useElement();
1881
- const { id, meta, provider } = useStyle();
2014
+ const { id, meta, provider, canEdit } = useStyle();
1882
2015
  const classesProp = useClassesProp();
1883
2016
  const undoableUpdateStyle = useUndoableUpdateStyle();
1884
2017
  const undoableCreateElementStyle = useUndoableCreateElementStyle();
1885
2018
  useStylesRerender();
1886
- const value = getProps({
2019
+ const values = getProps({
1887
2020
  elementId: element.id,
1888
2021
  styleId: id,
1889
2022
  provider,
1890
2023
  meta,
1891
2024
  propNames
1892
2025
  });
1893
- const setValue = (props) => {
2026
+ const setValues = (props) => {
1894
2027
  if (id === null) {
1895
2028
  undoableCreateElementStyle({
1896
2029
  elementId: element.id,
@@ -1908,7 +2041,7 @@ function useStylesFields(propNames) {
1908
2041
  props
1909
2042
  });
1910
2043
  };
1911
- return [value, setValue];
2044
+ return { values, setValues, canEdit };
1912
2045
  }
1913
2046
  function getProps({ styleId, elementId, provider, meta, propNames }) {
1914
2047
  if (!provider || !styleId) {
@@ -1924,8 +2057,8 @@ function getProps({ styleId, elementId, provider, meta, propNames }) {
1924
2057
  );
1925
2058
  }
1926
2059
  function useUndoableCreateElementStyle() {
1927
- return useMemo3(() => {
1928
- return undoable2(
2060
+ return useMemo4(() => {
2061
+ return undoable3(
1929
2062
  {
1930
2063
  do: (payload) => {
1931
2064
  return createElementStyle({
@@ -1945,15 +2078,15 @@ function useUndoableCreateElementStyle() {
1945
2078
  }
1946
2079
  },
1947
2080
  {
1948
- title: ({ elementId }) => getElementLabel2(elementId),
1949
- subtitle: __6("Style edited", "elementor")
2081
+ title: ({ elementId }) => getElementLabel3(elementId),
2082
+ subtitle: __7("Style edited", "elementor")
1950
2083
  }
1951
2084
  );
1952
2085
  }, []);
1953
2086
  }
1954
2087
  function useUndoableUpdateStyle() {
1955
- return useMemo3(() => {
1956
- return undoable2(
2088
+ return useMemo4(() => {
2089
+ return undoable3(
1957
2090
  {
1958
2091
  do: ({ elementId, styleId, provider, meta, props }) => {
1959
2092
  if (!provider.actions.updateProps) {
@@ -1978,8 +2111,8 @@ function useUndoableUpdateStyle() {
1978
2111
  }
1979
2112
  },
1980
2113
  {
1981
- title: ({ elementId }) => getElementLabel2(elementId),
1982
- subtitle: __6("Style edited", "elementor")
2114
+ title: ({ elementId }) => getElementLabel3(elementId),
2115
+ subtitle: __7("Style edited", "elementor")
1983
2116
  }
1984
2117
  );
1985
2118
  }, []);
@@ -1995,27 +2128,27 @@ function getCurrentProps(style, meta) {
1995
2128
 
1996
2129
  // src/hooks/use-styles-field.ts
1997
2130
  function useStylesField(propName) {
1998
- const [values, setValues] = useStylesFields([propName]);
2131
+ const { values, setValues, canEdit } = useStylesFields([propName]);
1999
2132
  const value = values?.[propName] ?? null;
2000
2133
  const setValue = (newValue) => {
2001
2134
  setValues({
2002
2135
  [propName]: newValue
2003
2136
  });
2004
2137
  };
2005
- return [value, setValue];
2138
+ return { value, setValue, canEdit };
2006
2139
  }
2007
2140
 
2008
2141
  // src/styles-inheritance/components/styles-inheritance-indicator.tsx
2009
- import * as React27 from "react";
2142
+ import * as React26 from "react";
2010
2143
  import { useBoundProp } from "@elementor/editor-controls";
2011
2144
  import { isEmpty as isEmpty2 } from "@elementor/editor-props";
2012
- import { ELEMENTS_BASE_STYLES_PROVIDER_KEY as ELEMENTS_BASE_STYLES_PROVIDER_KEY3, isElementsStylesProvider as isElementsStylesProvider3 } from "@elementor/editor-styles-repository";
2013
- import { isExperimentActive as isExperimentActive6 } from "@elementor/editor-v1-adapters";
2145
+ import { ELEMENTS_BASE_STYLES_PROVIDER_KEY as ELEMENTS_BASE_STYLES_PROVIDER_KEY4 } from "@elementor/editor-styles-repository";
2146
+ import { isExperimentActive as isExperimentActive7 } from "@elementor/editor-v1-adapters";
2014
2147
  import { Tooltip as Tooltip6 } from "@elementor/ui";
2015
- import { __ as __10 } from "@wordpress/i18n";
2148
+ import { __ as __11 } from "@wordpress/i18n";
2016
2149
 
2017
2150
  // src/styles-inheritance/consts.ts
2018
- import { isExperimentActive as isExperimentActive5 } from "@elementor/editor-v1-adapters";
2151
+ import { isExperimentActive as isExperimentActive6 } from "@elementor/editor-v1-adapters";
2019
2152
  var excludePropTypeTransformers = /* @__PURE__ */ new Set([
2020
2153
  "background-color-overlay",
2021
2154
  "background-image-overlay",
@@ -2028,37 +2161,25 @@ var excludePropTypeTransformers = /* @__PURE__ */ new Set([
2028
2161
  "image",
2029
2162
  "background-overlay"
2030
2163
  ]);
2031
- var isUsingIndicatorPopover = () => isExperimentActive5("e_v_3_30");
2164
+ var isUsingIndicatorPopover = () => isExperimentActive6("e_v_3_30");
2032
2165
 
2033
2166
  // src/styles-inheritance/components/styles-inheritance-infotip.tsx
2034
- import * as React26 from "react";
2035
- import { useMemo as useMemo4, useState as useState9 } from "react";
2167
+ import * as React25 from "react";
2168
+ import { useMemo as useMemo5, useState as useState9 } from "react";
2036
2169
  import { createPropsResolver } from "@elementor/editor-canvas";
2170
+ import { PopoverHeader } from "@elementor/editor-ui";
2037
2171
  import {
2038
2172
  Backdrop,
2039
2173
  Box as Box6,
2040
2174
  Card,
2041
2175
  CardContent,
2042
2176
  ClickAwayListener,
2043
- CloseButton,
2044
2177
  IconButton as IconButton3,
2045
2178
  Infotip,
2046
- Stack as Stack7,
2047
- Tooltip as Tooltip5,
2048
- Typography as Typography5
2179
+ Stack as Stack6,
2180
+ Tooltip as Tooltip5
2049
2181
  } from "@elementor/ui";
2050
- import { __ as __9 } from "@wordpress/i18n";
2051
-
2052
- // src/components/section-content.tsx
2053
- import { createContext as createContext8, useContext as useContext8, useRef as useRef3 } from "react";
2054
- import * as React21 from "react";
2055
- import { Stack as Stack6 } from "@elementor/ui";
2056
- var SectionContentRefContext = createContext8(null);
2057
- var useSectionContentRef = () => useContext8(SectionContentRefContext);
2058
- var SectionContent = ({ gap = 2, sx, children }) => {
2059
- const ref = useRef3(null);
2060
- return /* @__PURE__ */ React21.createElement(SectionContentRefContext.Provider, { value: ref }, /* @__PURE__ */ React21.createElement(Stack6, { gap, sx: { ...sx }, ref }, children));
2061
- };
2182
+ import { __ as __10 } from "@wordpress/i18n";
2062
2183
 
2063
2184
  // src/hooks/use-direction.ts
2064
2185
  import { useTheme } from "@elementor/ui";
@@ -2082,8 +2203,8 @@ function useDirection() {
2082
2203
 
2083
2204
  // src/styles-inheritance/hooks/use-normalized-inheritance-chain-items.tsx
2084
2205
  import { isValidElement, useEffect as useEffect3, useState as useState8 } from "react";
2085
- import { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from "@elementor/editor-styles-repository";
2086
- import { __ as __7 } from "@wordpress/i18n";
2206
+ import { ELEMENTS_BASE_STYLES_PROVIDER_KEY as ELEMENTS_BASE_STYLES_PROVIDER_KEY2 } from "@elementor/editor-styles-repository";
2207
+ import { __ as __8 } from "@wordpress/i18n";
2087
2208
  var MAXIMUM_ITEMS = 2;
2088
2209
  var useNormalizedInheritanceChainItems = (inheritanceChain, bind, resolve) => {
2089
2210
  const [items3, setItems] = useState8([]);
@@ -2094,7 +2215,7 @@ var useNormalizedInheritanceChainItems = (inheritanceChain, bind, resolve) => {
2094
2215
  );
2095
2216
  const validItems = normalizedItems.map((item) => ({
2096
2217
  ...item,
2097
- displayLabel: ELEMENTS_BASE_STYLES_PROVIDER_KEY !== item.provider ? item.displayLabel : __7("Base", "elementor")
2218
+ displayLabel: ELEMENTS_BASE_STYLES_PROVIDER_KEY2 !== item.provider ? item.displayLabel : __8("Base", "elementor")
2098
2219
  })).filter((item) => !item.value || item.displayLabel !== "").slice(0, MAXIMUM_ITEMS);
2099
2220
  setItems(validItems);
2100
2221
  })();
@@ -2115,8 +2236,7 @@ var normalizeInheritanceItem = async (item, index, bind, resolve) => {
2115
2236
  provider: item.provider || "",
2116
2237
  breakpoint: breakpoint ?? DEFAULT_BREAKPOINT2,
2117
2238
  displayLabel,
2118
- value: await getTransformedValue(item, bind, resolve),
2119
- chipColor: getChipColor(item)
2239
+ value: await getTransformedValue(item, bind, resolve)
2120
2240
  };
2121
2241
  };
2122
2242
  var getTransformedValue = async (item, bind, resolve) => {
@@ -2138,23 +2258,13 @@ var getTransformedValue = async (item, bind, resolve) => {
2138
2258
  return "";
2139
2259
  }
2140
2260
  };
2141
- var getChipColor = (item) => {
2142
- const { provider = "", style } = item;
2143
- if (provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY) {
2144
- return "default";
2145
- }
2146
- if (style?.label === "local") {
2147
- return "accent";
2148
- }
2149
- return "global";
2150
- };
2151
2261
 
2152
2262
  // src/styles-inheritance/styles-inheritance-transformers-registry.tsx
2153
2263
  import { createTransformersRegistry } from "@elementor/editor-canvas";
2154
2264
  var stylesInheritanceTransformersRegistry = createTransformersRegistry();
2155
2265
 
2156
2266
  // src/styles-inheritance/components/infotip/breakpoint-icon.tsx
2157
- import * as React22 from "react";
2267
+ import * as React21 from "react";
2158
2268
  import { useBreakpoints } from "@elementor/editor-responsive";
2159
2269
  import {
2160
2270
  DesktopIcon,
@@ -2185,25 +2295,25 @@ var BreakpointIcon = ({ breakpoint }) => {
2185
2295
  return null;
2186
2296
  }
2187
2297
  const breakpointLabel = breakpoints.find((breakpointItem) => breakpointItem.id === currentBreakpoint)?.label;
2188
- return /* @__PURE__ */ React22.createElement(Tooltip3, { title: breakpointLabel, placement: "top" }, /* @__PURE__ */ React22.createElement(IconComponent, { fontSize: SIZE3, sx: { mt: "2px" } }));
2298
+ return /* @__PURE__ */ React21.createElement(Tooltip3, { title: breakpointLabel, placement: "top" }, /* @__PURE__ */ React21.createElement(IconComponent, { fontSize: SIZE3, sx: { mt: "2px" } }));
2189
2299
  };
2190
2300
 
2191
2301
  // src/styles-inheritance/components/infotip/label-chip.tsx
2192
- import * as React23 from "react";
2193
- import { ELEMENTS_BASE_STYLES_PROVIDER_KEY as ELEMENTS_BASE_STYLES_PROVIDER_KEY2 } from "@elementor/editor-styles-repository";
2302
+ import * as React22 from "react";
2303
+ import { ELEMENTS_BASE_STYLES_PROVIDER_KEY as ELEMENTS_BASE_STYLES_PROVIDER_KEY3 } from "@elementor/editor-styles-repository";
2194
2304
  import { InfoCircleIcon } from "@elementor/icons";
2195
2305
  import { Chip as Chip4, Tooltip as Tooltip4 } from "@elementor/ui";
2196
- import { __ as __8 } from "@wordpress/i18n";
2306
+ import { __ as __9 } from "@wordpress/i18n";
2197
2307
  var SIZE4 = "tiny";
2198
- var LabelChip = ({ displayLabel, provider, chipColor }) => {
2199
- const isBaseStyle = provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY2;
2200
- const chipIcon = isBaseStyle ? /* @__PURE__ */ React23.createElement(Tooltip4, { title: __8("Inherited from base styles", "elementor"), placement: "top" }, /* @__PURE__ */ React23.createElement(InfoCircleIcon, { fontSize: SIZE4 })) : void 0;
2201
- return /* @__PURE__ */ React23.createElement(
2308
+ var LabelChip = ({ displayLabel, provider }) => {
2309
+ const isBaseStyle = provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY3;
2310
+ const chipIcon = isBaseStyle ? /* @__PURE__ */ React22.createElement(Tooltip4, { title: __9("Inherited from base styles", "elementor"), placement: "top" }, /* @__PURE__ */ React22.createElement(InfoCircleIcon, { fontSize: SIZE4 })) : void 0;
2311
+ return /* @__PURE__ */ React22.createElement(
2202
2312
  Chip4,
2203
2313
  {
2204
2314
  label: displayLabel,
2205
2315
  size: SIZE4,
2206
- color: chipColor,
2316
+ color: getStylesProviderColorName(provider),
2207
2317
  variant: "standard",
2208
2318
  state: "enabled",
2209
2319
  icon: chipIcon,
@@ -2224,10 +2334,10 @@ var LabelChip = ({ displayLabel, provider, chipColor }) => {
2224
2334
  };
2225
2335
 
2226
2336
  // src/styles-inheritance/components/infotip/value-component.tsx
2227
- import * as React24 from "react";
2337
+ import * as React23 from "react";
2228
2338
  import { Typography as Typography4 } from "@elementor/ui";
2229
2339
  var ValueComponent = ({ index, value }) => {
2230
- return /* @__PURE__ */ React24.createElement(
2340
+ return /* @__PURE__ */ React23.createElement(
2231
2341
  Typography4,
2232
2342
  {
2233
2343
  variant: "caption",
@@ -2245,37 +2355,36 @@ var ValueComponent = ({ index, value }) => {
2245
2355
  };
2246
2356
 
2247
2357
  // src/styles-inheritance/components/infotip/action-icons.tsx
2248
- import * as React25 from "react";
2358
+ import * as React24 from "react";
2249
2359
  import { Box as Box5 } from "@elementor/ui";
2250
- var ActionIcons = () => /* @__PURE__ */ React25.createElement(Box5, { display: "flex", gap: 0.5, alignItems: "center" });
2360
+ var ActionIcons = () => /* @__PURE__ */ React24.createElement(Box5, { display: "flex", gap: 0.5, alignItems: "center" });
2251
2361
 
2252
2362
  // src/styles-inheritance/components/styles-inheritance-infotip.tsx
2253
- var SIZE5 = "tiny";
2363
+ var SECTION_PADDING_INLINE = 32;
2254
2364
  var StylesInheritanceInfotip = ({ inheritanceChain, propType, path, label, children }) => {
2255
2365
  const [showInfotip, setShowInfotip] = useState9(false);
2256
2366
  const toggleInfotip = () => setShowInfotip((prev) => !prev);
2257
2367
  const closeInfotip = () => setShowInfotip(false);
2258
2368
  const key = path.join(".");
2259
- const sectionContentRef = useSectionContentRef();
2260
- const sectionContentWidth = sectionContentRef?.current?.offsetWidth ?? 320;
2261
- const resolve = useMemo4(() => {
2369
+ const sectionWidth = useSectionWidth() + SECTION_PADDING_INLINE;
2370
+ const resolve = useMemo5(() => {
2262
2371
  return createPropsResolver({
2263
2372
  transformers: stylesInheritanceTransformersRegistry,
2264
2373
  schema: { [key]: propType }
2265
2374
  });
2266
2375
  }, [key, propType]);
2267
2376
  const items3 = useNormalizedInheritanceChainItems(inheritanceChain, key, resolve);
2268
- const infotipContent = /* @__PURE__ */ React26.createElement(ClickAwayListener, { onClickAway: closeInfotip }, /* @__PURE__ */ React26.createElement(
2377
+ const infotipContent = /* @__PURE__ */ React25.createElement(ClickAwayListener, { onClickAway: closeInfotip }, /* @__PURE__ */ React25.createElement(
2269
2378
  Card,
2270
2379
  {
2271
2380
  elevation: 0,
2272
2381
  sx: {
2273
- width: `${sectionContentWidth}px`,
2274
- maxWidth: 500,
2382
+ width: `${sectionWidth - SECTION_PADDING_INLINE}px`,
2383
+ maxWidth: 496,
2275
2384
  overflowX: "hidden"
2276
2385
  }
2277
2386
  },
2278
- /* @__PURE__ */ React26.createElement(
2387
+ /* @__PURE__ */ React25.createElement(
2279
2388
  CardContent,
2280
2389
  {
2281
2390
  sx: {
@@ -2288,49 +2397,35 @@ var StylesInheritanceInfotip = ({ inheritanceChain, propType, path, label, child
2288
2397
  }
2289
2398
  }
2290
2399
  },
2291
- /* @__PURE__ */ React26.createElement(Stack7, { direction: "row", alignItems: "center", sx: { pl: 1.5, pr: 0.5, minHeight: 36, py: 0.5 } }, /* @__PURE__ */ React26.createElement(Typography5, { variant: "subtitle2", color: "secondary", sx: { fontSize: 12, fontWeight: "500" } }, __9("Style origin", "elementor")), /* @__PURE__ */ React26.createElement(
2292
- CloseButton,
2293
- {
2294
- slotProps: { icon: { fontSize: SIZE5 } },
2295
- sx: { ml: "auto" },
2296
- onClick: closeInfotip
2297
- }
2298
- )),
2299
- /* @__PURE__ */ React26.createElement(
2300
- Stack7,
2400
+ /* @__PURE__ */ React25.createElement(PopoverHeader, { title: __10("Style origin", "elementor"), onClose: closeInfotip }),
2401
+ /* @__PURE__ */ React25.createElement(
2402
+ Stack6,
2301
2403
  {
2302
2404
  gap: 1.5,
2303
2405
  sx: { pl: 2, pr: 1, pb: 2, overflowX: "hidden", overflowY: "auto" },
2304
2406
  role: "list"
2305
2407
  },
2306
2408
  items3.map((item, index) => {
2307
- return /* @__PURE__ */ React26.createElement(
2409
+ return /* @__PURE__ */ React25.createElement(
2308
2410
  Box6,
2309
2411
  {
2310
2412
  key: item.id,
2311
2413
  display: "flex",
2312
2414
  gap: 0.5,
2313
2415
  role: "listitem",
2314
- "aria-label": __9("Inheritance item: %s", "elementor").replace(
2416
+ "aria-label": __10("Inheritance item: %s", "elementor").replace(
2315
2417
  "%s",
2316
2418
  item.displayLabel
2317
2419
  )
2318
2420
  },
2319
- /* @__PURE__ */ React26.createElement(Box6, { display: "flex", gap: 0.5, sx: { flexWrap: "wrap", width: "100%" } }, /* @__PURE__ */ React26.createElement(BreakpointIcon, { breakpoint: item.breakpoint }), /* @__PURE__ */ React26.createElement(
2320
- LabelChip,
2321
- {
2322
- displayLabel: item.displayLabel,
2323
- provider: item.provider,
2324
- chipColor: item.chipColor
2325
- }
2326
- ), /* @__PURE__ */ React26.createElement(ValueComponent, { index, value: item.value })),
2327
- /* @__PURE__ */ React26.createElement(ActionIcons, null)
2421
+ /* @__PURE__ */ React25.createElement(Box6, { display: "flex", gap: 0.5, sx: { flexWrap: "wrap", width: "100%" } }, /* @__PURE__ */ React25.createElement(BreakpointIcon, { breakpoint: item.breakpoint }), /* @__PURE__ */ React25.createElement(LabelChip, { displayLabel: item.displayLabel, provider: item.provider }), /* @__PURE__ */ React25.createElement(ValueComponent, { index, value: item.value })),
2422
+ /* @__PURE__ */ React25.createElement(ActionIcons, null)
2328
2423
  );
2329
2424
  })
2330
2425
  )
2331
2426
  )
2332
2427
  ));
2333
- return /* @__PURE__ */ React26.createElement(TooltipOrInfotip, { showInfotip, onClose: closeInfotip, infotipContent }, /* @__PURE__ */ React26.createElement(IconButton3, { onClick: toggleInfotip, "aria-label": label, sx: { my: "-1px" } }, children));
2428
+ return /* @__PURE__ */ React25.createElement(TooltipOrInfotip, { showInfotip, onClose: closeInfotip, infotipContent }, /* @__PURE__ */ React25.createElement(IconButton3, { onClick: toggleInfotip, "aria-label": label, sx: { my: "-1px" } }, children));
2334
2429
  };
2335
2430
  function TooltipOrInfotip({
2336
2431
  children,
@@ -2341,7 +2436,7 @@ function TooltipOrInfotip({
2341
2436
  const { isSiteRtl } = useDirection();
2342
2437
  const forceInfotipAlignLeft = isSiteRtl ? 9999999 : -9999999;
2343
2438
  if (showInfotip) {
2344
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(
2439
+ return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(
2345
2440
  Backdrop,
2346
2441
  {
2347
2442
  open: showInfotip,
@@ -2351,7 +2446,7 @@ function TooltipOrInfotip({
2351
2446
  zIndex: (theme) => theme.zIndex.modal - 1
2352
2447
  }
2353
2448
  }
2354
- ), /* @__PURE__ */ React26.createElement(
2449
+ ), /* @__PURE__ */ React25.createElement(
2355
2450
  Infotip,
2356
2451
  {
2357
2452
  placement: "top",
@@ -2378,84 +2473,74 @@ function TooltipOrInfotip({
2378
2473
  children
2379
2474
  ));
2380
2475
  }
2381
- return /* @__PURE__ */ React26.createElement(Tooltip5, { title: __9("Style origin", "elementor"), placement: "top" }, children);
2476
+ return /* @__PURE__ */ React25.createElement(Tooltip5, { title: __10("Style origin", "elementor"), placement: "top" }, children);
2382
2477
  }
2383
2478
 
2384
2479
  // src/styles-inheritance/components/styles-inheritance-indicator.tsx
2385
2480
  var StylesInheritanceIndicator = () => {
2386
2481
  const { path, propType } = useBoundProp();
2387
- const { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();
2388
- const isUsingNestedProps = isExperimentActive6(EXPERIMENTAL_FEATURES.V_3_30);
2482
+ const isUsingNestedProps = isExperimentActive7(EXPERIMENTAL_FEATURES.V_3_30);
2389
2483
  const finalPath = isUsingNestedProps ? path : path.slice(0, 1);
2390
2484
  const inheritanceChain = useStylesInheritanceChain(finalPath);
2391
2485
  if (!inheritanceChain.length) {
2392
2486
  return null;
2393
2487
  }
2394
- const currentItem = inheritanceChain.find(
2395
- ({
2396
- style,
2397
- variant: {
2398
- meta: { breakpoint, state }
2399
- }
2400
- }) => style.id === currentStyleId && breakpoint === currentStyleMeta.breakpoint && state === currentStyleMeta.state
2401
- );
2488
+ return /* @__PURE__ */ React26.createElement(Indicator, { inheritanceChain, path: finalPath, propType });
2489
+ };
2490
+ var Indicator = ({ inheritanceChain, path, propType }) => {
2491
+ const { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();
2492
+ const currentItem = currentStyleId ? getValueFromInheritanceChain(inheritanceChain, currentStyleId, currentStyleMeta) : null;
2402
2493
  const hasValue = !isEmpty2(currentItem?.value);
2403
2494
  const [actualStyle] = inheritanceChain;
2404
- if (actualStyle.provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY3) {
2495
+ if (!isExperimentActive7(EXPERIMENTAL_FEATURES.V_3_31) && actualStyle.provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY4) {
2405
2496
  return null;
2406
2497
  }
2407
2498
  const isFinalValue = currentItem === actualStyle;
2408
2499
  const label = getLabel({ isFinalValue, hasValue });
2409
- const variantType = getVariant({ isFinalValue, hasValue, currentStyleProvider });
2500
+ const styleIndicatorProps = {
2501
+ getColor: isFinalValue && currentStyleProvider ? getStylesProviderThemeColor(currentStyleProvider.getKey()) : void 0,
2502
+ isOverridden: hasValue && !isFinalValue ? true : void 0
2503
+ };
2410
2504
  if (!isUsingIndicatorPopover()) {
2411
- return /* @__PURE__ */ React27.createElement(Tooltip6, { title: __10("Style origin", "elementor"), placement: "top" }, /* @__PURE__ */ React27.createElement(StyleIndicator, { variant: variantType, "aria-label": label }));
2505
+ return /* @__PURE__ */ React26.createElement(Tooltip6, { title: __11("Style origin", "elementor"), placement: "top" }, /* @__PURE__ */ React26.createElement(StyleIndicator, { ...styleIndicatorProps, "aria-label": label }));
2412
2506
  }
2413
- return /* @__PURE__ */ React27.createElement(
2507
+ return /* @__PURE__ */ React26.createElement(
2414
2508
  StylesInheritanceInfotip,
2415
2509
  {
2416
2510
  inheritanceChain,
2417
- path: finalPath,
2511
+ path,
2418
2512
  propType,
2419
2513
  label
2420
2514
  },
2421
- /* @__PURE__ */ React27.createElement(StyleIndicator, { variant: variantType })
2515
+ /* @__PURE__ */ React26.createElement(StyleIndicator, { ...styleIndicatorProps })
2422
2516
  );
2423
2517
  };
2424
2518
  var getLabel = ({ isFinalValue, hasValue }) => {
2425
2519
  if (isFinalValue) {
2426
- return __10("This is the final value", "elementor");
2427
- }
2428
- if (hasValue) {
2429
- return __10("This value is overridden by another style", "elementor");
2430
- }
2431
- return __10("This has value from another style", "elementor");
2432
- };
2433
- var getVariant = ({
2434
- isFinalValue,
2435
- hasValue,
2436
- currentStyleProvider
2437
- }) => {
2438
- if (isFinalValue) {
2439
- return isElementsStylesProvider3(currentStyleProvider?.getKey?.()) ? "local" : "global";
2520
+ return __11("This is the final value", "elementor");
2440
2521
  }
2441
2522
  if (hasValue) {
2442
- return "overridden";
2523
+ return __11("This value is overridden by another style", "elementor");
2443
2524
  }
2444
- return void 0;
2525
+ return __11("This has value from another style", "elementor");
2445
2526
  };
2446
2527
 
2447
2528
  // src/controls-registry/styles-field.tsx
2448
2529
  var StylesField = ({ bind, placeholder, children }) => {
2449
- const [value, setValue] = useStylesField(bind);
2450
- const { canEdit } = useStyle();
2530
+ const { value, setValue, canEdit } = useStylesField(bind);
2531
+ const isVersion331Active = isExperimentActive8("e_v_3_31");
2532
+ const stylesInheritanceChain = useStylesInheritanceChain([bind]);
2451
2533
  const stylesSchema = getStylesSchema2();
2452
2534
  const propType = createTopLevelOjectType({ schema: stylesSchema });
2453
2535
  const values = { [bind]: value };
2454
- const placeholderValues = { [bind]: placeholder };
2536
+ const [actualValue] = stylesInheritanceChain;
2537
+ const placeholderValues = {
2538
+ [bind]: isVersion331Active ? actualValue?.value : placeholder
2539
+ };
2455
2540
  const setValues = (newValue) => {
2456
2541
  setValue(newValue[bind]);
2457
2542
  };
2458
- return /* @__PURE__ */ React28.createElement(
2543
+ return /* @__PURE__ */ React27.createElement(
2459
2544
  ControlAdornmentsProvider,
2460
2545
  {
2461
2546
  items: [
@@ -2465,7 +2550,7 @@ var StylesField = ({ bind, placeholder, children }) => {
2465
2550
  }
2466
2551
  ]
2467
2552
  },
2468
- /* @__PURE__ */ React28.createElement(
2553
+ /* @__PURE__ */ React27.createElement(
2469
2554
  PropProvider2,
2470
2555
  {
2471
2556
  propType,
@@ -2474,18 +2559,24 @@ var StylesField = ({ bind, placeholder, children }) => {
2474
2559
  placeholder: placeholderValues,
2475
2560
  disabled: !canEdit
2476
2561
  },
2477
- /* @__PURE__ */ React28.createElement(PropKeyProvider2, { bind }, children)
2562
+ /* @__PURE__ */ React27.createElement(PropKeyProvider2, { bind }, children)
2478
2563
  )
2479
2564
  );
2480
2565
  };
2481
2566
 
2567
+ // src/components/section-content.tsx
2568
+ import * as React28 from "react";
2569
+ import { Stack as Stack7 } from "@elementor/ui";
2570
+ var SectionContent = ({ gap = 2, sx, children }) => /* @__PURE__ */ React28.createElement(Stack7, { gap, sx: { ...sx } }, children);
2571
+
2482
2572
  // src/components/style-sections/background-section/background-section.tsx
2573
+ var BACKGROUND_LABEL = __12("Background", "elementor");
2483
2574
  var BackgroundSection = () => {
2484
- return /* @__PURE__ */ React29.createElement(SectionContent, null, /* @__PURE__ */ React29.createElement(StylesField, { bind: "background" }, /* @__PURE__ */ React29.createElement(BackgroundControl, null)));
2575
+ return /* @__PURE__ */ React29.createElement(SectionContent, null, /* @__PURE__ */ React29.createElement(StylesField, { bind: "background", propDisplayName: BACKGROUND_LABEL }, /* @__PURE__ */ React29.createElement(BackgroundControl, null)));
2485
2576
  };
2486
2577
 
2487
2578
  // src/components/style-sections/border-section/border-section.tsx
2488
- import * as React39 from "react";
2579
+ import * as React40 from "react";
2489
2580
 
2490
2581
  // src/components/panel-divider.tsx
2491
2582
  import * as React30 from "react";
@@ -2493,15 +2584,15 @@ import { Divider as Divider4 } from "@elementor/ui";
2493
2584
  var PanelDivider = () => /* @__PURE__ */ React30.createElement(Divider4, { sx: { my: 0.5 } });
2494
2585
 
2495
2586
  // src/components/style-sections/border-section/border-field.tsx
2496
- import * as React36 from "react";
2587
+ import * as React37 from "react";
2497
2588
  import { ControlFormLabel as ControlFormLabel3 } from "@elementor/editor-controls";
2498
- import { __ as __14 } from "@wordpress/i18n";
2589
+ import { __ as __16 } from "@wordpress/i18n";
2499
2590
 
2500
2591
  // src/components/add-or-remove-content.tsx
2501
2592
  import * as React31 from "react";
2502
2593
  import { MinusIcon, PlusIcon } from "@elementor/icons";
2503
2594
  import { Collapse as Collapse3, IconButton as IconButton4, Stack as Stack8 } from "@elementor/ui";
2504
- var SIZE6 = "tiny";
2595
+ var SIZE5 = "tiny";
2505
2596
  var AddOrRemoveContent = ({
2506
2597
  isAdded,
2507
2598
  onAdd,
@@ -2521,15 +2612,18 @@ var AddOrRemoveContent = ({
2521
2612
  }
2522
2613
  },
2523
2614
  renderLabel(),
2524
- isAdded ? /* @__PURE__ */ React31.createElement(IconButton4, { size: SIZE6, onClick: onRemove, "aria-label": "Remove", disabled }, /* @__PURE__ */ React31.createElement(MinusIcon, { fontSize: SIZE6 })) : /* @__PURE__ */ React31.createElement(IconButton4, { size: SIZE6, onClick: onAdd, "aria-label": "Add", disabled }, /* @__PURE__ */ React31.createElement(PlusIcon, { fontSize: SIZE6 }))
2615
+ isAdded ? /* @__PURE__ */ React31.createElement(IconButton4, { size: SIZE5, onClick: onRemove, "aria-label": "Remove", disabled }, /* @__PURE__ */ React31.createElement(MinusIcon, { fontSize: SIZE5 })) : /* @__PURE__ */ React31.createElement(IconButton4, { size: SIZE5, onClick: onAdd, "aria-label": "Add", disabled }, /* @__PURE__ */ React31.createElement(PlusIcon, { fontSize: SIZE5 }))
2525
2616
  ), /* @__PURE__ */ React31.createElement(Collapse3, { in: isAdded, unmountOnExit: true }, /* @__PURE__ */ React31.createElement(SectionContent, null, children)));
2526
2617
  };
2527
2618
 
2528
2619
  // src/components/style-sections/border-section/border-color-field.tsx
2529
- import * as React33 from "react";
2620
+ import * as React34 from "react";
2530
2621
  import { ColorControl } from "@elementor/editor-controls";
2531
- import { Grid } from "@elementor/ui";
2532
- import { __ as __11 } from "@wordpress/i18n";
2622
+ import { __ as __13 } from "@wordpress/i18n";
2623
+
2624
+ // src/components/styles-field-layout.tsx
2625
+ import * as React33 from "react";
2626
+ import { Grid, Stack as Stack10 } from "@elementor/ui";
2533
2627
 
2534
2628
  // src/components/control-label.tsx
2535
2629
  import * as React32 from "react";
@@ -2539,71 +2633,96 @@ var ControlLabel = ({ children }) => {
2539
2633
  return /* @__PURE__ */ React32.createElement(Stack9, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React32.createElement(ControlFormLabel2, null, children), /* @__PURE__ */ React32.createElement(ControlAdornments, null));
2540
2634
  };
2541
2635
 
2636
+ // src/components/styles-field-layout.tsx
2637
+ var StylesFieldLayout = React33.forwardRef((props, ref) => {
2638
+ const { direction = "row", children, label } = props;
2639
+ const LayoutComponent = direction === "row" ? Row : Column;
2640
+ return /* @__PURE__ */ React33.createElement(LayoutComponent, { label, ref, children });
2641
+ });
2642
+ var Row = React33.forwardRef(
2643
+ ({ label, children }, ref) => {
2644
+ return /* @__PURE__ */ React33.createElement(Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref }, /* @__PURE__ */ React33.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel, null, label)), /* @__PURE__ */ React33.createElement(
2645
+ Grid,
2646
+ {
2647
+ item: true,
2648
+ xs: 6,
2649
+ sx: (theme) => ({
2650
+ width: `calc(50% - ${theme.spacing(2)})`
2651
+ })
2652
+ },
2653
+ children
2654
+ ));
2655
+ }
2656
+ );
2657
+ var Column = React33.forwardRef(
2658
+ ({ label, children }, ref) => {
2659
+ return /* @__PURE__ */ React33.createElement(Stack10, { gap: 0.75, ref }, /* @__PURE__ */ React33.createElement(ControlLabel, null, label), children);
2660
+ }
2661
+ );
2662
+
2542
2663
  // src/components/style-sections/border-section/border-color-field.tsx
2543
- var BorderColorField = () => {
2544
- return /* @__PURE__ */ React33.createElement(StylesField, { bind: "border-color" }, /* @__PURE__ */ React33.createElement(Grid, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React33.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ControlLabel, null, __11("Border color", "elementor"))), /* @__PURE__ */ React33.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React33.createElement(ColorControl, null))));
2545
- };
2664
+ var BORDER_COLOR_LABEL = __13("Border color", "elementor");
2665
+ var BorderColorField = () => /* @__PURE__ */ React34.createElement(StylesField, { bind: "border-color", propDisplayName: BORDER_COLOR_LABEL }, /* @__PURE__ */ React34.createElement(StylesFieldLayout, { label: BORDER_COLOR_LABEL }, /* @__PURE__ */ React34.createElement(ColorControl, null)));
2546
2666
 
2547
2667
  // src/components/style-sections/border-section/border-style-field.tsx
2548
- import * as React34 from "react";
2668
+ import * as React35 from "react";
2549
2669
  import { SelectControl as SelectControl2 } from "@elementor/editor-controls";
2550
- import { Grid as Grid2 } from "@elementor/ui";
2551
- import { __ as __12 } from "@wordpress/i18n";
2670
+ import { __ as __14 } from "@wordpress/i18n";
2671
+ var BORDER_TYPE_LABEL = __14("Border type", "elementor");
2552
2672
  var borderStyles = [
2553
- { value: "none", label: __12("None", "elementor") },
2554
- { value: "solid", label: __12("Solid", "elementor") },
2555
- { value: "dashed", label: __12("Dashed", "elementor") },
2556
- { value: "dotted", label: __12("Dotted", "elementor") },
2557
- { value: "double", label: __12("Double", "elementor") },
2558
- { value: "groove", label: __12("Groove", "elementor") },
2559
- { value: "ridge", label: __12("Ridge", "elementor") },
2560
- { value: "inset", label: __12("Inset", "elementor") },
2561
- { value: "outset", label: __12("Outset", "elementor") }
2673
+ { value: "none", label: __14("None", "elementor") },
2674
+ { value: "solid", label: __14("Solid", "elementor") },
2675
+ { value: "dashed", label: __14("Dashed", "elementor") },
2676
+ { value: "dotted", label: __14("Dotted", "elementor") },
2677
+ { value: "double", label: __14("Double", "elementor") },
2678
+ { value: "groove", label: __14("Groove", "elementor") },
2679
+ { value: "ridge", label: __14("Ridge", "elementor") },
2680
+ { value: "inset", label: __14("Inset", "elementor") },
2681
+ { value: "outset", label: __14("Outset", "elementor") }
2562
2682
  ];
2563
- var BorderStyleField = () => {
2564
- return /* @__PURE__ */ React34.createElement(StylesField, { bind: "border-style" }, /* @__PURE__ */ React34.createElement(Grid2, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React34.createElement(Grid2, { item: true, xs: 6 }, /* @__PURE__ */ React34.createElement(ControlLabel, null, __12("Border type", "elementor"))), /* @__PURE__ */ React34.createElement(Grid2, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React34.createElement(SelectControl2, { options: borderStyles }))));
2565
- };
2683
+ var BorderStyleField = () => /* @__PURE__ */ React35.createElement(StylesField, { bind: "border-style", propDisplayName: BORDER_TYPE_LABEL }, /* @__PURE__ */ React35.createElement(StylesFieldLayout, { label: BORDER_TYPE_LABEL }, /* @__PURE__ */ React35.createElement(SelectControl2, { options: borderStyles })));
2566
2684
 
2567
2685
  // src/components/style-sections/border-section/border-width-field.tsx
2568
- import * as React35 from "react";
2686
+ import * as React36 from "react";
2569
2687
  import { EqualUnequalSizesControl } from "@elementor/editor-controls";
2570
2688
  import { borderWidthPropTypeUtil } from "@elementor/editor-props";
2571
2689
  import { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from "@elementor/icons";
2572
2690
  import { withDirection } from "@elementor/ui";
2573
- import { __ as __13 } from "@wordpress/i18n";
2691
+ import { __ as __15 } from "@wordpress/i18n";
2692
+ var BORDER_WIDTH_LABEL = __15("Border width", "elementor");
2574
2693
  var InlineStartIcon = withDirection(SideRightIcon);
2575
2694
  var InlineEndIcon = withDirection(SideLeftIcon);
2576
2695
  var getEdges = (isSiteRtl) => [
2577
2696
  {
2578
- label: __13("Top", "elementor"),
2579
- icon: /* @__PURE__ */ React35.createElement(SideTopIcon, { fontSize: "tiny" }),
2697
+ label: __15("Top", "elementor"),
2698
+ icon: /* @__PURE__ */ React36.createElement(SideTopIcon, { fontSize: "tiny" }),
2580
2699
  bind: "block-start"
2581
2700
  },
2582
2701
  {
2583
- label: isSiteRtl ? __13("Left", "elementor") : __13("Right", "elementor"),
2584
- icon: /* @__PURE__ */ React35.createElement(InlineStartIcon, { fontSize: "tiny" }),
2702
+ label: isSiteRtl ? __15("Left", "elementor") : __15("Right", "elementor"),
2703
+ icon: /* @__PURE__ */ React36.createElement(InlineStartIcon, { fontSize: "tiny" }),
2585
2704
  bind: "inline-end"
2586
2705
  },
2587
2706
  {
2588
- label: __13("Bottom", "elementor"),
2589
- icon: /* @__PURE__ */ React35.createElement(SideBottomIcon, { fontSize: "tiny" }),
2707
+ label: __15("Bottom", "elementor"),
2708
+ icon: /* @__PURE__ */ React36.createElement(SideBottomIcon, { fontSize: "tiny" }),
2590
2709
  bind: "block-end"
2591
2710
  },
2592
2711
  {
2593
- label: isSiteRtl ? __13("Right", "elementor") : __13("Left", "elementor"),
2594
- icon: /* @__PURE__ */ React35.createElement(InlineEndIcon, { fontSize: "tiny" }),
2712
+ label: isSiteRtl ? __15("Right", "elementor") : __15("Left", "elementor"),
2713
+ icon: /* @__PURE__ */ React36.createElement(InlineEndIcon, { fontSize: "tiny" }),
2595
2714
  bind: "inline-start"
2596
2715
  }
2597
2716
  ];
2598
2717
  var BorderWidthField = () => {
2599
2718
  const { isSiteRtl } = useDirection();
2600
- return /* @__PURE__ */ React35.createElement(StylesField, { bind: "border-width" }, /* @__PURE__ */ React35.createElement(
2719
+ return /* @__PURE__ */ React36.createElement(StylesField, { bind: "border-width", propDisplayName: BORDER_WIDTH_LABEL }, /* @__PURE__ */ React36.createElement(
2601
2720
  EqualUnequalSizesControl,
2602
2721
  {
2603
2722
  items: getEdges(isSiteRtl),
2604
- label: __13("Border width", "elementor"),
2605
- icon: /* @__PURE__ */ React35.createElement(SideAllIcon, { fontSize: "tiny" }),
2606
- tooltipLabel: __13("Adjust borders", "elementor"),
2723
+ label: BORDER_WIDTH_LABEL,
2724
+ icon: /* @__PURE__ */ React36.createElement(SideAllIcon, { fontSize: "tiny" }),
2725
+ tooltipLabel: __15("Adjust borders", "elementor"),
2607
2726
  multiSizePropTypeUtil: borderWidthPropTypeUtil
2608
2727
  }
2609
2728
  ));
@@ -2616,36 +2735,35 @@ var initialBorder = {
2616
2735
  "border-style": { $$type: "string", value: "solid" }
2617
2736
  };
2618
2737
  var BorderField = () => {
2619
- const { canEdit } = useStyle();
2620
- const [border, setBorder] = useStylesFields(Object.keys(initialBorder));
2738
+ const { values, setValues, canEdit } = useStylesFields(Object.keys(initialBorder));
2621
2739
  const addBorder = () => {
2622
- setBorder(initialBorder);
2740
+ setValues(initialBorder);
2623
2741
  };
2624
2742
  const removeBorder = () => {
2625
- setBorder({
2743
+ setValues({
2626
2744
  "border-width": null,
2627
2745
  "border-color": null,
2628
2746
  "border-style": null
2629
2747
  });
2630
2748
  };
2631
- const hasBorder = Object.values(border ?? {}).some(Boolean);
2632
- return /* @__PURE__ */ React36.createElement(
2749
+ const hasBorder = Object.values(values ?? {}).some(Boolean);
2750
+ return /* @__PURE__ */ React37.createElement(
2633
2751
  AddOrRemoveContent,
2634
2752
  {
2635
2753
  isAdded: hasBorder,
2636
2754
  onAdd: addBorder,
2637
2755
  onRemove: removeBorder,
2638
2756
  disabled: !canEdit,
2639
- renderLabel: () => /* @__PURE__ */ React36.createElement(ControlFormLabel3, null, __14("Border", "elementor"))
2757
+ renderLabel: () => /* @__PURE__ */ React37.createElement(ControlFormLabel3, null, __16("Border", "elementor"))
2640
2758
  },
2641
- /* @__PURE__ */ React36.createElement(BorderWidthField, null),
2642
- /* @__PURE__ */ React36.createElement(BorderColorField, null),
2643
- /* @__PURE__ */ React36.createElement(BorderStyleField, null)
2759
+ /* @__PURE__ */ React37.createElement(BorderWidthField, null),
2760
+ /* @__PURE__ */ React37.createElement(BorderColorField, null),
2761
+ /* @__PURE__ */ React37.createElement(BorderStyleField, null)
2644
2762
  );
2645
2763
  };
2646
2764
 
2647
2765
  // src/components/style-sections/border-section/border-radius-field.tsx
2648
- import * as React38 from "react";
2766
+ import * as React39 from "react";
2649
2767
  import { EqualUnequalSizesControl as EqualUnequalSizesControl2 } from "@elementor/editor-controls";
2650
2768
  import { borderRadiusPropTypeUtil } from "@elementor/editor-props";
2651
2769
  import {
@@ -2656,76 +2774,95 @@ import {
2656
2774
  RadiusTopRightIcon
2657
2775
  } from "@elementor/icons";
2658
2776
  import { withDirection as withDirection2 } from "@elementor/ui";
2659
- import { __ as __15 } from "@wordpress/i18n";
2777
+ import { __ as __17 } from "@wordpress/i18n";
2660
2778
 
2661
2779
  // src/styles-inheritance/components/ui-providers.tsx
2662
- import * as React37 from "react";
2780
+ import * as React38 from "react";
2663
2781
  import { DirectionProvider, ThemeProvider } from "@elementor/ui";
2664
2782
  var UiProviders = ({ children }) => {
2665
2783
  const { isSiteRtl } = useDirection();
2666
- return /* @__PURE__ */ React37.createElement(DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React37.createElement(ThemeProvider, null, children));
2784
+ return /* @__PURE__ */ React38.createElement(DirectionProvider, { rtl: isSiteRtl }, /* @__PURE__ */ React38.createElement(ThemeProvider, null, children));
2667
2785
  };
2668
2786
 
2669
2787
  // src/components/style-sections/border-section/border-radius-field.tsx
2788
+ var BORDER_RADIUS_LABEL = __17("Border radius", "elementor");
2670
2789
  var StartStartIcon = withDirection2(RadiusTopLeftIcon);
2671
2790
  var StartEndIcon = withDirection2(RadiusTopRightIcon);
2672
2791
  var EndStartIcon = withDirection2(RadiusBottomLeftIcon);
2673
2792
  var EndEndIcon = withDirection2(RadiusBottomRightIcon);
2674
- var getStartStartLabel = (isSiteRtl) => isSiteRtl ? __15("Top right", "elementor") : __15("Top left", "elementor");
2675
- var getStartEndLabel = (isSiteRtl) => isSiteRtl ? __15("Top left", "elementor") : __15("Top right", "elementor");
2676
- var getEndStartLabel = (isSiteRtl) => isSiteRtl ? __15("Bottom right", "elementor") : __15("Bottom left", "elementor");
2677
- var getEndEndLabel = (isSiteRtl) => isSiteRtl ? __15("Bottom left", "elementor") : __15("Bottom right", "elementor");
2793
+ var getStartStartLabel = (isSiteRtl) => isSiteRtl ? __17("Top right", "elementor") : __17("Top left", "elementor");
2794
+ var getStartEndLabel = (isSiteRtl) => isSiteRtl ? __17("Top left", "elementor") : __17("Top right", "elementor");
2795
+ var getEndStartLabel = (isSiteRtl) => isSiteRtl ? __17("Bottom right", "elementor") : __17("Bottom left", "elementor");
2796
+ var getEndEndLabel = (isSiteRtl) => isSiteRtl ? __17("Bottom left", "elementor") : __17("Bottom right", "elementor");
2678
2797
  var getCorners = (isSiteRtl) => [
2679
2798
  {
2680
2799
  label: getStartStartLabel(isSiteRtl),
2681
- icon: /* @__PURE__ */ React38.createElement(StartStartIcon, { fontSize: "tiny" }),
2800
+ icon: /* @__PURE__ */ React39.createElement(StartStartIcon, { fontSize: "tiny" }),
2682
2801
  bind: "start-start"
2683
2802
  },
2684
2803
  {
2685
2804
  label: getStartEndLabel(isSiteRtl),
2686
- icon: /* @__PURE__ */ React38.createElement(StartEndIcon, { fontSize: "tiny" }),
2805
+ icon: /* @__PURE__ */ React39.createElement(StartEndIcon, { fontSize: "tiny" }),
2687
2806
  bind: "start-end"
2688
2807
  },
2689
2808
  {
2690
2809
  label: getEndStartLabel(isSiteRtl),
2691
- icon: /* @__PURE__ */ React38.createElement(EndStartIcon, { fontSize: "tiny" }),
2810
+ icon: /* @__PURE__ */ React39.createElement(EndStartIcon, { fontSize: "tiny" }),
2692
2811
  bind: "end-start"
2693
2812
  },
2694
2813
  {
2695
2814
  label: getEndEndLabel(isSiteRtl),
2696
- icon: /* @__PURE__ */ React38.createElement(EndEndIcon, { fontSize: "tiny" }),
2815
+ icon: /* @__PURE__ */ React39.createElement(EndEndIcon, { fontSize: "tiny" }),
2697
2816
  bind: "end-end"
2698
2817
  }
2699
2818
  ];
2700
2819
  var BorderRadiusField = () => {
2701
2820
  const { isSiteRtl } = useDirection();
2702
- return /* @__PURE__ */ React38.createElement(UiProviders, null, /* @__PURE__ */ React38.createElement(StylesField, { bind: "border-radius" }, /* @__PURE__ */ React38.createElement(
2821
+ return /* @__PURE__ */ React39.createElement(UiProviders, null, /* @__PURE__ */ React39.createElement(StylesField, { bind: "border-radius", propDisplayName: BORDER_RADIUS_LABEL }, /* @__PURE__ */ React39.createElement(
2703
2822
  EqualUnequalSizesControl2,
2704
2823
  {
2705
2824
  items: getCorners(isSiteRtl),
2706
- label: __15("Border radius", "elementor"),
2707
- icon: /* @__PURE__ */ React38.createElement(BorderCornersIcon, { fontSize: "tiny" }),
2708
- tooltipLabel: __15("Adjust corners", "elementor"),
2825
+ label: BORDER_RADIUS_LABEL,
2826
+ icon: /* @__PURE__ */ React39.createElement(BorderCornersIcon, { fontSize: "tiny" }),
2827
+ tooltipLabel: __17("Adjust corners", "elementor"),
2709
2828
  multiSizePropTypeUtil: borderRadiusPropTypeUtil
2710
2829
  }
2711
2830
  )));
2712
2831
  };
2713
2832
 
2714
2833
  // src/components/style-sections/border-section/border-section.tsx
2715
- var BorderSection = () => /* @__PURE__ */ React39.createElement(SectionContent, null, /* @__PURE__ */ React39.createElement(BorderRadiusField, null), /* @__PURE__ */ React39.createElement(PanelDivider, null), /* @__PURE__ */ React39.createElement(BorderField, null));
2834
+ var BorderSection = () => /* @__PURE__ */ React40.createElement(SectionContent, null, /* @__PURE__ */ React40.createElement(BorderRadiusField, null), /* @__PURE__ */ React40.createElement(PanelDivider, null), /* @__PURE__ */ React40.createElement(BorderField, null));
2716
2835
 
2717
2836
  // src/components/style-sections/effects-section/effects-section.tsx
2718
- import * as React40 from "react";
2719
- import { BoxShadowRepeaterControl } from "@elementor/editor-controls";
2837
+ import * as React42 from "react";
2838
+ import { BoxShadowRepeaterControl, FilterRepeaterControl } from "@elementor/editor-controls";
2839
+ import { isExperimentActive as isExperimentActive9 } from "@elementor/editor-v1-adapters";
2840
+ import { __ as __19 } from "@wordpress/i18n";
2841
+
2842
+ // src/components/style-sections/layout-section/opacity-control-field.tsx
2843
+ import * as React41 from "react";
2844
+ import { useRef as useRef4 } from "react";
2845
+ import { SizeControl as SizeControl2 } from "@elementor/editor-controls";
2846
+ import { __ as __18 } from "@wordpress/i18n";
2847
+ var OPACITY_LABEL = __18("Opacity", "elementor");
2848
+ var OpacityControlField = () => {
2849
+ const rowRef = useRef4(null);
2850
+ return /* @__PURE__ */ React41.createElement(StylesField, { bind: "opacity", propDisplayName: OPACITY_LABEL }, /* @__PURE__ */ React41.createElement(StylesFieldLayout, { ref: rowRef, label: OPACITY_LABEL }, /* @__PURE__ */ React41.createElement(SizeControl2, { units: ["%"], anchorRef: rowRef, defaultUnit: "%" })));
2851
+ };
2852
+
2853
+ // src/components/style-sections/effects-section/effects-section.tsx
2854
+ var BOX_SHADOW_LABEL = __19("Box shadow", "elementor");
2855
+ var FILTER_LABEL = __19("Filter", "elementor");
2720
2856
  var EffectsSection = () => {
2721
- return /* @__PURE__ */ React40.createElement(SectionContent, null, /* @__PURE__ */ React40.createElement(StylesField, { bind: "box-shadow" }, /* @__PURE__ */ React40.createElement(BoxShadowRepeaterControl, null)));
2857
+ const isVersion331Active = isExperimentActive9(EXPERIMENTAL_FEATURES.V_3_31);
2858
+ return /* @__PURE__ */ React42.createElement(SectionContent, null, /* @__PURE__ */ React42.createElement(OpacityControlField, null), /* @__PURE__ */ React42.createElement(PanelDivider, null), /* @__PURE__ */ React42.createElement(StylesField, { bind: "box-shadow", propDisplayName: BOX_SHADOW_LABEL }, /* @__PURE__ */ React42.createElement(BoxShadowRepeaterControl, null)), isVersion331Active && /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(PanelDivider, null), /* @__PURE__ */ React42.createElement(StylesField, { bind: "filter", propDisplayName: FILTER_LABEL }, /* @__PURE__ */ React42.createElement(FilterRepeaterControl, null))));
2722
2859
  };
2723
2860
 
2724
2861
  // src/components/style-sections/layout-section/layout-section.tsx
2725
- import * as React52 from "react";
2862
+ import * as React54 from "react";
2726
2863
  import { ControlFormLabel as ControlFormLabel4 } from "@elementor/editor-controls";
2727
2864
  import { useParentElement } from "@elementor/editor-elements";
2728
- import { __ as __26 } from "@wordpress/i18n";
2865
+ import { __ as __30 } from "@wordpress/i18n";
2729
2866
 
2730
2867
  // src/hooks/use-computed-style.ts
2731
2868
  import { __privateUseListenTo as useListenTo, commandEndEvent, windowEvent } from "@elementor/editor-v1-adapters";
@@ -2753,7 +2890,7 @@ function useComputedStyle(elementId) {
2753
2890
  }
2754
2891
 
2755
2892
  // src/components/style-sections/layout-section/align-content-field.tsx
2756
- import * as React42 from "react";
2893
+ import * as React44 from "react";
2757
2894
  import { ToggleControl } from "@elementor/editor-controls";
2758
2895
  import {
2759
2896
  JustifyBottomIcon,
@@ -2763,12 +2900,12 @@ import {
2763
2900
  JustifySpaceBetweenVerticalIcon as BetweenIcon,
2764
2901
  JustifyTopIcon
2765
2902
  } from "@elementor/icons";
2766
- import { Stack as Stack10, withDirection as withDirection3 } from "@elementor/ui";
2767
- import { __ as __16 } from "@wordpress/i18n";
2903
+ import { withDirection as withDirection3 } from "@elementor/ui";
2904
+ import { __ as __20 } from "@wordpress/i18n";
2768
2905
 
2769
2906
  // src/components/style-sections/layout-section/utils/rotated-icon.tsx
2770
- import * as React41 from "react";
2771
- import { useRef as useRef4 } from "react";
2907
+ import * as React43 from "react";
2908
+ import { useRef as useRef5 } from "react";
2772
2909
  import { useTheme as useTheme2 } from "@elementor/ui";
2773
2910
  var CLOCKWISE_ANGLES = {
2774
2911
  row: 0,
@@ -2789,12 +2926,12 @@ var RotatedIcon = ({
2789
2926
  offset = 0,
2790
2927
  disableRotationForReversed = false
2791
2928
  }) => {
2792
- const rotate = useRef4(useGetTargetAngle(isClockwise, offset, disableRotationForReversed));
2929
+ const rotate = useRef5(useGetTargetAngle(isClockwise, offset, disableRotationForReversed));
2793
2930
  rotate.current = useGetTargetAngle(isClockwise, offset, disableRotationForReversed, rotate);
2794
- return /* @__PURE__ */ React41.createElement(Icon, { fontSize: size, sx: { transition: ".3s", rotate: `${rotate.current}deg` } });
2931
+ return /* @__PURE__ */ React43.createElement(Icon, { fontSize: size, sx: { transition: ".3s", rotate: `${rotate.current}deg` } });
2795
2932
  };
2796
2933
  var useGetTargetAngle = (isClockwise, offset, disableRotationForReversed, existingRef) => {
2797
- const [direction] = useStylesField("flex-direction");
2934
+ const { value: direction } = useStylesField("flex-direction");
2798
2935
  const isRtl = "rtl" === useTheme2().direction;
2799
2936
  const rotationMultiplier = isRtl ? -1 : 1;
2800
2937
  const angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;
@@ -2810,6 +2947,7 @@ var useGetTargetAngle = (isClockwise, offset, disableRotationForReversed, existi
2810
2947
  };
2811
2948
 
2812
2949
  // src/components/style-sections/layout-section/align-content-field.tsx
2950
+ var ALIGN_CONTENT_LABEL = __20("Align content", "elementor");
2813
2951
  var StartIcon = withDirection3(JustifyTopIcon);
2814
2952
  var EndIcon = withDirection3(JustifyBottomIcon);
2815
2953
  var iconProps = {
@@ -2820,47 +2958,45 @@ var iconProps = {
2820
2958
  var options = [
2821
2959
  {
2822
2960
  value: "start",
2823
- label: __16("Start", "elementor"),
2824
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(RotatedIcon, { icon: StartIcon, size, ...iconProps }),
2961
+ label: __20("Start", "elementor"),
2962
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(RotatedIcon, { icon: StartIcon, size, ...iconProps }),
2825
2963
  showTooltip: true
2826
2964
  },
2827
2965
  {
2828
2966
  value: "center",
2829
- label: __16("Center", "elementor"),
2830
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(RotatedIcon, { icon: CenterIcon, size, ...iconProps }),
2967
+ label: __20("Center", "elementor"),
2968
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(RotatedIcon, { icon: CenterIcon, size, ...iconProps }),
2831
2969
  showTooltip: true
2832
2970
  },
2833
2971
  {
2834
2972
  value: "end",
2835
- label: __16("End", "elementor"),
2836
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(RotatedIcon, { icon: EndIcon, size, ...iconProps }),
2973
+ label: __20("End", "elementor"),
2974
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(RotatedIcon, { icon: EndIcon, size, ...iconProps }),
2837
2975
  showTooltip: true
2838
2976
  },
2839
2977
  {
2840
2978
  value: "space-between",
2841
- label: __16("Space between", "elementor"),
2842
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(RotatedIcon, { icon: BetweenIcon, size, ...iconProps }),
2979
+ label: __20("Space between", "elementor"),
2980
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(RotatedIcon, { icon: BetweenIcon, size, ...iconProps }),
2843
2981
  showTooltip: true
2844
2982
  },
2845
2983
  {
2846
2984
  value: "space-around",
2847
- label: __16("Space around", "elementor"),
2848
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(RotatedIcon, { icon: AroundIcon, size, ...iconProps }),
2985
+ label: __20("Space around", "elementor"),
2986
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(RotatedIcon, { icon: AroundIcon, size, ...iconProps }),
2849
2987
  showTooltip: true
2850
2988
  },
2851
2989
  {
2852
2990
  value: "space-evenly",
2853
- label: __16("Space evenly", "elementor"),
2854
- renderContent: ({ size }) => /* @__PURE__ */ React42.createElement(RotatedIcon, { icon: EvenlyIcon, size, ...iconProps }),
2991
+ label: __20("Space evenly", "elementor"),
2992
+ renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(RotatedIcon, { icon: EvenlyIcon, size, ...iconProps }),
2855
2993
  showTooltip: true
2856
2994
  }
2857
2995
  ];
2858
- var AlignContentField = () => {
2859
- return /* @__PURE__ */ React42.createElement(UiProviders, null, /* @__PURE__ */ React42.createElement(StylesField, { bind: "align-content" }, /* @__PURE__ */ React42.createElement(Stack10, { gap: 1 }, /* @__PURE__ */ React42.createElement(ControlLabel, null, __16("Align content", "elementor")), /* @__PURE__ */ React42.createElement(ToggleControl, { options, fullWidth: true }))));
2860
- };
2996
+ var AlignContentField = () => /* @__PURE__ */ React44.createElement(StylesField, { bind: "align-content", propDisplayName: ALIGN_CONTENT_LABEL }, /* @__PURE__ */ React44.createElement(UiProviders, null, /* @__PURE__ */ React44.createElement(StylesFieldLayout, { label: ALIGN_CONTENT_LABEL, direction: "column" }, /* @__PURE__ */ React44.createElement(ToggleControl, { options, fullWidth: true }))));
2861
2997
 
2862
2998
  // src/components/style-sections/layout-section/align-items-field.tsx
2863
- import * as React43 from "react";
2999
+ import * as React45 from "react";
2864
3000
  import { ToggleControl as ToggleControl2 } from "@elementor/editor-controls";
2865
3001
  import {
2866
3002
  LayoutAlignCenterIcon as CenterIcon2,
@@ -2868,8 +3004,9 @@ import {
2868
3004
  LayoutAlignRightIcon,
2869
3005
  LayoutDistributeVerticalIcon as JustifyIcon
2870
3006
  } from "@elementor/icons";
2871
- import { Grid as Grid3, withDirection as withDirection4 } from "@elementor/ui";
2872
- import { __ as __17 } from "@wordpress/i18n";
3007
+ import { withDirection as withDirection4 } from "@elementor/ui";
3008
+ import { __ as __21 } from "@wordpress/i18n";
3009
+ var ALIGN_ITEMS_LABEL = __21("Align items", "elementor");
2873
3010
  var StartIcon2 = withDirection4(LayoutAlignLeftIcon);
2874
3011
  var EndIcon2 = withDirection4(LayoutAlignRightIcon);
2875
3012
  var iconProps2 = {
@@ -2879,35 +3016,35 @@ var iconProps2 = {
2879
3016
  var options2 = [
2880
3017
  {
2881
3018
  value: "start",
2882
- label: __17("Start", "elementor"),
2883
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(RotatedIcon, { icon: StartIcon2, size, ...iconProps2 }),
3019
+ label: __21("Start", "elementor"),
3020
+ renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(RotatedIcon, { icon: StartIcon2, size, ...iconProps2 }),
2884
3021
  showTooltip: true
2885
3022
  },
2886
3023
  {
2887
3024
  value: "center",
2888
- label: __17("Center", "elementor"),
2889
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(RotatedIcon, { icon: CenterIcon2, size, ...iconProps2 }),
3025
+ label: __21("Center", "elementor"),
3026
+ renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(RotatedIcon, { icon: CenterIcon2, size, ...iconProps2 }),
2890
3027
  showTooltip: true
2891
3028
  },
2892
3029
  {
2893
3030
  value: "end",
2894
- label: __17("End", "elementor"),
2895
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(RotatedIcon, { icon: EndIcon2, size, ...iconProps2 }),
3031
+ label: __21("End", "elementor"),
3032
+ renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(RotatedIcon, { icon: EndIcon2, size, ...iconProps2 }),
2896
3033
  showTooltip: true
2897
3034
  },
2898
3035
  {
2899
3036
  value: "stretch",
2900
- label: __17("Stretch", "elementor"),
2901
- renderContent: ({ size }) => /* @__PURE__ */ React43.createElement(RotatedIcon, { icon: JustifyIcon, size, ...iconProps2 }),
3037
+ label: __21("Stretch", "elementor"),
3038
+ renderContent: ({ size }) => /* @__PURE__ */ React45.createElement(RotatedIcon, { icon: JustifyIcon, size, ...iconProps2 }),
2902
3039
  showTooltip: true
2903
3040
  }
2904
3041
  ];
2905
3042
  var AlignItemsField = () => {
2906
- return /* @__PURE__ */ React43.createElement(UiProviders, null, /* @__PURE__ */ React43.createElement(StylesField, { bind: "align-items" }, /* @__PURE__ */ React43.createElement(Grid3, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React43.createElement(Grid3, { item: true, xs: 6 }, /* @__PURE__ */ React43.createElement(ControlLabel, null, __17("Align items", "elementor"))), /* @__PURE__ */ React43.createElement(Grid3, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React43.createElement(ToggleControl2, { options: options2 })))));
3043
+ return /* @__PURE__ */ React45.createElement(UiProviders, null, /* @__PURE__ */ React45.createElement(StylesField, { bind: "align-items", propDisplayName: ALIGN_ITEMS_LABEL }, /* @__PURE__ */ React45.createElement(StylesFieldLayout, { label: ALIGN_ITEMS_LABEL }, /* @__PURE__ */ React45.createElement(ToggleControl2, { options: options2 }))));
2907
3044
  };
2908
3045
 
2909
3046
  // src/components/style-sections/layout-section/align-self-child-field.tsx
2910
- import * as React44 from "react";
3047
+ import * as React46 from "react";
2911
3048
  import { ToggleControl as ToggleControl3 } from "@elementor/editor-controls";
2912
3049
  import {
2913
3050
  LayoutAlignCenterIcon as CenterIcon3,
@@ -2915,8 +3052,9 @@ import {
2915
3052
  LayoutAlignRightIcon as LayoutAlignRightIcon2,
2916
3053
  LayoutDistributeVerticalIcon as JustifyIcon2
2917
3054
  } from "@elementor/icons";
2918
- import { Grid as Grid4, withDirection as withDirection5 } from "@elementor/ui";
2919
- import { __ as __18 } from "@wordpress/i18n";
3055
+ import { withDirection as withDirection5 } from "@elementor/ui";
3056
+ import { __ as __22 } from "@wordpress/i18n";
3057
+ var ALIGN_SELF_LABEL = __22("Align self", "elementor");
2920
3058
  var ALIGN_SELF_CHILD_OFFSET_MAP = {
2921
3059
  row: 90,
2922
3060
  "row-reverse": 90,
@@ -2931,8 +3069,8 @@ var iconProps3 = {
2931
3069
  var getOptions = (parentStyleDirection) => [
2932
3070
  {
2933
3071
  value: "start",
2934
- label: __18("Start", "elementor"),
2935
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(
3072
+ label: __22("Start", "elementor"),
3073
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(
2936
3074
  RotatedIcon,
2937
3075
  {
2938
3076
  icon: StartIcon3,
@@ -2945,8 +3083,8 @@ var getOptions = (parentStyleDirection) => [
2945
3083
  },
2946
3084
  {
2947
3085
  value: "center",
2948
- label: __18("Center", "elementor"),
2949
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(
3086
+ label: __22("Center", "elementor"),
3087
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(
2950
3088
  RotatedIcon,
2951
3089
  {
2952
3090
  icon: CenterIcon3,
@@ -2959,8 +3097,8 @@ var getOptions = (parentStyleDirection) => [
2959
3097
  },
2960
3098
  {
2961
3099
  value: "end",
2962
- label: __18("End", "elementor"),
2963
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(
3100
+ label: __22("End", "elementor"),
3101
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(
2964
3102
  RotatedIcon,
2965
3103
  {
2966
3104
  icon: EndIcon3,
@@ -2973,8 +3111,8 @@ var getOptions = (parentStyleDirection) => [
2973
3111
  },
2974
3112
  {
2975
3113
  value: "stretch",
2976
- label: __18("Stretch", "elementor"),
2977
- renderContent: ({ size }) => /* @__PURE__ */ React44.createElement(
3114
+ label: __22("Stretch", "elementor"),
3115
+ renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(
2978
3116
  RotatedIcon,
2979
3117
  {
2980
3118
  icon: JustifyIcon2,
@@ -2986,107 +3124,107 @@ var getOptions = (parentStyleDirection) => [
2986
3124
  showTooltip: true
2987
3125
  }
2988
3126
  ];
2989
- var AlignSelfChild = ({ parentStyleDirection }) => {
2990
- return /* @__PURE__ */ React44.createElement(UiProviders, null, /* @__PURE__ */ React44.createElement(StylesField, { bind: "align-self" }, /* @__PURE__ */ React44.createElement(Grid4, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React44.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React44.createElement(ControlLabel, null, __18("Align self", "elementor"))), /* @__PURE__ */ React44.createElement(Grid4, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React44.createElement(ToggleControl3, { options: getOptions(parentStyleDirection) })))));
2991
- };
3127
+ var AlignSelfChild = ({ parentStyleDirection }) => /* @__PURE__ */ React46.createElement(StylesField, { bind: "align-self", propDisplayName: ALIGN_SELF_LABEL }, /* @__PURE__ */ React46.createElement(UiProviders, null, /* @__PURE__ */ React46.createElement(StylesFieldLayout, { label: ALIGN_SELF_LABEL }, /* @__PURE__ */ React46.createElement(ToggleControl3, { options: getOptions(parentStyleDirection) }))));
2992
3128
 
2993
3129
  // src/components/style-sections/layout-section/display-field.tsx
2994
- import * as React45 from "react";
3130
+ import * as React47 from "react";
2995
3131
  import { ToggleControl as ToggleControl4 } from "@elementor/editor-controls";
2996
- import { isExperimentActive as isExperimentActive7 } from "@elementor/editor-v1-adapters";
2997
- import { Stack as Stack11 } from "@elementor/ui";
2998
- import { __ as __19 } from "@wordpress/i18n";
3132
+ import { isExperimentActive as isExperimentActive10 } from "@elementor/editor-v1-adapters";
3133
+ import { __ as __23 } from "@wordpress/i18n";
3134
+ var DISPLAY_LABEL = __23("Display", "elementor");
2999
3135
  var displayFieldItems = [
3000
3136
  {
3001
3137
  value: "block",
3002
- renderContent: () => __19("Block", "elementor"),
3003
- label: __19("Block", "elementor"),
3138
+ renderContent: () => __23("Block", "elementor"),
3139
+ label: __23("Block", "elementor"),
3004
3140
  showTooltip: true
3005
3141
  },
3006
3142
  {
3007
3143
  value: "flex",
3008
- renderContent: () => __19("Flex", "elementor"),
3009
- label: __19("Flex", "elementor"),
3144
+ renderContent: () => __23("Flex", "elementor"),
3145
+ label: __23("Flex", "elementor"),
3010
3146
  showTooltip: true
3011
3147
  },
3012
3148
  {
3013
3149
  value: "inline-block",
3014
- renderContent: () => __19("In-blk", "elementor"),
3015
- label: __19("Inline-block", "elementor"),
3150
+ renderContent: () => __23("In-blk", "elementor"),
3151
+ label: __23("Inline-block", "elementor"),
3016
3152
  showTooltip: true
3017
3153
  }
3018
3154
  ];
3019
3155
  var DisplayField = () => {
3020
- const isDisplayNoneFeatureActive = isExperimentActive7(EXPERIMENTAL_FEATURES.V_3_30);
3156
+ const isDisplayNoneFeatureActive = isExperimentActive10(EXPERIMENTAL_FEATURES.V_3_30);
3021
3157
  const items3 = [...displayFieldItems];
3022
3158
  if (isDisplayNoneFeatureActive) {
3023
3159
  items3.push({
3024
3160
  value: "none",
3025
- renderContent: () => __19("None", "elementor"),
3026
- label: __19("None", "elementor"),
3161
+ renderContent: () => __23("None", "elementor"),
3162
+ label: __23("None", "elementor"),
3027
3163
  showTooltip: true
3028
3164
  });
3029
3165
  }
3030
3166
  items3.push({
3031
3167
  value: "inline-flex",
3032
- renderContent: () => __19("In-flx", "elementor"),
3033
- label: __19("Inline-flex", "elementor"),
3168
+ renderContent: () => __23("In-flx", "elementor"),
3169
+ label: __23("Inline-flex", "elementor"),
3034
3170
  showTooltip: true
3035
3171
  });
3036
3172
  const placeholder = useDisplayPlaceholderValue();
3037
- return /* @__PURE__ */ React45.createElement(StylesField, { bind: "display", placeholder }, /* @__PURE__ */ React45.createElement(Stack11, { gap: 0.75 }, /* @__PURE__ */ React45.createElement(ControlLabel, null, __19("Display", "elementor")), /* @__PURE__ */ React45.createElement(ToggleControl4, { options: items3, maxItems: 4, fullWidth: true })));
3173
+ return /* @__PURE__ */ React47.createElement(StylesField, { bind: "display", propDisplayName: DISPLAY_LABEL, placeholder }, /* @__PURE__ */ React47.createElement(StylesFieldLayout, { label: DISPLAY_LABEL, direction: "column" }, /* @__PURE__ */ React47.createElement(ToggleControl4, { options: items3, maxItems: 4, fullWidth: true })));
3038
3174
  };
3039
3175
  var useDisplayPlaceholderValue = () => useStylesInheritanceChain(["display"])[0]?.value ?? void 0;
3040
3176
 
3041
3177
  // src/components/style-sections/layout-section/flex-direction-field.tsx
3042
- import * as React46 from "react";
3178
+ import * as React48 from "react";
3043
3179
  import { ToggleControl as ToggleControl5 } from "@elementor/editor-controls";
3044
3180
  import { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from "@elementor/icons";
3045
- import { Grid as Grid5, withDirection as withDirection6 } from "@elementor/ui";
3046
- import { __ as __20 } from "@wordpress/i18n";
3181
+ import { withDirection as withDirection6 } from "@elementor/ui";
3182
+ import { __ as __24 } from "@wordpress/i18n";
3183
+ var FLEX_DIRECTION_LABEL = __24("Direction", "elementor");
3047
3184
  var options3 = [
3048
3185
  {
3049
3186
  value: "row",
3050
- label: __20("Row", "elementor"),
3187
+ label: __24("Row", "elementor"),
3051
3188
  renderContent: ({ size }) => {
3052
3189
  const StartIcon5 = withDirection6(ArrowRightIcon);
3053
- return /* @__PURE__ */ React46.createElement(StartIcon5, { fontSize: size });
3190
+ return /* @__PURE__ */ React48.createElement(StartIcon5, { fontSize: size });
3054
3191
  },
3055
3192
  showTooltip: true
3056
3193
  },
3057
3194
  {
3058
3195
  value: "column",
3059
- label: __20("Column", "elementor"),
3060
- renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(ArrowDownSmallIcon, { fontSize: size }),
3196
+ label: __24("Column", "elementor"),
3197
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(ArrowDownSmallIcon, { fontSize: size }),
3061
3198
  showTooltip: true
3062
3199
  },
3063
3200
  {
3064
3201
  value: "row-reverse",
3065
- label: __20("Reversed row", "elementor"),
3202
+ label: __24("Reversed row", "elementor"),
3066
3203
  renderContent: ({ size }) => {
3067
3204
  const EndIcon5 = withDirection6(ArrowLeftIcon);
3068
- return /* @__PURE__ */ React46.createElement(EndIcon5, { fontSize: size });
3205
+ return /* @__PURE__ */ React48.createElement(EndIcon5, { fontSize: size });
3069
3206
  },
3070
3207
  showTooltip: true
3071
3208
  },
3072
3209
  {
3073
3210
  value: "column-reverse",
3074
- label: __20("Reversed column", "elementor"),
3075
- renderContent: ({ size }) => /* @__PURE__ */ React46.createElement(ArrowUpSmallIcon, { fontSize: size }),
3211
+ label: __24("Reversed column", "elementor"),
3212
+ renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(ArrowUpSmallIcon, { fontSize: size }),
3076
3213
  showTooltip: true
3077
3214
  }
3078
3215
  ];
3079
3216
  var FlexDirectionField = () => {
3080
- return /* @__PURE__ */ React46.createElement(UiProviders, null, /* @__PURE__ */ React46.createElement(StylesField, { bind: "flex-direction" }, /* @__PURE__ */ React46.createElement(Grid5, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React46.createElement(Grid5, { item: true, xs: 6 }, /* @__PURE__ */ React46.createElement(ControlLabel, null, __20("Direction", "elementor"))), /* @__PURE__ */ React46.createElement(Grid5, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React46.createElement(ToggleControl5, { options: options3 })))));
3217
+ return /* @__PURE__ */ React48.createElement(StylesField, { bind: "flex-direction", propDisplayName: FLEX_DIRECTION_LABEL }, /* @__PURE__ */ React48.createElement(UiProviders, null, /* @__PURE__ */ React48.createElement(StylesFieldLayout, { label: FLEX_DIRECTION_LABEL }, /* @__PURE__ */ React48.createElement(ToggleControl5, { options: options3 }))));
3081
3218
  };
3082
3219
 
3083
3220
  // src/components/style-sections/layout-section/flex-order-field.tsx
3084
- import * as React47 from "react";
3221
+ import * as React49 from "react";
3085
3222
  import { useState as useState10 } from "react";
3086
3223
  import { ControlToggleButtonGroup, NumberControl } from "@elementor/editor-controls";
3087
3224
  import { ArrowDownSmallIcon as ArrowDownSmallIcon2, ArrowUpSmallIcon as ArrowUpSmallIcon2, PencilIcon } from "@elementor/icons";
3088
- import { Grid as Grid6 } from "@elementor/ui";
3089
- import { __ as __21 } from "@wordpress/i18n";
3225
+ import { Grid as Grid2 } from "@elementor/ui";
3226
+ import { __ as __25 } from "@wordpress/i18n";
3227
+ var ORDER_LABEL = __25("Order", "elementor");
3090
3228
  var FIRST_DEFAULT_VALUE = -99999;
3091
3229
  var LAST_DEFAULT_VALUE = 99999;
3092
3230
  var FIRST = "first";
@@ -3099,26 +3237,25 @@ var orderValueMap = {
3099
3237
  var items = [
3100
3238
  {
3101
3239
  value: FIRST,
3102
- label: __21("First", "elementor"),
3103
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(ArrowUpSmallIcon2, { fontSize: size }),
3240
+ label: __25("First", "elementor"),
3241
+ renderContent: ({ size }) => /* @__PURE__ */ React49.createElement(ArrowUpSmallIcon2, { fontSize: size }),
3104
3242
  showTooltip: true
3105
3243
  },
3106
3244
  {
3107
3245
  value: LAST,
3108
- label: __21("Last", "elementor"),
3109
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(ArrowDownSmallIcon2, { fontSize: size }),
3246
+ label: __25("Last", "elementor"),
3247
+ renderContent: ({ size }) => /* @__PURE__ */ React49.createElement(ArrowDownSmallIcon2, { fontSize: size }),
3110
3248
  showTooltip: true
3111
3249
  },
3112
3250
  {
3113
3251
  value: CUSTOM,
3114
- label: __21("Custom", "elementor"),
3115
- renderContent: ({ size }) => /* @__PURE__ */ React47.createElement(PencilIcon, { fontSize: size }),
3252
+ label: __25("Custom", "elementor"),
3253
+ renderContent: ({ size }) => /* @__PURE__ */ React49.createElement(PencilIcon, { fontSize: size }),
3116
3254
  showTooltip: true
3117
3255
  }
3118
3256
  ];
3119
3257
  var FlexOrderField = () => {
3120
- const [order, setOrder] = useStylesField("order");
3121
- const { canEdit } = useStyle();
3258
+ const { value: order, setValue: setOrder, canEdit } = useStylesField("order");
3122
3259
  const [groupControlValue, setGroupControlValue] = useState10(getGroupControlValue(order?.value || null));
3123
3260
  const handleToggleButtonChange = (group) => {
3124
3261
  setGroupControlValue(group);
@@ -3128,7 +3265,7 @@ var FlexOrderField = () => {
3128
3265
  }
3129
3266
  setOrder({ $$type: "number", value: orderValueMap[group] });
3130
3267
  };
3131
- return /* @__PURE__ */ React47.createElement(UiProviders, null, /* @__PURE__ */ React47.createElement(StylesField, { bind: "order" }, /* @__PURE__ */ React47.createElement(SectionContent, null, /* @__PURE__ */ React47.createElement(Grid6, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel, null, __21("Order", "elementor"))), /* @__PURE__ */ React47.createElement(Grid6, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React47.createElement(
3268
+ return /* @__PURE__ */ React49.createElement(StylesField, { bind: "order", propDisplayName: ORDER_LABEL }, /* @__PURE__ */ React49.createElement(UiProviders, null, /* @__PURE__ */ React49.createElement(StylesFieldLayout, { label: ORDER_LABEL }, /* @__PURE__ */ React49.createElement(SectionContent, null, /* @__PURE__ */ React49.createElement(
3132
3269
  ControlToggleButtonGroup,
3133
3270
  {
3134
3271
  items,
@@ -3137,14 +3274,14 @@ var FlexOrderField = () => {
3137
3274
  exclusive: true,
3138
3275
  disabled: !canEdit
3139
3276
  }
3140
- ))), CUSTOM === groupControlValue && /* @__PURE__ */ React47.createElement(Grid6, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React47.createElement(Grid6, { item: true, xs: 6 }, /* @__PURE__ */ React47.createElement(ControlLabel, null, __21("Custom order", "elementor"))), /* @__PURE__ */ React47.createElement(Grid6, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React47.createElement(
3277
+ ), CUSTOM === groupControlValue && /* @__PURE__ */ React49.createElement(Grid2, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React49.createElement(Grid2, { item: true, xs: 6 }, /* @__PURE__ */ React49.createElement(ControlLabel, null, __25("Custom order", "elementor"))), /* @__PURE__ */ React49.createElement(Grid2, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React49.createElement(
3141
3278
  NumberControl,
3142
3279
  {
3143
3280
  min: FIRST_DEFAULT_VALUE + 1,
3144
3281
  max: LAST_DEFAULT_VALUE - 1,
3145
3282
  shouldForceInt: true
3146
3283
  }
3147
- ))))));
3284
+ )))))));
3148
3285
  };
3149
3286
  var getGroupControlValue = (order) => {
3150
3287
  if (LAST_DEFAULT_VALUE === order) {
@@ -3157,49 +3294,48 @@ var getGroupControlValue = (order) => {
3157
3294
  };
3158
3295
 
3159
3296
  // src/components/style-sections/layout-section/flex-size-field.tsx
3160
- import * as React48 from "react";
3161
- import { useMemo as useMemo5, useRef as useRef5, useState as useState11 } from "react";
3297
+ import * as React50 from "react";
3298
+ import { useMemo as useMemo6, useRef as useRef6, useState as useState11 } from "react";
3162
3299
  import {
3163
3300
  ControlToggleButtonGroup as ControlToggleButtonGroup2,
3164
3301
  NumberControl as NumberControl2,
3165
- SizeControl as SizeControl2
3302
+ SizeControl as SizeControl3
3166
3303
  } from "@elementor/editor-controls";
3167
3304
  import { numberPropTypeUtil } from "@elementor/editor-props";
3168
3305
  import { ExpandIcon, PencilIcon as PencilIcon2, ShrinkIcon } from "@elementor/icons";
3169
- import { Grid as Grid7 } from "@elementor/ui";
3170
- import { __ as __22 } from "@wordpress/i18n";
3306
+ import { __ as __26 } from "@wordpress/i18n";
3307
+ var FLEX_SIZE_LABEL = __26("Flex Size", "elementor");
3171
3308
  var DEFAULT = 1;
3172
3309
  var items2 = [
3173
3310
  {
3174
3311
  value: "flex-grow",
3175
- label: __22("Grow", "elementor"),
3176
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(ExpandIcon, { fontSize: size }),
3312
+ label: __26("Grow", "elementor"),
3313
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(ExpandIcon, { fontSize: size }),
3177
3314
  showTooltip: true
3178
3315
  },
3179
3316
  {
3180
3317
  value: "flex-shrink",
3181
- label: __22("Shrink", "elementor"),
3182
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(ShrinkIcon, { fontSize: size }),
3318
+ label: __26("Shrink", "elementor"),
3319
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(ShrinkIcon, { fontSize: size }),
3183
3320
  showTooltip: true
3184
3321
  },
3185
3322
  {
3186
3323
  value: "custom",
3187
- label: __22("Custom", "elementor"),
3188
- renderContent: ({ size }) => /* @__PURE__ */ React48.createElement(PencilIcon2, { fontSize: size }),
3324
+ label: __26("Custom", "elementor"),
3325
+ renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(PencilIcon2, { fontSize: size }),
3189
3326
  showTooltip: true
3190
3327
  }
3191
3328
  ];
3192
3329
  var FlexSizeField = () => {
3193
- const { canEdit } = useStyle();
3194
- const [fields, setFields] = useStylesFields(["flex-grow", "flex-shrink", "flex-basis"]);
3195
- const grow = fields?.["flex-grow"]?.value || null;
3196
- const shrink = fields?.["flex-shrink"]?.value || null;
3197
- const basis = fields?.["flex-basis"]?.value || null;
3198
- const currentGroup = useMemo5(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = useState11(currentGroup);
3330
+ const { values, setValues, canEdit } = useStylesFields(["flex-grow", "flex-shrink", "flex-basis"]);
3331
+ const grow = values?.["flex-grow"]?.value || null;
3332
+ const shrink = values?.["flex-shrink"]?.value || null;
3333
+ const basis = values?.["flex-basis"]?.value || null;
3334
+ const currentGroup = useMemo6(() => getActiveGroup({ grow, shrink, basis }), [grow, shrink, basis]), [activeGroup, setActiveGroup] = useState11(currentGroup);
3199
3335
  const onChangeGroup = (group = null) => {
3200
3336
  setActiveGroup(group);
3201
3337
  if (!group || group === "custom") {
3202
- setFields({
3338
+ setValues({
3203
3339
  "flex-basis": null,
3204
3340
  "flex-grow": null,
3205
3341
  "flex-shrink": null
@@ -3207,20 +3343,20 @@ var FlexSizeField = () => {
3207
3343
  return;
3208
3344
  }
3209
3345
  if (group === "flex-grow") {
3210
- setFields({
3346
+ setValues({
3211
3347
  "flex-basis": null,
3212
3348
  "flex-grow": numberPropTypeUtil.create(DEFAULT),
3213
3349
  "flex-shrink": null
3214
3350
  });
3215
3351
  return;
3216
3352
  }
3217
- setFields({
3353
+ setValues({
3218
3354
  "flex-basis": null,
3219
3355
  "flex-grow": null,
3220
3356
  "flex-shrink": numberPropTypeUtil.create(DEFAULT)
3221
3357
  });
3222
3358
  };
3223
- return /* @__PURE__ */ React48.createElement(UiProviders, null, /* @__PURE__ */ React48.createElement(SectionContent, null, /* @__PURE__ */ React48.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React48.createElement(StylesField, { bind: activeGroup ?? "" }, /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlLabel, null, __22("Size", "elementor"))), /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React48.createElement(
3359
+ return /* @__PURE__ */ React50.createElement(UiProviders, null, /* @__PURE__ */ React50.createElement(SectionContent, null, /* @__PURE__ */ React50.createElement(StylesField, { bind: activeGroup ?? "", propDisplayName: FLEX_SIZE_LABEL }, /* @__PURE__ */ React50.createElement(StylesFieldLayout, { label: FLEX_SIZE_LABEL }, /* @__PURE__ */ React50.createElement(
3224
3360
  ControlToggleButtonGroup2,
3225
3361
  {
3226
3362
  value: activeGroup,
@@ -3229,11 +3365,11 @@ var FlexSizeField = () => {
3229
3365
  items: items2,
3230
3366
  exclusive: true
3231
3367
  }
3232
- )))), "custom" === activeGroup && /* @__PURE__ */ React48.createElement(FlexCustomField, null)));
3368
+ ))), "custom" === activeGroup && /* @__PURE__ */ React50.createElement(FlexCustomField, null)));
3233
3369
  };
3234
3370
  var FlexCustomField = () => {
3235
- const flexBasisRowRef = useRef5();
3236
- return /* @__PURE__ */ React48.createElement(React48.Fragment, null, /* @__PURE__ */ React48.createElement(StylesField, { bind: "flex-grow" }, /* @__PURE__ */ React48.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlLabel, null, __22("Grow", "elementor"))), /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React48.createElement(NumberControl2, { min: 0, shouldForceInt: true })))), /* @__PURE__ */ React48.createElement(StylesField, { bind: "flex-shrink" }, /* @__PURE__ */ React48.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlLabel, null, __22("Shrink", "elementor"))), /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React48.createElement(NumberControl2, { min: 0, shouldForceInt: true })))), /* @__PURE__ */ React48.createElement(StylesField, { bind: "flex-basis" }, /* @__PURE__ */ React48.createElement(Grid7, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: flexBasisRowRef }, /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6 }, /* @__PURE__ */ React48.createElement(ControlLabel, null, __22("Basis", "elementor"))), /* @__PURE__ */ React48.createElement(Grid7, { item: true, xs: 6, sx: { display: "flex", justifyContent: "end" } }, /* @__PURE__ */ React48.createElement(SizeControl2, { extendedOptions: ["auto"], anchorRef: flexBasisRowRef })))));
3371
+ const flexBasisRowRef = useRef6(null);
3372
+ return /* @__PURE__ */ React50.createElement(React50.Fragment, null, /* @__PURE__ */ React50.createElement(StylesField, { bind: "flex-grow", propDisplayName: FLEX_SIZE_LABEL }, /* @__PURE__ */ React50.createElement(StylesFieldLayout, { label: __26("Grow", "elementor") }, /* @__PURE__ */ React50.createElement(NumberControl2, { min: 0, shouldForceInt: true }))), /* @__PURE__ */ React50.createElement(StylesField, { bind: "flex-shrink", propDisplayName: FLEX_SIZE_LABEL }, /* @__PURE__ */ React50.createElement(StylesFieldLayout, { label: __26("Shrink", "elementor") }, /* @__PURE__ */ React50.createElement(NumberControl2, { min: 0, shouldForceInt: true }))), /* @__PURE__ */ React50.createElement(StylesField, { bind: "flex-basis", propDisplayName: FLEX_SIZE_LABEL }, /* @__PURE__ */ React50.createElement(StylesFieldLayout, { label: __26("Basis", "elementor"), ref: flexBasisRowRef }, /* @__PURE__ */ React50.createElement(SizeControl3, { extendedOptions: ["auto"], anchorRef: flexBasisRowRef }))));
3237
3373
  };
3238
3374
  var getActiveGroup = ({
3239
3375
  grow,
@@ -3256,16 +3392,16 @@ var getActiveGroup = ({
3256
3392
  };
3257
3393
 
3258
3394
  // src/components/style-sections/layout-section/gap-control-field.tsx
3259
- import * as React49 from "react";
3395
+ import * as React51 from "react";
3260
3396
  import { GapControl } from "@elementor/editor-controls";
3261
- import { Stack as Stack12 } from "@elementor/ui";
3262
- import { __ as __23 } from "@wordpress/i18n";
3397
+ import { __ as __27 } from "@wordpress/i18n";
3398
+ var GAPS_LABEL = __27("Gaps", "elementor");
3263
3399
  var GapControlField = () => {
3264
- return /* @__PURE__ */ React49.createElement(Stack12, { gap: 1 }, /* @__PURE__ */ React49.createElement(StylesField, { bind: "gap" }, /* @__PURE__ */ React49.createElement(GapControl, { label: __23("Gaps", "elementor") })));
3400
+ return /* @__PURE__ */ React51.createElement(StylesField, { bind: "gap", propDisplayName: GAPS_LABEL }, /* @__PURE__ */ React51.createElement(GapControl, { label: GAPS_LABEL }));
3265
3401
  };
3266
3402
 
3267
3403
  // src/components/style-sections/layout-section/justify-content-field.tsx
3268
- import * as React50 from "react";
3404
+ import * as React52 from "react";
3269
3405
  import { ToggleControl as ToggleControl6 } from "@elementor/editor-controls";
3270
3406
  import {
3271
3407
  JustifyBottomIcon as JustifyBottomIcon2,
@@ -3275,8 +3411,9 @@ import {
3275
3411
  JustifySpaceBetweenVerticalIcon as BetweenIcon2,
3276
3412
  JustifyTopIcon as JustifyTopIcon2
3277
3413
  } from "@elementor/icons";
3278
- import { Stack as Stack13, withDirection as withDirection7 } from "@elementor/ui";
3279
- import { __ as __24 } from "@wordpress/i18n";
3414
+ import { withDirection as withDirection7 } from "@elementor/ui";
3415
+ import { __ as __28 } from "@wordpress/i18n";
3416
+ var JUSTIFY_CONTENT_LABEL = __28("Justify content", "elementor");
3280
3417
  var StartIcon4 = withDirection7(JustifyTopIcon2);
3281
3418
  var EndIcon4 = withDirection7(JustifyBottomIcon2);
3282
3419
  var iconProps4 = {
@@ -3286,91 +3423,89 @@ var iconProps4 = {
3286
3423
  var options4 = [
3287
3424
  {
3288
3425
  value: "flex-start",
3289
- label: __24("Start", "elementor"),
3290
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(RotatedIcon, { icon: StartIcon4, size, ...iconProps4 }),
3426
+ label: __28("Start", "elementor"),
3427
+ renderContent: ({ size }) => /* @__PURE__ */ React52.createElement(RotatedIcon, { icon: StartIcon4, size, ...iconProps4 }),
3291
3428
  showTooltip: true
3292
3429
  },
3293
3430
  {
3294
3431
  value: "center",
3295
- label: __24("Center", "elementor"),
3296
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(RotatedIcon, { icon: CenterIcon4, size, ...iconProps4 }),
3432
+ label: __28("Center", "elementor"),
3433
+ renderContent: ({ size }) => /* @__PURE__ */ React52.createElement(RotatedIcon, { icon: CenterIcon4, size, ...iconProps4 }),
3297
3434
  showTooltip: true
3298
3435
  },
3299
3436
  {
3300
3437
  value: "flex-end",
3301
- label: __24("End", "elementor"),
3302
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(RotatedIcon, { icon: EndIcon4, size, ...iconProps4 }),
3438
+ label: __28("End", "elementor"),
3439
+ renderContent: ({ size }) => /* @__PURE__ */ React52.createElement(RotatedIcon, { icon: EndIcon4, size, ...iconProps4 }),
3303
3440
  showTooltip: true
3304
3441
  },
3305
3442
  {
3306
3443
  value: "space-between",
3307
- label: __24("Space between", "elementor"),
3308
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(RotatedIcon, { icon: BetweenIcon2, size, ...iconProps4 }),
3444
+ label: __28("Space between", "elementor"),
3445
+ renderContent: ({ size }) => /* @__PURE__ */ React52.createElement(RotatedIcon, { icon: BetweenIcon2, size, ...iconProps4 }),
3309
3446
  showTooltip: true
3310
3447
  },
3311
3448
  {
3312
3449
  value: "space-around",
3313
- label: __24("Space around", "elementor"),
3314
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(RotatedIcon, { icon: AroundIcon2, size, ...iconProps4 }),
3450
+ label: __28("Space around", "elementor"),
3451
+ renderContent: ({ size }) => /* @__PURE__ */ React52.createElement(RotatedIcon, { icon: AroundIcon2, size, ...iconProps4 }),
3315
3452
  showTooltip: true
3316
3453
  },
3317
3454
  {
3318
3455
  value: "space-evenly",
3319
- label: __24("Space evenly", "elementor"),
3320
- renderContent: ({ size }) => /* @__PURE__ */ React50.createElement(RotatedIcon, { icon: EvenlyIcon2, size, ...iconProps4 }),
3456
+ label: __28("Space evenly", "elementor"),
3457
+ renderContent: ({ size }) => /* @__PURE__ */ React52.createElement(RotatedIcon, { icon: EvenlyIcon2, size, ...iconProps4 }),
3321
3458
  showTooltip: true
3322
3459
  }
3323
3460
  ];
3324
- var JustifyContentField = () => {
3325
- return /* @__PURE__ */ React50.createElement(UiProviders, null, /* @__PURE__ */ React50.createElement(StylesField, { bind: "justify-content" }, /* @__PURE__ */ React50.createElement(Stack13, { gap: 0.75 }, /* @__PURE__ */ React50.createElement(ControlLabel, null, __24("Justify content", "elementor")), /* @__PURE__ */ React50.createElement(ToggleControl6, { options: options4, fullWidth: true }))));
3326
- };
3461
+ var JustifyContentField = () => /* @__PURE__ */ React52.createElement(StylesField, { bind: "justify-content", propDisplayName: JUSTIFY_CONTENT_LABEL }, /* @__PURE__ */ React52.createElement(UiProviders, null, /* @__PURE__ */ React52.createElement(StylesFieldLayout, { label: JUSTIFY_CONTENT_LABEL, direction: "column" }, /* @__PURE__ */ React52.createElement(ToggleControl6, { options: options4, fullWidth: true }))));
3327
3462
 
3328
3463
  // src/components/style-sections/layout-section/wrap-field.tsx
3329
- import * as React51 from "react";
3464
+ import * as React53 from "react";
3330
3465
  import { ToggleControl as ToggleControl7 } from "@elementor/editor-controls";
3331
3466
  import { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon as ArrowRightIcon2 } from "@elementor/icons";
3332
- import { Grid as Grid8 } from "@elementor/ui";
3333
- import { __ as __25 } from "@wordpress/i18n";
3467
+ import { __ as __29 } from "@wordpress/i18n";
3468
+ var FLEX_WRAP_LABEL = __29("Wrap", "elementor");
3334
3469
  var options5 = [
3335
3470
  {
3336
3471
  value: "nowrap",
3337
- label: __25("No wrap", "elementor"),
3338
- renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowRightIcon2, { fontSize: size }),
3472
+ label: __29("No wrap", "elementor"),
3473
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(ArrowRightIcon2, { fontSize: size }),
3339
3474
  showTooltip: true
3340
3475
  },
3341
3476
  {
3342
3477
  value: "wrap",
3343
- label: __25("Wrap", "elementor"),
3344
- renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowBackIcon, { fontSize: size }),
3478
+ label: __29("Wrap", "elementor"),
3479
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(ArrowBackIcon, { fontSize: size }),
3345
3480
  showTooltip: true
3346
3481
  },
3347
3482
  {
3348
3483
  value: "wrap-reverse",
3349
- label: __25("Reversed wrap", "elementor"),
3350
- renderContent: ({ size }) => /* @__PURE__ */ React51.createElement(ArrowForwardIcon, { fontSize: size }),
3484
+ label: __29("Reversed wrap", "elementor"),
3485
+ renderContent: ({ size }) => /* @__PURE__ */ React53.createElement(ArrowForwardIcon, { fontSize: size }),
3351
3486
  showTooltip: true
3352
3487
  }
3353
3488
  ];
3354
3489
  var WrapField = () => {
3355
- return /* @__PURE__ */ React51.createElement(UiProviders, null, /* @__PURE__ */ React51.createElement(StylesField, { bind: "flex-wrap" }, /* @__PURE__ */ React51.createElement(Grid8, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React51.createElement(Grid8, { item: true, xs: 6 }, /* @__PURE__ */ React51.createElement(ControlLabel, null, __25("Wrap", "elementor"))), /* @__PURE__ */ React51.createElement(Grid8, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React51.createElement(ToggleControl7, { options: options5 })))));
3490
+ return /* @__PURE__ */ React53.createElement(StylesField, { bind: "flex-wrap", propDisplayName: FLEX_WRAP_LABEL }, /* @__PURE__ */ React53.createElement(UiProviders, null, /* @__PURE__ */ React53.createElement(StylesFieldLayout, { label: FLEX_WRAP_LABEL }, /* @__PURE__ */ React53.createElement(ToggleControl7, { options: options5 }))));
3356
3491
  };
3357
3492
 
3358
3493
  // src/components/style-sections/layout-section/layout-section.tsx
3359
3494
  var LayoutSection = () => {
3360
- const [display] = useStylesField("display");
3495
+ const { value: display } = useStylesField("display");
3361
3496
  const displayPlaceholder = useDisplayPlaceholderValue();
3362
3497
  const isDisplayFlex = shouldDisplayFlexFields(display, displayPlaceholder);
3363
3498
  const { element } = useElement();
3364
3499
  const parent = useParentElement(element.id);
3365
3500
  const parentStyle = useComputedStyle(parent?.id || null);
3366
3501
  const parentStyleDirection = parentStyle?.flexDirection ?? "row";
3367
- return /* @__PURE__ */ React52.createElement(SectionContent, null, /* @__PURE__ */ React52.createElement(DisplayField, null), isDisplayFlex && /* @__PURE__ */ React52.createElement(FlexFields, null), "flex" === parentStyle?.display && /* @__PURE__ */ React52.createElement(FlexChildFields, { parentStyleDirection }));
3502
+ return /* @__PURE__ */ React54.createElement(SectionContent, null, /* @__PURE__ */ React54.createElement(DisplayField, null), isDisplayFlex && /* @__PURE__ */ React54.createElement(FlexFields, null), "flex" === parentStyle?.display && /* @__PURE__ */ React54.createElement(FlexChildFields, { parentStyleDirection }));
3368
3503
  };
3369
3504
  var FlexFields = () => {
3370
- const [flexWrap] = useStylesField("flex-wrap");
3371
- return /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(FlexDirectionField, null), /* @__PURE__ */ React52.createElement(JustifyContentField, null), /* @__PURE__ */ React52.createElement(AlignItemsField, null), /* @__PURE__ */ React52.createElement(PanelDivider, null), /* @__PURE__ */ React52.createElement(GapControlField, null), /* @__PURE__ */ React52.createElement(WrapField, null), ["wrap", "wrap-reverse"].includes(flexWrap?.value) && /* @__PURE__ */ React52.createElement(AlignContentField, null));
3505
+ const { value: flexWrap } = useStylesField("flex-wrap");
3506
+ return /* @__PURE__ */ React54.createElement(React54.Fragment, null, /* @__PURE__ */ React54.createElement(FlexDirectionField, null), /* @__PURE__ */ React54.createElement(JustifyContentField, null), /* @__PURE__ */ React54.createElement(AlignItemsField, null), /* @__PURE__ */ React54.createElement(PanelDivider, null), /* @__PURE__ */ React54.createElement(GapControlField, null), /* @__PURE__ */ React54.createElement(WrapField, null), ["wrap", "wrap-reverse"].includes(flexWrap?.value) && /* @__PURE__ */ React54.createElement(AlignContentField, null));
3372
3507
  };
3373
- var FlexChildFields = ({ parentStyleDirection }) => /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement(PanelDivider, null), /* @__PURE__ */ React52.createElement(ControlFormLabel4, null, __26("Flex child", "elementor")), /* @__PURE__ */ React52.createElement(AlignSelfChild, { parentStyleDirection }), /* @__PURE__ */ React52.createElement(FlexOrderField, null), /* @__PURE__ */ React52.createElement(FlexSizeField, null));
3508
+ var FlexChildFields = ({ parentStyleDirection }) => /* @__PURE__ */ React54.createElement(React54.Fragment, null, /* @__PURE__ */ React54.createElement(PanelDivider, null), /* @__PURE__ */ React54.createElement(ControlFormLabel4, null, __30("Flex child", "elementor")), /* @__PURE__ */ React54.createElement(AlignSelfChild, { parentStyleDirection }), /* @__PURE__ */ React54.createElement(FlexOrderField, null), /* @__PURE__ */ React54.createElement(FlexSizeField, null));
3374
3509
  var shouldDisplayFlexFields = (display, local) => {
3375
3510
  const value = display?.value ?? local?.value;
3376
3511
  if (!value) {
@@ -3380,38 +3515,38 @@ var shouldDisplayFlexFields = (display, local) => {
3380
3515
  };
3381
3516
 
3382
3517
  // src/components/style-sections/position-section/position-section.tsx
3383
- import * as React57 from "react";
3384
- import { isExperimentActive as isExperimentActive8 } from "@elementor/editor-v1-adapters";
3518
+ import * as React59 from "react";
3519
+ import { isExperimentActive as isExperimentActive11 } from "@elementor/editor-v1-adapters";
3385
3520
  import { useSessionStorage } from "@elementor/session";
3386
3521
 
3387
3522
  // src/components/style-sections/position-section/dimensions-field.tsx
3388
- import * as React53 from "react";
3389
- import { useRef as useRef6 } from "react";
3390
- import { SizeControl as SizeControl3 } from "@elementor/editor-controls";
3523
+ import * as React55 from "react";
3524
+ import { useRef as useRef7 } from "react";
3525
+ import { SizeControl as SizeControl4 } from "@elementor/editor-controls";
3391
3526
  import { SideBottomIcon as SideBottomIcon2, SideLeftIcon as SideLeftIcon2, SideRightIcon as SideRightIcon2, SideTopIcon as SideTopIcon2 } from "@elementor/icons";
3392
- import { Grid as Grid9, Stack as Stack14, withDirection as withDirection8 } from "@elementor/ui";
3393
- import { __ as __27 } from "@wordpress/i18n";
3527
+ import { Grid as Grid3, Stack as Stack11, withDirection as withDirection8 } from "@elementor/ui";
3528
+ import { __ as __31 } from "@wordpress/i18n";
3394
3529
  var InlineStartIcon2 = withDirection8(SideLeftIcon2);
3395
3530
  var InlineEndIcon2 = withDirection8(SideRightIcon2);
3396
3531
  var sideIcons = {
3397
- "inset-block-start": /* @__PURE__ */ React53.createElement(SideTopIcon2, { fontSize: "tiny" }),
3398
- "inset-block-end": /* @__PURE__ */ React53.createElement(SideBottomIcon2, { fontSize: "tiny" }),
3399
- "inset-inline-start": /* @__PURE__ */ React53.createElement(RotatedIcon, { icon: InlineStartIcon2, size: "tiny" }),
3400
- "inset-inline-end": /* @__PURE__ */ React53.createElement(RotatedIcon, { icon: InlineEndIcon2, size: "tiny" })
3532
+ "inset-block-start": /* @__PURE__ */ React55.createElement(SideTopIcon2, { fontSize: "tiny" }),
3533
+ "inset-block-end": /* @__PURE__ */ React55.createElement(SideBottomIcon2, { fontSize: "tiny" }),
3534
+ "inset-inline-start": /* @__PURE__ */ React55.createElement(RotatedIcon, { icon: InlineStartIcon2, size: "tiny" }),
3535
+ "inset-inline-end": /* @__PURE__ */ React55.createElement(RotatedIcon, { icon: InlineEndIcon2, size: "tiny" })
3401
3536
  };
3402
- var getInlineStartLabel = (isSiteRtl) => isSiteRtl ? __27("Right", "elementor") : __27("Left", "elementor");
3403
- var getInlineEndLabel = (isSiteRtl) => isSiteRtl ? __27("Left", "elementor") : __27("Right", "elementor");
3537
+ var getInlineStartLabel = (isSiteRtl) => isSiteRtl ? __31("Right", "elementor") : __31("Left", "elementor");
3538
+ var getInlineEndLabel = (isSiteRtl) => isSiteRtl ? __31("Left", "elementor") : __31("Right", "elementor");
3404
3539
  var DimensionsField = () => {
3405
3540
  const { isSiteRtl } = useDirection();
3406
- const rowRefs = [useRef6(), useRef6()];
3407
- return /* @__PURE__ */ React53.createElement(UiProviders, null, /* @__PURE__ */ React53.createElement(Stack14, { direction: "row", gap: 2, flexWrap: "nowrap", ref: rowRefs[0] }, /* @__PURE__ */ React53.createElement(DimensionField, { side: "inset-block-start", label: __27("Top", "elementor"), rowRef: rowRefs[0] }), /* @__PURE__ */ React53.createElement(
3541
+ const rowRefs = [useRef7(null), useRef7(null)];
3542
+ return /* @__PURE__ */ React55.createElement(UiProviders, null, /* @__PURE__ */ React55.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap", ref: rowRefs[0] }, /* @__PURE__ */ React55.createElement(DimensionField, { side: "inset-block-start", label: __31("Top", "elementor"), rowRef: rowRefs[0] }), /* @__PURE__ */ React55.createElement(
3408
3543
  DimensionField,
3409
3544
  {
3410
3545
  side: "inset-inline-end",
3411
3546
  label: getInlineEndLabel(isSiteRtl),
3412
3547
  rowRef: rowRefs[0]
3413
3548
  }
3414
- )), /* @__PURE__ */ React53.createElement(Stack14, { direction: "row", gap: 2, flexWrap: "nowrap", ref: rowRefs[1] }, /* @__PURE__ */ React53.createElement(DimensionField, { side: "inset-block-end", label: __27("Bottom", "elementor"), rowRef: rowRefs[1] }), /* @__PURE__ */ React53.createElement(
3549
+ )), /* @__PURE__ */ React55.createElement(Stack11, { direction: "row", gap: 2, flexWrap: "nowrap", ref: rowRefs[1] }, /* @__PURE__ */ React55.createElement(DimensionField, { side: "inset-block-end", label: __31("Bottom", "elementor"), rowRef: rowRefs[1] }), /* @__PURE__ */ React55.createElement(
3415
3550
  DimensionField,
3416
3551
  {
3417
3552
  side: "inset-inline-start",
@@ -3424,60 +3559,61 @@ var DimensionField = ({
3424
3559
  side,
3425
3560
  label,
3426
3561
  rowRef
3427
- }) => /* @__PURE__ */ React53.createElement(StylesField, { bind: side }, /* @__PURE__ */ React53.createElement(Grid9, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React53.createElement(Grid9, { item: true, xs: 12 }, /* @__PURE__ */ React53.createElement(ControlLabel, null, label)), /* @__PURE__ */ React53.createElement(Grid9, { item: true, xs: 12 }, /* @__PURE__ */ React53.createElement(SizeControl3, { startIcon: sideIcons[side], extendedOptions: ["auto"], anchorRef: rowRef }))));
3562
+ }) => /* @__PURE__ */ React55.createElement(StylesField, { bind: side, propDisplayName: label }, /* @__PURE__ */ React55.createElement(Grid3, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React55.createElement(Grid3, { item: true, xs: 12 }, /* @__PURE__ */ React55.createElement(ControlLabel, null, label)), /* @__PURE__ */ React55.createElement(Grid3, { item: true, xs: 12 }, /* @__PURE__ */ React55.createElement(SizeControl4, { startIcon: sideIcons[side], extendedOptions: ["auto"], anchorRef: rowRef }))));
3428
3563
 
3429
3564
  // src/components/style-sections/position-section/offset-field.tsx
3430
- import * as React54 from "react";
3431
- import { useRef as useRef7 } from "react";
3432
- import { SizeControl as SizeControl4 } from "@elementor/editor-controls";
3433
- import { Grid as Grid10 } from "@elementor/ui";
3434
- import { __ as __28 } from "@wordpress/i18n";
3565
+ import * as React56 from "react";
3566
+ import { useRef as useRef8 } from "react";
3567
+ import { SizeControl as SizeControl5 } from "@elementor/editor-controls";
3568
+ import { __ as __32 } from "@wordpress/i18n";
3569
+ var OFFSET_LABEL = __32("Anchor offset", "elementor");
3570
+ var UNITS = ["px", "em", "rem", "vw", "vh"];
3435
3571
  var OffsetField = () => {
3436
- const rowRef = useRef7();
3437
- return /* @__PURE__ */ React54.createElement(StylesField, { bind: "scroll-margin-top" }, /* @__PURE__ */ React54.createElement(Grid10, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRef }, /* @__PURE__ */ React54.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(ControlLabel, null, __28("Anchor offset", "elementor"))), /* @__PURE__ */ React54.createElement(Grid10, { item: true, xs: 6 }, /* @__PURE__ */ React54.createElement(SizeControl4, { units: ["px", "em", "rem", "vw", "vh"], anchorRef: rowRef }))));
3572
+ const rowRef = useRef8(null);
3573
+ return /* @__PURE__ */ React56.createElement(StylesField, { bind: "scroll-margin-top", propDisplayName: OFFSET_LABEL }, /* @__PURE__ */ React56.createElement(StylesFieldLayout, { label: OFFSET_LABEL, ref: rowRef }, /* @__PURE__ */ React56.createElement(SizeControl5, { units: UNITS, anchorRef: rowRef })));
3438
3574
  };
3439
3575
 
3440
3576
  // src/components/style-sections/position-section/position-field.tsx
3441
- import * as React55 from "react";
3577
+ import * as React57 from "react";
3442
3578
  import { SelectControl as SelectControl3 } from "@elementor/editor-controls";
3443
- import { Grid as Grid11 } from "@elementor/ui";
3444
- import { __ as __29 } from "@wordpress/i18n";
3579
+ import { __ as __33 } from "@wordpress/i18n";
3580
+ var POSITION_LABEL = __33("Position", "elementor");
3445
3581
  var positionOptions = [
3446
- { label: __29("Static", "elementor"), value: "static" },
3447
- { label: __29("Relative", "elementor"), value: "relative" },
3448
- { label: __29("Absolute", "elementor"), value: "absolute" },
3449
- { label: __29("Fixed", "elementor"), value: "fixed" },
3450
- { label: __29("Sticky", "elementor"), value: "sticky" }
3582
+ { label: __33("Static", "elementor"), value: "static" },
3583
+ { label: __33("Relative", "elementor"), value: "relative" },
3584
+ { label: __33("Absolute", "elementor"), value: "absolute" },
3585
+ { label: __33("Fixed", "elementor"), value: "fixed" },
3586
+ { label: __33("Sticky", "elementor"), value: "sticky" }
3451
3587
  ];
3452
3588
  var PositionField = ({ onChange }) => {
3453
- return /* @__PURE__ */ React55.createElement(StylesField, { bind: "position" }, /* @__PURE__ */ React55.createElement(Grid11, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React55.createElement(Grid11, { item: true, xs: 6 }, /* @__PURE__ */ React55.createElement(ControlLabel, null, __29("Position", "elementor"))), /* @__PURE__ */ React55.createElement(Grid11, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React55.createElement(SelectControl3, { options: positionOptions, onChange }))));
3589
+ return /* @__PURE__ */ React57.createElement(StylesField, { bind: "position", propDisplayName: POSITION_LABEL }, /* @__PURE__ */ React57.createElement(StylesFieldLayout, { label: POSITION_LABEL }, /* @__PURE__ */ React57.createElement(SelectControl3, { options: positionOptions, onChange })));
3454
3590
  };
3455
3591
 
3456
3592
  // src/components/style-sections/position-section/z-index-field.tsx
3457
- import * as React56 from "react";
3593
+ import * as React58 from "react";
3458
3594
  import { NumberControl as NumberControl3 } from "@elementor/editor-controls";
3459
- import { Grid as Grid12 } from "@elementor/ui";
3460
- import { __ as __30 } from "@wordpress/i18n";
3595
+ import { __ as __34 } from "@wordpress/i18n";
3596
+ var Z_INDEX_LABEL = __34("Z-index", "elementor");
3461
3597
  var ZIndexField = () => {
3462
- return /* @__PURE__ */ React56.createElement(StylesField, { bind: "z-index" }, /* @__PURE__ */ React56.createElement(Grid12, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React56.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(ControlLabel, null, __30("Z-index", "elementor"))), /* @__PURE__ */ React56.createElement(Grid12, { item: true, xs: 6 }, /* @__PURE__ */ React56.createElement(NumberControl3, null))));
3598
+ return /* @__PURE__ */ React58.createElement(StylesField, { bind: "z-index", propDisplayName: Z_INDEX_LABEL }, /* @__PURE__ */ React58.createElement(StylesFieldLayout, { label: Z_INDEX_LABEL }, /* @__PURE__ */ React58.createElement(NumberControl3, null)));
3463
3599
  };
3464
3600
 
3465
3601
  // src/components/style-sections/position-section/position-section.tsx
3466
3602
  var PositionSection = () => {
3467
- const [positionValue] = useStylesField("position");
3468
- const [dimensionsValues, setDimensionsValues] = useStylesFields([
3603
+ const { value: positionValue } = useStylesField("position");
3604
+ const { values: dimensions, setValues: setDimensions } = useStylesFields([
3469
3605
  "inset-block-start",
3470
3606
  "inset-block-end",
3471
3607
  "inset-inline-start",
3472
3608
  "inset-inline-end"
3473
3609
  ]);
3474
3610
  const [dimensionsValuesFromHistory, updateDimensionsHistory, clearDimensionsHistory] = usePersistDimensions();
3475
- const isCssIdFeatureActive = isExperimentActive8("e_v_3_30");
3611
+ const isCssIdFeatureActive = isExperimentActive11("e_v_3_30");
3476
3612
  const onPositionChange = (newPosition, previousPosition) => {
3477
3613
  if (newPosition === "static") {
3478
- if (dimensionsValues) {
3479
- updateDimensionsHistory(dimensionsValues);
3480
- setDimensionsValues({
3614
+ if (dimensions) {
3615
+ updateDimensionsHistory(dimensions);
3616
+ setDimensions({
3481
3617
  "inset-block-start": void 0,
3482
3618
  "inset-block-end": void 0,
3483
3619
  "inset-inline-start": void 0,
@@ -3486,13 +3622,13 @@ var PositionSection = () => {
3486
3622
  }
3487
3623
  } else if (previousPosition === "static") {
3488
3624
  if (dimensionsValuesFromHistory) {
3489
- setDimensionsValues(dimensionsValuesFromHistory);
3625
+ setDimensions(dimensionsValuesFromHistory);
3490
3626
  clearDimensionsHistory();
3491
3627
  }
3492
3628
  }
3493
3629
  };
3494
3630
  const isNotStatic = positionValue && positionValue?.value !== "static";
3495
- return /* @__PURE__ */ React57.createElement(SectionContent, null, /* @__PURE__ */ React57.createElement(PositionField, { onChange: onPositionChange }), isNotStatic ? /* @__PURE__ */ React57.createElement(React57.Fragment, null, /* @__PURE__ */ React57.createElement(DimensionsField, null), /* @__PURE__ */ React57.createElement(ZIndexField, null)) : null, isCssIdFeatureActive && /* @__PURE__ */ React57.createElement(React57.Fragment, null, /* @__PURE__ */ React57.createElement(PanelDivider, null), /* @__PURE__ */ React57.createElement(OffsetField, null)));
3631
+ return /* @__PURE__ */ React59.createElement(SectionContent, null, /* @__PURE__ */ React59.createElement(PositionField, { onChange: onPositionChange }), isNotStatic ? /* @__PURE__ */ React59.createElement(React59.Fragment, null, /* @__PURE__ */ React59.createElement(DimensionsField, null), /* @__PURE__ */ React59.createElement(ZIndexField, null)) : null, isCssIdFeatureActive && /* @__PURE__ */ React59.createElement(React59.Fragment, null, /* @__PURE__ */ React59.createElement(PanelDivider, null), /* @__PURE__ */ React59.createElement(OffsetField, null)));
3496
3632
  };
3497
3633
  var usePersistDimensions = () => {
3498
3634
  const { id: styleDefID, meta } = useStyle();
@@ -3502,50 +3638,55 @@ var usePersistDimensions = () => {
3502
3638
  };
3503
3639
 
3504
3640
  // src/components/style-sections/size-section/size-section.tsx
3505
- import * as React63 from "react";
3506
- import { useRef as useRef8 } from "react";
3507
- import { AspectRatioControl, SizeControl as SizeControl5 } from "@elementor/editor-controls";
3508
- import { isExperimentActive as isExperimentActive10 } from "@elementor/editor-v1-adapters";
3509
- import { Grid as Grid16, Stack as Stack16 } from "@elementor/ui";
3510
- import { __ as __35 } from "@wordpress/i18n";
3641
+ import * as React65 from "react";
3642
+ import { useRef as useRef9 } from "react";
3643
+ import { AspectRatioControl, SizeControl as SizeControl6 } from "@elementor/editor-controls";
3644
+ import { isExperimentActive as isExperimentActive13 } from "@elementor/editor-v1-adapters";
3645
+ import { Grid as Grid4, Stack as Stack13 } from "@elementor/ui";
3646
+ import { __ as __39 } from "@wordpress/i18n";
3511
3647
 
3512
3648
  // src/components/style-tab-collapsible-content.tsx
3513
- import * as React59 from "react";
3514
- import { isExperimentActive as isExperimentActive9 } from "@elementor/editor-v1-adapters";
3649
+ import * as React61 from "react";
3650
+ import { isExperimentActive as isExperimentActive12 } from "@elementor/editor-v1-adapters";
3515
3651
 
3516
3652
  // src/styles-inheritance/components/styles-inheritance-section-indicators.tsx
3517
- import * as React58 from "react";
3518
- import { ELEMENTS_BASE_STYLES_PROVIDER_KEY as ELEMENTS_BASE_STYLES_PROVIDER_KEY4, isElementsStylesProvider as isElementsStylesProvider4 } from "@elementor/editor-styles-repository";
3519
- import { Stack as Stack15, Tooltip as Tooltip7 } from "@elementor/ui";
3520
- import { __ as __31 } from "@wordpress/i18n";
3521
- var orderedVariants = ["global", "local", "overridden"];
3653
+ import * as React60 from "react";
3654
+ import { isElementsStylesProvider as isElementsStylesProvider3 } from "@elementor/editor-styles-repository";
3655
+ import { Stack as Stack12, Tooltip as Tooltip7 } from "@elementor/ui";
3656
+ import { __ as __35 } from "@wordpress/i18n";
3522
3657
  var StylesInheritanceSectionIndicators = ({ fields }) => {
3523
- const { id, meta } = useStyle();
3658
+ const { id, meta, provider } = useStyle();
3524
3659
  const snapshot = useStylesInheritanceSnapshot();
3525
3660
  const snapshotFields = Object.fromEntries(
3526
3661
  Object.entries(snapshot ?? {}).filter(([key]) => fields.includes(key))
3527
3662
  );
3528
- const indicators = getIndicators(snapshotFields, id ?? "", meta);
3529
- if (Object.values(indicators).filter(Boolean).length === 0) {
3663
+ const { hasValues, hasOverrides } = getIndicators(snapshotFields, id ?? "", meta);
3664
+ if (!hasValues && !hasOverrides) {
3530
3665
  return null;
3531
3666
  }
3532
- const hasActualValues = __31("Has effective styles", "elementor");
3533
- const hasOverriddenValues = __31("Has overridden styles", "elementor");
3534
- return /* @__PURE__ */ React58.createElement(Tooltip7, { title: __31("Has styles", "elementor"), placement: "top" }, /* @__PURE__ */ React58.createElement(Stack15, { direction: "row", sx: { "& > *": { marginInlineStart: -0.25 } }, role: "list" }, orderedVariants.map(
3535
- (variant) => indicators[variant] && /* @__PURE__ */ React58.createElement(
3536
- StyleIndicator,
3537
- {
3538
- key: variant,
3539
- variant,
3540
- "data-variant": variant,
3541
- role: "listitem",
3542
- "aria-label": variant === "overridden" ? hasOverriddenValues : hasActualValues
3543
- }
3544
- )
3667
+ const hasValueLabel = __35("Has effective styles", "elementor");
3668
+ const hasOverridesLabel = __35("Has overridden styles", "elementor");
3669
+ return /* @__PURE__ */ React60.createElement(Tooltip7, { title: __35("Has styles", "elementor"), placement: "top" }, /* @__PURE__ */ React60.createElement(Stack12, { direction: "row", sx: { "& > *": { marginInlineStart: -0.25 } }, role: "list" }, hasValues && provider && /* @__PURE__ */ React60.createElement(
3670
+ StyleIndicator,
3671
+ {
3672
+ getColor: getStylesProviderThemeColor(provider.getKey()),
3673
+ "data-variant": isElementsStylesProvider3(provider.getKey()) ? "local" : "global",
3674
+ role: "listitem",
3675
+ "aria-label": hasValueLabel
3676
+ }
3677
+ ), hasOverrides && /* @__PURE__ */ React60.createElement(
3678
+ StyleIndicator,
3679
+ {
3680
+ isOverridden: true,
3681
+ "data-variant": "overridden",
3682
+ role: "listitem",
3683
+ "aria-label": hasOverridesLabel
3684
+ }
3545
3685
  )));
3546
3686
  };
3547
3687
  function getIndicators(snapshotFields, styleId, meta) {
3548
- const indicators = {};
3688
+ let hasValues = false;
3689
+ let hasOverrides = false;
3549
3690
  Object.values(snapshotFields).forEach((inheritanceChain) => {
3550
3691
  const currentStyle = getCurrentStyleFromChain(inheritanceChain, styleId, meta);
3551
3692
  if (!currentStyle) {
@@ -3553,19 +3694,12 @@ function getIndicators(snapshotFields, styleId, meta) {
3553
3694
  }
3554
3695
  const [actualStyle] = inheritanceChain;
3555
3696
  if (currentStyle === actualStyle) {
3556
- const providerKey = actualStyle.provider ?? "";
3557
- if (isElementsStylesProvider4(providerKey)) {
3558
- indicators.local = true;
3559
- return;
3560
- }
3561
- if (providerKey !== ELEMENTS_BASE_STYLES_PROVIDER_KEY4) {
3562
- indicators.global = true;
3563
- }
3564
- return;
3697
+ hasValues = true;
3698
+ } else {
3699
+ hasOverrides = true;
3565
3700
  }
3566
- indicators.overridden = true;
3567
3701
  });
3568
- return indicators;
3702
+ return { hasValues, hasOverrides };
3569
3703
  }
3570
3704
  function getCurrentStyleFromChain(chain, styleId, meta) {
3571
3705
  return chain.find(
@@ -3580,80 +3714,69 @@ function getCurrentStyleFromChain(chain, styleId, meta) {
3580
3714
 
3581
3715
  // src/components/style-tab-collapsible-content.tsx
3582
3716
  var StyleTabCollapsibleContent = ({ fields = [], children }) => {
3583
- return /* @__PURE__ */ React59.createElement(CollapsibleContent, { titleEnd: getStylesInheritanceIndicators(fields) }, children);
3717
+ return /* @__PURE__ */ React61.createElement(CollapsibleContent, { titleEnd: getStylesInheritanceIndicators(fields) }, children);
3584
3718
  };
3585
3719
  function getStylesInheritanceIndicators(fields) {
3586
- const isUsingFieldsIndicators = isExperimentActive9(EXPERIMENTAL_FEATURES.V_3_30);
3720
+ const isUsingFieldsIndicators = isExperimentActive12(EXPERIMENTAL_FEATURES.V_3_30);
3587
3721
  if (fields.length === 0 || !isUsingFieldsIndicators) {
3588
3722
  return null;
3589
3723
  }
3590
- return (isOpen) => !isOpen ? /* @__PURE__ */ React59.createElement(StylesInheritanceSectionIndicators, { fields }) : null;
3724
+ return (isOpen) => !isOpen ? /* @__PURE__ */ React61.createElement(StylesInheritanceSectionIndicators, { fields }) : null;
3591
3725
  }
3592
3726
 
3593
3727
  // src/components/style-sections/size-section/object-fit-field.tsx
3594
- import * as React60 from "react";
3728
+ import * as React62 from "react";
3595
3729
  import { SelectControl as SelectControl4 } from "@elementor/editor-controls";
3596
- import { Grid as Grid13 } from "@elementor/ui";
3597
- import { __ as __32 } from "@wordpress/i18n";
3730
+ import { __ as __36 } from "@wordpress/i18n";
3731
+ var OBJECT_FIT_LABEL = __36("Object fit", "elementor");
3598
3732
  var positionOptions2 = [
3599
- { label: __32("Fill", "elementor"), value: "fill" },
3600
- { label: __32("Cover", "elementor"), value: "cover" },
3601
- { label: __32("Contain", "elementor"), value: "contain" },
3602
- { label: __32("None", "elementor"), value: "none" },
3603
- { label: __32("Scale down", "elementor"), value: "scale-down" }
3733
+ { label: __36("Fill", "elementor"), value: "fill" },
3734
+ { label: __36("Cover", "elementor"), value: "cover" },
3735
+ { label: __36("Contain", "elementor"), value: "contain" },
3736
+ { label: __36("None", "elementor"), value: "none" },
3737
+ { label: __36("Scale down", "elementor"), value: "scale-down" }
3604
3738
  ];
3605
3739
  var ObjectFitField = () => {
3606
- return /* @__PURE__ */ React60.createElement(StylesField, { bind: "object-fit" }, /* @__PURE__ */ React60.createElement(Grid13, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React60.createElement(Grid13, { item: true, xs: 6 }, /* @__PURE__ */ React60.createElement(ControlLabel, null, __32("Object fit", "elementor"))), /* @__PURE__ */ React60.createElement(Grid13, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React60.createElement(SelectControl4, { options: positionOptions2 }))));
3740
+ return /* @__PURE__ */ React62.createElement(StylesField, { bind: "object-fit", propDisplayName: OBJECT_FIT_LABEL }, /* @__PURE__ */ React62.createElement(StylesFieldLayout, { label: OBJECT_FIT_LABEL }, /* @__PURE__ */ React62.createElement(SelectControl4, { options: positionOptions2 })));
3607
3741
  };
3608
3742
 
3609
3743
  // src/components/style-sections/size-section/object-position-field.tsx
3610
- import * as React61 from "react";
3611
- import { SelectControl as SelectControl5 } from "@elementor/editor-controls";
3612
- import { Grid as Grid14 } from "@elementor/ui";
3613
- import { __ as __33 } from "@wordpress/i18n";
3614
- var positionOptions3 = [
3615
- { label: __33("Center center", "elementor"), value: "center center" },
3616
- { label: __33("Center left", "elementor"), value: "center left" },
3617
- { label: __33("Center right", "elementor"), value: "center right" },
3618
- { label: __33("Top center", "elementor"), value: "top center" },
3619
- { label: __33("Top left", "elementor"), value: "top left" },
3620
- { label: __33("Top right", "elementor"), value: "top right" },
3621
- { label: __33("Bottom center", "elementor"), value: "bottom center" },
3622
- { label: __33("Bottom left", "elementor"), value: "bottom left" },
3623
- { label: __33("Bottom right", "elementor"), value: "bottom right" }
3624
- ];
3744
+ import * as React63 from "react";
3745
+ import { PositionControl } from "@elementor/editor-controls";
3746
+ import { __ as __37 } from "@wordpress/i18n";
3747
+ var OBJECT_POSITION_LABEL = __37("Object position", "elementor");
3625
3748
  var ObjectPositionField = () => {
3626
- return /* @__PURE__ */ React61.createElement(StylesField, { bind: "object-position" }, /* @__PURE__ */ React61.createElement(Grid14, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React61.createElement(Grid14, { item: true, xs: 6 }, /* @__PURE__ */ React61.createElement(ControlLabel, null, __33("Object position", "elementor"))), /* @__PURE__ */ React61.createElement(Grid14, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React61.createElement(SelectControl5, { options: positionOptions3 }))));
3749
+ return /* @__PURE__ */ React63.createElement(StylesField, { bind: "object-position", propDisplayName: OBJECT_POSITION_LABEL }, /* @__PURE__ */ React63.createElement(PositionControl, null));
3627
3750
  };
3628
3751
 
3629
3752
  // src/components/style-sections/size-section/overflow-field.tsx
3630
- import * as React62 from "react";
3753
+ import * as React64 from "react";
3631
3754
  import { ToggleControl as ToggleControl8 } from "@elementor/editor-controls";
3632
3755
  import { EyeIcon, EyeOffIcon, LetterAIcon } from "@elementor/icons";
3633
- import { Grid as Grid15 } from "@elementor/ui";
3634
- import { __ as __34 } from "@wordpress/i18n";
3756
+ import { __ as __38 } from "@wordpress/i18n";
3757
+ var OVERFLOW_LABEL = __38("Overflow", "elementor");
3635
3758
  var options6 = [
3636
3759
  {
3637
3760
  value: "visible",
3638
- label: __34("Visible", "elementor"),
3639
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(EyeIcon, { fontSize: size }),
3761
+ label: __38("Visible", "elementor"),
3762
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(EyeIcon, { fontSize: size }),
3640
3763
  showTooltip: true
3641
3764
  },
3642
3765
  {
3643
3766
  value: "hidden",
3644
- label: __34("Hidden", "elementor"),
3645
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(EyeOffIcon, { fontSize: size }),
3767
+ label: __38("Hidden", "elementor"),
3768
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(EyeOffIcon, { fontSize: size }),
3646
3769
  showTooltip: true
3647
3770
  },
3648
3771
  {
3649
3772
  value: "auto",
3650
- label: __34("Auto", "elementor"),
3651
- renderContent: ({ size }) => /* @__PURE__ */ React62.createElement(LetterAIcon, { fontSize: size }),
3773
+ label: __38("Auto", "elementor"),
3774
+ renderContent: ({ size }) => /* @__PURE__ */ React64.createElement(LetterAIcon, { fontSize: size }),
3652
3775
  showTooltip: true
3653
3776
  }
3654
3777
  ];
3655
3778
  var OverflowField = () => {
3656
- return /* @__PURE__ */ React62.createElement(StylesField, { bind: "overflow" }, /* @__PURE__ */ React62.createElement(Grid15, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React62.createElement(Grid15, { item: true, xs: 6 }, /* @__PURE__ */ React62.createElement(ControlLabel, null, __34("Overflow", "elementor"))), /* @__PURE__ */ React62.createElement(Grid15, { item: true, xs: 6, sx: { display: "flex", justifyContent: "flex-end" } }, /* @__PURE__ */ React62.createElement(ToggleControl8, { options: options6 }))));
3779
+ return /* @__PURE__ */ React64.createElement(StylesField, { bind: "overflow", propDisplayName: OVERFLOW_LABEL }, /* @__PURE__ */ React64.createElement(StylesFieldLayout, { label: OVERFLOW_LABEL }, /* @__PURE__ */ React64.createElement(ToggleControl8, { options: options6 })));
3657
3780
  };
3658
3781
 
3659
3782
  // src/components/style-sections/size-section/size-section.tsx
@@ -3662,98 +3785,100 @@ var CssSizeProps = [
3662
3785
  [
3663
3786
  {
3664
3787
  bind: "width",
3665
- label: __35("Width", "elementor")
3788
+ label: __39("Width", "elementor")
3666
3789
  },
3667
3790
  {
3668
3791
  bind: "height",
3669
- label: __35("Height", "elementor")
3792
+ label: __39("Height", "elementor")
3670
3793
  }
3671
3794
  ],
3672
3795
  [
3673
3796
  {
3674
3797
  bind: "min-width",
3675
- label: __35("Min width", "elementor")
3798
+ label: __39("Min width", "elementor")
3676
3799
  },
3677
3800
  {
3678
3801
  bind: "min-height",
3679
- label: __35("Min height", "elementor")
3802
+ label: __39("Min height", "elementor")
3680
3803
  }
3681
3804
  ],
3682
3805
  [
3683
3806
  {
3684
3807
  bind: "max-width",
3685
- label: __35("Max width", "elementor")
3808
+ label: __39("Max width", "elementor")
3686
3809
  },
3687
3810
  {
3688
3811
  bind: "max-height",
3689
- label: __35("Max height", "elementor")
3812
+ label: __39("Max height", "elementor")
3690
3813
  }
3691
3814
  ]
3692
3815
  ];
3816
+ var ASPECT_RATIO_LABEL = __39("Aspect Ratio", "elementor");
3693
3817
  var SizeSection = () => {
3694
- const [fitValue] = useStylesField("object-fit");
3818
+ const { value: fitValue } = useStylesField("object-fit");
3695
3819
  const isNotFill = fitValue && fitValue?.value !== "fill";
3696
- const gridRowRefs = [useRef8(), useRef8(), useRef8()];
3697
- const isVersion330Active = isExperimentActive10(EXPERIMENT_ID);
3698
- return /* @__PURE__ */ React63.createElement(SectionContent, null, CssSizeProps.map((row, rowIndex) => /* @__PURE__ */ React63.createElement(Grid16, { key: rowIndex, container: true, gap: 2, flexWrap: "nowrap", ref: gridRowRefs[rowIndex] }, row.map((props) => /* @__PURE__ */ React63.createElement(Grid16, { item: true, xs: 6, key: props.bind }, /* @__PURE__ */ React63.createElement(SizeField, { ...props, rowRef: gridRowRefs[rowIndex], extendedOptions: ["auto"] }))))), /* @__PURE__ */ React63.createElement(PanelDivider, null), /* @__PURE__ */ React63.createElement(Stack16, null, /* @__PURE__ */ React63.createElement(OverflowField, null)), isVersion330Active && /* @__PURE__ */ React63.createElement(StyleTabCollapsibleContent, { fields: ["aspect-ratio", "object-fit"] }, /* @__PURE__ */ React63.createElement(Stack16, { gap: 2 }, /* @__PURE__ */ React63.createElement(StylesField, { bind: "aspect-ratio" }, /* @__PURE__ */ React63.createElement(AspectRatioControl, { label: __35("Aspect Ratio", "elementor") })), /* @__PURE__ */ React63.createElement(PanelDivider, null), /* @__PURE__ */ React63.createElement(ObjectFitField, null), isNotFill && /* @__PURE__ */ React63.createElement(Grid16, { item: true, xs: 6 }, /* @__PURE__ */ React63.createElement(ObjectPositionField, null)))));
3820
+ const gridRowRefs = [useRef9(null), useRef9(null), useRef9(null)];
3821
+ const isVersion330Active = isExperimentActive13(EXPERIMENT_ID);
3822
+ return /* @__PURE__ */ React65.createElement(SectionContent, null, CssSizeProps.map((row, rowIndex) => /* @__PURE__ */ React65.createElement(Grid4, { key: rowIndex, container: true, gap: 2, flexWrap: "nowrap", ref: gridRowRefs[rowIndex] }, row.map((props) => /* @__PURE__ */ React65.createElement(Grid4, { item: true, xs: 6, key: props.bind }, /* @__PURE__ */ React65.createElement(SizeField, { ...props, rowRef: gridRowRefs[rowIndex], extendedOptions: ["auto"] }))))), /* @__PURE__ */ React65.createElement(PanelDivider, null), /* @__PURE__ */ React65.createElement(Stack13, null, /* @__PURE__ */ React65.createElement(OverflowField, null)), isVersion330Active && /* @__PURE__ */ React65.createElement(StyleTabCollapsibleContent, { fields: ["aspect-ratio", "object-fit"] }, /* @__PURE__ */ React65.createElement(Stack13, { gap: 2, pt: 2 }, /* @__PURE__ */ React65.createElement(StylesField, { bind: "aspect-ratio", propDisplayName: ASPECT_RATIO_LABEL }, /* @__PURE__ */ React65.createElement(AspectRatioControl, { label: ASPECT_RATIO_LABEL })), /* @__PURE__ */ React65.createElement(PanelDivider, null), /* @__PURE__ */ React65.createElement(ObjectFitField, null), isNotFill && /* @__PURE__ */ React65.createElement(Grid4, { item: true, xs: 6 }, /* @__PURE__ */ React65.createElement(ObjectPositionField, null)))));
3699
3823
  };
3700
3824
  var SizeField = ({ label, bind, rowRef, extendedOptions }) => {
3701
- return /* @__PURE__ */ React63.createElement(StylesField, { bind }, /* @__PURE__ */ React63.createElement(Grid16, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React63.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React63.createElement(ControlLabel, null, label)), /* @__PURE__ */ React63.createElement(Grid16, { item: true, xs: 12 }, /* @__PURE__ */ React63.createElement(SizeControl5, { extendedOptions, anchorRef: rowRef }))));
3825
+ return /* @__PURE__ */ React65.createElement(StylesField, { bind, propDisplayName: label }, /* @__PURE__ */ React65.createElement(Grid4, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React65.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React65.createElement(ControlLabel, null, label)), /* @__PURE__ */ React65.createElement(Grid4, { item: true, xs: 12 }, /* @__PURE__ */ React65.createElement(SizeControl6, { extendedOptions, anchorRef: rowRef }))));
3702
3826
  };
3703
3827
 
3704
3828
  // src/components/style-sections/spacing-section/spacing-section.tsx
3705
- import * as React64 from "react";
3829
+ import * as React66 from "react";
3706
3830
  import { LinkedDimensionsControl } from "@elementor/editor-controls";
3707
- import { __ as __36 } from "@wordpress/i18n";
3831
+ import { __ as __40 } from "@wordpress/i18n";
3832
+ var MARGIN_LABEL = __40("Margin", "elementor");
3833
+ var PADDING_LABEL = __40("Padding", "elementor");
3708
3834
  var SpacingSection = () => {
3709
3835
  const { isSiteRtl } = useDirection();
3710
- return /* @__PURE__ */ React64.createElement(SectionContent, null, /* @__PURE__ */ React64.createElement(StylesField, { bind: "margin" }, /* @__PURE__ */ React64.createElement(
3836
+ return /* @__PURE__ */ React66.createElement(SectionContent, null, /* @__PURE__ */ React66.createElement(StylesField, { bind: "margin", propDisplayName: MARGIN_LABEL }, /* @__PURE__ */ React66.createElement(
3711
3837
  LinkedDimensionsControl,
3712
3838
  {
3713
- label: __36("Margin", "elementor"),
3839
+ label: MARGIN_LABEL,
3714
3840
  isSiteRtl,
3715
3841
  extendedOptions: ["auto"]
3716
3842
  }
3717
- )), /* @__PURE__ */ React64.createElement(PanelDivider, null), /* @__PURE__ */ React64.createElement(StylesField, { bind: "padding" }, /* @__PURE__ */ React64.createElement(LinkedDimensionsControl, { label: __36("Padding", "elementor"), isSiteRtl })));
3843
+ )), /* @__PURE__ */ React66.createElement(PanelDivider, null), /* @__PURE__ */ React66.createElement(StylesField, { bind: "padding", propDisplayName: PADDING_LABEL }, /* @__PURE__ */ React66.createElement(LinkedDimensionsControl, { label: PADDING_LABEL, isSiteRtl })));
3718
3844
  };
3719
3845
 
3720
3846
  // src/components/style-sections/typography-section/typography-section.tsx
3721
- import * as React80 from "react";
3722
- import { isExperimentActive as isExperimentActive11 } from "@elementor/editor-v1-adapters";
3847
+ import * as React82 from "react";
3848
+ import { isExperimentActive as isExperimentActive14 } from "@elementor/editor-v1-adapters";
3723
3849
 
3724
3850
  // src/components/style-sections/typography-section/column-count-field.tsx
3725
- import * as React65 from "react";
3851
+ import * as React67 from "react";
3726
3852
  import { NumberControl as NumberControl4 } from "@elementor/editor-controls";
3727
- import { Grid as Grid17 } from "@elementor/ui";
3728
- import { __ as __37 } from "@wordpress/i18n";
3853
+ import { __ as __41 } from "@wordpress/i18n";
3854
+ var COLUMN_COUNT_LABEL = __41("Columns", "elementor");
3729
3855
  var ColumnCountField = () => {
3730
- return /* @__PURE__ */ React65.createElement(StylesField, { bind: "column-count" }, /* @__PURE__ */ React65.createElement(Grid17, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React65.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React65.createElement(ControlLabel, null, __37("Columns", "elementor"))), /* @__PURE__ */ React65.createElement(Grid17, { item: true, xs: 6 }, /* @__PURE__ */ React65.createElement(NumberControl4, { shouldForceInt: true, min: 0, step: 1 }))));
3856
+ return /* @__PURE__ */ React67.createElement(StylesField, { bind: "column-count", propDisplayName: COLUMN_COUNT_LABEL }, /* @__PURE__ */ React67.createElement(StylesFieldLayout, { label: COLUMN_COUNT_LABEL }, /* @__PURE__ */ React67.createElement(NumberControl4, { shouldForceInt: true, min: 0, step: 1 })));
3731
3857
  };
3732
3858
 
3733
3859
  // src/components/style-sections/typography-section/column-gap-field.tsx
3734
- import * as React66 from "react";
3735
- import { useRef as useRef9 } from "react";
3736
- import { SizeControl as SizeControl6 } from "@elementor/editor-controls";
3737
- import { Grid as Grid18 } from "@elementor/ui";
3738
- import { __ as __38 } from "@wordpress/i18n";
3860
+ import * as React68 from "react";
3861
+ import { useRef as useRef10 } from "react";
3862
+ import { SizeControl as SizeControl7 } from "@elementor/editor-controls";
3863
+ import { __ as __42 } from "@wordpress/i18n";
3864
+ var COLUMN_GAP_LABEL = __42("Column gap", "elementor");
3739
3865
  var ColumnGapField = () => {
3740
- const rowRef = useRef9();
3741
- return /* @__PURE__ */ React66.createElement(StylesField, { bind: "column-gap" }, /* @__PURE__ */ React66.createElement(Grid18, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRef }, /* @__PURE__ */ React66.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React66.createElement(ControlLabel, null, __38("Column gap", "elementor"))), /* @__PURE__ */ React66.createElement(Grid18, { item: true, xs: 6 }, /* @__PURE__ */ React66.createElement(SizeControl6, { anchorRef: rowRef }))));
3866
+ const rowRef = useRef10(null);
3867
+ return /* @__PURE__ */ React68.createElement(StylesField, { bind: "column-gap", propDisplayName: COLUMN_GAP_LABEL }, /* @__PURE__ */ React68.createElement(StylesFieldLayout, { label: COLUMN_GAP_LABEL, ref: rowRef }, /* @__PURE__ */ React68.createElement(SizeControl7, { anchorRef: rowRef })));
3742
3868
  };
3743
3869
 
3744
3870
  // src/components/style-sections/typography-section/font-family-field.tsx
3745
- import * as React67 from "react";
3871
+ import * as React69 from "react";
3746
3872
  import { FontFamilyControl } from "@elementor/editor-controls";
3747
- import { Grid as Grid19 } from "@elementor/ui";
3748
- import { __ as __40 } from "@wordpress/i18n";
3873
+ import { __ as __44 } from "@wordpress/i18n";
3749
3874
 
3750
3875
  // src/components/style-sections/typography-section/hooks/use-font-families.ts
3751
- import { useMemo as useMemo6 } from "react";
3752
- import { __ as __39 } from "@wordpress/i18n";
3876
+ import { useMemo as useMemo7 } from "react";
3877
+ import { __ as __43 } from "@wordpress/i18n";
3753
3878
  var supportedCategories = {
3754
- system: __39("System", "elementor"),
3755
- custom: __39("Custom Fonts", "elementor"),
3756
- googlefonts: __39("Google Fonts", "elementor")
3879
+ system: __43("System", "elementor"),
3880
+ custom: __43("Custom Fonts", "elementor"),
3881
+ googlefonts: __43("Google Fonts", "elementor")
3757
3882
  };
3758
3883
  var getFontFamilies = () => {
3759
3884
  const { controls } = getElementorConfig();
@@ -3765,7 +3890,7 @@ var getFontFamilies = () => {
3765
3890
  };
3766
3891
  var useFontFamilies = () => {
3767
3892
  const fontFamilies = getFontFamilies();
3768
- return useMemo6(() => {
3893
+ return useMemo7(() => {
3769
3894
  const categoriesOrder = ["system", "custom", "googlefonts"];
3770
3895
  return Object.entries(fontFamilies || {}).reduce((acc, [font, category]) => {
3771
3896
  if (!supportedCategories[category]) {
@@ -3785,199 +3910,204 @@ var useFontFamilies = () => {
3785
3910
  };
3786
3911
 
3787
3912
  // src/components/style-sections/typography-section/font-family-field.tsx
3913
+ var FONT_FAMILY_LABEL = __44("Font family", "elementor");
3788
3914
  var FontFamilyField = () => {
3789
3915
  const fontFamilies = useFontFamilies();
3916
+ const sectionWidth = useSectionWidth();
3790
3917
  if (fontFamilies.length === 0) {
3791
3918
  return null;
3792
3919
  }
3793
- return /* @__PURE__ */ React67.createElement(StylesField, { bind: "font-family" }, /* @__PURE__ */ React67.createElement(Grid19, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React67.createElement(Grid19, { item: true, xs: 6 }, /* @__PURE__ */ React67.createElement(ControlLabel, null, __40("Font family", "elementor"))), /* @__PURE__ */ React67.createElement(Grid19, { item: true, xs: 6, sx: { minWidth: 0 } }, /* @__PURE__ */ React67.createElement(FontFamilyControl, { fontFamilies }))));
3920
+ return /* @__PURE__ */ React69.createElement(StylesField, { bind: "font-family", propDisplayName: FONT_FAMILY_LABEL }, /* @__PURE__ */ React69.createElement(StylesFieldLayout, { label: FONT_FAMILY_LABEL }, /* @__PURE__ */ React69.createElement(FontFamilyControl, { fontFamilies, sectionWidth })));
3794
3921
  };
3795
3922
 
3796
3923
  // src/components/style-sections/typography-section/font-size-field.tsx
3797
- import * as React68 from "react";
3798
- import { useRef as useRef10 } from "react";
3799
- import { SizeControl as SizeControl7 } from "@elementor/editor-controls";
3800
- import { Grid as Grid20 } from "@elementor/ui";
3801
- import { __ as __41 } from "@wordpress/i18n";
3924
+ import * as React70 from "react";
3925
+ import { useRef as useRef11 } from "react";
3926
+ import { SizeControl as SizeControl8 } from "@elementor/editor-controls";
3927
+ import { __ as __45 } from "@wordpress/i18n";
3928
+ var FONT_SIZE_LABEL = __45("Font size", "elementor");
3802
3929
  var FontSizeField = () => {
3803
- const rowRef = useRef10();
3804
- return /* @__PURE__ */ React68.createElement(StylesField, { bind: "font-size" }, /* @__PURE__ */ React68.createElement(Grid20, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRef }, /* @__PURE__ */ React68.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React68.createElement(ControlLabel, null, __41("Font size", "elementor"))), /* @__PURE__ */ React68.createElement(Grid20, { item: true, xs: 6 }, /* @__PURE__ */ React68.createElement(SizeControl7, { anchorRef: rowRef }))));
3930
+ const rowRef = useRef11(null);
3931
+ return /* @__PURE__ */ React70.createElement(StylesField, { bind: "font-size", propDisplayName: FONT_SIZE_LABEL }, /* @__PURE__ */ React70.createElement(StylesFieldLayout, { label: FONT_SIZE_LABEL, ref: rowRef }, /* @__PURE__ */ React70.createElement(SizeControl8, { anchorRef: rowRef })));
3805
3932
  };
3806
3933
 
3807
3934
  // src/components/style-sections/typography-section/font-style-field.tsx
3808
- import * as React69 from "react";
3809
- import { ControlFormLabel as ControlFormLabel5, ToggleControl as ToggleControl9 } from "@elementor/editor-controls";
3935
+ import * as React71 from "react";
3936
+ import { ToggleControl as ToggleControl9 } from "@elementor/editor-controls";
3810
3937
  import { ItalicIcon, MinusIcon as MinusIcon2 } from "@elementor/icons";
3811
- import { Grid as Grid21 } from "@elementor/ui";
3812
- import { __ as __42 } from "@wordpress/i18n";
3938
+ import { __ as __46 } from "@wordpress/i18n";
3939
+ var FONT_STYLE_LABEL = __46("Font style", "elementor");
3813
3940
  var options7 = [
3814
3941
  {
3815
3942
  value: "normal",
3816
- label: __42("Normal", "elementor"),
3817
- renderContent: ({ size }) => /* @__PURE__ */ React69.createElement(MinusIcon2, { fontSize: size }),
3943
+ label: __46("Normal", "elementor"),
3944
+ renderContent: ({ size }) => /* @__PURE__ */ React71.createElement(MinusIcon2, { fontSize: size }),
3818
3945
  showTooltip: true
3819
3946
  },
3820
3947
  {
3821
3948
  value: "italic",
3822
- label: __42("Italic", "elementor"),
3823
- renderContent: ({ size }) => /* @__PURE__ */ React69.createElement(ItalicIcon, { fontSize: size }),
3949
+ label: __46("Italic", "elementor"),
3950
+ renderContent: ({ size }) => /* @__PURE__ */ React71.createElement(ItalicIcon, { fontSize: size }),
3824
3951
  showTooltip: true
3825
3952
  }
3826
3953
  ];
3827
- var FontStyleField = () => /* @__PURE__ */ React69.createElement(StylesField, { bind: "font-style" }, /* @__PURE__ */ React69.createElement(Grid21, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React69.createElement(Grid21, { item: true, xs: 6 }, /* @__PURE__ */ React69.createElement(ControlFormLabel5, null, __42("Font style", "elementor"))), /* @__PURE__ */ React69.createElement(Grid21, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React69.createElement(ToggleControl9, { options: options7 }))));
3954
+ var FontStyleField = () => {
3955
+ return /* @__PURE__ */ React71.createElement(StylesField, { bind: "font-style", propDisplayName: FONT_STYLE_LABEL }, /* @__PURE__ */ React71.createElement(StylesFieldLayout, { label: FONT_STYLE_LABEL }, /* @__PURE__ */ React71.createElement(ToggleControl9, { options: options7 })));
3956
+ };
3828
3957
 
3829
3958
  // src/components/style-sections/typography-section/font-weight-field.tsx
3830
- import * as React70 from "react";
3831
- import { SelectControl as SelectControl6 } from "@elementor/editor-controls";
3832
- import { Grid as Grid22 } from "@elementor/ui";
3833
- import { __ as __43 } from "@wordpress/i18n";
3959
+ import * as React72 from "react";
3960
+ import { SelectControl as SelectControl5 } from "@elementor/editor-controls";
3961
+ import { __ as __47 } from "@wordpress/i18n";
3962
+ var FONT_WEIGHT_LABEL = __47("Font weight", "elementor");
3834
3963
  var fontWeightOptions = [
3835
- { value: "100", label: __43("100 - Thin", "elementor") },
3836
- { value: "200", label: __43("200 - Extra light", "elementor") },
3837
- { value: "300", label: __43("300 - Light", "elementor") },
3838
- { value: "400", label: __43("400 - Normal", "elementor") },
3839
- { value: "500", label: __43("500 - Medium", "elementor") },
3840
- { value: "600", label: __43("600 - Semi bold", "elementor") },
3841
- { value: "700", label: __43("700 - Bold", "elementor") },
3842
- { value: "800", label: __43("800 - Extra bold", "elementor") },
3843
- { value: "900", label: __43("900 - Black", "elementor") }
3964
+ { value: "100", label: __47("100 - Thin", "elementor") },
3965
+ { value: "200", label: __47("200 - Extra light", "elementor") },
3966
+ { value: "300", label: __47("300 - Light", "elementor") },
3967
+ { value: "400", label: __47("400 - Normal", "elementor") },
3968
+ { value: "500", label: __47("500 - Medium", "elementor") },
3969
+ { value: "600", label: __47("600 - Semi bold", "elementor") },
3970
+ { value: "700", label: __47("700 - Bold", "elementor") },
3971
+ { value: "800", label: __47("800 - Extra bold", "elementor") },
3972
+ { value: "900", label: __47("900 - Black", "elementor") }
3844
3973
  ];
3845
3974
  var FontWeightField = () => {
3846
- return /* @__PURE__ */ React70.createElement(StylesField, { bind: "font-weight" }, /* @__PURE__ */ React70.createElement(Grid22, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React70.createElement(Grid22, { item: true, xs: 6 }, /* @__PURE__ */ React70.createElement(ControlLabel, null, __43("Font weight", "elementor"))), /* @__PURE__ */ React70.createElement(Grid22, { item: true, xs: 6, sx: { overflow: "hidden" } }, /* @__PURE__ */ React70.createElement(SelectControl6, { options: fontWeightOptions }))));
3975
+ return /* @__PURE__ */ React72.createElement(StylesField, { bind: "font-weight", propDisplayName: FONT_WEIGHT_LABEL }, /* @__PURE__ */ React72.createElement(StylesFieldLayout, { label: FONT_WEIGHT_LABEL }, /* @__PURE__ */ React72.createElement(SelectControl5, { options: fontWeightOptions })));
3847
3976
  };
3848
3977
 
3849
3978
  // src/components/style-sections/typography-section/letter-spacing-field.tsx
3850
- import * as React71 from "react";
3851
- import { useRef as useRef11 } from "react";
3852
- import { SizeControl as SizeControl8 } from "@elementor/editor-controls";
3853
- import { Grid as Grid23 } from "@elementor/ui";
3854
- import { __ as __44 } from "@wordpress/i18n";
3979
+ import * as React73 from "react";
3980
+ import { useRef as useRef12 } from "react";
3981
+ import { SizeControl as SizeControl9 } from "@elementor/editor-controls";
3982
+ import { __ as __48 } from "@wordpress/i18n";
3983
+ var LETTER_SPACING_LABEL = __48("Letter spacing", "elementor");
3855
3984
  var LetterSpacingField = () => {
3856
- const rowRef = useRef11();
3857
- return /* @__PURE__ */ React71.createElement(StylesField, { bind: "letter-spacing" }, /* @__PURE__ */ React71.createElement(Grid23, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRef }, /* @__PURE__ */ React71.createElement(Grid23, { item: true, xs: 6 }, /* @__PURE__ */ React71.createElement(ControlLabel, null, __44("Letter spacing", "elementor"))), /* @__PURE__ */ React71.createElement(Grid23, { item: true, xs: 6 }, /* @__PURE__ */ React71.createElement(SizeControl8, { anchorRef: rowRef }))));
3985
+ const rowRef = useRef12(null);
3986
+ return /* @__PURE__ */ React73.createElement(StylesField, { bind: "letter-spacing", propDisplayName: LETTER_SPACING_LABEL }, /* @__PURE__ */ React73.createElement(StylesFieldLayout, { label: LETTER_SPACING_LABEL, ref: rowRef }, /* @__PURE__ */ React73.createElement(SizeControl9, { anchorRef: rowRef })));
3858
3987
  };
3859
3988
 
3860
3989
  // src/components/style-sections/typography-section/line-height-field.tsx
3861
- import * as React72 from "react";
3862
- import { useRef as useRef12 } from "react";
3863
- import { SizeControl as SizeControl9 } from "@elementor/editor-controls";
3864
- import { Grid as Grid24 } from "@elementor/ui";
3865
- import { __ as __45 } from "@wordpress/i18n";
3990
+ import * as React74 from "react";
3991
+ import { useRef as useRef13 } from "react";
3992
+ import { SizeControl as SizeControl10 } from "@elementor/editor-controls";
3993
+ import { __ as __49 } from "@wordpress/i18n";
3994
+ var LINE_HEIGHT_LABEL = __49("Line height", "elementor");
3866
3995
  var LineHeightField = () => {
3867
- const rowRef = useRef12();
3868
- return /* @__PURE__ */ React72.createElement(StylesField, { bind: "line-height" }, /* @__PURE__ */ React72.createElement(Grid24, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRef }, /* @__PURE__ */ React72.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React72.createElement(ControlLabel, null, __45("Line height", "elementor"))), /* @__PURE__ */ React72.createElement(Grid24, { item: true, xs: 6 }, /* @__PURE__ */ React72.createElement(SizeControl9, { anchorRef: rowRef }))));
3996
+ const rowRef = useRef13(null);
3997
+ return /* @__PURE__ */ React74.createElement(StylesField, { bind: "line-height", propDisplayName: LINE_HEIGHT_LABEL }, /* @__PURE__ */ React74.createElement(StylesFieldLayout, { label: LINE_HEIGHT_LABEL, ref: rowRef }, /* @__PURE__ */ React74.createElement(SizeControl10, { anchorRef: rowRef })));
3869
3998
  };
3870
3999
 
3871
4000
  // src/components/style-sections/typography-section/text-alignment-field.tsx
3872
- import * as React73 from "react";
4001
+ import * as React75 from "react";
3873
4002
  import { ToggleControl as ToggleControl10 } from "@elementor/editor-controls";
3874
4003
  import { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from "@elementor/icons";
3875
- import { Grid as Grid25, withDirection as withDirection9 } from "@elementor/ui";
3876
- import { __ as __46 } from "@wordpress/i18n";
4004
+ import { withDirection as withDirection9 } from "@elementor/ui";
4005
+ import { __ as __50 } from "@wordpress/i18n";
4006
+ var TEXT_ALIGNMENT_LABEL = __50("Text align", "elementor");
3877
4007
  var AlignStartIcon = withDirection9(AlignLeftIcon);
3878
4008
  var AlignEndIcon = withDirection9(AlignRightIcon);
3879
4009
  var options8 = [
3880
4010
  {
3881
4011
  value: "start",
3882
- label: __46("Start", "elementor"),
3883
- renderContent: ({ size }) => /* @__PURE__ */ React73.createElement(AlignStartIcon, { fontSize: size }),
4012
+ label: __50("Start", "elementor"),
4013
+ renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(AlignStartIcon, { fontSize: size }),
3884
4014
  showTooltip: true
3885
4015
  },
3886
4016
  {
3887
4017
  value: "center",
3888
- label: __46("Center", "elementor"),
3889
- renderContent: ({ size }) => /* @__PURE__ */ React73.createElement(AlignCenterIcon, { fontSize: size }),
4018
+ label: __50("Center", "elementor"),
4019
+ renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(AlignCenterIcon, { fontSize: size }),
3890
4020
  showTooltip: true
3891
4021
  },
3892
4022
  {
3893
4023
  value: "end",
3894
- label: __46("End", "elementor"),
3895
- renderContent: ({ size }) => /* @__PURE__ */ React73.createElement(AlignEndIcon, { fontSize: size }),
4024
+ label: __50("End", "elementor"),
4025
+ renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(AlignEndIcon, { fontSize: size }),
3896
4026
  showTooltip: true
3897
4027
  },
3898
4028
  {
3899
4029
  value: "justify",
3900
- label: __46("Justify", "elementor"),
3901
- renderContent: ({ size }) => /* @__PURE__ */ React73.createElement(AlignJustifiedIcon, { fontSize: size }),
4030
+ label: __50("Justify", "elementor"),
4031
+ renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(AlignJustifiedIcon, { fontSize: size }),
3902
4032
  showTooltip: true
3903
4033
  }
3904
4034
  ];
3905
4035
  var TextAlignmentField = () => {
3906
- return /* @__PURE__ */ React73.createElement(UiProviders, null, /* @__PURE__ */ React73.createElement(StylesField, { bind: "text-align" }, /* @__PURE__ */ React73.createElement(Grid25, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React73.createElement(Grid25, { item: true, xs: 6 }, /* @__PURE__ */ React73.createElement(ControlLabel, null, __46("Text align", "elementor"))), /* @__PURE__ */ React73.createElement(Grid25, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React73.createElement(ToggleControl10, { options: options8 })))));
4036
+ return /* @__PURE__ */ React75.createElement(StylesField, { bind: "text-align", propDisplayName: TEXT_ALIGNMENT_LABEL }, /* @__PURE__ */ React75.createElement(UiProviders, null, /* @__PURE__ */ React75.createElement(StylesFieldLayout, { label: TEXT_ALIGNMENT_LABEL }, /* @__PURE__ */ React75.createElement(ToggleControl10, { options: options8 }))));
3907
4037
  };
3908
4038
 
3909
4039
  // src/components/style-sections/typography-section/text-color-field.tsx
3910
- import * as React74 from "react";
4040
+ import * as React76 from "react";
3911
4041
  import { ColorControl as ColorControl2 } from "@elementor/editor-controls";
3912
- import { Grid as Grid26 } from "@elementor/ui";
3913
- import { __ as __47 } from "@wordpress/i18n";
4042
+ import { __ as __51 } from "@wordpress/i18n";
4043
+ var TEXT_COLOR_LABEL = __51("Text color", "elementor");
3914
4044
  var TextColorField = () => {
3915
- return /* @__PURE__ */ React74.createElement(StylesField, { bind: "color" }, /* @__PURE__ */ React74.createElement(Grid26, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React74.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React74.createElement(ControlLabel, null, __47("Text color", "elementor"))), /* @__PURE__ */ React74.createElement(Grid26, { item: true, xs: 6 }, /* @__PURE__ */ React74.createElement(ColorControl2, null))));
4045
+ return /* @__PURE__ */ React76.createElement(StylesField, { bind: "color", propDisplayName: TEXT_COLOR_LABEL }, /* @__PURE__ */ React76.createElement(StylesFieldLayout, { label: TEXT_COLOR_LABEL }, /* @__PURE__ */ React76.createElement(ColorControl2, null)));
3916
4046
  };
3917
4047
 
3918
4048
  // src/components/style-sections/typography-section/text-decoration-field.tsx
3919
- import * as React75 from "react";
4049
+ import * as React77 from "react";
3920
4050
  import { ToggleControl as ToggleControl11 } from "@elementor/editor-controls";
3921
4051
  import { MinusIcon as MinusIcon3, OverlineIcon, StrikethroughIcon, UnderlineIcon } from "@elementor/icons";
3922
- import { Grid as Grid27 } from "@elementor/ui";
3923
- import { __ as __48 } from "@wordpress/i18n";
4052
+ import { __ as __52 } from "@wordpress/i18n";
4053
+ var TEXT_DECORATION_LABEL = __52("Line decoration", "elementor");
3924
4054
  var options9 = [
3925
4055
  {
3926
4056
  value: "none",
3927
- label: __48("None", "elementor"),
3928
- renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(MinusIcon3, { fontSize: size }),
4057
+ label: __52("None", "elementor"),
4058
+ renderContent: ({ size }) => /* @__PURE__ */ React77.createElement(MinusIcon3, { fontSize: size }),
3929
4059
  showTooltip: true,
3930
4060
  exclusive: true
3931
4061
  },
3932
4062
  {
3933
4063
  value: "underline",
3934
- label: __48("Underline", "elementor"),
3935
- renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(UnderlineIcon, { fontSize: size }),
4064
+ label: __52("Underline", "elementor"),
4065
+ renderContent: ({ size }) => /* @__PURE__ */ React77.createElement(UnderlineIcon, { fontSize: size }),
3936
4066
  showTooltip: true
3937
4067
  },
3938
4068
  {
3939
4069
  value: "line-through",
3940
- label: __48("Line-through", "elementor"),
3941
- renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(StrikethroughIcon, { fontSize: size }),
4070
+ label: __52("Line-through", "elementor"),
4071
+ renderContent: ({ size }) => /* @__PURE__ */ React77.createElement(StrikethroughIcon, { fontSize: size }),
3942
4072
  showTooltip: true
3943
4073
  },
3944
4074
  {
3945
4075
  value: "overline",
3946
- label: __48("Overline", "elementor"),
3947
- renderContent: ({ size }) => /* @__PURE__ */ React75.createElement(OverlineIcon, { fontSize: size }),
4076
+ label: __52("Overline", "elementor"),
4077
+ renderContent: ({ size }) => /* @__PURE__ */ React77.createElement(OverlineIcon, { fontSize: size }),
3948
4078
  showTooltip: true
3949
4079
  }
3950
4080
  ];
3951
- var TextDecorationField = () => /* @__PURE__ */ React75.createElement(StylesField, { bind: "text-decoration" }, /* @__PURE__ */ React75.createElement(Grid27, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React75.createElement(Grid27, { item: true, xs: 6 }, /* @__PURE__ */ React75.createElement(ControlLabel, null, __48("Line decoration", "elementor"))), /* @__PURE__ */ React75.createElement(Grid27, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React75.createElement(ToggleControl11, { options: options9, exclusive: false }))));
4081
+ var TextDecorationField = () => /* @__PURE__ */ React77.createElement(StylesField, { bind: "text-decoration", propDisplayName: TEXT_DECORATION_LABEL }, /* @__PURE__ */ React77.createElement(StylesFieldLayout, { label: TEXT_DECORATION_LABEL }, /* @__PURE__ */ React77.createElement(ToggleControl11, { options: options9, exclusive: false })));
3952
4082
 
3953
4083
  // src/components/style-sections/typography-section/text-direction-field.tsx
3954
- import * as React76 from "react";
4084
+ import * as React78 from "react";
3955
4085
  import { ToggleControl as ToggleControl12 } from "@elementor/editor-controls";
3956
4086
  import { TextDirectionLtrIcon, TextDirectionRtlIcon } from "@elementor/icons";
3957
- import { Grid as Grid28 } from "@elementor/ui";
3958
- import { __ as __49 } from "@wordpress/i18n";
4087
+ import { __ as __53 } from "@wordpress/i18n";
4088
+ var TEXT_DIRECTION_LABEL = __53("Direction", "elementor");
3959
4089
  var options10 = [
3960
4090
  {
3961
4091
  value: "ltr",
3962
- label: __49("Left to right", "elementor"),
3963
- renderContent: ({ size }) => /* @__PURE__ */ React76.createElement(TextDirectionLtrIcon, { fontSize: size }),
4092
+ label: __53("Left to right", "elementor"),
4093
+ renderContent: ({ size }) => /* @__PURE__ */ React78.createElement(TextDirectionLtrIcon, { fontSize: size }),
3964
4094
  showTooltip: true
3965
4095
  },
3966
4096
  {
3967
4097
  value: "rtl",
3968
- label: __49("Right to left", "elementor"),
3969
- renderContent: ({ size }) => /* @__PURE__ */ React76.createElement(TextDirectionRtlIcon, { fontSize: size }),
4098
+ label: __53("Right to left", "elementor"),
4099
+ renderContent: ({ size }) => /* @__PURE__ */ React78.createElement(TextDirectionRtlIcon, { fontSize: size }),
3970
4100
  showTooltip: true
3971
4101
  }
3972
4102
  ];
3973
4103
  var TextDirectionField = () => {
3974
- return /* @__PURE__ */ React76.createElement(StylesField, { bind: "direction" }, /* @__PURE__ */ React76.createElement(Grid28, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React76.createElement(Grid28, { item: true, xs: 6 }, /* @__PURE__ */ React76.createElement(ControlLabel, null, __49("Direction", "elementor"))), /* @__PURE__ */ React76.createElement(Grid28, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React76.createElement(ToggleControl12, { options: options10 }))));
4104
+ return /* @__PURE__ */ React78.createElement(StylesField, { bind: "direction", propDisplayName: TEXT_DIRECTION_LABEL }, /* @__PURE__ */ React78.createElement(StylesFieldLayout, { label: TEXT_DIRECTION_LABEL }, /* @__PURE__ */ React78.createElement(ToggleControl12, { options: options10 })));
3975
4105
  };
3976
4106
 
3977
4107
  // src/components/style-sections/typography-section/text-stroke-field.tsx
3978
- import * as React77 from "react";
4108
+ import * as React79 from "react";
3979
4109
  import { StrokeControl } from "@elementor/editor-controls";
3980
- import { __ as __50 } from "@wordpress/i18n";
4110
+ import { __ as __54 } from "@wordpress/i18n";
3981
4111
  var initTextStroke = {
3982
4112
  $$type: "stroke",
3983
4113
  value: {
@@ -3994,80 +4124,80 @@ var initTextStroke = {
3994
4124
  }
3995
4125
  }
3996
4126
  };
4127
+ var TEXT_STROKE_LABEL = __54("Text stroke", "elementor");
3997
4128
  var TextStrokeField = () => {
3998
- const { canEdit } = useStyle();
3999
- const [textStroke, setTextStroke] = useStylesField("stroke");
4129
+ const { value, setValue, canEdit } = useStylesField("stroke");
4000
4130
  const addTextStroke = () => {
4001
- setTextStroke(initTextStroke);
4131
+ setValue(initTextStroke);
4002
4132
  };
4003
4133
  const removeTextStroke = () => {
4004
- setTextStroke(null);
4134
+ setValue(null);
4005
4135
  };
4006
- const hasTextStroke = Boolean(textStroke);
4007
- return /* @__PURE__ */ React77.createElement(StylesField, { bind: "stroke" }, /* @__PURE__ */ React77.createElement(
4136
+ const hasTextStroke = Boolean(value);
4137
+ return /* @__PURE__ */ React79.createElement(StylesField, { bind: "stroke", propDisplayName: TEXT_STROKE_LABEL }, /* @__PURE__ */ React79.createElement(
4008
4138
  AddOrRemoveContent,
4009
4139
  {
4010
4140
  isAdded: hasTextStroke,
4011
4141
  onAdd: addTextStroke,
4012
4142
  onRemove: removeTextStroke,
4013
4143
  disabled: !canEdit,
4014
- renderLabel: () => /* @__PURE__ */ React77.createElement(ControlLabel, null, __50("Text stroke", "elementor"))
4144
+ renderLabel: () => /* @__PURE__ */ React79.createElement(ControlLabel, null, TEXT_STROKE_LABEL)
4015
4145
  },
4016
- /* @__PURE__ */ React77.createElement(StrokeControl, null)
4146
+ /* @__PURE__ */ React79.createElement(StrokeControl, null)
4017
4147
  ));
4018
4148
  };
4019
4149
 
4020
4150
  // src/components/style-sections/typography-section/transform-field.tsx
4021
- import * as React78 from "react";
4151
+ import * as React80 from "react";
4022
4152
  import { ToggleControl as ToggleControl13 } from "@elementor/editor-controls";
4023
4153
  import { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon, MinusIcon as MinusIcon4 } from "@elementor/icons";
4024
- import { Grid as Grid29 } from "@elementor/ui";
4025
- import { __ as __51 } from "@wordpress/i18n";
4154
+ import { __ as __55 } from "@wordpress/i18n";
4155
+ var TEXT_TRANSFORM_LABEL = __55("Text transform", "elementor");
4026
4156
  var options11 = [
4027
4157
  {
4028
4158
  value: "none",
4029
- label: __51("None", "elementor"),
4030
- renderContent: ({ size }) => /* @__PURE__ */ React78.createElement(MinusIcon4, { fontSize: size }),
4159
+ label: __55("None", "elementor"),
4160
+ renderContent: ({ size }) => /* @__PURE__ */ React80.createElement(MinusIcon4, { fontSize: size }),
4031
4161
  showTooltip: true
4032
4162
  },
4033
4163
  {
4034
4164
  value: "capitalize",
4035
- label: __51("Capitalize", "elementor"),
4036
- renderContent: ({ size }) => /* @__PURE__ */ React78.createElement(LetterCaseIcon, { fontSize: size }),
4165
+ label: __55("Capitalize", "elementor"),
4166
+ renderContent: ({ size }) => /* @__PURE__ */ React80.createElement(LetterCaseIcon, { fontSize: size }),
4037
4167
  showTooltip: true
4038
4168
  },
4039
4169
  {
4040
4170
  value: "uppercase",
4041
- label: __51("Uppercase", "elementor"),
4042
- renderContent: ({ size }) => /* @__PURE__ */ React78.createElement(LetterCaseUpperIcon, { fontSize: size }),
4171
+ label: __55("Uppercase", "elementor"),
4172
+ renderContent: ({ size }) => /* @__PURE__ */ React80.createElement(LetterCaseUpperIcon, { fontSize: size }),
4043
4173
  showTooltip: true
4044
4174
  },
4045
4175
  {
4046
4176
  value: "lowercase",
4047
- label: __51("Lowercase", "elementor"),
4048
- renderContent: ({ size }) => /* @__PURE__ */ React78.createElement(LetterCaseLowerIcon, { fontSize: size }),
4177
+ label: __55("Lowercase", "elementor"),
4178
+ renderContent: ({ size }) => /* @__PURE__ */ React80.createElement(LetterCaseLowerIcon, { fontSize: size }),
4049
4179
  showTooltip: true
4050
4180
  }
4051
4181
  ];
4052
- var TransformField = () => /* @__PURE__ */ React78.createElement(StylesField, { bind: "text-transform" }, /* @__PURE__ */ React78.createElement(Grid29, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap" }, /* @__PURE__ */ React78.createElement(Grid29, { item: true, xs: 6 }, /* @__PURE__ */ React78.createElement(ControlLabel, null, __51("Text transform", "elementor"))), /* @__PURE__ */ React78.createElement(Grid29, { item: true, xs: 6, display: "flex", justifyContent: "end" }, /* @__PURE__ */ React78.createElement(ToggleControl13, { options: options11 }))));
4182
+ var TransformField = () => /* @__PURE__ */ React80.createElement(StylesField, { bind: "text-transform", propDisplayName: TEXT_TRANSFORM_LABEL }, /* @__PURE__ */ React80.createElement(StylesFieldLayout, { label: TEXT_TRANSFORM_LABEL }, /* @__PURE__ */ React80.createElement(ToggleControl13, { options: options11 })));
4053
4183
 
4054
4184
  // src/components/style-sections/typography-section/word-spacing-field.tsx
4055
- import * as React79 from "react";
4056
- import { useRef as useRef13 } from "react";
4057
- import { SizeControl as SizeControl10 } from "@elementor/editor-controls";
4058
- import { Grid as Grid30 } from "@elementor/ui";
4059
- import { __ as __52 } from "@wordpress/i18n";
4185
+ import * as React81 from "react";
4186
+ import { useRef as useRef14 } from "react";
4187
+ import { SizeControl as SizeControl11 } from "@elementor/editor-controls";
4188
+ import { __ as __56 } from "@wordpress/i18n";
4189
+ var WORD_SPACING_LABEL = __56("Word spacing", "elementor");
4060
4190
  var WordSpacingField = () => {
4061
- const rowRef = useRef13();
4062
- return /* @__PURE__ */ React79.createElement(StylesField, { bind: "word-spacing" }, /* @__PURE__ */ React79.createElement(Grid30, { container: true, gap: 2, alignItems: "center", flexWrap: "nowrap", ref: rowRef }, /* @__PURE__ */ React79.createElement(Grid30, { item: true, xs: 6 }, /* @__PURE__ */ React79.createElement(ControlLabel, null, __52("Word spacing", "elementor"))), /* @__PURE__ */ React79.createElement(Grid30, { item: true, xs: 6 }, /* @__PURE__ */ React79.createElement(SizeControl10, { anchorRef: rowRef }))));
4191
+ const rowRef = useRef14(null);
4192
+ return /* @__PURE__ */ React81.createElement(StylesField, { bind: "word-spacing", propDisplayName: WORD_SPACING_LABEL }, /* @__PURE__ */ React81.createElement(StylesFieldLayout, { label: WORD_SPACING_LABEL, ref: rowRef }, /* @__PURE__ */ React81.createElement(SizeControl11, { anchorRef: rowRef })));
4063
4193
  };
4064
4194
 
4065
4195
  // src/components/style-sections/typography-section/typography-section.tsx
4066
4196
  var TypographySection = () => {
4067
- const [columnCount] = useStylesField("column-count");
4068
- const isVersion330Active = isExperimentActive11("e_v_3_30");
4197
+ const { value: columnCount } = useStylesField("column-count");
4069
4198
  const hasMultiColumns = !!(columnCount?.value && columnCount?.value > 1);
4070
- return /* @__PURE__ */ React80.createElement(SectionContent, null, /* @__PURE__ */ React80.createElement(FontFamilyField, null), /* @__PURE__ */ React80.createElement(FontWeightField, null), /* @__PURE__ */ React80.createElement(FontSizeField, null), /* @__PURE__ */ React80.createElement(PanelDivider, null), /* @__PURE__ */ React80.createElement(TextAlignmentField, null), /* @__PURE__ */ React80.createElement(TextColorField, null), /* @__PURE__ */ React80.createElement(
4199
+ const isVersion330Active = isExperimentActive14("e_v_3_30");
4200
+ return /* @__PURE__ */ React82.createElement(SectionContent, null, /* @__PURE__ */ React82.createElement(FontFamilyField, null), /* @__PURE__ */ React82.createElement(FontWeightField, null), /* @__PURE__ */ React82.createElement(FontSizeField, null), /* @__PURE__ */ React82.createElement(PanelDivider, null), /* @__PURE__ */ React82.createElement(TextAlignmentField, null), /* @__PURE__ */ React82.createElement(TextColorField, null), /* @__PURE__ */ React82.createElement(
4071
4201
  StyleTabCollapsibleContent,
4072
4202
  {
4073
4203
  fields: [
@@ -4082,19 +4212,19 @@ var TypographySection = () => {
4082
4212
  "stroke"
4083
4213
  ]
4084
4214
  },
4085
- /* @__PURE__ */ React80.createElement(SectionContent, { sx: { pt: 2 } }, /* @__PURE__ */ React80.createElement(LineHeightField, null), /* @__PURE__ */ React80.createElement(LetterSpacingField, null), /* @__PURE__ */ React80.createElement(WordSpacingField, null), isVersion330Active && /* @__PURE__ */ React80.createElement(React80.Fragment, null, /* @__PURE__ */ React80.createElement(ColumnCountField, null), hasMultiColumns && /* @__PURE__ */ React80.createElement(ColumnGapField, null)), /* @__PURE__ */ React80.createElement(PanelDivider, null), /* @__PURE__ */ React80.createElement(TextDecorationField, null), /* @__PURE__ */ React80.createElement(TransformField, null), /* @__PURE__ */ React80.createElement(TextDirectionField, null), /* @__PURE__ */ React80.createElement(FontStyleField, null), /* @__PURE__ */ React80.createElement(TextStrokeField, null))
4215
+ /* @__PURE__ */ React82.createElement(SectionContent, { sx: { pt: 2 } }, /* @__PURE__ */ React82.createElement(LineHeightField, null), /* @__PURE__ */ React82.createElement(LetterSpacingField, null), /* @__PURE__ */ React82.createElement(WordSpacingField, null), isVersion330Active && /* @__PURE__ */ React82.createElement(React82.Fragment, null, /* @__PURE__ */ React82.createElement(ColumnCountField, null), hasMultiColumns && /* @__PURE__ */ React82.createElement(ColumnGapField, null)), /* @__PURE__ */ React82.createElement(PanelDivider, null), /* @__PURE__ */ React82.createElement(TextDecorationField, null), /* @__PURE__ */ React82.createElement(TransformField, null), /* @__PURE__ */ React82.createElement(TextDirectionField, null), /* @__PURE__ */ React82.createElement(FontStyleField, null), /* @__PURE__ */ React82.createElement(TextStrokeField, null))
4086
4216
  ));
4087
4217
  };
4088
4218
 
4089
4219
  // src/components/style-tab-section.tsx
4090
- import * as React81 from "react";
4091
- import { isExperimentActive as isExperimentActive12 } from "@elementor/editor-v1-adapters";
4220
+ import * as React83 from "react";
4221
+ import { isExperimentActive as isExperimentActive15 } from "@elementor/editor-v1-adapters";
4092
4222
  var StyleTabSection = ({ section, fields = [] }) => {
4093
4223
  const { component, name, title } = section;
4094
4224
  const tabDefaults = useDefaultPanelSettings();
4095
4225
  const SectionComponent = component;
4096
- const isExpanded = isExperimentActive12(EXPERIMENTAL_FEATURES.V_3_30) ? tabDefaults.defaultSectionsExpanded.style?.includes(name) : false;
4097
- return /* @__PURE__ */ React81.createElement(Section, { title, defaultExpanded: isExpanded, titleEnd: getStylesInheritanceIndicators(fields) }, /* @__PURE__ */ React81.createElement(SectionComponent, null));
4226
+ const isExpanded = isExperimentActive15(EXPERIMENTAL_FEATURES.V_3_30) ? tabDefaults.defaultSectionsExpanded.style?.includes(name) : false;
4227
+ return /* @__PURE__ */ React83.createElement(Section, { title, defaultExpanded: isExpanded, titleEnd: getStylesInheritanceIndicators(fields) }, /* @__PURE__ */ React83.createElement(SectionComponent, null));
4098
4228
  };
4099
4229
 
4100
4230
  // src/components/style-tab.tsx
@@ -4111,7 +4241,7 @@ var StyleTab = () => {
4111
4241
  const [activeStyleDefId, setActiveStyleDefId] = useActiveStyleDefId(currentClassesProp);
4112
4242
  const [activeStyleState, setActiveStyleState] = useState12(null);
4113
4243
  const breakpoint = useActiveBreakpoint();
4114
- return /* @__PURE__ */ React82.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React82.createElement(
4244
+ return /* @__PURE__ */ React84.createElement(ClassesPropProvider, { prop: currentClassesProp }, /* @__PURE__ */ React84.createElement(
4115
4245
  StyleProvider,
4116
4246
  {
4117
4247
  meta: { breakpoint, state: activeStyleState },
@@ -4122,13 +4252,13 @@ var StyleTab = () => {
4122
4252
  },
4123
4253
  setMetaState: setActiveStyleState
4124
4254
  },
4125
- /* @__PURE__ */ React82.createElement(SessionStorageProvider2, { prefix: activeStyleDefId ?? "" }, /* @__PURE__ */ React82.createElement(StyleInheritanceProvider, null, /* @__PURE__ */ React82.createElement(ClassesHeader, null, /* @__PURE__ */ React82.createElement(CssClassSelector, null), /* @__PURE__ */ React82.createElement(Divider5, null)), /* @__PURE__ */ React82.createElement(SectionsList, null, /* @__PURE__ */ React82.createElement(
4255
+ /* @__PURE__ */ React84.createElement(SessionStorageProvider2, { prefix: activeStyleDefId ?? "" }, /* @__PURE__ */ React84.createElement(StyleInheritanceProvider, null, /* @__PURE__ */ React84.createElement(ClassesHeader, null, /* @__PURE__ */ React84.createElement(CssClassSelector, null), /* @__PURE__ */ React84.createElement(Divider5, null)), /* @__PURE__ */ React84.createElement(SectionsList, null, /* @__PURE__ */ React84.createElement(
4126
4256
  StyleTabSection,
4127
4257
  {
4128
4258
  section: {
4129
4259
  component: LayoutSection,
4130
4260
  name: "Layout",
4131
- title: __53("Layout", "elementor")
4261
+ title: __57("Layout", "elementor")
4132
4262
  },
4133
4263
  fields: [
4134
4264
  "display",
@@ -4141,23 +4271,23 @@ var StyleTab = () => {
4141
4271
  "gap"
4142
4272
  ]
4143
4273
  }
4144
- ), /* @__PURE__ */ React82.createElement(
4274
+ ), /* @__PURE__ */ React84.createElement(
4145
4275
  StyleTabSection,
4146
4276
  {
4147
4277
  section: {
4148
4278
  component: SpacingSection,
4149
4279
  name: "Spacing",
4150
- title: __53("Spacing", "elementor")
4280
+ title: __57("Spacing", "elementor")
4151
4281
  },
4152
4282
  fields: ["margin", "padding"]
4153
4283
  }
4154
- ), /* @__PURE__ */ React82.createElement(
4284
+ ), /* @__PURE__ */ React84.createElement(
4155
4285
  StyleTabSection,
4156
4286
  {
4157
4287
  section: {
4158
4288
  component: SizeSection,
4159
4289
  name: "Size",
4160
- title: __53("Size", "elementor")
4290
+ title: __57("Size", "elementor")
4161
4291
  },
4162
4292
  fields: [
4163
4293
  "width",
@@ -4171,23 +4301,23 @@ var StyleTab = () => {
4171
4301
  "object-fit"
4172
4302
  ]
4173
4303
  }
4174
- ), /* @__PURE__ */ React82.createElement(
4304
+ ), /* @__PURE__ */ React84.createElement(
4175
4305
  StyleTabSection,
4176
4306
  {
4177
4307
  section: {
4178
4308
  component: PositionSection,
4179
4309
  name: "Position",
4180
- title: __53("Position", "elementor")
4310
+ title: __57("Position", "elementor")
4181
4311
  },
4182
4312
  fields: ["position", "z-index", "scroll-margin-top"]
4183
4313
  }
4184
- ), /* @__PURE__ */ React82.createElement(
4314
+ ), /* @__PURE__ */ React84.createElement(
4185
4315
  StyleTabSection,
4186
4316
  {
4187
4317
  section: {
4188
4318
  component: TypographySection,
4189
4319
  name: "Typography",
4190
- title: __53("Typography", "elementor")
4320
+ title: __57("Typography", "elementor")
4191
4321
  },
4192
4322
  fields: [
4193
4323
  "font-family",
@@ -4206,33 +4336,33 @@ var StyleTab = () => {
4206
4336
  "stroke"
4207
4337
  ]
4208
4338
  }
4209
- ), /* @__PURE__ */ React82.createElement(
4339
+ ), /* @__PURE__ */ React84.createElement(
4210
4340
  StyleTabSection,
4211
4341
  {
4212
4342
  section: {
4213
4343
  component: BackgroundSection,
4214
4344
  name: "Background",
4215
- title: __53("Background", "elementor")
4345
+ title: __57("Background", "elementor")
4216
4346
  },
4217
4347
  fields: ["background"]
4218
4348
  }
4219
- ), /* @__PURE__ */ React82.createElement(
4349
+ ), /* @__PURE__ */ React84.createElement(
4220
4350
  StyleTabSection,
4221
4351
  {
4222
4352
  section: {
4223
4353
  component: BorderSection,
4224
4354
  name: "Border",
4225
- title: __53("Border", "elementor")
4355
+ title: __57("Border", "elementor")
4226
4356
  },
4227
4357
  fields: ["border-radius", "border-width", "border-color", "border-style"]
4228
4358
  }
4229
- ), /* @__PURE__ */ React82.createElement(
4359
+ ), /* @__PURE__ */ React84.createElement(
4230
4360
  StyleTabSection,
4231
4361
  {
4232
4362
  section: {
4233
4363
  component: EffectsSection,
4234
4364
  name: "Effects",
4235
- title: __53("Effects", "elementor")
4365
+ title: __57("Effects", "elementor")
4236
4366
  },
4237
4367
  fields: ["box-shadow"]
4238
4368
  }
@@ -4241,7 +4371,7 @@ var StyleTab = () => {
4241
4371
  };
4242
4372
  function ClassesHeader({ children }) {
4243
4373
  const scrollDirection = useScrollDirection();
4244
- return /* @__PURE__ */ React82.createElement(Stack17, { sx: { ...stickyHeaderStyles, top: scrollDirection === "up" ? TABS_HEADER_HEIGHT : 0 } }, children);
4374
+ return /* @__PURE__ */ React84.createElement(Stack14, { sx: { ...stickyHeaderStyles, top: scrollDirection === "up" ? TABS_HEADER_HEIGHT : 0 } }, children);
4245
4375
  }
4246
4376
  function useCurrentClassesProp() {
4247
4377
  const { elementType } = useElement();
@@ -4260,15 +4390,15 @@ var EditingPanelTabs = () => {
4260
4390
  return (
4261
4391
  // When switching between elements, the local states should be reset. We are using key to rerender the tabs.
4262
4392
  // Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key
4263
- /* @__PURE__ */ React83.createElement(Fragment9, { key: element.id }, /* @__PURE__ */ React83.createElement(PanelTabContent, null))
4393
+ /* @__PURE__ */ React85.createElement(Fragment10, { key: element.id }, /* @__PURE__ */ React85.createElement(PanelTabContent, null))
4264
4394
  );
4265
4395
  };
4266
4396
  var PanelTabContent = () => {
4267
4397
  const editorDefaults = useDefaultPanelSettings();
4268
- const defaultComponentTab = isExperimentActive13(EXPERIMENTAL_FEATURES.V_3_30) ? editorDefaults.defaultTab : "settings";
4398
+ const defaultComponentTab = isExperimentActive16(EXPERIMENTAL_FEATURES.V_3_30) ? editorDefaults.defaultTab : "settings";
4269
4399
  const [currentTab, setCurrentTab] = useStateByElement("tab", defaultComponentTab);
4270
4400
  const { getTabProps, getTabPanelProps, getTabsProps } = useTabs(currentTab);
4271
- return /* @__PURE__ */ React83.createElement(ScrollProvider, null, /* @__PURE__ */ React83.createElement(Stack18, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React83.createElement(Stack18, { sx: { ...stickyHeaderStyles, top: 0 } }, /* @__PURE__ */ React83.createElement(
4401
+ return /* @__PURE__ */ React85.createElement(ScrollProvider, null, /* @__PURE__ */ React85.createElement(Stack15, { direction: "column", sx: { width: "100%" } }, /* @__PURE__ */ React85.createElement(Stack15, { sx: { ...stickyHeaderStyles, top: 0 } }, /* @__PURE__ */ React85.createElement(
4272
4402
  Tabs,
4273
4403
  {
4274
4404
  variant: "fullWidth",
@@ -4280,9 +4410,9 @@ var PanelTabContent = () => {
4280
4410
  setCurrentTab(newValue);
4281
4411
  }
4282
4412
  },
4283
- /* @__PURE__ */ React83.createElement(Tab, { label: __54("General", "elementor"), ...getTabProps("settings") }),
4284
- /* @__PURE__ */ React83.createElement(Tab, { label: __54("Style", "elementor"), ...getTabProps("style") })
4285
- ), /* @__PURE__ */ React83.createElement(Divider6, null)), /* @__PURE__ */ React83.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React83.createElement(SettingsTab, null)), /* @__PURE__ */ React83.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React83.createElement(StyleTab, null))));
4413
+ /* @__PURE__ */ React85.createElement(Tab, { label: __58("General", "elementor"), ...getTabProps("settings") }),
4414
+ /* @__PURE__ */ React85.createElement(Tab, { label: __58("Style", "elementor"), ...getTabProps("style") })
4415
+ ), /* @__PURE__ */ React85.createElement(Divider6, null)), /* @__PURE__ */ React85.createElement(TabPanel, { ...getTabPanelProps("settings"), disablePadding: true }, /* @__PURE__ */ React85.createElement(SettingsTab, null)), /* @__PURE__ */ React85.createElement(TabPanel, { ...getTabPanelProps("style"), disablePadding: true }, /* @__PURE__ */ React85.createElement(StyleTab, null))));
4286
4416
  };
4287
4417
 
4288
4418
  // src/components/editing-panel.tsx
@@ -4294,8 +4424,8 @@ var EditingPanel = () => {
4294
4424
  if (!element || !elementType) {
4295
4425
  return null;
4296
4426
  }
4297
- const panelTitle = __55("Edit %s", "elementor").replace("%s", elementType.title);
4298
- return /* @__PURE__ */ React84.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React84.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React84.createElement(SessionStorageProvider3, { prefix: "elementor" }, /* @__PURE__ */ React84.createElement(ThemeProvider2, null, /* @__PURE__ */ React84.createElement(Panel, null, /* @__PURE__ */ React84.createElement(PanelHeader, null, /* @__PURE__ */ React84.createElement(PanelHeaderTitle, null, panelTitle), /* @__PURE__ */ React84.createElement(AtomIcon, { fontSize: "small", sx: { color: "text.tertiary" } })), /* @__PURE__ */ React84.createElement(PanelBody, null, /* @__PURE__ */ React84.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React84.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React84.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React84.createElement(EditingPanelTabs, null)))))))));
4427
+ const panelTitle = __59("Edit %s", "elementor").replace("%s", elementType.title);
4428
+ return /* @__PURE__ */ React86.createElement(ErrorBoundary, { fallback: /* @__PURE__ */ React86.createElement(EditorPanelErrorFallback, null) }, /* @__PURE__ */ React86.createElement(SessionStorageProvider3, { prefix: "elementor" }, /* @__PURE__ */ React86.createElement(ThemeProvider2, null, /* @__PURE__ */ React86.createElement(Panel, null, /* @__PURE__ */ React86.createElement(PanelHeader, null, /* @__PURE__ */ React86.createElement(PanelHeaderTitle, null, panelTitle), /* @__PURE__ */ React86.createElement(AtomIcon, { fontSize: "small", sx: { color: "text.tertiary" } })), /* @__PURE__ */ React86.createElement(PanelBody, null, /* @__PURE__ */ React86.createElement(ControlActionsProvider, { items: menuItems }, /* @__PURE__ */ React86.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React86.createElement(ElementProvider, { element, elementType }, /* @__PURE__ */ React86.createElement(EditingPanelTabs, null)))))))));
4299
4429
  };
4300
4430
 
4301
4431
  // src/panel.ts
@@ -4304,11 +4434,19 @@ var { panel, usePanelActions, usePanelStatus } = createPanel({
4304
4434
  component: EditingPanel
4305
4435
  });
4306
4436
 
4437
+ // src/components/popover-scrollable-content.tsx
4438
+ import * as React87 from "react";
4439
+ import { PopoverScrollableContent as BasePopoverScrollableContent } from "@elementor/editor-ui";
4440
+ var PopoverScrollableContent = (props) => {
4441
+ const sectionWidth = useSectionWidth();
4442
+ return /* @__PURE__ */ React87.createElement(BasePopoverScrollableContent, { ...props, width: sectionWidth });
4443
+ };
4444
+
4307
4445
  // src/init.ts
4308
4446
  import { injectIntoLogic } from "@elementor/editor";
4309
4447
  import { PrefetchUserData } from "@elementor/editor-current-user";
4310
4448
  import { __registerPanel as registerPanel } from "@elementor/editor-panels";
4311
- import { blockCommand, isExperimentActive as isExperimentActive14 } from "@elementor/editor-v1-adapters";
4449
+ import { blockCommand, isExperimentActive as isExperimentActive17 } from "@elementor/editor-v1-adapters";
4312
4450
 
4313
4451
  // src/hooks/use-open-editor-panel.ts
4314
4452
  import { useEffect as useEffect4 } from "react";
@@ -4348,7 +4486,7 @@ import { settingsTransformersRegistry, styleTransformersRegistry } from "@elemen
4348
4486
  import { injectIntoRepeaterItemIcon, injectIntoRepeaterItemLabel } from "@elementor/editor-controls";
4349
4487
 
4350
4488
  // src/dynamics/components/background-control-dynamic-tag.tsx
4351
- import * as React85 from "react";
4489
+ import * as React88 from "react";
4352
4490
  import { PropKeyProvider as PropKeyProvider3, PropProvider as PropProvider3, useBoundProp as useBoundProp3 } from "@elementor/editor-controls";
4353
4491
  import {
4354
4492
  backgroundImageOverlayPropTypeUtil
@@ -4356,10 +4494,10 @@ import {
4356
4494
  import { DatabaseIcon } from "@elementor/icons";
4357
4495
 
4358
4496
  // src/dynamics/hooks/use-dynamic-tag.ts
4359
- import { useMemo as useMemo8 } from "react";
4497
+ import { useMemo as useMemo9 } from "react";
4360
4498
 
4361
4499
  // src/dynamics/hooks/use-prop-dynamic-tags.ts
4362
- import { useMemo as useMemo7 } from "react";
4500
+ import { useMemo as useMemo8 } from "react";
4363
4501
  import { useBoundProp as useBoundProp2 } from "@elementor/editor-controls";
4364
4502
 
4365
4503
  // src/dynamics/sync/get-elementor-config.ts
@@ -4414,7 +4552,7 @@ var usePropDynamicTags = () => {
4414
4552
  const propDynamicType = getDynamicPropType(propType);
4415
4553
  categories = propDynamicType?.settings.categories || [];
4416
4554
  }
4417
- return useMemo7(() => getDynamicTagsByCategories(categories), [categories.join()]);
4555
+ return useMemo8(() => getDynamicTagsByCategories(categories), [categories.join()]);
4418
4556
  };
4419
4557
  var getDynamicTagsByCategories = (categories) => {
4420
4558
  const dynamicTags = getAtomicDynamicTags();
@@ -4430,41 +4568,40 @@ var getDynamicTagsByCategories = (categories) => {
4430
4568
  // src/dynamics/hooks/use-dynamic-tag.ts
4431
4569
  var useDynamicTag = (tagName) => {
4432
4570
  const dynamicTags = usePropDynamicTags();
4433
- return useMemo8(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
4571
+ return useMemo9(() => dynamicTags.find((tag) => tag.name === tagName) ?? null, [dynamicTags, tagName]);
4434
4572
  };
4435
4573
 
4436
4574
  // src/dynamics/components/background-control-dynamic-tag.tsx
4437
- var BackgroundControlDynamicTagIcon = () => /* @__PURE__ */ React85.createElement(DatabaseIcon, { fontSize: "tiny" });
4575
+ var BackgroundControlDynamicTagIcon = () => /* @__PURE__ */ React88.createElement(DatabaseIcon, { fontSize: "tiny" });
4438
4576
  var BackgroundControlDynamicTagLabel = ({ value }) => {
4439
4577
  const context = useBoundProp3(backgroundImageOverlayPropTypeUtil);
4440
- return /* @__PURE__ */ React85.createElement(PropProvider3, { ...context, value: value.value }, /* @__PURE__ */ React85.createElement(PropKeyProvider3, { bind: "image" }, /* @__PURE__ */ React85.createElement(Wrapper, { rawValue: value.value })));
4578
+ return /* @__PURE__ */ React88.createElement(PropProvider3, { ...context, value: value.value }, /* @__PURE__ */ React88.createElement(PropKeyProvider3, { bind: "image" }, /* @__PURE__ */ React88.createElement(Wrapper, { rawValue: value.value })));
4441
4579
  };
4442
4580
  var Wrapper = ({ rawValue }) => {
4443
4581
  const { propType } = useBoundProp3();
4444
4582
  const imageOverlayPropType = propType.prop_types["background-image-overlay"];
4445
- return /* @__PURE__ */ React85.createElement(PropProvider3, { propType: imageOverlayPropType.shape.image, value: rawValue, setValue: () => void 0 }, /* @__PURE__ */ React85.createElement(PropKeyProvider3, { bind: "src" }, /* @__PURE__ */ React85.createElement(Content, { rawValue: rawValue.image })));
4583
+ return /* @__PURE__ */ React88.createElement(PropProvider3, { propType: imageOverlayPropType.shape.image, value: rawValue, setValue: () => void 0 }, /* @__PURE__ */ React88.createElement(PropKeyProvider3, { bind: "src" }, /* @__PURE__ */ React88.createElement(Content, { rawValue: rawValue.image })));
4446
4584
  };
4447
4585
  var Content = ({ rawValue }) => {
4448
4586
  const src = rawValue.value.src;
4449
4587
  const dynamicTag = useDynamicTag(src.value.name || "");
4450
- return /* @__PURE__ */ React85.createElement(React85.Fragment, null, dynamicTag?.label);
4588
+ return /* @__PURE__ */ React88.createElement(React88.Fragment, null, dynamicTag?.label);
4451
4589
  };
4452
4590
 
4453
4591
  // src/dynamics/components/dynamic-selection-control.tsx
4454
- import * as React89 from "react";
4455
- import { ControlFormLabel as ControlFormLabel6, useBoundProp as useBoundProp6 } from "@elementor/editor-controls";
4456
- import { PopoverHeader as PopoverHeader2 } from "@elementor/editor-ui";
4592
+ import * as React91 from "react";
4593
+ import { ControlFormLabel as ControlFormLabel5, useBoundProp as useBoundProp6 } from "@elementor/editor-controls";
4594
+ import { PopoverHeader as PopoverHeader3, PopoverScrollableContent as PopoverScrollableContent2 } from "@elementor/editor-ui";
4457
4595
  import { DatabaseIcon as DatabaseIcon3, SettingsIcon, XIcon } from "@elementor/icons";
4458
4596
  import {
4459
4597
  bindPopover as bindPopover2,
4460
4598
  bindTrigger as bindTrigger2,
4461
4599
  Box as Box8,
4462
4600
  Divider as Divider8,
4463
- Grid as Grid31,
4601
+ Grid as Grid5,
4464
4602
  IconButton as IconButton5,
4465
- Paper,
4466
4603
  Popover as Popover2,
4467
- Stack as Stack21,
4604
+ Stack as Stack17,
4468
4605
  Tab as Tab2,
4469
4606
  TabPanel as TabPanel2,
4470
4607
  Tabs as Tabs2,
@@ -4472,12 +4609,7 @@ import {
4472
4609
  usePopupState as usePopupState3,
4473
4610
  useTabs as useTabs2
4474
4611
  } from "@elementor/ui";
4475
- import { __ as __57 } from "@wordpress/i18n";
4476
-
4477
- // src/components/popover-content.tsx
4478
- import * as React86 from "react";
4479
- import { Stack as Stack19 } from "@elementor/ui";
4480
- var PopoverContent = ({ alignItems, gap = 1.5, p, children }) => /* @__PURE__ */ React86.createElement(Stack19, { alignItems, gap, p }, children);
4612
+ import { __ as __61 } from "@wordpress/i18n";
4481
4613
 
4482
4614
  // src/hooks/use-persist-dynamic-value.ts
4483
4615
  import { useSessionStorage as useSessionStorage2 } from "@elementor/session";
@@ -4488,7 +4620,7 @@ var usePersistDynamicValue = (propKey) => {
4488
4620
  };
4489
4621
 
4490
4622
  // src/dynamics/dynamic-control.tsx
4491
- import * as React87 from "react";
4623
+ import * as React89 from "react";
4492
4624
  import { PropKeyProvider as PropKeyProvider4, PropProvider as PropProvider4, useBoundProp as useBoundProp4 } from "@elementor/editor-controls";
4493
4625
  var DynamicControl = ({ bind, children }) => {
4494
4626
  const { value, setValue } = useBoundProp4(dynamicPropTypeUtil);
@@ -4510,82 +4642,79 @@ var DynamicControl = ({ bind, children }) => {
4510
4642
  });
4511
4643
  };
4512
4644
  const propType = createTopLevelOjectType({ schema: dynamicTag.props_schema });
4513
- return /* @__PURE__ */ React87.createElement(PropProvider4, { propType, setValue: setDynamicValue, value: { [bind]: dynamicValue } }, /* @__PURE__ */ React87.createElement(PropKeyProvider4, { bind }, children));
4645
+ return /* @__PURE__ */ React89.createElement(PropProvider4, { propType, setValue: setDynamicValue, value: { [bind]: dynamicValue } }, /* @__PURE__ */ React89.createElement(PropKeyProvider4, { bind }, children));
4514
4646
  };
4515
4647
 
4516
4648
  // src/dynamics/components/dynamic-selection.tsx
4517
- import * as React88 from "react";
4518
- import { Fragment as Fragment11, useState as useState13 } from "react";
4649
+ import { Fragment as Fragment12, useState as useState13 } from "react";
4650
+ import * as React90 from "react";
4519
4651
  import { useBoundProp as useBoundProp5 } from "@elementor/editor-controls";
4520
- import { DatabaseIcon as DatabaseIcon2, SearchIcon } from "@elementor/icons";
4521
- import {
4522
- Box as Box7,
4523
- Divider as Divider7,
4524
- InputAdornment,
4525
- Link as Link2,
4526
- MenuItem,
4527
- MenuList,
4528
- MenuSubheader as MenuSubheader2,
4529
- Stack as Stack20,
4530
- TextField as TextField2,
4531
- Typography as Typography6
4532
- } from "@elementor/ui";
4533
- import { __ as __56 } from "@wordpress/i18n";
4534
- var SIZE7 = "tiny";
4535
- var DynamicSelection = ({ onSelect }) => {
4652
+ import { PopoverHeader as PopoverHeader2, PopoverMenuList, PopoverSearch } from "@elementor/editor-ui";
4653
+ import { DatabaseIcon as DatabaseIcon2 } from "@elementor/icons";
4654
+ import { Box as Box7, Divider as Divider7, Link as Link2, Stack as Stack16, Typography as Typography5, useTheme as useTheme3 } from "@elementor/ui";
4655
+ import { __ as __60 } from "@wordpress/i18n";
4656
+ var SIZE6 = "tiny";
4657
+ var DynamicSelection = ({ close: closePopover }) => {
4536
4658
  const [searchValue, setSearchValue] = useState13("");
4537
4659
  const { groups: dynamicGroups } = getAtomicDynamicTags() || {};
4660
+ const theme = useTheme3();
4538
4661
  const { value: anyValue } = useBoundProp5();
4539
4662
  const { bind, value: dynamicValue, setValue } = useBoundProp5(dynamicPropTypeUtil);
4540
4663
  const [, updatePropValueHistory] = usePersistDynamicValue(bind);
4541
4664
  const isCurrentValueDynamic = !!dynamicValue;
4542
4665
  const options12 = useFilteredOptions(searchValue);
4543
4666
  const hasNoDynamicTags = !options12.length && !searchValue.trim();
4544
- const handleSearch = (event) => {
4545
- setSearchValue(event.target.value);
4667
+ const handleSearch = (value) => {
4668
+ setSearchValue(value);
4546
4669
  };
4547
- const handleSetDynamicTag = (value, label) => {
4670
+ const handleSetDynamicTag = (value) => {
4548
4671
  if (!isCurrentValueDynamic) {
4549
4672
  updatePropValueHistory(anyValue);
4550
4673
  }
4551
- setValue({ name: value, settings: { label } });
4552
- onSelect?.();
4674
+ const selectedOption = options12.flatMap(([, items3]) => items3).find((item) => item.value === value);
4675
+ setValue({ name: value, settings: { label: selectedOption?.label } });
4676
+ closePopover();
4553
4677
  };
4554
- return /* @__PURE__ */ React88.createElement(Stack20, null, hasNoDynamicTags ? /* @__PURE__ */ React88.createElement(NoDynamicTags, null) : /* @__PURE__ */ React88.createElement(Fragment11, null, /* @__PURE__ */ React88.createElement(Box7, { px: 1.5, pb: 1 }, /* @__PURE__ */ React88.createElement(
4555
- TextField2,
4678
+ const virtualizedItems = options12.flatMap(([category, items3]) => [
4679
+ {
4680
+ type: "category",
4681
+ value: category,
4682
+ label: dynamicGroups?.[category]?.title || category
4683
+ },
4684
+ ...items3.map((item) => ({
4685
+ type: "item",
4686
+ value: item.value,
4687
+ label: item.label
4688
+ }))
4689
+ ]);
4690
+ return /* @__PURE__ */ React90.createElement(React90.Fragment, null, /* @__PURE__ */ React90.createElement(
4691
+ PopoverHeader2,
4692
+ {
4693
+ title: __60("Dynamic tags", "elementor"),
4694
+ onClose: closePopover,
4695
+ icon: /* @__PURE__ */ React90.createElement(DatabaseIcon2, { fontSize: SIZE6 })
4696
+ }
4697
+ ), /* @__PURE__ */ React90.createElement(Stack16, null, hasNoDynamicTags ? /* @__PURE__ */ React90.createElement(NoDynamicTags, null) : /* @__PURE__ */ React90.createElement(Fragment12, null, /* @__PURE__ */ React90.createElement(
4698
+ PopoverSearch,
4556
4699
  {
4557
- fullWidth: true,
4558
- size: SIZE7,
4559
4700
  value: searchValue,
4560
- onChange: handleSearch,
4561
- placeholder: __56("Search dynamic tags\u2026", "elementor"),
4562
- InputProps: {
4563
- startAdornment: /* @__PURE__ */ React88.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React88.createElement(SearchIcon, { fontSize: SIZE7 }))
4564
- }
4701
+ onSearch: handleSearch,
4702
+ placeholder: __60("Search dynamic tags\u2026", "elementor")
4565
4703
  }
4566
- )), /* @__PURE__ */ React88.createElement(Divider7, null), /* @__PURE__ */ React88.createElement(Box7, { sx: { overflowY: "auto", height: 260, width: 220 } }, options12.length > 0 ? /* @__PURE__ */ React88.createElement(MenuList, { role: "listbox", tabIndex: 0 }, options12.map(([category, items3], index) => /* @__PURE__ */ React88.createElement(Fragment11, { key: index }, /* @__PURE__ */ React88.createElement(
4567
- MenuSubheader2,
4704
+ ), /* @__PURE__ */ React90.createElement(Divider7, null), /* @__PURE__ */ React90.createElement(PopoverScrollableContent, null, /* @__PURE__ */ React90.createElement(
4705
+ PopoverMenuList,
4568
4706
  {
4569
- sx: { px: 1.5, typography: "caption", color: "text.tertiary" }
4570
- },
4571
- dynamicGroups?.[category]?.title || category
4572
- ), items3.map(({ value, label: tagLabel }) => {
4573
- const isSelected = isCurrentValueDynamic && value === dynamicValue?.name;
4574
- return /* @__PURE__ */ React88.createElement(
4575
- MenuItem,
4576
- {
4577
- key: value,
4578
- selected: isSelected,
4579
- autoFocus: isSelected,
4580
- sx: { px: 3.5, typography: "caption" },
4581
- onClick: () => handleSetDynamicTag(value, tagLabel)
4582
- },
4583
- tagLabel
4584
- );
4585
- })))) : /* @__PURE__ */ React88.createElement(NoResults, { searchValue, onClear: () => setSearchValue("") }))));
4707
+ items: virtualizedItems,
4708
+ onSelect: handleSetDynamicTag,
4709
+ onClose: closePopover,
4710
+ selectedValue: dynamicValue?.name,
4711
+ itemStyle: (item) => item.type === "item" ? { paddingInlineStart: theme.spacing(3.5) } : {},
4712
+ noResultsComponent: /* @__PURE__ */ React90.createElement(NoResults, { searchValue, onClear: () => setSearchValue("") })
4713
+ }
4714
+ )))));
4586
4715
  };
4587
- var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React88.createElement(
4588
- Stack20,
4716
+ var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React90.createElement(
4717
+ Stack16,
4589
4718
  {
4590
4719
  gap: 1,
4591
4720
  alignItems: "center",
@@ -4595,12 +4724,12 @@ var NoResults = ({ searchValue, onClear }) => /* @__PURE__ */ React88.createElem
4595
4724
  color: "text.secondary",
4596
4725
  sx: { pb: 3.5 }
4597
4726
  },
4598
- /* @__PURE__ */ React88.createElement(DatabaseIcon2, { fontSize: "large" }),
4599
- /* @__PURE__ */ React88.createElement(Typography6, { align: "center", variant: "subtitle2" }, __56("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React88.createElement("br", null), "\u201C", searchValue, "\u201D."),
4600
- /* @__PURE__ */ React88.createElement(Typography6, { align: "center", variant: "caption" }, __56("Try something else.", "elementor"), "\xA0", /* @__PURE__ */ React88.createElement(Link2, { color: "text.secondary", variant: "caption", component: "button", onClick: onClear }, __56("Clear & try again", "elementor")))
4727
+ /* @__PURE__ */ React90.createElement(DatabaseIcon2, { fontSize: "large" }),
4728
+ /* @__PURE__ */ React90.createElement(Typography5, { align: "center", variant: "subtitle2" }, __60("Sorry, nothing matched", "elementor"), /* @__PURE__ */ React90.createElement("br", null), "\u201C", searchValue, "\u201D."),
4729
+ /* @__PURE__ */ React90.createElement(Typography5, { align: "center", variant: "caption", sx: { display: "flex", flexDirection: "column" } }, __60("Try something else.", "elementor"), /* @__PURE__ */ React90.createElement(Link2, { color: "text.secondary", variant: "caption", component: "button", onClick: onClear }, __60("Clear & try again", "elementor")))
4601
4730
  );
4602
- var NoDynamicTags = () => /* @__PURE__ */ React88.createElement(Box7, { sx: { overflowY: "hidden", height: 297, width: 220 } }, /* @__PURE__ */ React88.createElement(Divider7, null), /* @__PURE__ */ React88.createElement(
4603
- Stack20,
4731
+ var NoDynamicTags = () => /* @__PURE__ */ React90.createElement(Box7, { sx: { overflowY: "hidden", height: 297, width: 220 } }, /* @__PURE__ */ React90.createElement(Divider7, null), /* @__PURE__ */ React90.createElement(
4732
+ Stack16,
4604
4733
  {
4605
4734
  gap: 1,
4606
4735
  alignItems: "center",
@@ -4610,9 +4739,9 @@ var NoDynamicTags = () => /* @__PURE__ */ React88.createElement(Box7, { sx: { ov
4610
4739
  color: "text.secondary",
4611
4740
  sx: { pb: 3.5 }
4612
4741
  },
4613
- /* @__PURE__ */ React88.createElement(DatabaseIcon2, { fontSize: "large" }),
4614
- /* @__PURE__ */ React88.createElement(Typography6, { align: "center", variant: "subtitle2" }, __56("Streamline your workflow with dynamic tags", "elementor")),
4615
- /* @__PURE__ */ React88.createElement(Typography6, { align: "center", variant: "caption" }, __56("You\u2019ll need Elementor Pro to use this feature.", "elementor"))
4742
+ /* @__PURE__ */ React90.createElement(DatabaseIcon2, { fontSize: "large" }),
4743
+ /* @__PURE__ */ React90.createElement(Typography5, { align: "center", variant: "subtitle2" }, __60("Streamline your workflow with dynamic tags", "elementor")),
4744
+ /* @__PURE__ */ React90.createElement(Typography5, { align: "center", variant: "caption" }, __60("You'll need Elementor Pro to use this feature.", "elementor"))
4616
4745
  ));
4617
4746
  var useFilteredOptions = (searchValue) => {
4618
4747
  const dynamicTags = usePropDynamicTags();
@@ -4631,7 +4760,7 @@ var useFilteredOptions = (searchValue) => {
4631
4760
  };
4632
4761
 
4633
4762
  // src/dynamics/components/dynamic-selection-control.tsx
4634
- var SIZE8 = "tiny";
4763
+ var SIZE7 = "tiny";
4635
4764
  var DynamicSelectionControl = () => {
4636
4765
  const { setValue: setAnyValue } = useBoundProp6();
4637
4766
  const { bind, value } = useBoundProp6(dynamicPropTypeUtil);
@@ -4645,40 +4774,37 @@ var DynamicSelectionControl = () => {
4645
4774
  if (!dynamicTag) {
4646
4775
  throw new Error(`Dynamic tag ${tagName} not found`);
4647
4776
  }
4648
- return /* @__PURE__ */ React89.createElement(Box8, null, /* @__PURE__ */ React89.createElement(
4777
+ return /* @__PURE__ */ React91.createElement(Box8, null, /* @__PURE__ */ React91.createElement(
4649
4778
  Tag,
4650
4779
  {
4651
4780
  fullWidth: true,
4652
4781
  showActionsOnHover: true,
4653
4782
  label: dynamicTag.label,
4654
- startIcon: /* @__PURE__ */ React89.createElement(DatabaseIcon3, { fontSize: SIZE8 }),
4783
+ startIcon: /* @__PURE__ */ React91.createElement(DatabaseIcon3, { fontSize: SIZE7 }),
4655
4784
  ...bindTrigger2(selectionPopoverState),
4656
- actions: /* @__PURE__ */ React89.createElement(React89.Fragment, null, /* @__PURE__ */ React89.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React89.createElement(
4785
+ actions: /* @__PURE__ */ React91.createElement(React91.Fragment, null, /* @__PURE__ */ React91.createElement(DynamicSettingsPopover, { dynamicTag }), /* @__PURE__ */ React91.createElement(
4657
4786
  IconButton5,
4658
4787
  {
4659
- size: SIZE8,
4788
+ size: SIZE7,
4660
4789
  onClick: removeDynamicTag,
4661
- "aria-label": __57("Remove dynamic value", "elementor")
4790
+ "aria-label": __61("Remove dynamic value", "elementor")
4662
4791
  },
4663
- /* @__PURE__ */ React89.createElement(XIcon, { fontSize: SIZE8 })
4792
+ /* @__PURE__ */ React91.createElement(XIcon, { fontSize: SIZE7 })
4664
4793
  ))
4665
4794
  }
4666
- ), /* @__PURE__ */ React89.createElement(
4795
+ ), /* @__PURE__ */ React91.createElement(
4667
4796
  Popover2,
4668
4797
  {
4669
4798
  disablePortal: true,
4670
4799
  disableScrollLock: true,
4671
- anchorOrigin: { vertical: "bottom", horizontal: "left" },
4800
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
4801
+ transformOrigin: { vertical: "top", horizontal: "right" },
4802
+ PaperProps: {
4803
+ sx: { my: 1 }
4804
+ },
4672
4805
  ...bindPopover2(selectionPopoverState)
4673
4806
  },
4674
- /* @__PURE__ */ React89.createElement(Stack21, null, /* @__PURE__ */ React89.createElement(
4675
- PopoverHeader2,
4676
- {
4677
- title: __57("Dynamic tags", "elementor"),
4678
- onClose: selectionPopoverState.close,
4679
- icon: /* @__PURE__ */ React89.createElement(DatabaseIcon3, { fontSize: SIZE8 })
4680
- }
4681
- ), /* @__PURE__ */ React89.createElement(DynamicSelection, { onSelect: selectionPopoverState.close }))
4807
+ /* @__PURE__ */ React91.createElement(Stack17, null, /* @__PURE__ */ React91.createElement(DynamicSelection, { close: selectionPopoverState.close }))
4682
4808
  ));
4683
4809
  };
4684
4810
  var DynamicSettingsPopover = ({ dynamicTag }) => {
@@ -4687,22 +4813,26 @@ var DynamicSettingsPopover = ({ dynamicTag }) => {
4687
4813
  if (!hasDynamicSettings) {
4688
4814
  return null;
4689
4815
  }
4690
- return /* @__PURE__ */ React89.createElement(React89.Fragment, null, /* @__PURE__ */ React89.createElement(IconButton5, { size: SIZE8, ...bindTrigger2(popupState), "aria-label": __57("Settings", "elementor") }, /* @__PURE__ */ React89.createElement(SettingsIcon, { fontSize: SIZE8 })), /* @__PURE__ */ React89.createElement(
4816
+ return /* @__PURE__ */ React91.createElement(React91.Fragment, null, /* @__PURE__ */ React91.createElement(IconButton5, { size: SIZE7, ...bindTrigger2(popupState), "aria-label": __61("Settings", "elementor") }, /* @__PURE__ */ React91.createElement(SettingsIcon, { fontSize: SIZE7 })), /* @__PURE__ */ React91.createElement(
4691
4817
  Popover2,
4692
4818
  {
4693
4819
  disablePortal: true,
4694
4820
  disableScrollLock: true,
4695
4821
  anchorOrigin: { vertical: "bottom", horizontal: "center" },
4822
+ PaperProps: {
4823
+ sx: { my: 0.5 }
4824
+ },
4696
4825
  ...bindPopover2(popupState)
4697
4826
  },
4698
- /* @__PURE__ */ React89.createElement(Paper, { component: Stack21, sx: { minHeight: "300px", width: "220px" } }, /* @__PURE__ */ React89.createElement(
4699
- PopoverHeader2,
4827
+ /* @__PURE__ */ React91.createElement(
4828
+ PopoverHeader3,
4700
4829
  {
4701
4830
  title: dynamicTag.label,
4702
4831
  onClose: popupState.close,
4703
- icon: /* @__PURE__ */ React89.createElement(DatabaseIcon3, { fontSize: SIZE8 })
4832
+ icon: /* @__PURE__ */ React91.createElement(DatabaseIcon3, { fontSize: SIZE7 })
4704
4833
  }
4705
- ), /* @__PURE__ */ React89.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls }))
4834
+ ),
4835
+ /* @__PURE__ */ React91.createElement(DynamicSettings, { controls: dynamicTag.atomic_controls })
4706
4836
  ));
4707
4837
  };
4708
4838
  var DynamicSettings = ({ controls }) => {
@@ -4711,10 +4841,10 @@ var DynamicSettings = ({ controls }) => {
4711
4841
  if (!tabs.length) {
4712
4842
  return null;
4713
4843
  }
4714
- return /* @__PURE__ */ React89.createElement(React89.Fragment, null, /* @__PURE__ */ React89.createElement(Tabs2, { size: "small", variant: "fullWidth", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React89.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React89.createElement(Divider8, null), tabs.map(({ value }, index) => {
4715
- return /* @__PURE__ */ React89.createElement(TabPanel2, { key: index, sx: { flexGrow: 1, py: 0 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React89.createElement(PopoverContent, { p: 2, gap: 2 }, value.items.map((item) => {
4844
+ return /* @__PURE__ */ React91.createElement(PopoverScrollableContent2, null, /* @__PURE__ */ React91.createElement(Tabs2, { size: "small", variant: "fullWidth", ...getTabsProps() }, tabs.map(({ value }, index) => /* @__PURE__ */ React91.createElement(Tab2, { key: index, label: value.label, sx: { px: 1, py: 0.5 }, ...getTabProps(index) }))), /* @__PURE__ */ React91.createElement(Divider8, null), tabs.map(({ value }, index) => {
4845
+ return /* @__PURE__ */ React91.createElement(TabPanel2, { key: index, sx: { flexGrow: 1, py: 0 }, ...getTabPanelProps(index) }, /* @__PURE__ */ React91.createElement(Stack17, { p: 2, gap: 2 }, value.items.map((item) => {
4716
4846
  if (item.type === "control") {
4717
- return /* @__PURE__ */ React89.createElement(Control3, { key: item.value.bind, control: item.value });
4847
+ return /* @__PURE__ */ React91.createElement(Control3, { key: item.value.bind, control: item.value });
4718
4848
  }
4719
4849
  return null;
4720
4850
  })));
@@ -4724,7 +4854,7 @@ var Control3 = ({ control }) => {
4724
4854
  if (!getControl(control.type)) {
4725
4855
  return null;
4726
4856
  }
4727
- return /* @__PURE__ */ React89.createElement(DynamicControl, { bind: control.bind }, /* @__PURE__ */ React89.createElement(Grid31, { container: true, gap: 0.75 }, control.label ? /* @__PURE__ */ React89.createElement(Grid31, { item: true, xs: 12 }, /* @__PURE__ */ React89.createElement(ControlFormLabel6, null, control.label)) : null, /* @__PURE__ */ React89.createElement(Grid31, { item: true, xs: 12 }, /* @__PURE__ */ React89.createElement(Control, { type: control.type, props: control.props }))));
4857
+ return /* @__PURE__ */ React91.createElement(DynamicControl, { bind: control.bind }, /* @__PURE__ */ React91.createElement(Grid5, { container: true, gap: 0.75 }, control.label ? /* @__PURE__ */ React91.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React91.createElement(ControlFormLabel5, null, control.label)) : null, /* @__PURE__ */ React91.createElement(Grid5, { item: true, xs: 12 }, /* @__PURE__ */ React91.createElement(Control, { type: control.type, props: control.props }))));
4728
4858
  };
4729
4859
 
4730
4860
  // src/dynamics/dynamic-transformer.ts
@@ -4777,18 +4907,18 @@ function getDynamicValue(name, settings) {
4777
4907
  }
4778
4908
 
4779
4909
  // src/dynamics/hooks/use-prop-dynamic-action.tsx
4780
- import * as React90 from "react";
4910
+ import * as React92 from "react";
4781
4911
  import { useBoundProp as useBoundProp7 } from "@elementor/editor-controls";
4782
4912
  import { DatabaseIcon as DatabaseIcon4 } from "@elementor/icons";
4783
- import { __ as __58 } from "@wordpress/i18n";
4913
+ import { __ as __62 } from "@wordpress/i18n";
4784
4914
  var usePropDynamicAction = () => {
4785
4915
  const { propType } = useBoundProp7();
4786
4916
  const visible = !!propType && supportsDynamic(propType);
4787
4917
  return {
4788
4918
  visible,
4789
4919
  icon: DatabaseIcon4,
4790
- title: __58("Dynamic tags", "elementor"),
4791
- popoverContent: ({ closePopover }) => /* @__PURE__ */ React90.createElement(DynamicSelection, { onSelect: closePopover })
4920
+ title: __62("Dynamic tags", "elementor"),
4921
+ content: ({ close }) => /* @__PURE__ */ React92.createElement(DynamicSelection, { close })
4792
4922
  };
4793
4923
  };
4794
4924
 
@@ -4820,7 +4950,7 @@ var init = () => {
4820
4950
  // src/reset-style-props.tsx
4821
4951
  import { useBoundProp as useBoundProp8 } from "@elementor/editor-controls";
4822
4952
  import { BrushBigIcon } from "@elementor/icons";
4823
- import { __ as __59 } from "@wordpress/i18n";
4953
+ import { __ as __63 } from "@wordpress/i18n";
4824
4954
  var { registerAction } = controlActionsMenu;
4825
4955
  function initResetStyleProps() {
4826
4956
  registerAction({
@@ -4834,7 +4964,7 @@ function useResetStyleValueProps() {
4834
4964
  const { value, setValue, path, bind } = useBoundProp8();
4835
4965
  return {
4836
4966
  visible: isStyle && value !== null && value !== void 0 && path.length <= 2 && !EXCLUDED_BINDS.includes(bind),
4837
- title: __59("Clear", "elementor"),
4967
+ title: __63("Clear", "elementor"),
4838
4968
  icon: BrushBigIcon,
4839
4969
  onClick: () => setValue(null)
4840
4970
  };
@@ -4844,36 +4974,36 @@ function useResetStyleValueProps() {
4844
4974
  import { createTransformer as createTransformer6, styleTransformersRegistry as styleTransformersRegistry2 } from "@elementor/editor-canvas";
4845
4975
 
4846
4976
  // src/styles-inheritance/transformers/background-color-overlay-transformer.tsx
4847
- import * as React91 from "react";
4977
+ import * as React93 from "react";
4848
4978
  import { createTransformer as createTransformer2 } from "@elementor/editor-canvas";
4849
- import { Stack as Stack22, styled as styled7, UnstableColorIndicator } from "@elementor/ui";
4850
- var backgroundColorOverlayTransformer = createTransformer2((value) => /* @__PURE__ */ React91.createElement(Stack22, { direction: "row", gap: 10 }, /* @__PURE__ */ React91.createElement(ItemIconColor, { value }), /* @__PURE__ */ React91.createElement(ItemLabelColor, { value })));
4979
+ import { Stack as Stack18, styled as styled7, UnstableColorIndicator } from "@elementor/ui";
4980
+ var backgroundColorOverlayTransformer = createTransformer2((value) => /* @__PURE__ */ React93.createElement(Stack18, { direction: "row", gap: 10 }, /* @__PURE__ */ React93.createElement(ItemIconColor, { value }), /* @__PURE__ */ React93.createElement(ItemLabelColor, { value })));
4851
4981
  var ItemIconColor = ({ value }) => {
4852
4982
  const { color } = value;
4853
- return /* @__PURE__ */ React91.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
4983
+ return /* @__PURE__ */ React93.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: color });
4854
4984
  };
4855
4985
  var ItemLabelColor = ({ value: { color } }) => {
4856
- return /* @__PURE__ */ React91.createElement("span", null, color);
4986
+ return /* @__PURE__ */ React93.createElement("span", null, color);
4857
4987
  };
4858
4988
  var StyledUnstableColorIndicator = styled7(UnstableColorIndicator)(({ theme }) => ({
4859
4989
  borderRadius: `${theme.shape.borderRadius / 2}px`
4860
4990
  }));
4861
4991
 
4862
4992
  // src/styles-inheritance/transformers/background-gradient-overlay-transformer.tsx
4863
- import * as React92 from "react";
4993
+ import * as React94 from "react";
4864
4994
  import { createTransformer as createTransformer3 } from "@elementor/editor-canvas";
4865
- import { Stack as Stack23 } from "@elementor/ui";
4866
- import { __ as __60 } from "@wordpress/i18n";
4867
- var backgroundGradientOverlayTransformer = createTransformer3((value) => /* @__PURE__ */ React92.createElement(Stack23, { direction: "row", gap: 10 }, /* @__PURE__ */ React92.createElement(ItemIconGradient, { value }), /* @__PURE__ */ React92.createElement(ItemLabelGradient, { value })));
4995
+ import { Stack as Stack19 } from "@elementor/ui";
4996
+ import { __ as __64 } from "@wordpress/i18n";
4997
+ var backgroundGradientOverlayTransformer = createTransformer3((value) => /* @__PURE__ */ React94.createElement(Stack19, { direction: "row", gap: 10 }, /* @__PURE__ */ React94.createElement(ItemIconGradient, { value }), /* @__PURE__ */ React94.createElement(ItemLabelGradient, { value })));
4868
4998
  var ItemIconGradient = ({ value }) => {
4869
4999
  const gradient = getGradientValue(value);
4870
- return /* @__PURE__ */ React92.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
5000
+ return /* @__PURE__ */ React94.createElement(StyledUnstableColorIndicator, { size: "inherit", component: "span", value: gradient });
4871
5001
  };
4872
5002
  var ItemLabelGradient = ({ value }) => {
4873
5003
  if (value.type === "linear") {
4874
- return /* @__PURE__ */ React92.createElement("span", null, __60("Linear Gradient", "elementor"));
5004
+ return /* @__PURE__ */ React94.createElement("span", null, __64("Linear Gradient", "elementor"));
4875
5005
  }
4876
- return /* @__PURE__ */ React92.createElement("span", null, __60("Radial Gradient", "elementor"));
5006
+ return /* @__PURE__ */ React94.createElement("span", null, __64("Radial Gradient", "elementor"));
4877
5007
  };
4878
5008
  var getGradientValue = (gradient) => {
4879
5009
  const stops = gradient.stops?.map(({ color, offset }) => `${color} ${offset ?? 0}%`)?.join(",");
@@ -4884,15 +5014,15 @@ var getGradientValue = (gradient) => {
4884
5014
  };
4885
5015
 
4886
5016
  // src/styles-inheritance/transformers/background-image-overlay-transformer.tsx
4887
- import * as React93 from "react";
5017
+ import * as React95 from "react";
4888
5018
  import { createTransformer as createTransformer4 } from "@elementor/editor-canvas";
4889
5019
  import { EllipsisWithTooltip as EllipsisWithTooltip2 } from "@elementor/editor-ui";
4890
- import { CardMedia, Stack as Stack24 } from "@elementor/ui";
5020
+ import { CardMedia, Stack as Stack20 } from "@elementor/ui";
4891
5021
  import { useWpMediaAttachment } from "@elementor/wp-media";
4892
- var backgroundImageOverlayTransformer = createTransformer4((value) => /* @__PURE__ */ React93.createElement(Stack24, { direction: "row", gap: 10 }, /* @__PURE__ */ React93.createElement(ItemIconImage, { value }), /* @__PURE__ */ React93.createElement(ItemLabelImage, { value })));
5022
+ var backgroundImageOverlayTransformer = createTransformer4((value) => /* @__PURE__ */ React95.createElement(Stack20, { direction: "row", gap: 10 }, /* @__PURE__ */ React95.createElement(ItemIconImage, { value }), /* @__PURE__ */ React95.createElement(ItemLabelImage, { value })));
4893
5023
  var ItemIconImage = ({ value }) => {
4894
5024
  const { imageUrl } = useImage(value);
4895
- return /* @__PURE__ */ React93.createElement(
5025
+ return /* @__PURE__ */ React95.createElement(
4896
5026
  CardMedia,
4897
5027
  {
4898
5028
  image: imageUrl,
@@ -4907,7 +5037,7 @@ var ItemIconImage = ({ value }) => {
4907
5037
  };
4908
5038
  var ItemLabelImage = ({ value }) => {
4909
5039
  const { imageTitle } = useImage(value);
4910
- return /* @__PURE__ */ React93.createElement(EllipsisWithTooltip2, { title: imageTitle }, /* @__PURE__ */ React93.createElement("span", null, imageTitle));
5040
+ return /* @__PURE__ */ React95.createElement(EllipsisWithTooltip2, { title: imageTitle }, /* @__PURE__ */ React95.createElement("span", null, imageTitle));
4911
5041
  };
4912
5042
  var useImage = (image) => {
4913
5043
  let imageTitle, imageUrl = null;
@@ -4932,14 +5062,14 @@ var getFileExtensionFromFilename = (filename) => {
4932
5062
  };
4933
5063
 
4934
5064
  // src/styles-inheritance/transformers/background-overlay-transformer.tsx
4935
- import * as React94 from "react";
5065
+ import * as React96 from "react";
4936
5066
  import { createTransformer as createTransformer5 } from "@elementor/editor-canvas";
4937
- import { Stack as Stack25 } from "@elementor/ui";
5067
+ import { Stack as Stack21 } from "@elementor/ui";
4938
5068
  var backgroundOverlayTransformer = createTransformer5((values) => {
4939
5069
  if (!values || values.length === 0) {
4940
5070
  return null;
4941
5071
  }
4942
- return /* @__PURE__ */ React94.createElement(Stack25, { direction: "column" }, values.map((item, index) => /* @__PURE__ */ React94.createElement(Stack25, { key: index }, item)));
5072
+ return /* @__PURE__ */ React96.createElement(Stack21, { direction: "column" }, values.map((item, index) => /* @__PURE__ */ React96.createElement(Stack21, { key: index }, item)));
4943
5073
  });
4944
5074
 
4945
5075
  // src/styles-inheritance/init-styles-inheritance-transformers.ts
@@ -4989,7 +5119,7 @@ function init3() {
4989
5119
  });
4990
5120
  init();
4991
5121
  init2();
4992
- if (isExperimentActive14(EXPERIMENTAL_FEATURES.V_3_30)) {
5122
+ if (isExperimentActive17(EXPERIMENTAL_FEATURES.V_3_30)) {
4993
5123
  initResetStyleProps();
4994
5124
  }
4995
5125
  }
@@ -5000,13 +5130,17 @@ var blockV1Panel = () => {
5000
5130
  });
5001
5131
  };
5002
5132
  export {
5133
+ EXPERIMENTAL_FEATURES,
5134
+ PopoverScrollableContent,
5003
5135
  controlActionsMenu,
5004
5136
  init3 as init,
5005
5137
  injectIntoClassSelectorActions,
5006
5138
  registerControlReplacement,
5139
+ registerStyleProviderToColors,
5007
5140
  useBoundProp9 as useBoundProp,
5008
5141
  useFontFamilies,
5009
5142
  usePanelActions,
5010
- usePanelStatus
5143
+ usePanelStatus,
5144
+ useSectionWidth
5011
5145
  };
5012
5146
  //# sourceMappingURL=index.mjs.map