@carto/meridian-ds 2.1.0-alpha-copiable-input-text.3 → 2.1.1

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 (40) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/dist/{Link-_lzRY1Ay.cjs → Alert-oGAW_syG.cjs} +129 -129
  3. package/dist/{Link-D5fKicEY.js → Alert-yL5uEg4Z.js} +129 -129
  4. package/dist/{MenuItem-CKrhDizf.js → MenuItem-C8x-GasJ.js} +1 -1
  5. package/dist/{MenuItem-BY6fuF5U.cjs → MenuItem-CyIdh2wX.cjs} +1 -1
  6. package/dist/{TablePaginationActions-CCDi-BO-.js → TablePaginationActions-BWer8cmX.js} +6 -6
  7. package/dist/{TablePaginationActions-D2K26kdR.cjs → TablePaginationActions-MwqZJoRm.cjs} +6 -6
  8. package/dist/components/index.cjs +794 -874
  9. package/dist/components/index.js +798 -878
  10. package/dist/theme/index.cjs +2 -2
  11. package/dist/theme/index.js +3 -3
  12. package/dist/types/components/atoms/index.d.ts +0 -2
  13. package/dist/types/components/atoms/index.d.ts.map +1 -1
  14. package/dist/types/components/{atoms/Copy/types.d.ts → molecules/Copy/CopiableComponent.d.ts} +5 -11
  15. package/dist/types/components/molecules/Copy/CopiableComponent.d.ts.map +1 -0
  16. package/dist/types/components/molecules/Copy/copyString.d.ts.map +1 -0
  17. package/dist/types/components/{atoms → molecules}/Copy/index.d.ts +1 -2
  18. package/dist/types/components/molecules/Copy/index.d.ts.map +1 -0
  19. package/dist/types/components/molecules/Copy/useCopyValue.d.ts.map +1 -0
  20. package/dist/types/components/molecules/MultipleSelectField/useMultipleSelectField.d.ts.map +1 -1
  21. package/dist/types/components/molecules/index.d.ts +2 -0
  22. package/dist/types/components/molecules/index.d.ts.map +1 -1
  23. package/dist/types/components/organisms/CodeArea/CodeAreaHeader.d.ts.map +1 -1
  24. package/dist/types/localization/en.d.ts +2 -2
  25. package/dist/types/localization/es.d.ts +2 -2
  26. package/dist/types/localization/id.d.ts +2 -2
  27. package/dist/types/localization/index.d.ts +6 -6
  28. package/dist/widgets/index.cjs +8 -8
  29. package/dist/widgets/index.js +2 -2
  30. package/package.json +1 -1
  31. package/dist/types/components/atoms/Copy/CopiableComponent.d.ts +0 -4
  32. package/dist/types/components/atoms/Copy/CopiableComponent.d.ts.map +0 -1
  33. package/dist/types/components/atoms/Copy/CopiableInputText.d.ts +0 -18
  34. package/dist/types/components/atoms/Copy/CopiableInputText.d.ts.map +0 -1
  35. package/dist/types/components/atoms/Copy/copyString.d.ts.map +0 -1
  36. package/dist/types/components/atoms/Copy/index.d.ts.map +0 -1
  37. package/dist/types/components/atoms/Copy/types.d.ts.map +0 -1
  38. package/dist/types/components/atoms/Copy/useCopyValue.d.ts.map +0 -1
  39. /package/dist/types/components/{atoms → molecules}/Copy/copyString.d.ts +0 -0
  40. /package/dist/types/components/{atoms → molecules}/Copy/useCopyValue.d.ts +0 -0
@@ -1,16 +1,16 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import React, { forwardRef, useState, useEffect, useMemo, useRef, createElement, Fragment as Fragment$1, useCallback, useImperativeHandle } from "react";
2
+ import React, { forwardRef, useState, useRef, useEffect, useMemo, createElement, Fragment as Fragment$1, useCallback, useImperativeHandle } from "react";
3
3
  import { useIntl } from "react-intl";
4
- import { styled, Menu as Menu$2, MenuList as MenuList$1, Link, Checkbox, Select, MenuItem as MenuItem$1, FormControl, Box, InputLabel, FormHelperText, InputAdornment, IconButton, ListItemText, Tooltip, TextField, CircularProgress, Button as Button$1, Autocomplete as Autocomplete$1, Divider, ListItemIcon, createFilterOptions, Accordion, AccordionSummary, AccordionDetails, Avatar as Avatar$1, Snackbar as Snackbar$1, Portal, Fade, Slide, Popper, Grow, Paper, ClickAwayListener, ButtonGroup as ButtonGroup$1, ToggleButtonGroup as ToggleButtonGroup$1, alpha, useTheme, Toolbar, AppBar as AppBar$1, Dialog as Dialog$1, DialogTitle as DialogTitle$1, Chip, DialogContent as DialogContent$1, DialogActions as DialogActions$1 } from "@mui/material";
5
- import { Cancel, AddCircleOutlineOutlined, CloseOutlined, ContentCopyOutlined, VisibilityOutlined, VisibilityOffOutlined, OpenInNewOutlined, MenuOutlined, HelpOutline, TodayOutlined, MoreVertOutlined, ErrorOutline, Check } from "@mui/icons-material";
6
- import { f as MENU_ITEM_SIZE_EXTENDED, u as useImperativeIntl, T as Typography, e as MENU_ITEM_SIZE_DENSE, d as MENU_LIST_MAX_SIZE, M as MENU_ITEM_SIZE_DEFAULT, c as ICON_SIZE_SMALL, N as NOTIFICATION_DURATION_IN_MS, A as APPBAR_SIZE } from "../TablePaginationActions-CCDi-BO-.js";
7
- import { a } from "../TablePaginationActions-CCDi-BO-.js";
8
- import { A as Alert$1, I as IconButton$1, S as ScreenReaderOnly } from "../Link-D5fKicEY.js";
9
- import { L } from "../Link-D5fKicEY.js";
4
+ import { styled, Box, Button as Button$1, CircularProgress, Popper, Grow, Paper, ClickAwayListener, MenuList as MenuList$1, MenuItem, ButtonGroup as ButtonGroup$1, TextField, InputAdornment, IconButton, Tooltip, Select, FormControl, InputLabel, FormHelperText, ToggleButtonGroup as ToggleButtonGroup$1, Menu as Menu$2, Link, Checkbox, ListItemText, Autocomplete as Autocomplete$1, Divider, ListItemIcon, createFilterOptions, Accordion, AccordionSummary, AccordionDetails, Avatar as Avatar$1, Snackbar as Snackbar$1, Portal, Fade, Slide, alpha, useTheme, Toolbar, AppBar as AppBar$1, Dialog as Dialog$1, DialogTitle as DialogTitle$1, Chip, DialogContent as DialogContent$1, DialogActions as DialogActions$1 } from "@mui/material";
5
+ import { OpenInNewOutlined, VisibilityOffOutlined, VisibilityOutlined, Cancel, AddCircleOutlineOutlined, ContentCopyOutlined, CloseOutlined, MenuOutlined, HelpOutline, TodayOutlined, MoreVertOutlined, ErrorOutline, Check } from "@mui/icons-material";
6
+ import { u as useImperativeIntl, T as Typography, c as ICON_SIZE_SMALL, f as MENU_ITEM_SIZE_EXTENDED, e as MENU_ITEM_SIZE_DENSE, d as MENU_LIST_MAX_SIZE, M as MENU_ITEM_SIZE_DEFAULT, N as NOTIFICATION_DURATION_IN_MS, A as APPBAR_SIZE } from "../TablePaginationActions-BWer8cmX.js";
7
+ import { a } from "../TablePaginationActions-BWer8cmX.js";
8
+ import { S as ScreenReaderOnly, I as IconButton$1, A as Alert$1 } from "../Alert-yL5uEg4Z.js";
9
+ import { L } from "../Alert-yL5uEg4Z.js";
10
10
  import { A as ArrowDown } from "../ArrowDown-d6bxUL0F.js";
11
11
  import { A as ArrowUp, O as OpenDiagonallyRight, C as CloseDiagonallyRight } from "../OpenDiagonallyRight-CGdCEXlF.js";
12
12
  import "cartocolor";
13
- import { M as MenuItem } from "../MenuItem-CKrhDizf.js";
13
+ import { M as MenuItem$1 } from "../MenuItem-C8x-GasJ.js";
14
14
  import { FixedSizeList } from "react-window";
15
15
  import { DatePicker as DatePicker$1 } from "@mui/x-date-pickers/DatePicker";
16
16
  import { PickersDay as PickersDay$1 } from "@mui/x-date-pickers";
@@ -41,199 +41,311 @@ import "codemirror/addon/fold/indent-fold.js";
41
41
  import "codemirror/addon/fold/markdown-fold.js";
42
42
  import "codemirror/addon/fold/comment-fold.js";
43
43
  import ClickAwayListener$1 from "@mui/material/ClickAwayListener";
44
- const StyledMenu = styled(Menu$2, {
45
- shouldForwardProp: (prop) => !["extended", "width", "height"].includes(prop)
46
- })(({ extended, width, height }) => ({
47
- ...extended && {
48
- ".MuiMenuItem-root": {
49
- minHeight: MENU_ITEM_SIZE_EXTENDED
44
+ const IndicatorIcon = styled(Box)({
45
+ position: "absolute",
46
+ top: 0,
47
+ left: 0,
48
+ right: 0,
49
+ bottom: 0,
50
+ display: "flex",
51
+ alignItems: "center",
52
+ justifyContent: "center"
53
+ });
54
+ const HiddenText = styled(Box)({
55
+ visibility: "hidden",
56
+ pointerEvents: "none"
57
+ });
58
+ function _Button({
59
+ children,
60
+ loading,
61
+ disabled,
62
+ startIcon,
63
+ endIcon,
64
+ loadingPosition,
65
+ external,
66
+ showExternalIcon = true,
67
+ "aria-describedby": ariaDescribedby,
68
+ ...otherProps
69
+ }, ref) {
70
+ const intl = useIntl();
71
+ const intlConfig = useImperativeIntl(intl);
72
+ const defaultIconLoader = /* @__PURE__ */ jsx(CircularProgress, { size: 18, color: "inherit" });
73
+ const isDefaultLoading = loading && loadingPosition === void 0;
74
+ const isExternalLink = otherProps.href && external;
75
+ const renderContent = () => {
76
+ if (isDefaultLoading) {
77
+ return /* @__PURE__ */ jsxs(Box, { sx: { position: "relative" }, children: [
78
+ /* @__PURE__ */ jsx(IndicatorIcon, { children: defaultIconLoader }),
79
+ /* @__PURE__ */ jsx(HiddenText, { children })
80
+ ] });
50
81
  }
51
- },
52
- ...width && {
53
- ".MuiList-root": {
54
- width,
55
- minWidth: width
82
+ if (isExternalLink) {
83
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
84
+ children,
85
+ /* @__PURE__ */ jsx(ScreenReaderOnly, { id: "external-hint", children: `(${intlConfig.formatMessage({
86
+ id: "c4r.button.opensInNewTab"
87
+ })})` })
88
+ ] });
56
89
  }
57
- },
58
- ...height && {
59
- ".MuiMenu-paper": {
60
- overflow: "hidden"
61
- },
62
- ".MuiList-root": {
63
- maxHeight: height
90
+ return children;
91
+ };
92
+ const getIconForPosition = (position) => {
93
+ if (isDefaultLoading) {
94
+ return void 0;
64
95
  }
65
- }
66
- }));
67
- function _Menu({ extended, width, height, MenuListProps, ...otherProps }, ref) {
68
- return /* @__PURE__ */ jsx(
69
- StyledMenu,
70
- {
71
- ...otherProps,
72
- ref,
73
- "data-name": "menu",
74
- width,
75
- height,
76
- extended,
77
- MenuListProps: {
78
- ...MenuListProps,
79
- "data-width": width,
80
- "data-height": height,
81
- "data-extended": extended
96
+ if (loading && loadingPosition !== void 0) {
97
+ if (loadingPosition === position) {
98
+ return defaultIconLoader;
82
99
  }
100
+ return void 0;
83
101
  }
84
- );
85
- }
86
- const Menu$1 = forwardRef(_Menu);
87
- const StyledMenuList = styled(MenuList$1, {
88
- shouldForwardProp: (prop) => !["extended", "width", "height"].includes(prop)
89
- })(({ extended, width, height }) => ({
90
- ...extended && {
91
- ".MuiMenuItem-root": {
92
- minHeight: MENU_ITEM_SIZE_EXTENDED
93
- }
94
- },
95
- "&.MuiList-root": {
96
- ...width && {
97
- width,
98
- minWidth: width
99
- },
100
- ...height && {
101
- maxHeight: height
102
+ if (position === "start") {
103
+ return startIcon;
104
+ } else {
105
+ return endIcon || (isExternalLink && showExternalIcon ? /* @__PURE__ */ jsx(OpenInNewOutlined, {}) : void 0);
102
106
  }
103
- }
104
- }));
105
- function _MenuList({ extended, width, height, ...otherProps }, ref) {
107
+ };
106
108
  return /* @__PURE__ */ jsx(
107
- StyledMenuList,
109
+ Button$1,
108
110
  {
111
+ disabled: loading || disabled,
112
+ startIcon: getIconForPosition("start"),
113
+ endIcon: getIconForPosition("end"),
109
114
  ...otherProps,
115
+ role: otherProps.href ? "link" : "button",
116
+ ...isExternalLink && {
117
+ target: "_blank",
118
+ rel: "noopener noreferrer"
119
+ },
110
120
  ref,
111
- width,
112
- height,
113
- extended,
114
- "data-name": "menu-list",
115
- "data-width": width,
116
- "data-height": height,
117
- "data-extended": extended
118
- }
119
- );
120
- }
121
- const MenuList = forwardRef(_MenuList);
122
- const StyledMenuItem$1 = styled(MenuItem)(() => ({
123
- marginTop: "0 !important",
124
- marginBottom: "0 !important"
125
- }));
126
- const LinkFilter = styled(Link)(
127
- ({ disabled, theme }) => ({
128
- display: "flex",
129
- alignItems: "center",
130
- gap: theme.spacing(1),
131
- width: "100%",
132
- textAlign: "initial",
133
- ...disabled && {
134
- pointerEvents: "none",
135
- color: theme.palette.text.disabled
136
- }
137
- })
138
- );
139
- function _MenuItemFilter({
140
- areAllSelected,
141
- areAnySelected,
142
- selectAll,
143
- selectAllDisabled,
144
- "aria-label": ariaLabel,
145
- "data-testid": dataTestId
146
- }, ref) {
147
- const intl = useIntl();
148
- const intlConfig = useImperativeIntl(intl);
149
- return /* @__PURE__ */ jsx(
150
- StyledMenuItem$1,
151
- {
152
- ref,
153
- fixed: true,
154
- "data-name": "menu-filter",
155
- "aria-label": ariaLabel,
156
- "data-testid": dataTestId,
157
- children: /* @__PURE__ */ jsxs(
158
- LinkFilter,
159
- {
160
- variant: "body2",
161
- color: "textPrimary",
162
- component: "button",
163
- underline: "none",
164
- disabled: !!selectAllDisabled,
165
- onClick: selectAll,
166
- tabIndex: 0,
167
- children: [
168
- /* @__PURE__ */ jsx(
169
- Checkbox,
170
- {
171
- checked: areAllSelected,
172
- indeterminate: areAnySelected && !areAllSelected,
173
- disabled: selectAllDisabled
174
- }
175
- ),
176
- intlConfig.formatMessage({ id: "c4r.form.selectAll" })
177
- ]
178
- }
179
- )
121
+ "aria-describedby": isExternalLink ? "external-hint" : ariaDescribedby,
122
+ children: /* @__PURE__ */ jsx(Typography, { variant: "inherit", color: "inherit", noWrap: true, component: "span", children: renderContent() })
180
123
  }
181
124
  );
182
125
  }
183
- const MenuItemFilter = forwardRef(_MenuItemFilter);
184
- const idCounter = {};
185
- function uniqueId(prefix = "$lodash$") {
186
- if (!idCounter[prefix]) {
187
- idCounter[prefix] = 0;
188
- }
189
- const id = ++idCounter[prefix];
190
- if (prefix === "$lodash$") {
191
- return `${id}`;
192
- }
193
- return `${prefix}${id}`;
194
- }
195
- const StyledSelect = styled(Select)(({ theme }) => ({
196
- "& .MuiInputAdornment-positionStart": {
197
- paddingLeft: theme.spacing(2),
198
- "&.MuiInputAdornment-sizeSmall": {
199
- paddingLeft: theme.spacing(1.5)
200
- }
201
- },
202
- "& .MuiInputBase-inputAdornedStart": {
203
- paddingLeft: "0px !important"
204
- },
205
- "& .MuiSelect-select .MuiMenuItem-root:hover": {
206
- backgroundColor: "transparent"
207
- },
208
- "&.MuiInputBase-root .MuiSelect-select.MuiSelect-multiple": {
209
- paddingRight: theme.spacing(7)
126
+ const Button = forwardRef(_Button);
127
+ const ButtonGroup = styled(ButtonGroup$1)(({ theme, size }) => ({
128
+ "& .MuiButton-root:last-child": {
129
+ padding: 0,
130
+ minWidth: size === "small" ? theme.spacing(3) : size === "large" ? theme.spacing(6) : theme.spacing(4)
210
131
  }
211
132
  }));
212
- const PlaceholderItem = styled(MenuItem$1)(() => ({
213
- display: "none"
214
- }));
215
- function _SelectField({
216
- children,
217
- placeholder,
218
- size = "small",
219
- displayEmpty,
220
- menuProps,
221
- inputProps,
222
- labelId,
223
- label,
224
- labelSecondary,
225
- helperText,
226
- name,
227
- error,
228
- focused,
133
+ function SplitButton({
134
+ options,
229
135
  disabled,
230
- fullWidth,
231
- required,
232
- "aria-label": ariaLabel,
136
+ loading,
137
+ loadingPosition,
138
+ onClick,
139
+ variant,
140
+ size,
141
+ color,
233
142
  ...otherProps
234
- }, ref) {
235
- const isSmall = size === "small";
236
- const [defaultId] = useState(() => uniqueId("select-label-"));
143
+ }) {
144
+ var _a;
145
+ const [open, setOpen] = useState(false);
146
+ const anchorRef = useRef(null);
147
+ const [selectedIndex, setSelectedIndex] = useState(0);
148
+ const handleClick = () => {
149
+ onClick(options[selectedIndex]);
150
+ };
151
+ const handleMenuItemClick = (_, index) => {
152
+ setSelectedIndex(index);
153
+ setOpen(false);
154
+ };
155
+ const handleToggle = () => {
156
+ setOpen((prevOpen) => !prevOpen);
157
+ };
158
+ const handleClose = (event) => {
159
+ var _a2;
160
+ if ((_a2 = anchorRef.current) == null ? void 0 : _a2.contains(event.target)) {
161
+ return;
162
+ }
163
+ setOpen(false);
164
+ };
165
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
166
+ /* @__PURE__ */ jsxs(
167
+ ButtonGroup,
168
+ {
169
+ "data-name": "split-button",
170
+ ref: anchorRef,
171
+ variant,
172
+ size,
173
+ color,
174
+ ...otherProps,
175
+ children: [
176
+ /* @__PURE__ */ jsx(
177
+ Button,
178
+ {
179
+ disabled,
180
+ loading,
181
+ loadingPosition,
182
+ onClick: handleClick,
183
+ children: (_a = options[selectedIndex]) == null ? void 0 : _a.label
184
+ }
185
+ ),
186
+ /* @__PURE__ */ jsx(Button, { disabled: loading || disabled, onClick: handleToggle, children: open ? /* @__PURE__ */ jsx(ArrowUp, {}) : /* @__PURE__ */ jsx(ArrowDown, {}) })
187
+ ]
188
+ }
189
+ ),
190
+ /* @__PURE__ */ jsx(
191
+ Popper,
192
+ {
193
+ sx: { zIndex: 1 },
194
+ open,
195
+ anchorEl: anchorRef.current,
196
+ role: void 0,
197
+ transition: true,
198
+ disablePortal: true,
199
+ placement: "bottom-end",
200
+ children: ({ TransitionProps, placement }) => /* @__PURE__ */ jsx(
201
+ Grow,
202
+ {
203
+ ...TransitionProps,
204
+ style: {
205
+ transformOrigin: placement === "bottom" ? "center top" : "center bottom"
206
+ },
207
+ children: /* @__PURE__ */ jsx(Paper, { elevation: 8, children: /* @__PURE__ */ jsx(ClickAwayListener, { onClickAway: handleClose, children: /* @__PURE__ */ jsx(MenuList$1, { autoFocusItem: true, sx: { paddingY: 1 }, children: options.map((option, index) => /* @__PURE__ */ jsx(
208
+ MenuItem,
209
+ {
210
+ disabled: option.disabled,
211
+ selected: index === selectedIndex,
212
+ onClick: (event) => handleMenuItemClick(event, index),
213
+ children: option.label
214
+ },
215
+ option.label
216
+ )) }) }) })
217
+ }
218
+ )
219
+ }
220
+ )
221
+ ] });
222
+ }
223
+ const Root$5 = styled(Box)(({ theme }) => ({
224
+ display: "flex",
225
+ alignItems: "center",
226
+ gap: theme.spacing(0.5)
227
+ }));
228
+ const Indicator = styled(Typography)(({ theme }) => ({
229
+ ".Mui-disabled &": {
230
+ color: theme.palette.text.disabled
231
+ }
232
+ }));
233
+ const Icon = styled(Box)(({ theme }) => ({
234
+ display: "flex",
235
+ svg: {
236
+ width: ICON_SIZE_SMALL,
237
+ height: ICON_SIZE_SMALL,
238
+ fontSize: ICON_SIZE_SMALL,
239
+ path: {
240
+ fill: theme.palette.text.secondary,
241
+ ".Mui-disabled &": {
242
+ fill: theme.palette.text.disabled
243
+ }
244
+ }
245
+ }
246
+ }));
247
+ function LabelWithIndicator({
248
+ label,
249
+ type,
250
+ icon,
251
+ inheritSize
252
+ }) {
253
+ return /* @__PURE__ */ jsxs(Root$5, { children: [
254
+ label,
255
+ type && /* @__PURE__ */ jsx(
256
+ Indicator,
257
+ {
258
+ component: "span",
259
+ variant: inheritSize ? "inherit" : "caption",
260
+ color: "textSecondary",
261
+ weight: "regular",
262
+ children: type === "required" ? "(required)" : "(optional)"
263
+ }
264
+ ),
265
+ icon && /* @__PURE__ */ jsx(Icon, { children: icon })
266
+ ] });
267
+ }
268
+ function _PasswordField({ InputProps, size = "small", ...otherProps }, ref) {
269
+ const intl = useIntl();
270
+ const intlConfig = useImperativeIntl(intl);
271
+ const [showPassword, setShowPassword] = useState(false);
272
+ const handleClickShowPassword = () => setShowPassword(!showPassword);
273
+ return /* @__PURE__ */ jsx(
274
+ TextField,
275
+ {
276
+ ...otherProps,
277
+ ref,
278
+ type: showPassword ? "text" : "password",
279
+ size,
280
+ InputProps: {
281
+ ...InputProps,
282
+ endAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(IconButton, { size, onClick: handleClickShowPassword, children: /* @__PURE__ */ jsx(
283
+ Tooltip,
284
+ {
285
+ title: intlConfig.formatMessage({
286
+ id: `c4r.form.${showPassword ? "hidePassword" : "showPassword"}`
287
+ }),
288
+ children: showPassword ? /* @__PURE__ */ jsx(VisibilityOffOutlined, {}) : /* @__PURE__ */ jsx(VisibilityOutlined, {})
289
+ }
290
+ ) }) })
291
+ }
292
+ }
293
+ );
294
+ }
295
+ const PasswordField = forwardRef(_PasswordField);
296
+ const idCounter = {};
297
+ function uniqueId(prefix = "$lodash$") {
298
+ if (!idCounter[prefix]) {
299
+ idCounter[prefix] = 0;
300
+ }
301
+ const id = ++idCounter[prefix];
302
+ if (prefix === "$lodash$") {
303
+ return `${id}`;
304
+ }
305
+ return `${prefix}${id}`;
306
+ }
307
+ const StyledSelect = styled(Select)(({ theme }) => ({
308
+ "& .MuiInputAdornment-positionStart": {
309
+ paddingLeft: theme.spacing(2),
310
+ "&.MuiInputAdornment-sizeSmall": {
311
+ paddingLeft: theme.spacing(1.5)
312
+ }
313
+ },
314
+ "& .MuiInputBase-inputAdornedStart": {
315
+ paddingLeft: "0px !important"
316
+ },
317
+ "& .MuiSelect-select .MuiMenuItem-root:hover": {
318
+ backgroundColor: "transparent"
319
+ },
320
+ "&.MuiInputBase-root .MuiSelect-select.MuiSelect-multiple": {
321
+ paddingRight: theme.spacing(7)
322
+ }
323
+ }));
324
+ const PlaceholderItem = styled(MenuItem)(() => ({
325
+ display: "none"
326
+ }));
327
+ function _SelectField({
328
+ children,
329
+ placeholder,
330
+ size = "small",
331
+ displayEmpty,
332
+ menuProps,
333
+ inputProps,
334
+ labelId,
335
+ label,
336
+ labelSecondary,
337
+ helperText,
338
+ name,
339
+ error,
340
+ focused,
341
+ disabled,
342
+ fullWidth,
343
+ required,
344
+ "aria-label": ariaLabel,
345
+ ...otherProps
346
+ }, ref) {
347
+ const isSmall = size === "small";
348
+ const [defaultId] = useState(() => uniqueId("select-label-"));
237
349
  const ariaLabelledBy = label ? labelId ?? defaultId : void 0;
238
350
  return /* @__PURE__ */ jsxs(
239
351
  FormControl,
@@ -299,56 +411,298 @@ function _SelectField({
299
411
  );
300
412
  }
301
413
  const SelectField = forwardRef(_SelectField);
302
- function useMultipleSelectField({
303
- selectedOptions,
304
- options,
305
- onChange
306
- }) {
307
- const [currentOptions, setCurrentOptions] = useState(selectedOptions ?? []);
308
- const areAllSelected = options.length === currentOptions.length;
309
- const areAnySelected = currentOptions.length > 0;
310
- useEffect(() => {
311
- if (currentOptions !== selectedOptions) {
312
- setCurrentOptions(currentOptions);
313
- }
314
- }, [selectedOptions]);
315
- const handleChange = (event) => {
316
- const {
317
- target: { value }
318
- } = event;
319
- const options2 = typeof value === "string" ? value.split(",") : value.filter((v) => v !== void 0);
320
- setCurrentOptions(options2);
321
- onChange(options2);
322
- };
323
- const selectAll = () => {
324
- const optionsValues = options == null ? void 0 : options.filter(({ disabled }) => !disabled).map(({ value }) => value);
325
- if (optionsValues) {
326
- const allSelected = optionsValues.every(
327
- (value) => currentOptions.includes(value)
328
- );
329
- if (allSelected) {
330
- setCurrentOptions([]);
331
- onChange([]);
332
- } else {
333
- setCurrentOptions(optionsValues);
334
- onChange(optionsValues);
414
+ const StyledToggleButtonGroup = styled(ToggleButtonGroup$1, {
415
+ shouldForwardProp: (prop) => prop !== "variant" && prop !== "backgroundColor"
416
+ })(({ variant, backgroundColor, theme }) => ({
417
+ // Variants
418
+ ...variant === "contained" && {
419
+ boxShadow: "none"
420
+ },
421
+ ...variant === "unbounded" && {
422
+ boxShadow: "none",
423
+ borderRadius: theme.spacing(0.5),
424
+ "& .MuiDivider-root": {
425
+ height: theme.spacing(4),
426
+ "&.MuiToggleButtonGroup-groupedHorizontal": {
427
+ height: theme.spacing(4)
428
+ },
429
+ "&.MuiToggleButtonGroup-groupedVertical": {
430
+ height: "auto",
431
+ width: theme.spacing(4),
432
+ margin: `${theme.spacing(0.5, 0, 1)} !important`,
433
+ borderRadius: "0 !important"
335
434
  }
336
- }
337
- };
338
- const unselectAll = () => {
339
- setCurrentOptions([]);
340
- onChange([]);
341
- };
342
- return {
343
- areAllSelected,
344
- areAnySelected,
345
- currentOptions,
346
- handleChange,
347
- selectAll,
435
+ },
436
+ "& .MuiToggleButton-sizeSmall": {
437
+ margin: 0,
438
+ "&.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)": {
439
+ margin: 0
440
+ },
441
+ "& + .MuiDivider-root.MuiToggleButtonGroup-groupedHorizontal": {
442
+ height: theme.spacing(3)
443
+ },
444
+ "& + .MuiDivider-root.MuiToggleButtonGroup-groupedVertical": {
445
+ height: "auto",
446
+ width: theme.spacing(3)
447
+ }
448
+ },
449
+ ".MuiToggleButtonGroup-grouped:not(.MuiDivider-root)": {
450
+ margin: 0,
451
+ "&:first-of-type": {
452
+ marginLeft: 0
453
+ },
454
+ "&:not(:last-of-type)": {
455
+ marginRight: theme.spacing(0.5)
456
+ }
457
+ },
458
+ "&.MuiToggleButtonGroup-horizontal:not(.MuiDivider-root)": {
459
+ ".MuiToggleButtonGroup-grouped": {
460
+ margin: theme.spacing(0, 0.5)
461
+ }
462
+ },
463
+ "&.MuiToggleButtonGroup-vertical:not(.MuiDivider-root)": {
464
+ ".MuiToggleButtonGroup-grouped": {
465
+ margin: theme.spacing(0, 0, 0.5),
466
+ "&:not(:last-of-type)": {
467
+ marginRight: 0
468
+ },
469
+ "&:last-of-type": {
470
+ marginBottom: 0
471
+ }
472
+ }
473
+ }
474
+ },
475
+ // Colors
476
+ ...backgroundColor === "primary" && {
477
+ backgroundColor: theme.palette.background.paper
478
+ },
479
+ ...backgroundColor === "secondary" && {
480
+ backgroundColor: theme.palette.background.default
481
+ },
482
+ ...backgroundColor === "transparent" && {
483
+ backgroundColor: "transparent"
484
+ }
485
+ }));
486
+ function ToggleButtonGroup({
487
+ children,
488
+ variant = "floating",
489
+ backgroundColor,
490
+ ...rest
491
+ }) {
492
+ const isUnbounded = variant === "unbounded";
493
+ const defaultColor = isUnbounded ? "transparent" : "primary";
494
+ return /* @__PURE__ */ jsx(
495
+ StyledToggleButtonGroup,
496
+ {
497
+ ...rest,
498
+ variant,
499
+ backgroundColor: backgroundColor ?? defaultColor,
500
+ children
501
+ }
502
+ );
503
+ }
504
+ const StyledMenu = styled(Menu$2, {
505
+ shouldForwardProp: (prop) => !["extended", "width", "height"].includes(prop)
506
+ })(({ extended, width, height }) => ({
507
+ ...extended && {
508
+ ".MuiMenuItem-root": {
509
+ minHeight: MENU_ITEM_SIZE_EXTENDED
510
+ }
511
+ },
512
+ ...width && {
513
+ ".MuiList-root": {
514
+ width,
515
+ minWidth: width
516
+ }
517
+ },
518
+ ...height && {
519
+ ".MuiMenu-paper": {
520
+ overflow: "hidden"
521
+ },
522
+ ".MuiList-root": {
523
+ maxHeight: height
524
+ }
525
+ }
526
+ }));
527
+ function _Menu({ extended, width, height, MenuListProps, ...otherProps }, ref) {
528
+ return /* @__PURE__ */ jsx(
529
+ StyledMenu,
530
+ {
531
+ ...otherProps,
532
+ ref,
533
+ "data-name": "menu",
534
+ width,
535
+ height,
536
+ extended,
537
+ MenuListProps: {
538
+ ...MenuListProps,
539
+ "data-width": width,
540
+ "data-height": height,
541
+ "data-extended": extended
542
+ }
543
+ }
544
+ );
545
+ }
546
+ const Menu$1 = forwardRef(_Menu);
547
+ const StyledMenuList = styled(MenuList$1, {
548
+ shouldForwardProp: (prop) => !["extended", "width", "height"].includes(prop)
549
+ })(({ extended, width, height }) => ({
550
+ ...extended && {
551
+ ".MuiMenuItem-root": {
552
+ minHeight: MENU_ITEM_SIZE_EXTENDED
553
+ }
554
+ },
555
+ "&.MuiList-root": {
556
+ ...width && {
557
+ width,
558
+ minWidth: width
559
+ },
560
+ ...height && {
561
+ maxHeight: height
562
+ }
563
+ }
564
+ }));
565
+ function _MenuList({ extended, width, height, ...otherProps }, ref) {
566
+ return /* @__PURE__ */ jsx(
567
+ StyledMenuList,
568
+ {
569
+ ...otherProps,
570
+ ref,
571
+ width,
572
+ height,
573
+ extended,
574
+ "data-name": "menu-list",
575
+ "data-width": width,
576
+ "data-height": height,
577
+ "data-extended": extended
578
+ }
579
+ );
580
+ }
581
+ const MenuList = forwardRef(_MenuList);
582
+ const StyledMenuItem$1 = styled(MenuItem$1)(() => ({
583
+ marginTop: "0 !important",
584
+ marginBottom: "0 !important"
585
+ }));
586
+ const LinkFilter = styled(Link)(
587
+ ({ disabled, theme }) => ({
588
+ display: "flex",
589
+ alignItems: "center",
590
+ gap: theme.spacing(1),
591
+ width: "100%",
592
+ textAlign: "initial",
593
+ ...disabled && {
594
+ pointerEvents: "none",
595
+ color: theme.palette.text.disabled
596
+ }
597
+ })
598
+ );
599
+ function _MenuItemFilter({
600
+ areAllSelected,
601
+ areAnySelected,
602
+ selectAll,
603
+ selectAllDisabled,
604
+ "aria-label": ariaLabel,
605
+ "data-testid": dataTestId
606
+ }, ref) {
607
+ const intl = useIntl();
608
+ const intlConfig = useImperativeIntl(intl);
609
+ return /* @__PURE__ */ jsx(
610
+ StyledMenuItem$1,
611
+ {
612
+ ref,
613
+ fixed: true,
614
+ "data-name": "menu-filter",
615
+ "aria-label": ariaLabel,
616
+ "data-testid": dataTestId,
617
+ children: /* @__PURE__ */ jsxs(
618
+ LinkFilter,
619
+ {
620
+ variant: "body2",
621
+ color: "textPrimary",
622
+ component: "button",
623
+ underline: "none",
624
+ disabled: !!selectAllDisabled,
625
+ onClick: selectAll,
626
+ tabIndex: 0,
627
+ children: [
628
+ /* @__PURE__ */ jsx(
629
+ Checkbox,
630
+ {
631
+ checked: areAllSelected,
632
+ indeterminate: areAnySelected && !areAllSelected,
633
+ disabled: selectAllDisabled
634
+ }
635
+ ),
636
+ intlConfig.formatMessage({ id: "c4r.form.selectAll" })
637
+ ]
638
+ }
639
+ )
640
+ }
641
+ );
642
+ }
643
+ const MenuItemFilter = forwardRef(_MenuItemFilter);
644
+ function useMultipleSelectField({
645
+ selectedOptions,
646
+ options,
647
+ onChange
648
+ }) {
649
+ const [currentOptions, setCurrentOptions] = useState(selectedOptions ?? []);
650
+ const isInternalUpdate = useRef(false);
651
+ useEffect(() => {
652
+ if (!isInternalUpdate.current) {
653
+ setCurrentOptions(selectedOptions ?? []);
654
+ }
655
+ isInternalUpdate.current = false;
656
+ }, [selectedOptions]);
657
+ const enabledOptions = useMemo(
658
+ () => options.filter(({ disabled }) => !disabled),
659
+ [options]
660
+ );
661
+ const enabledOptionValues = useMemo(
662
+ () => enabledOptions.map(({ value }) => value),
663
+ [enabledOptions]
664
+ );
665
+ const areAllSelected = enabledOptionValues.length > 0 && enabledOptionValues.every((value) => currentOptions.includes(value));
666
+ const areAnySelected = currentOptions.length > 0;
667
+ const handleChange = (event) => {
668
+ if (isInternalUpdate.current) {
669
+ return;
670
+ }
671
+ const {
672
+ target: { value }
673
+ } = event;
674
+ const newOptions = typeof value === "string" ? value.split(",") : value.filter((v) => v !== void 0);
675
+ setCurrentOptions(newOptions);
676
+ onChange(newOptions);
677
+ };
678
+ const selectAll = () => {
679
+ const optionsValues = options == null ? void 0 : options.filter(({ disabled }) => !disabled).map(({ value }) => value);
680
+ if (optionsValues) {
681
+ const allSelected = optionsValues.every(
682
+ (value) => currentOptions.includes(value)
683
+ );
684
+ const newValue = allSelected ? [] : optionsValues;
685
+ isInternalUpdate.current = true;
686
+ setCurrentOptions(newValue);
687
+ onChange(newValue);
688
+ }
689
+ };
690
+ const unselectAll = () => {
691
+ const newValue = [];
692
+ isInternalUpdate.current = true;
693
+ setCurrentOptions(newValue);
694
+ onChange(newValue);
695
+ };
696
+ return {
697
+ areAllSelected,
698
+ areAnySelected,
699
+ currentOptions,
700
+ handleChange,
701
+ selectAll,
348
702
  unselectAll
349
703
  };
350
704
  }
351
- const StyledMenuItem = styled(MenuItem$1)(({ theme }) => ({
705
+ const StyledMenuItem = styled(MenuItem)(({ theme }) => ({
352
706
  "&.Mui-disabled": {
353
707
  pointerEvents: "auto",
354
708
  "&:hover": {
@@ -936,7 +1290,7 @@ function useAutocompleteRenderOption() {
936
1290
  const { key, ...otherProps } = props;
937
1291
  if (isAutocompleteListGroupHeader(option)) {
938
1292
  return /* @__PURE__ */ createElement(
939
- MenuItem,
1293
+ MenuItem$1,
940
1294
  {
941
1295
  ...otherProps,
942
1296
  subtitle: true,
@@ -978,7 +1332,7 @@ function useAutocompleteRenderOption() {
978
1332
  return /* @__PURE__ */ jsx(Fragment$1, { children: divider ? /* @__PURE__ */ jsx(Divider, {}) : /* @__PURE__ */ jsxs(Fragment, { children: [
979
1333
  inputValue && /* @__PURE__ */ jsx(Divider, {}),
980
1334
  /* @__PURE__ */ jsxs(
981
- MenuItem,
1335
+ MenuItem$1,
982
1336
  {
983
1337
  ...otherProps,
984
1338
  ...!isPrimitiveOptionType && {
@@ -1517,19 +1871,109 @@ function useAutocomplete({
1517
1871
  getOptionLabel: internalGetOptionLabel
1518
1872
  };
1519
1873
  }
1520
- const AccordionContainer = styled("div", {
1521
- shouldForwardProp: (prop) => prop !== "variant"
1522
- })(({ variant, theme }) => ({
1523
- width: "100%",
1524
- borderRadius: theme.spacing(0.5),
1525
- ...variant === "outlined" && {
1526
- backgroundColor: theme.palette.background.paper,
1527
- boxShadow: `inset 0 0 0 1px ${theme.palette.divider}`
1528
- }
1529
- }));
1530
- function AccordionGroup({
1531
- variant = "standard",
1532
- items,
1874
+ const _CopiableComponent = ({
1875
+ children,
1876
+ disabled,
1877
+ value,
1878
+ onCopied,
1879
+ copyText = "c4r.button.copy",
1880
+ copiedText = "c4r.notifications.copiedToClipboard",
1881
+ button,
1882
+ buttonLabel,
1883
+ buttonProps,
1884
+ ariaLabel,
1885
+ dataTestId,
1886
+ tooltipPlacement = "top",
1887
+ ...props
1888
+ }, ref) => {
1889
+ const intl = useIntl();
1890
+ const intlConfig = useImperativeIntl(intl);
1891
+ const [open, setOpen] = useState(false);
1892
+ const { copy } = useCopyValue(copyText, copiedText);
1893
+ const handleClick = (e) => {
1894
+ e.preventDefault();
1895
+ copy(value).then(() => {
1896
+ onCopied == null ? void 0 : onCopied();
1897
+ setOpen(true);
1898
+ }).catch(console.error);
1899
+ };
1900
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1901
+ /* @__PURE__ */ jsx(
1902
+ Tooltip,
1903
+ {
1904
+ title: intlConfig.formatMessage({ id: copyText }),
1905
+ leaveDelay: 0,
1906
+ placement: tooltipPlacement,
1907
+ children: /* @__PURE__ */ jsxs(
1908
+ Box,
1909
+ {
1910
+ ...props,
1911
+ sx: { cursor: disabled ? void 0 : "pointer" },
1912
+ onClick: handleClick,
1913
+ "data-name": "copiable",
1914
+ ref,
1915
+ children: [
1916
+ children,
1917
+ button && /* @__PURE__ */ jsx(
1918
+ IconButton$1,
1919
+ {
1920
+ ...buttonProps,
1921
+ disabled,
1922
+ icon: /* @__PURE__ */ jsx(ContentCopyOutlined, {}),
1923
+ "data-testid": dataTestId,
1924
+ "aria-label": ariaLabel || buttonLabel,
1925
+ sx: {
1926
+ display: "flex"
1927
+ }
1928
+ }
1929
+ )
1930
+ ]
1931
+ }
1932
+ )
1933
+ }
1934
+ ),
1935
+ /* @__PURE__ */ jsx(
1936
+ Snackbar,
1937
+ {
1938
+ open,
1939
+ autoWidth: true,
1940
+ closeable: false,
1941
+ autoHideDuration: 4e3,
1942
+ onClose: () => setOpen(false),
1943
+ children: intlConfig.formatMessage({ id: copiedText })
1944
+ }
1945
+ )
1946
+ ] });
1947
+ };
1948
+ const CopiableComponent = forwardRef(_CopiableComponent);
1949
+ async function copyString(value) {
1950
+ return await navigator.clipboard.writeText(value);
1951
+ }
1952
+ const useCopyValue = (msg = "c4r.button.copy", copiedMsg = "c4r.notifications.copiedToClipboard") => {
1953
+ const [message, setMessage] = useState(msg);
1954
+ const copy = async (text) => {
1955
+ await copyString(text);
1956
+ setMessage(copiedMsg);
1957
+ setTimeout(() => setMessage(msg), 1e3);
1958
+ };
1959
+ return {
1960
+ message,
1961
+ copy
1962
+ };
1963
+ };
1964
+ const AccordionContainer = styled("div", {
1965
+ shouldForwardProp: (prop) => prop !== "variant"
1966
+ })(({ variant, theme }) => ({
1967
+ width: "100%",
1968
+ borderRadius: theme.spacing(0.5),
1969
+ ...variant === "outlined" && {
1970
+ backgroundColor: theme.palette.background.paper,
1971
+ boxShadow: `inset 0 0 0 1px ${theme.palette.divider}`
1972
+ }
1973
+ }));
1974
+ function AccordionGroup({
1975
+ variant = "standard",
1976
+ items,
1533
1977
  ...otherProps
1534
1978
  }) {
1535
1979
  return /* @__PURE__ */ jsx(AccordionContainer, { ...otherProps, variant, children: items.map((item, index) => /* @__PURE__ */ jsxs(
@@ -1812,652 +2256,129 @@ function colorProps(color, variant, theme, disabled) {
1812
2256
  return {
1813
2257
  color: theme.palette.success.main,
1814
2258
  backgroundColor: theme.palette.success.relatedLight,
1815
- borderColor: "transparent"
1816
- };
1817
- case "warning":
1818
- if (variant === "outlined") {
1819
- return {
1820
- color: theme.palette.warning.main,
1821
- backgroundColor: theme.palette.warning.relatedLight,
1822
- borderColor: theme.palette.warning.main
1823
- };
1824
- }
1825
- return {
1826
- color: theme.palette.text.primary,
1827
- backgroundColor: theme.palette.warning.main,
1828
- borderColor: "transparent"
1829
- };
1830
- case "error":
1831
- if (variant === "outlined") {
1832
- return {
1833
- color: theme.palette.error.main,
1834
- backgroundColor: theme.palette.error.relatedLight,
1835
- borderColor: theme.palette.error.main
1836
- };
1837
- }
1838
- return {
1839
- color: theme.palette.primary.contrastText,
1840
- backgroundColor: theme.palette.error.main,
1841
- borderColor: "transparent"
1842
- };
1843
- }
1844
- }
1845
- const TagRoot = styled("div", {
1846
- shouldForwardProp: (prop) => !["color", "variant", "disabled"].includes(prop)
1847
- })(({
1848
- color,
1849
- variant,
1850
- disabled,
1851
- theme
1852
- }) => {
1853
- return {
1854
- display: "inline-flex",
1855
- flexDirection: "row",
1856
- flexWrap: "nowrap",
1857
- alignItems: "center",
1858
- padding: theme.spacing(0, 0.5),
1859
- borderRadius: theme.spacing(0.25),
1860
- gap: theme.spacing(0.5),
1861
- height: theme.spacing(2),
1862
- borderWidth: "1px",
1863
- borderStyle: "solid",
1864
- ...colorProps(color ?? "primary", variant ?? "filled", theme, disabled),
1865
- '.Mui-selected &, [aria-selected="true"] &': {
1866
- borderColor: theme.palette.primary.main,
1867
- backgroundColor: theme.palette.primary.background,
1868
- ".MuiTypography-root": {
1869
- color: theme.palette.primary.main
1870
- }
1871
- }
1872
- };
1873
- });
1874
- const TagIcon = styled("div")(({ theme }) => ({
1875
- display: "flex",
1876
- justifyContent: "center",
1877
- alignItems: "center",
1878
- "& svg": {
1879
- width: theme.spacing(ICON_SIZE_SMALL),
1880
- height: theme.spacing(ICON_SIZE_SMALL),
1881
- "& g": {
1882
- fill: "currentColor"
1883
- }
1884
- }
1885
- }));
1886
- const TagLabel = styled("div", {
1887
- shouldForwardProp: (prop) => !["type"].includes(prop)
1888
- })(({ type, theme }) => ({
1889
- display: "flex",
1890
- alignItems: "center",
1891
- paddingTop: type === "code" ? theme.spacing(0.25) : void 0
1892
- }));
1893
- function _Tag({
1894
- label,
1895
- color = "primary",
1896
- variant = "filled",
1897
- icon,
1898
- type = "default",
1899
- typographyProps,
1900
- noWrap = true,
1901
- disabled,
1902
- ...otherProps
1903
- }, ref) {
1904
- const typeCode = type === "code";
1905
- return /* @__PURE__ */ jsxs(
1906
- TagRoot,
1907
- {
1908
- ref,
1909
- className: "CartoTag-root",
1910
- color,
1911
- variant,
1912
- disabled,
1913
- "aria-disabled": disabled,
1914
- "data-color": color,
1915
- "data-variant": variant,
1916
- "data-type": type,
1917
- "data-name": "tag",
1918
- ...otherProps,
1919
- children: [
1920
- icon && /* @__PURE__ */ jsx(TagIcon, { children: icon }),
1921
- /* @__PURE__ */ jsx(TagLabel, { type, children: /* @__PURE__ */ jsx(
1922
- Typography,
1923
- {
1924
- component: "span",
1925
- color: "inherit",
1926
- variant: typeCode ? "code3" : "caption",
1927
- weight: typeCode ? "strong" : "medium",
1928
- noWrap,
1929
- ...typographyProps,
1930
- children: label
1931
- }
1932
- ) })
1933
- ]
1934
- }
1935
- );
1936
- }
1937
- const Tag = forwardRef(_Tag);
1938
- const _CopiableComponent = ({
1939
- children,
1940
- disabled,
1941
- value,
1942
- onCopied,
1943
- copyText,
1944
- copiedText,
1945
- button,
1946
- buttonLabel,
1947
- buttonProps,
1948
- ariaLabel,
1949
- dataTestId,
1950
- tooltipPlacement = "top",
1951
- ...props
1952
- }, ref) => {
1953
- const [open, setOpen] = useState(false);
1954
- const intl = useIntl();
1955
- const intlConfig = useImperativeIntl(intl);
1956
- const copyTooltipText = copyText || intlConfig.formatMessage({ id: "c4r.button.copy" });
1957
- const copySuccessMessage = copiedText || intlConfig.formatMessage({
1958
- id: "c4r.notifications.copiedToClipboard"
1959
- });
1960
- const { copy } = useCopyValue(copyTooltipText, copySuccessMessage);
1961
- const handleClick = (e) => {
1962
- e.preventDefault();
1963
- copy(value).then(() => {
1964
- onCopied == null ? void 0 : onCopied();
1965
- setOpen(true);
1966
- }).catch(console.error);
1967
- };
1968
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1969
- /* @__PURE__ */ jsx(
1970
- Tooltip,
1971
- {
1972
- title: copyTooltipText,
1973
- leaveDelay: 0,
1974
- placement: tooltipPlacement,
1975
- children: /* @__PURE__ */ jsxs(
1976
- Box,
1977
- {
1978
- ...props,
1979
- sx: { cursor: disabled ? void 0 : "pointer" },
1980
- onClick: handleClick,
1981
- "data-name": "copiable",
1982
- ref,
1983
- children: [
1984
- children,
1985
- button && /* @__PURE__ */ jsx(
1986
- IconButton$1,
1987
- {
1988
- ...buttonProps,
1989
- disabled,
1990
- icon: /* @__PURE__ */ jsx(ContentCopyOutlined, {}),
1991
- "data-testid": dataTestId,
1992
- "aria-label": ariaLabel || buttonLabel || copyTooltipText,
1993
- sx: {
1994
- display: "flex"
1995
- }
1996
- }
1997
- )
1998
- ]
1999
- }
2000
- )
2001
- }
2002
- ),
2003
- /* @__PURE__ */ jsx(
2004
- Snackbar,
2005
- {
2006
- open,
2007
- autoWidth: true,
2008
- closeable: false,
2009
- autoHideDuration: 4e3,
2010
- onClose: () => setOpen(false),
2011
- children: copySuccessMessage
2012
- }
2013
- )
2014
- ] });
2015
- };
2016
- const CopiableComponent = forwardRef(_CopiableComponent);
2017
- const StyledTextField = styled(TextField)(() => ({
2018
- "& input": {
2019
- textOverflow: "unset"
2020
- // This is needed to avoid scrolling issues in the input
2021
- }
2022
- }));
2023
- const AdornmentWrapper = styled(Box, {
2024
- shouldForwardProp: (prop) => !["size", "variant"].includes(prop)
2025
- })(({ variant, size, theme }) => ({
2026
- width: theme.spacing(3),
2027
- ...variant === "standard" ? {
2028
- marginLeft: theme.spacing(-0.25)
2029
- } : {
2030
- marginRight: theme.spacing(-1)
2031
- },
2032
- ...size === "medium" && {
2033
- width: theme.spacing(4),
2034
- ...variant === "standard" ? {
2035
- marginLeft: theme.spacing(-0.5)
2036
- } : {
2037
- marginLeft: theme.spacing(1)
2038
- }
2039
- }
2040
- }));
2041
- function _CopiableInputText({
2042
- value,
2043
- variant,
2044
- InputProps,
2045
- extraEndAdornment,
2046
- onCopied,
2047
- password,
2048
- size = "small",
2049
- ...rest
2050
- }, ref) {
2051
- const intl = useIntl();
2052
- const intlConfig = useImperativeIntl(intl);
2053
- const [showText, setShowText] = useState(false);
2054
- const inputType = !password ? "text" : showText ? "text" : "password";
2055
- const showTextLabel = intlConfig.formatMessage({
2056
- id: showText ? "c4r.button.hide" : "c4r.button.show"
2057
- });
2058
- const passwordAdornment = /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(
2059
- IconButton$1,
2060
- {
2061
- edge: variant !== "standard" ? "end" : void 0,
2062
- onClick: () => setShowText(!showText),
2063
- size,
2064
- icon: showText ? /* @__PURE__ */ jsx(VisibilityOutlined, {}) : /* @__PURE__ */ jsx(VisibilityOffOutlined, {}),
2065
- tooltip: showTextLabel,
2066
- "aria-label": showTextLabel
2067
- }
2068
- ) });
2069
- return /* @__PURE__ */ jsx(
2070
- StyledTextField,
2071
- {
2072
- ...rest,
2073
- size,
2074
- value,
2075
- variant,
2076
- InputProps: {
2077
- readOnly: true,
2078
- endAdornment: /* @__PURE__ */ jsxs(Fragment, { children: [
2079
- password ? passwordAdornment : extraEndAdornment,
2080
- /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(AdornmentWrapper, { size, variant, children: /* @__PURE__ */ jsx(
2081
- CopiableComponent,
2082
- {
2083
- value,
2084
- onCopied,
2085
- button: true,
2086
- buttonProps: {
2087
- size
2088
- }
2089
- }
2090
- ) }) })
2091
- ] }),
2092
- ...variant === "filled" && {
2093
- disableUnderline: true
2094
- },
2095
- ...InputProps
2096
- },
2097
- type: inputType,
2098
- "data-name": "copiable-input-text",
2099
- ref
2100
- }
2101
- );
2102
- }
2103
- const CopiableInputText = forwardRef(_CopiableInputText);
2104
- async function copyString(value) {
2105
- return await navigator.clipboard.writeText(value);
2106
- }
2107
- const useCopyValue = (msg = "c4r.button.copy", copiedMsg = "c4r.notifications.copiedToClipboard") => {
2108
- const [message, setMessage] = useState(msg);
2109
- const copy = async (text) => {
2110
- await copyString(text);
2111
- setMessage(copiedMsg);
2112
- setTimeout(() => setMessage(msg), 1e3);
2113
- };
2114
- return {
2115
- message,
2116
- copy
2117
- };
2118
- };
2119
- const IndicatorIcon = styled(Box)({
2120
- position: "absolute",
2121
- top: 0,
2122
- left: 0,
2123
- right: 0,
2124
- bottom: 0,
2125
- display: "flex",
2126
- alignItems: "center",
2127
- justifyContent: "center"
2128
- });
2129
- const HiddenText = styled(Box)({
2130
- visibility: "hidden",
2131
- pointerEvents: "none"
2132
- });
2133
- function _Button({
2134
- children,
2135
- loading,
2136
- disabled,
2137
- startIcon,
2138
- endIcon,
2139
- loadingPosition,
2140
- external,
2141
- showExternalIcon = true,
2142
- "aria-describedby": ariaDescribedby,
2143
- ...otherProps
2144
- }, ref) {
2145
- const intl = useIntl();
2146
- const intlConfig = useImperativeIntl(intl);
2147
- const defaultIconLoader = /* @__PURE__ */ jsx(CircularProgress, { size: 18, color: "inherit" });
2148
- const isDefaultLoading = loading && loadingPosition === void 0;
2149
- const isExternalLink = otherProps.href && external;
2150
- const renderContent = () => {
2151
- if (isDefaultLoading) {
2152
- return /* @__PURE__ */ jsxs(Box, { sx: { position: "relative" }, children: [
2153
- /* @__PURE__ */ jsx(IndicatorIcon, { children: defaultIconLoader }),
2154
- /* @__PURE__ */ jsx(HiddenText, { children })
2155
- ] });
2156
- }
2157
- if (isExternalLink) {
2158
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2159
- children,
2160
- /* @__PURE__ */ jsx(ScreenReaderOnly, { id: "external-hint", children: `(${intlConfig.formatMessage({
2161
- id: "c4r.button.opensInNewTab"
2162
- })})` })
2163
- ] });
2164
- }
2165
- return children;
2166
- };
2167
- const getIconForPosition = (position) => {
2168
- if (isDefaultLoading) {
2169
- return void 0;
2170
- }
2171
- if (loading && loadingPosition !== void 0) {
2172
- if (loadingPosition === position) {
2173
- return defaultIconLoader;
2174
- }
2175
- return void 0;
2176
- }
2177
- if (position === "start") {
2178
- return startIcon;
2179
- } else {
2180
- return endIcon || (isExternalLink && showExternalIcon ? /* @__PURE__ */ jsx(OpenInNewOutlined, {}) : void 0);
2181
- }
2182
- };
2183
- return /* @__PURE__ */ jsx(
2184
- Button$1,
2185
- {
2186
- disabled: loading || disabled,
2187
- startIcon: getIconForPosition("start"),
2188
- endIcon: getIconForPosition("end"),
2189
- ...otherProps,
2190
- role: otherProps.href ? "link" : "button",
2191
- ...isExternalLink && {
2192
- target: "_blank",
2193
- rel: "noopener noreferrer"
2194
- },
2195
- ref,
2196
- "aria-describedby": isExternalLink ? "external-hint" : ariaDescribedby,
2197
- children: /* @__PURE__ */ jsx(Typography, { variant: "inherit", color: "inherit", noWrap: true, component: "span", children: renderContent() })
2198
- }
2199
- );
2200
- }
2201
- const Button = forwardRef(_Button);
2202
- const ButtonGroup = styled(ButtonGroup$1)(({ theme, size }) => ({
2203
- "& .MuiButton-root:last-child": {
2204
- padding: 0,
2205
- minWidth: size === "small" ? theme.spacing(3) : size === "large" ? theme.spacing(6) : theme.spacing(4)
2206
- }
2207
- }));
2208
- function SplitButton({
2209
- options,
2210
- disabled,
2211
- loading,
2212
- loadingPosition,
2213
- onClick,
2214
- variant,
2215
- size,
2216
- color,
2217
- ...otherProps
2218
- }) {
2219
- var _a;
2220
- const [open, setOpen] = useState(false);
2221
- const anchorRef = useRef(null);
2222
- const [selectedIndex, setSelectedIndex] = useState(0);
2223
- const handleClick = () => {
2224
- onClick(options[selectedIndex]);
2225
- };
2226
- const handleMenuItemClick = (_, index) => {
2227
- setSelectedIndex(index);
2228
- setOpen(false);
2229
- };
2230
- const handleToggle = () => {
2231
- setOpen((prevOpen) => !prevOpen);
2232
- };
2233
- const handleClose = (event) => {
2234
- var _a2;
2235
- if ((_a2 = anchorRef.current) == null ? void 0 : _a2.contains(event.target)) {
2236
- return;
2237
- }
2238
- setOpen(false);
2239
- };
2240
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2241
- /* @__PURE__ */ jsxs(
2242
- ButtonGroup,
2243
- {
2244
- "data-name": "split-button",
2245
- ref: anchorRef,
2246
- variant,
2247
- size,
2248
- color,
2249
- ...otherProps,
2250
- children: [
2251
- /* @__PURE__ */ jsx(
2252
- Button,
2253
- {
2254
- disabled,
2255
- loading,
2256
- loadingPosition,
2257
- onClick: handleClick,
2258
- children: (_a = options[selectedIndex]) == null ? void 0 : _a.label
2259
- }
2260
- ),
2261
- /* @__PURE__ */ jsx(Button, { disabled: loading || disabled, onClick: handleToggle, children: open ? /* @__PURE__ */ jsx(ArrowUp, {}) : /* @__PURE__ */ jsx(ArrowDown, {}) })
2262
- ]
2263
- }
2264
- ),
2265
- /* @__PURE__ */ jsx(
2266
- Popper,
2267
- {
2268
- sx: { zIndex: 1 },
2269
- open,
2270
- anchorEl: anchorRef.current,
2271
- role: void 0,
2272
- transition: true,
2273
- disablePortal: true,
2274
- placement: "bottom-end",
2275
- children: ({ TransitionProps, placement }) => /* @__PURE__ */ jsx(
2276
- Grow,
2277
- {
2278
- ...TransitionProps,
2279
- style: {
2280
- transformOrigin: placement === "bottom" ? "center top" : "center bottom"
2281
- },
2282
- children: /* @__PURE__ */ jsx(Paper, { elevation: 8, children: /* @__PURE__ */ jsx(ClickAwayListener, { onClickAway: handleClose, children: /* @__PURE__ */ jsx(MenuList$1, { autoFocusItem: true, sx: { paddingY: 1 }, children: options.map((option, index) => /* @__PURE__ */ jsx(
2283
- MenuItem$1,
2284
- {
2285
- disabled: option.disabled,
2286
- selected: index === selectedIndex,
2287
- onClick: (event) => handleMenuItemClick(event, index),
2288
- children: option.label
2289
- },
2290
- option.label
2291
- )) }) }) })
2292
- }
2293
- )
2259
+ borderColor: "transparent"
2260
+ };
2261
+ case "warning":
2262
+ if (variant === "outlined") {
2263
+ return {
2264
+ color: theme.palette.warning.main,
2265
+ backgroundColor: theme.palette.warning.relatedLight,
2266
+ borderColor: theme.palette.warning.main
2267
+ };
2294
2268
  }
2295
- )
2296
- ] });
2269
+ return {
2270
+ color: theme.palette.text.primary,
2271
+ backgroundColor: theme.palette.warning.main,
2272
+ borderColor: "transparent"
2273
+ };
2274
+ case "error":
2275
+ if (variant === "outlined") {
2276
+ return {
2277
+ color: theme.palette.error.main,
2278
+ backgroundColor: theme.palette.error.relatedLight,
2279
+ borderColor: theme.palette.error.main
2280
+ };
2281
+ }
2282
+ return {
2283
+ color: theme.palette.primary.contrastText,
2284
+ backgroundColor: theme.palette.error.main,
2285
+ borderColor: "transparent"
2286
+ };
2287
+ }
2297
2288
  }
2298
- const Root$5 = styled(Box)(({ theme }) => ({
2289
+ const TagRoot = styled("div", {
2290
+ shouldForwardProp: (prop) => !["color", "variant", "disabled"].includes(prop)
2291
+ })(({
2292
+ color,
2293
+ variant,
2294
+ disabled,
2295
+ theme
2296
+ }) => {
2297
+ return {
2298
+ display: "inline-flex",
2299
+ flexDirection: "row",
2300
+ flexWrap: "nowrap",
2301
+ alignItems: "center",
2302
+ padding: theme.spacing(0, 0.5),
2303
+ borderRadius: theme.spacing(0.25),
2304
+ gap: theme.spacing(0.5),
2305
+ height: theme.spacing(2),
2306
+ borderWidth: "1px",
2307
+ borderStyle: "solid",
2308
+ ...colorProps(color ?? "primary", variant ?? "filled", theme, disabled),
2309
+ '.Mui-selected &, [aria-selected="true"] &': {
2310
+ borderColor: theme.palette.primary.main,
2311
+ backgroundColor: theme.palette.primary.background,
2312
+ ".MuiTypography-root": {
2313
+ color: theme.palette.primary.main
2314
+ }
2315
+ }
2316
+ };
2317
+ });
2318
+ const TagIcon = styled("div")(({ theme }) => ({
2299
2319
  display: "flex",
2320
+ justifyContent: "center",
2300
2321
  alignItems: "center",
2301
- gap: theme.spacing(0.5)
2302
- }));
2303
- const Indicator = styled(Typography)(({ theme }) => ({
2304
- ".Mui-disabled &": {
2305
- color: theme.palette.text.disabled
2322
+ "& svg": {
2323
+ width: theme.spacing(ICON_SIZE_SMALL),
2324
+ height: theme.spacing(ICON_SIZE_SMALL),
2325
+ "& g": {
2326
+ fill: "currentColor"
2327
+ }
2306
2328
  }
2307
2329
  }));
2308
- const Icon = styled(Box)(({ theme }) => ({
2330
+ const TagLabel = styled("div", {
2331
+ shouldForwardProp: (prop) => !["type"].includes(prop)
2332
+ })(({ type, theme }) => ({
2309
2333
  display: "flex",
2310
- svg: {
2311
- width: ICON_SIZE_SMALL,
2312
- height: ICON_SIZE_SMALL,
2313
- fontSize: ICON_SIZE_SMALL,
2314
- path: {
2315
- fill: theme.palette.text.secondary,
2316
- ".Mui-disabled &": {
2317
- fill: theme.palette.text.disabled
2318
- }
2319
- }
2320
- }
2334
+ alignItems: "center",
2335
+ paddingTop: type === "code" ? theme.spacing(0.25) : void 0
2321
2336
  }));
2322
- function LabelWithIndicator({
2337
+ function _Tag({
2323
2338
  label,
2324
- type,
2339
+ color = "primary",
2340
+ variant = "filled",
2325
2341
  icon,
2326
- inheritSize
2327
- }) {
2328
- return /* @__PURE__ */ jsxs(Root$5, { children: [
2329
- label,
2330
- type && /* @__PURE__ */ jsx(
2331
- Indicator,
2332
- {
2333
- component: "span",
2334
- variant: inheritSize ? "inherit" : "caption",
2335
- color: "textSecondary",
2336
- weight: "regular",
2337
- children: type === "required" ? "(required)" : "(optional)"
2338
- }
2339
- ),
2340
- icon && /* @__PURE__ */ jsx(Icon, { children: icon })
2341
- ] });
2342
- }
2343
- function _PasswordField({ InputProps, size = "small", ...otherProps }, ref) {
2344
- const intl = useIntl();
2345
- const intlConfig = useImperativeIntl(intl);
2346
- const [showPassword, setShowPassword] = useState(false);
2347
- const handleClickShowPassword = () => setShowPassword(!showPassword);
2348
- return /* @__PURE__ */ jsx(
2349
- TextField,
2342
+ type = "default",
2343
+ typographyProps,
2344
+ noWrap = true,
2345
+ disabled,
2346
+ ...otherProps
2347
+ }, ref) {
2348
+ const typeCode = type === "code";
2349
+ return /* @__PURE__ */ jsxs(
2350
+ TagRoot,
2350
2351
  {
2351
- ...otherProps,
2352
2352
  ref,
2353
- type: showPassword ? "text" : "password",
2354
- size,
2355
- InputProps: {
2356
- ...InputProps,
2357
- endAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(IconButton, { size, onClick: handleClickShowPassword, children: /* @__PURE__ */ jsx(
2358
- Tooltip,
2353
+ className: "CartoTag-root",
2354
+ color,
2355
+ variant,
2356
+ disabled,
2357
+ "aria-disabled": disabled,
2358
+ "data-color": color,
2359
+ "data-variant": variant,
2360
+ "data-type": type,
2361
+ "data-name": "tag",
2362
+ ...otherProps,
2363
+ children: [
2364
+ icon && /* @__PURE__ */ jsx(TagIcon, { children: icon }),
2365
+ /* @__PURE__ */ jsx(TagLabel, { type, children: /* @__PURE__ */ jsx(
2366
+ Typography,
2359
2367
  {
2360
- title: intlConfig.formatMessage({
2361
- id: `c4r.form.${showPassword ? "hidePassword" : "showPassword"}`
2362
- }),
2363
- children: showPassword ? /* @__PURE__ */ jsx(VisibilityOffOutlined, {}) : /* @__PURE__ */ jsx(VisibilityOutlined, {})
2368
+ component: "span",
2369
+ color: "inherit",
2370
+ variant: typeCode ? "code3" : "caption",
2371
+ weight: typeCode ? "strong" : "medium",
2372
+ noWrap,
2373
+ ...typographyProps,
2374
+ children: label
2364
2375
  }
2365
- ) }) })
2366
- }
2367
- }
2368
- );
2369
- }
2370
- const PasswordField = forwardRef(_PasswordField);
2371
- const StyledToggleButtonGroup = styled(ToggleButtonGroup$1, {
2372
- shouldForwardProp: (prop) => prop !== "variant" && prop !== "backgroundColor"
2373
- })(({ variant, backgroundColor, theme }) => ({
2374
- // Variants
2375
- ...variant === "contained" && {
2376
- boxShadow: "none"
2377
- },
2378
- ...variant === "unbounded" && {
2379
- boxShadow: "none",
2380
- borderRadius: theme.spacing(0.5),
2381
- "& .MuiDivider-root": {
2382
- height: theme.spacing(4),
2383
- "&.MuiToggleButtonGroup-groupedHorizontal": {
2384
- height: theme.spacing(4)
2385
- },
2386
- "&.MuiToggleButtonGroup-groupedVertical": {
2387
- height: "auto",
2388
- width: theme.spacing(4),
2389
- margin: `${theme.spacing(0.5, 0, 1)} !important`,
2390
- borderRadius: "0 !important"
2391
- }
2392
- },
2393
- "& .MuiToggleButton-sizeSmall": {
2394
- margin: 0,
2395
- "&.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)": {
2396
- margin: 0
2397
- },
2398
- "& + .MuiDivider-root.MuiToggleButtonGroup-groupedHorizontal": {
2399
- height: theme.spacing(3)
2400
- },
2401
- "& + .MuiDivider-root.MuiToggleButtonGroup-groupedVertical": {
2402
- height: "auto",
2403
- width: theme.spacing(3)
2404
- }
2405
- },
2406
- ".MuiToggleButtonGroup-grouped:not(.MuiDivider-root)": {
2407
- margin: 0,
2408
- "&:first-of-type": {
2409
- marginLeft: 0
2410
- },
2411
- "&:not(:last-of-type)": {
2412
- marginRight: theme.spacing(0.5)
2413
- }
2414
- },
2415
- "&.MuiToggleButtonGroup-horizontal:not(.MuiDivider-root)": {
2416
- ".MuiToggleButtonGroup-grouped": {
2417
- margin: theme.spacing(0, 0.5)
2418
- }
2419
- },
2420
- "&.MuiToggleButtonGroup-vertical:not(.MuiDivider-root)": {
2421
- ".MuiToggleButtonGroup-grouped": {
2422
- margin: theme.spacing(0, 0, 0.5),
2423
- "&:not(:last-of-type)": {
2424
- marginRight: 0
2425
- },
2426
- "&:last-of-type": {
2427
- marginBottom: 0
2428
- }
2429
- }
2430
- }
2431
- },
2432
- // Colors
2433
- ...backgroundColor === "primary" && {
2434
- backgroundColor: theme.palette.background.paper
2435
- },
2436
- ...backgroundColor === "secondary" && {
2437
- backgroundColor: theme.palette.background.default
2438
- },
2439
- ...backgroundColor === "transparent" && {
2440
- backgroundColor: "transparent"
2441
- }
2442
- }));
2443
- function ToggleButtonGroup({
2444
- children,
2445
- variant = "floating",
2446
- backgroundColor,
2447
- ...rest
2448
- }) {
2449
- const isUnbounded = variant === "unbounded";
2450
- const defaultColor = isUnbounded ? "transparent" : "primary";
2451
- return /* @__PURE__ */ jsx(
2452
- StyledToggleButtonGroup,
2453
- {
2454
- ...rest,
2455
- variant,
2456
- backgroundColor: backgroundColor ?? defaultColor,
2457
- children
2376
+ ) })
2377
+ ]
2458
2378
  }
2459
2379
  );
2460
2380
  }
2381
+ const Tag = forwardRef(_Tag);
2461
2382
  const Menu = styled("div")(({ theme }) => ({
2462
2383
  display: "flex",
2463
2384
  alignItems: "center",
@@ -3529,11 +3450,11 @@ function CodeAreaHeader({
3529
3450
  transformOrigin: { vertical: "top", horizontal: "right" },
3530
3451
  anchorOrigin: { vertical: "bottom", horizontal: "right" },
3531
3452
  children: [
3532
- /* @__PURE__ */ jsxs(MenuItem, { onClick: handleCopy, disabled, id: "copy", children: [
3453
+ /* @__PURE__ */ jsxs(MenuItem$1, { onClick: handleCopy, disabled, id: "copy", children: [
3533
3454
  /* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(ContentCopyOutlined, {}) }),
3534
3455
  /* @__PURE__ */ jsx(ListItemText, { children: intlConfig.formatMessage({ id: `c4r.button.copy` }) })
3535
3456
  ] }),
3536
- /* @__PURE__ */ jsxs(MenuItem, { onClick: onClickExpand, disabled, id: "expand", children: [
3457
+ /* @__PURE__ */ jsxs(MenuItem$1, { onClick: onClickExpand, disabled, id: "expand", children: [
3537
3458
  /* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(OpenDiagonallyRight, {}) }),
3538
3459
  /* @__PURE__ */ jsx(ListItemText, { children: intlConfig.formatMessage({ id: `c4r.button.expand` }) })
3539
3460
  ] })
@@ -5188,7 +5109,6 @@ export {
5188
5109
  CodeAreaInput,
5189
5110
  CodeAreaMarkTextPattern,
5190
5111
  CopiableComponent,
5191
- CopiableInputText,
5192
5112
  CreatableAutocomplete,
5193
5113
  DatePicker,
5194
5114
  DateRangePicker,
@@ -5207,7 +5127,7 @@ export {
5207
5127
  LabelWithIndicator,
5208
5128
  L as Link,
5209
5129
  Menu$1 as Menu,
5210
- MenuItem,
5130
+ MenuItem$1 as MenuItem,
5211
5131
  MenuItemFilter,
5212
5132
  MenuList,
5213
5133
  MultipleAutocomplete,