@uniformdev/design-system 18.18.1-alpha.12 → 18.19.1-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -37,6 +41,7 @@ __export(src_exports, {
37
41
  Card: () => Card,
38
42
  CardContainer: () => CardContainer2,
39
43
  CheckboxWithInfo: () => CheckboxWithInfo,
44
+ ConnectToDataElementButton: () => ConnectToDataElementButton,
40
45
  Counter: () => Counter,
41
46
  CreateTeamIntegrationTile: () => CreateTeamIntegrationTile,
42
47
  DashedBox: () => DashedBox,
@@ -80,6 +85,30 @@ __export(src_exports, {
80
85
  MenuItemSeparator: () => MenuItemSeparator,
81
86
  PageHeaderSection: () => PageHeaderSection,
82
87
  Paragraph: () => Paragraph,
88
+ ParameterDataResource: () => ParameterDataResource,
89
+ ParameterDrawerHeader: () => ParameterDrawerHeader,
90
+ ParameterGroup: () => ParameterGroup,
91
+ ParameterImage: () => ParameterImage,
92
+ ParameterImageInner: () => ParameterImageInner,
93
+ ParameterInput: () => ParameterInput,
94
+ ParameterInputInner: () => ParameterInputInner,
95
+ ParameterLabel: () => ParameterLabel,
96
+ ParameterLink: () => ParameterLink,
97
+ ParameterLinkInner: () => ParameterLinkInner,
98
+ ParameterMenuButton: () => ParameterMenuButton,
99
+ ParameterNameAndPublicIdInput: () => ParameterNameAndPublicIdInput,
100
+ ParameterOverrideMarker: () => ParameterOverrideMarker,
101
+ ParameterRichText: () => ParameterRichText,
102
+ ParameterRichTextInner: () => ParameterRichTextInner,
103
+ ParameterSelect: () => ParameterSelect,
104
+ ParameterSelectInner: () => ParameterSelectInner,
105
+ ParameterShell: () => ParameterShell,
106
+ ParameterShellContext: () => ParameterShellContext,
107
+ ParameterShellPlaceholder: () => ParameterShellPlaceholder,
108
+ ParameterTextarea: () => ParameterTextarea,
109
+ ParameterTextareaInner: () => ParameterTextareaInner,
110
+ ParameterToggle: () => ParameterToggle,
111
+ ParameterToggleInner: () => ParameterToggleInner,
83
112
  ResolveIcon: () => ResolveIcon,
84
113
  ScrollableList: () => ScrollableList,
85
114
  ScrollableListInputItem: () => ScrollableListInputItem,
@@ -117,6 +146,7 @@ __export(src_exports, {
117
146
  buttonSecondaryInvert: () => buttonSecondaryInvert,
118
147
  buttonTertiary: () => buttonTertiary,
119
148
  buttonUnimportant: () => buttonUnimportant,
149
+ extractParameterProps: () => extractParameterProps,
120
150
  fadeIn: () => fadeIn,
121
151
  fadeInBottom: () => fadeInBottom,
122
152
  fadeInLtr: () => fadeInLtr,
@@ -141,6 +171,7 @@ __export(src_exports, {
141
171
  useIconContext: () => useIconContext,
142
172
  useMenuContext: () => useMenuContext,
143
173
  useOutsideClick: () => useOutsideClick,
174
+ useParameterShell: () => useParameterShell,
144
175
  useShortcut: () => useShortcut
145
176
  });
146
177
  module.exports = __toCommonJS(src_exports);
@@ -1343,7 +1374,9 @@ var customIcons = {
1343
1374
  // src/components/Icons/IconsProvider.tsx
1344
1375
  var import_jsx_runtime4 = require("@emotion/react/jsx-runtime");
1345
1376
  var IconContext = (0, import_react12.createContext)({
1377
+ /** object mapping of available icons */
1346
1378
  iconsMap: {},
1379
+ /** sets the loading state of the icon */
1347
1380
  isLoading: true
1348
1381
  });
1349
1382
  function useIconContext() {
@@ -8422,6 +8455,7 @@ var Button = React5.forwardRef(
8422
8455
  ghost: buttonGhost,
8423
8456
  ghostDestructive: buttonGhostDestructive,
8424
8457
  unimportant: buttonUnimportant,
8458
+ /** @deprecated */
8425
8459
  tertiary: buttonTertiary
8426
8460
  };
8427
8461
  const btnSize = {
@@ -9161,6 +9195,9 @@ var counterIcon = import_react31.css`
9161
9195
  // src/components/Counter/Counter.tsx
9162
9196
  var import_jsx_runtime26 = require("@emotion/react/jsx-runtime");
9163
9197
  var Counter = ({ count }) => {
9198
+ if (typeof count === "undefined") {
9199
+ return null;
9200
+ }
9164
9201
  const isTripleDigits = count > 99 ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { css: counterTripleValue, title: `${count}`, children: [
9165
9202
  "99",
9166
9203
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icon, { icon: "math-plus", iconColor: "currentColor", size: "0.5rem", css: counterIcon })
@@ -9221,6 +9258,7 @@ var React8 = __toESM(require("react"));
9221
9258
  // src/components/Details/Details.styles.ts
9222
9259
  var import_react33 = require("@emotion/react");
9223
9260
  var details = import_react33.css`
9261
+ cursor: pointer;
9224
9262
  &[open] {
9225
9263
  & > summary svg {
9226
9264
  rotate: 0deg;
@@ -9855,6 +9893,7 @@ function InputComboBox(props) {
9855
9893
  ...base,
9856
9894
  margin: "0",
9857
9895
  padding: "0",
9896
+ // Prevents input shadow when focused within the select area
9858
9897
  "& > input": {
9859
9898
  boxShadow: "none !important"
9860
9899
  },
@@ -9874,11 +9913,13 @@ function InputComboBox(props) {
9874
9913
  return {
9875
9914
  ...base,
9876
9915
  className: "input-combobox-control",
9916
+ // Used to provide overriding styles for blue focus ring and offset borders
9877
9917
  border: state.isFocused ? "1px solid transparent" : "1px solid var(--gray-400)",
9878
9918
  lineHeight: 1.25,
9879
9919
  outline: state.isFocused ? "1px solid var(--brand-secondary-1)" : "none",
9880
9920
  outlineOffset: 0,
9881
9921
  minHeight: "58px",
9922
+ // matches the min-height of other input fields
9882
9923
  boxShadow: "none",
9883
9924
  "&:hover": {
9884
9925
  boxShadow: "none"
@@ -10312,6 +10353,7 @@ var LimitsBar = ({ current, max, label }) => {
10312
10353
  const colorMap = {
10313
10354
  base: "var(--gray-400)",
10314
10355
  warn: "#facc15",
10356
+ // Not in the design system token at present
10315
10357
  danger: "var(--brand-secondary-5)"
10316
10358
  };
10317
10359
  const statusColor = progressBarValue === 100 ? colorMap.danger : progressBarValue >= 75 ? colorMap.warn : colorMap.base;
@@ -11243,224 +11285,1237 @@ var IntegrationModalHeader = ({ icon, name, menu: menu2, children }) => {
11243
11285
  ] });
11244
11286
  };
11245
11287
 
11246
- // src/components/Skeleton/Skeleton.styles.ts
11288
+ // src/components/Tooltip/Tooltip.tsx
11289
+ var import_react64 = __toESM(require("react"));
11290
+ var import_Tooltip = require("reakit/Tooltip");
11291
+
11292
+ // src/components/Tooltip/Tooltip.styles.ts
11247
11293
  var import_react63 = require("@emotion/react");
11248
- var lightFadingOut = import_react63.keyframes`
11249
- from { opacity: 0.1; }
11250
- to { opacity: 0.025; }
11294
+ var TooltipContainer = import_react63.css`
11295
+ border: 2px solid var(--gray-300);
11296
+ border-radius: var(--rounded-base);
11297
+ padding: var(--spacing-xs) var(--spacing-sm);
11298
+ color: var(--gray-500);
11299
+ font-size: var(--fs-xs);
11300
+ background: var(--white);
11251
11301
  `;
11252
- var skeletonStyles = import_react63.css`
11253
- animation: ${lightFadingOut} 1s ease-out infinite alternate;
11254
- background-color: var(--gray-900);
11302
+ var TooltipArrowStyles = import_react63.css`
11303
+ svg {
11304
+ fill: var(--gray-300);
11305
+ }
11255
11306
  `;
11256
11307
 
11257
- // src/components/Skeleton/Skeleton.tsx
11308
+ // src/components/Tooltip/Tooltip.tsx
11258
11309
  var import_jsx_runtime63 = require("@emotion/react/jsx-runtime");
11259
- var Skeleton = ({
11260
- width = "100%",
11261
- height = "1.25rem",
11262
- inline = false,
11263
- circle = false,
11310
+ function Tooltip({ children, title, placement = "bottom", visible, ...props }) {
11311
+ const tooltip = (0, import_Tooltip.useTooltipState)({ placement });
11312
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
11313
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_Tooltip.TooltipReference, { ...tooltip, ...children.props, children: (referenceProps) => import_react64.default.cloneElement(children, referenceProps) }),
11314
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_Tooltip.Tooltip, { ...tooltip, ...props, css: TooltipContainer, visible: visible != null ? visible : tooltip.visible, children: [
11315
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_Tooltip.TooltipArrow, { ...tooltip, css: TooltipArrowStyles }),
11316
+ title
11317
+ ] })
11318
+ ] });
11319
+ }
11320
+
11321
+ // src/components/ParameterInputs/styles/ParameterBindingButton.styles.ts
11322
+ var import_react65 = require("@emotion/react");
11323
+ var inputIconBtn = import_react65.css`
11324
+ align-items: center;
11325
+ border: none;
11326
+ border-radius: var(--rounded-base);
11327
+ background: none;
11328
+ display: flex;
11329
+ padding: var(--spacing-2xs);
11330
+ transition: background var(--duration-fast) var(--timing-ease-out),
11331
+ color var(--duration-fast) var(--timing-ease-out);
11332
+
11333
+ &:hover,
11334
+ &[aria-pressed='true']:not(:disabled) {
11335
+ background: var(--brand-secondary-3);
11336
+ color: var(--white);
11337
+ }
11338
+ `;
11339
+
11340
+ // src/components/ParameterInputs/ConnectToDataElementButton.tsx
11341
+ var import_jsx_runtime64 = require("@emotion/react/jsx-runtime");
11342
+ var ConnectToDataElementButton = ({
11343
+ icon,
11344
+ iconColor,
11264
11345
  children,
11265
- ...otherProps
11266
- }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11267
- "div",
11268
- {
11269
- css: [
11270
- skeletonStyles,
11346
+ isBound,
11347
+ isLocked,
11348
+ ...props
11349
+ }) => {
11350
+ const title = isLocked ? "Read-only pattern parameter" : isBound ? "Connected to external content. Click to edit" : "Click to connect to external content";
11351
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Tooltip, { title, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("button", { css: inputIconBtn, type: "button", "aria-pressed": isBound, ...props, disabled: isLocked, children: [
11352
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
11353
+ Icon,
11271
11354
  {
11272
- width: circle ? height : width,
11273
- height,
11274
- display: inline ? "inline-block" : "block",
11275
- borderRadius: circle ? "var(--rounded-full)" : "var(--rounded-md)"
11355
+ icon: isLocked ? "lock" : icon ? icon : "arrows-expand-down-right",
11356
+ iconColor: iconColor ? iconColor : "currentColor",
11357
+ size: "1rem"
11276
11358
  }
11277
- ],
11278
- ...otherProps,
11279
- "aria-busy": "true",
11280
- "aria-label": "Loading...",
11359
+ ),
11281
11360
  children
11282
- }
11283
- );
11361
+ ] }) });
11362
+ };
11284
11363
 
11285
- // src/components/Switch/Switch.tsx
11286
- var React13 = __toESM(require("react"));
11364
+ // src/components/ParameterInputs/hooks/ParameterShellContext.tsx
11365
+ var import_react66 = require("react");
11366
+ var ParameterShellContext = (0, import_react66.createContext)({
11367
+ id: "",
11368
+ label: "",
11369
+ hiddenLabel: void 0,
11370
+ errorMessage: void 0,
11371
+ onManuallySetErrorMessage: () => {
11372
+ }
11373
+ });
11374
+ var useParameterShell = () => {
11375
+ const { id, label, hiddenLabel, errorMessage, onManuallySetErrorMessage } = (0, import_react66.useContext)(ParameterShellContext);
11376
+ return {
11377
+ id,
11378
+ label,
11379
+ hiddenLabel,
11380
+ errorMessage,
11381
+ onManuallySetErrorMessage
11382
+ };
11383
+ };
11287
11384
 
11288
- // src/components/Switch/Switch.styles.ts
11289
- var import_react64 = require("@emotion/react");
11290
- var SwitchInputContainer = import_react64.css`
11291
- cursor: pointer;
11292
- display: inline-block;
11385
+ // src/components/ParameterInputs/styles/ParameterInput.styles.ts
11386
+ var import_react67 = require("@emotion/react");
11387
+ var inputContainer2 = import_react67.css`
11293
11388
  position: relative;
11294
- margin-right: var(--spacing-sm);
11295
- transition: var(--duration-fast) var(--timing-ease-out);
11296
- vertical-align: middle;
11297
- user-select: none;
11389
+
11390
+ &:hover,
11391
+ &:focus,
11392
+ &:focus-within {
11393
+ .parameter-menu {
11394
+ opacity: var(--opacity-100);
11395
+ translate: 0 0;
11396
+ }
11397
+ }
11298
11398
  `;
11299
- var SwitchInput = import_react64.css`
11300
- appearance: none;
11301
- border-radius: var(--rounded-full);
11302
- background-color: var(--white);
11303
- border: 2px solid var(--gray-400);
11304
- cursor: pointer;
11305
- position: absolute;
11399
+ var labelText2 = import_react67.css`
11400
+ align-items: center;
11401
+ display: flex;
11402
+ gap: var(--spacing-xs);
11403
+ font-weight: var(--fw-regular);
11404
+ margin: 0 0 var(--spacing-xs);
11405
+ `;
11406
+ var input2 = import_react67.css`
11306
11407
  display: block;
11307
- width: var(--spacing-md);
11308
- height: var(--spacing-md);
11309
- transition: transform var(--duration-fast) var(--timing-ease-out),
11310
- background-color var(--duration-fast) var(--timing-ease-out),
11311
- background-image var(--duration-fast) var(--timing-ease-out);
11312
- z-index: var(--z-10);
11408
+ appearance: none;
11409
+ box-sizing: border-box;
11410
+ background: var(--white);
11411
+ border: 1px solid var(--white);
11412
+ border-radius: var(--rounded-sm);
11413
+ color: var(--gray-700);
11414
+ font-size: var(--fs-sm);
11415
+ line-height: 1.2;
11416
+ min-height: 2rem;
11417
+ padding: var(--spacing-sm);
11418
+ width: 100%;
11419
+ position: relative;
11420
+ white-space: wrap;
11421
+ transition-property: background, border-color, color, box-shadow, border-radius;
11422
+ transition-duration: var(--duration-fast);
11423
+ transition-timing-function: var(--timing-ease-out);
11313
11424
 
11314
- &:focus {
11315
- outline: 3px solid var(--brand-secondary-1);
11316
- outline-offset: 2px;
11425
+ &::placeholder {
11426
+ color: var(--gray-400);
11317
11427
  }
11318
11428
 
11319
- &:checked {
11320
- background-color: var(--brand-secondary-3);
11321
- background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%0A%3E%3Cpath d='M10.5858 13.4142L7.75735 10.5858L6.34314 12L10.5858 16.2427L17.6568 9.1716L16.2426 7.75739L10.5858 13.4142Z' fill='%23fff' /%3E%3C/svg%3E");
11322
- background-position: center center;
11323
- border-color: var(--brand-secondary-3);
11324
- transform: translateX(var(--spacing-base));
11325
-
11326
- &:hover,
11327
- &:focus {
11328
- border-color: var(--brand-secondary-1);
11329
- background-color: var(--brand-secondary-1);
11330
- }
11429
+ &:focus,
11430
+ &:focus-within {
11431
+ border-radius: var(--rounded-md);
11432
+ box-shadow: none;
11433
+ border: 1px solid var(--gray-300);
11434
+ outline: none;
11331
11435
  }
11332
11436
 
11333
- &:disabled {
11437
+ &:disabled,
11438
+ &:disabled::placeholder,
11439
+ &:disabled:hover {
11440
+ border-radius: var(--rounded-md);
11334
11441
  cursor: not-allowed;
11442
+ color: var(--gray-400);
11335
11443
  }
11336
- `;
11337
- var SwitchInputDisabled = import_react64.css`
11338
- opacity: var(--opacity-50);
11339
- cursor: not-allowed;
11340
11444
 
11341
- & > :before {
11445
+ &[readonly] {
11342
11446
  cursor: not-allowed;
11447
+ color: var(--gray-400);
11343
11448
  }
11344
11449
  `;
11345
- var SwitchInputLabel = import_react64.css`
11450
+ var selectInput = import_react67.css`
11451
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%0A%3E%3Cpath d='M6.34317 7.75732L4.92896 9.17154L12 16.2426L19.0711 9.17157L17.6569 7.75735L12 13.4142L6.34317 7.75732Z' fill='currentColor' /%3E%3C/svg%3E");
11452
+ background-position: right var(--spacing-sm) center;
11453
+ background-repeat: no-repeat;
11454
+ background-size: 1rem;
11455
+ padding-right: var(--spacing-xl);
11456
+ `;
11457
+ var inputWrapper = import_react67.css`
11458
+ display: flex; // used to correct overflow with chrome textarea
11459
+ position: relative;
11460
+ `;
11461
+ var inputIcon2 = import_react67.css`
11346
11462
  align-items: center;
11347
- color: var(--brand-secondary-1);
11463
+ background: var(--white);
11464
+ border-radius: var(--rounded-md) 0 0 var(--rounded-md);
11465
+ border-right: 1px solid var(--gray-100);
11466
+ color: var(--gray-300);
11467
+ display: flex;
11468
+ justify-content: center;
11469
+ transition: background var(--duration-fast) var(--timing-ease-out);
11470
+ position: absolute;
11471
+ top: 0;
11472
+ left: 0;
11473
+ bottom: 0;
11474
+ width: var(--spacing-lg);
11475
+ z-index: var(--z-10);
11476
+ `;
11477
+ var inputToggleLabel2 = import_react67.css`
11478
+ align-items: center;
11479
+ background: var(--white);
11480
+ cursor: pointer;
11348
11481
  display: inline-flex;
11349
- font-weight: var(--fw-bold);
11350
- line-height: 1.25;
11351
- padding-inline: var(--spacing-2xl) 0;
11482
+ gap: var(--spacing-sm);
11483
+ font-weight: var(--fw-regular);
11484
+ font-size: var(--fs-sm);
11485
+ min-height: var(--spacing-md);
11486
+ position: relative;
11487
+ `;
11488
+ var toggleInput2 = import_react67.css`
11489
+ appearance: none;
11490
+ border: 1px solid var(--gray-300);
11491
+ background: var(--white);
11492
+ width: var(--spacing-md);
11493
+ height: var(--spacing-md);
11494
+ transition: background var(--duration-fast) var(--timing-ease-out),
11495
+ border-color var(--duration-fast) var(--timing-ease-out),
11496
+ color var(--duration-fast) var(--timing-ease-out);
11497
+ font-size: var(--fs-sm);
11498
+ line-height: 1;
11352
11499
 
11353
- &:before {
11500
+ position: absolute;
11501
+ left: 0;
11502
+
11503
+ &:where([type='radio']) {
11354
11504
  border-radius: var(--rounded-full);
11355
- background-color: var(--gray-300);
11356
- content: '';
11357
- cursor: pointer;
11358
- display: block;
11359
- overflow: hidden;
11360
- width: var(--spacing-xl);
11361
- height: var(--spacing-md);
11362
- position: absolute;
11363
- left: 0;
11364
- top: 0;
11365
11505
  }
11366
- `;
11367
- var SwitchText = import_react64.css`
11368
- color: var(--gray-500);
11369
- font-size: var(--fs-sm);
11370
- padding-inline: var(--spacing-2xl) 0;
11371
- `;
11372
11506
 
11373
- // src/components/Switch/Switch.tsx
11374
- var import_jsx_runtime64 = require("@emotion/react/jsx-runtime");
11375
- var Switch = React13.forwardRef(
11376
- ({ label, infoText, toggleText, children, ...inputProps }, ref) => {
11377
- let additionalText = infoText;
11378
- if (infoText && toggleText) {
11379
- additionalText = inputProps.checked ? toggleText : infoText;
11380
- }
11381
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
11382
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
11383
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
11384
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { css: SwitchInputLabel, children: label })
11385
- ] }),
11386
- additionalText ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { css: SwitchText, children: additionalText }) : null,
11387
- children
11388
- ] });
11507
+ &:where([type='checkbox']) {
11508
+ border-radius: var(--rounded-md);
11389
11509
  }
11390
- );
11391
11510
 
11392
- // src/components/Table/Table.tsx
11393
- var React14 = __toESM(require("react"));
11511
+ &:checked,
11512
+ &:checked:hover,
11513
+ &:checked:focus {
11514
+ background: var(--brand-secondary-3)
11515
+ url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%0A%3E%3Cpath d='M10.5858 13.4142L7.75735 10.5858L6.34314 12L10.5858 16.2427L17.6568 9.1716L16.2426 7.75739L10.5858 13.4142Z' fill='%23fff' /%3E%3C/svg%3E")
11516
+ no-repeat center center;
11517
+ border-color: var(--brand-secondary-3);
11518
+ color: var(--white);
11519
+ }
11394
11520
 
11395
- // src/components/Table/Table.styles.ts
11396
- var import_react65 = require("@emotion/react");
11397
- var table = import_react65.css`
11398
- border-bottom: 1px solid var(--gray-400);
11399
- border-collapse: collapse;
11400
- min-width: 100%;
11401
- table-layout: auto;
11402
- `;
11403
- var tableHead = import_react65.css`
11404
- background: var(--gray-100);
11405
- color: var(--brand-secondary-1);
11406
- text-align: left;
11407
- `;
11408
- var tableRow = import_react65.css`
11409
- border-bottom: 1px solid var(--gray-200);
11521
+ &:disabled {
11522
+ cursor: not-allowed;
11523
+ color: var(--gray-400);
11524
+ border-color: var(--gray-300);
11525
+ }
11410
11526
  `;
11411
- var tableCellHead = import_react65.css`
11527
+ var inlineLabel2 = import_react67.css`
11528
+ padding-left: var(--spacing-lg);
11412
11529
  font-size: var(--fs-sm);
11413
- padding: var(--spacing-base) var(--spacing-md);
11414
- text-transform: uppercase;
11415
- font-weight: var(--fw-bold);
11416
- `;
11417
- var tableCellData = import_react65.css`
11418
- padding: var(--spacing-base) var(--spacing-md);
11419
- `;
11530
+ font-weight: var(--fw-regular);
11531
+ translate: 0 1px; // brings the span into central alignment
11532
+ pointer-events: none; // prevents e2e failing on click event, this does not happen to the end user
11420
11533
 
11421
- // src/components/Table/Table.tsx
11534
+ > a {
11535
+ color: var(--brand-secondary-3);
11536
+ text-decoration: underline;
11537
+
11538
+ &:hover {
11539
+ text-decoration: none;
11540
+ }
11541
+ }
11542
+ `;
11543
+ var inputMenu = import_react67.css`
11544
+ background: none;
11545
+ border: none;
11546
+ padding: 0;
11547
+ position: absolute;
11548
+ top: calc(var(--spacing-md) * -1.2);
11549
+ right: 0;
11550
+ opacity: var(--opacity-50);
11551
+ transition: opacity var(--duration-fast) var(--timing-ease-out);
11552
+
11553
+ // css trick to style the input like a hover or active state when the menu button is active or hovered
11554
+ &:hover,
11555
+ &[aria-expanded='true'] {
11556
+ ~ input,
11557
+ ~ select,
11558
+ ~ textarea {
11559
+ 'order-radius: var(--rounded-md);
11560
+ }
11561
+
11562
+ }
11563
+ `;
11564
+ var textarea2 = import_react67.css`
11565
+ resize: vertical;
11566
+ min-height: 2rem;
11567
+ `;
11568
+ var imageWrapper = import_react67.css`
11569
+ background: var(--white);
11570
+ `;
11571
+ var img = import_react67.css`
11572
+ animation: ${fadeIn} var(--duration-fast) var(--timing-ease-out) forwards;
11573
+ aspect-ratio: 1 / 1;
11574
+ max-width: 100%;
11575
+ height: auto;
11576
+ opacity: var(--opacity-0);
11577
+ margin-top: var(--spacing-sm);
11578
+ `;
11579
+ var dataConnectButton = import_react67.css`
11580
+ align-items: center;
11581
+ appearance: none;
11582
+ box-sizing: border-box;
11583
+ background-color: var(--white);
11584
+ border: 1px solid var(--brand-secondary-3);
11585
+ border-radius: var(--rounded-md);
11586
+ color: var(--brand-secondary-3);
11587
+ display: flex;
11588
+ padding: var(--spacing-sm);
11589
+ position: relative;
11590
+ transition: background var(--duration-fast) var(--timing-ease-out),
11591
+ outline-color var(--duration-fast) var(--timing-ease-out),
11592
+ color var(--duration-fast) var(--timing-ease-out);
11593
+ width: 100%;
11594
+ font-weight: var(--fw-medium);
11595
+ font-size: var(--fs-sm);
11596
+ line-height: 1;
11597
+ min-height: 34px;
11598
+ justify-content: center;
11599
+
11600
+ &:focus,
11601
+ &:focus-within {
11602
+ outline: 1px solid var(--gray-300);
11603
+ border-radius: var(--rounded-md);
11604
+ }
11605
+
11606
+ &:disabled:hover,
11607
+ &:disabled {
11608
+ border-radius: var(--rounded-md);
11609
+ cursor: not-allowed;
11610
+ color: var(--gray-400);
11611
+ pointer-events: none;
11612
+ }
11613
+ `;
11614
+ var linkParameterBtn = import_react67.css`
11615
+ border-radius: var(--rounded-base);
11616
+ background: var(--white);
11617
+ border: none;
11618
+ color: var(--brand-secondary-3);
11619
+ font-weight: var(--fw-regular);
11620
+ font-size: var(--fs-sm);
11621
+ line-height: 1;
11622
+ position: absolute;
11623
+ inset: 0 var(--spacing-base) 0 auto;
11624
+ padding: 0 var(--spacing-base);
11625
+ `;
11626
+ var linkParameterInput = import_react67.css`
11627
+ padding-right: calc(var(--spacing-2xl) + var(--spacing-base));
11628
+ `;
11629
+ var linkParameterIcon = import_react67.css`
11630
+ align-items: center;
11631
+ color: var(--brand-secondary-3);
11632
+ display: flex;
11633
+ justify-content: center;
11634
+ padding: var(--spacing-2xs);
11635
+ transition: color var(--duration-fast) var(--timing-ease-out);
11636
+ margin-left: auto;
11637
+
11638
+ &:hover {
11639
+ color: var(--brand-secondary-1);
11640
+ }
11641
+ `;
11642
+
11643
+ // src/components/ParameterInputs/ParameterDataResource.tsx
11422
11644
  var import_jsx_runtime65 = require("@emotion/react/jsx-runtime");
11423
- var Table = React14.forwardRef(({ children, ...otherProps }, ref) => {
11424
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("table", { ref, css: table, ...otherProps, children });
11645
+ function ParameterDataResource({
11646
+ label,
11647
+ labelLeadingIcon,
11648
+ id,
11649
+ onConnectDatasource,
11650
+ caption,
11651
+ disabled,
11652
+ children
11653
+ }) {
11654
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { "data-testid": "parameter-data-connect-button", children: [
11655
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { css: labelText2, children: [
11656
+ labelLeadingIcon ? labelLeadingIcon : null,
11657
+ label
11658
+ ] }),
11659
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
11660
+ "button",
11661
+ {
11662
+ type: "button",
11663
+ css: dataConnectButton,
11664
+ "aria-controls": id,
11665
+ disabled,
11666
+ onClick: onConnectDatasource,
11667
+ children: [
11668
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "advance-input-icon", css: [inputIcon2], children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { icon: "stack", iconColor: "currentColor", size: "1rem" }) }),
11669
+ children
11670
+ ]
11671
+ }
11672
+ ),
11673
+ caption ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Caption, { children: caption }) : null
11674
+ ] });
11675
+ }
11676
+
11677
+ // src/components/ParameterInputs/styles/ParameterDrawerHeader.styles.ts
11678
+ var import_react68 = require("@emotion/react");
11679
+ var ParameterDrawerHeaderContainer = import_react68.css`
11680
+ align-items: center;
11681
+ display: flex;
11682
+ gap: var(--spacing-base);
11683
+ justify-content: space-between;
11684
+ margin-bottom: var(--spacing-sm);
11685
+ `;
11686
+ var ParameterDrawerHeaderTitleGroup = import_react68.css`
11687
+ align-items: center;
11688
+ display: flex;
11689
+ gap: var(--spacing-sm);
11690
+ `;
11691
+ var ParameterDrawerHeaderTitle = import_react68.css`
11692
+ text-overflow: ellipsis;
11693
+ white-space: nowrap;
11694
+ overflow: hidden;
11695
+ max-width: 16ch;
11696
+ `;
11697
+
11698
+ // src/components/ParameterInputs/ParameterDrawerHeader.tsx
11699
+ var import_jsx_runtime66 = require("@emotion/react/jsx-runtime");
11700
+ var ParameterDrawerHeader = ({ title, iconBeforeTitle, children }) => {
11701
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { css: ParameterDrawerHeaderContainer, children: [
11702
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("header", { css: ParameterDrawerHeaderTitleGroup, children: [
11703
+ iconBeforeTitle,
11704
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Heading, { level: 3, withMarginBottom: false, css: ParameterDrawerHeaderTitle, title, children: title })
11705
+ ] }),
11706
+ children
11707
+ ] });
11708
+ };
11709
+
11710
+ // src/components/ParameterInputs/ParameterGroup.tsx
11711
+ var import_react70 = require("react");
11712
+
11713
+ // src/components/ParameterInputs/styles/ParameterGroup.styles.ts
11714
+ var import_react69 = require("@emotion/react");
11715
+ var fieldsetStyles = import_react69.css`
11716
+ &:disabled,
11717
+ [readonly] {
11718
+ pointer-events: none;
11719
+
11720
+ label,
11721
+ legend {
11722
+ opacity: var(--opacity-60);
11723
+ }
11724
+ }
11725
+ `;
11726
+ var fieldsetLegend2 = import_react69.css`
11727
+ display: block;
11728
+ font-weight: var(--fw-medium);
11729
+ margin-bottom: var(--spacing-sm);
11730
+ `;
11731
+
11732
+ // src/components/ParameterInputs/ParameterGroup.tsx
11733
+ var import_jsx_runtime67 = require("@emotion/react/jsx-runtime");
11734
+ var ParameterGroup = (0, import_react70.forwardRef)(
11735
+ ({ legend, isDisabled, children, ...props }, ref) => {
11736
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("fieldset", { css: fieldsetStyles, disabled: isDisabled, ref, ...props, children: [
11737
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("legend", { css: fieldsetLegend2, children: legend }),
11738
+ children
11739
+ ] });
11740
+ }
11741
+ );
11742
+
11743
+ // src/components/ParameterInputs/ParameterImage.tsx
11744
+ var import_react74 = require("react");
11745
+
11746
+ // src/components/ParameterInputs/ParameterShell.tsx
11747
+ var import_react73 = require("react");
11748
+
11749
+ // src/components/ParameterInputs/ParameterLabel.tsx
11750
+ var import_jsx_runtime68 = require("@emotion/react/jsx-runtime");
11751
+ var ParameterLabel = ({ id, asSpan, children, ...props }) => {
11752
+ return !asSpan ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("label", { ...props, htmlFor: id, css: labelText2, children }) : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { "aria-labelledby": id, css: labelText2, children });
11753
+ };
11754
+
11755
+ // src/components/ParameterInputs/ParameterMenuButton.tsx
11756
+ var import_react71 = require("react");
11757
+ var import_jsx_runtime69 = require("@emotion/react/jsx-runtime");
11758
+ var ParameterMenuButton = (0, import_react71.forwardRef)(
11759
+ ({ label, children }, ref) => {
11760
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
11761
+ Menu,
11762
+ {
11763
+ menuLabel: `${label} menu`,
11764
+ menuTrigger: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
11765
+ "button",
11766
+ {
11767
+ className: "parameter-menu",
11768
+ css: inputMenu,
11769
+ type: "button",
11770
+ "aria-label": `${label} options`,
11771
+ ref,
11772
+ children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Icon, { icon: "more-alt", iconColor: "currentColor" })
11773
+ }
11774
+ ),
11775
+ children
11776
+ }
11777
+ );
11778
+ }
11779
+ );
11780
+
11781
+ // src/components/ParameterInputs/styles/ParameterShell.styles.ts
11782
+ var import_react72 = require("@emotion/react");
11783
+ var emptyParameterShell = import_react72.css`
11784
+ border-radius: var(--rounded-sm);
11785
+ background: var(--white);
11786
+ flex-grow: 1;
11787
+ padding: var(--spacing-xs);
11788
+ position: relative;
11789
+ `;
11790
+ var emptyParameterShellText = import_react72.css`
11791
+ background: var(--brand-secondary-6);
11792
+ border-radius: var(--rounded-sm);
11793
+ padding: var(--spacing-sm);
11794
+ text-align: center;
11795
+ font-size: var(--fs-sm);
11796
+ margin: 0;
11797
+ `;
11798
+ var overrideMarker = import_react72.css`
11799
+ border-radius: var(--rounded-sm);
11800
+ border: 10px solid var(--gray-300);
11801
+ border-left-color: transparent;
11802
+ border-bottom-color: transparent;
11803
+ position: absolute;
11804
+ top: 0;
11805
+ right: 0;
11806
+ `;
11807
+
11808
+ // src/components/ParameterInputs/ParameterShell.tsx
11809
+ var import_jsx_runtime70 = require("@emotion/react/jsx-runtime");
11810
+ var extractParameterProps = (props) => {
11811
+ const {
11812
+ id,
11813
+ label,
11814
+ caption,
11815
+ captionTestId,
11816
+ errorMessage,
11817
+ errorTestId,
11818
+ hiddenLabel,
11819
+ labelLeadingIcon,
11820
+ menuItems,
11821
+ onManuallySetErrorMessage,
11822
+ title,
11823
+ hasOverridingParams,
11824
+ ...innerProps
11825
+ } = props;
11826
+ return {
11827
+ shellProps: {
11828
+ id,
11829
+ label,
11830
+ caption,
11831
+ captionTestId,
11832
+ errorMessage,
11833
+ errorTestId,
11834
+ hiddenLabel,
11835
+ labelLeadingIcon,
11836
+ menuItems,
11837
+ onManuallySetErrorMessage,
11838
+ title,
11839
+ hasOverridingParams
11840
+ },
11841
+ innerProps
11842
+ };
11843
+ };
11844
+ var ParameterShell = ({
11845
+ label,
11846
+ labelLeadingIcon,
11847
+ hiddenLabel,
11848
+ id,
11849
+ errorMessage,
11850
+ caption,
11851
+ errorTestId,
11852
+ captionTestId,
11853
+ menuItems,
11854
+ hasOverridingParams,
11855
+ title,
11856
+ children,
11857
+ ...props
11858
+ }) => {
11859
+ const [manualErrorMessage, setManualErrorMessage] = (0, import_react73.useState)(void 0);
11860
+ const setErrorMessage = (message) => setManualErrorMessage(message);
11861
+ const errorMessaging = errorMessage || manualErrorMessage;
11862
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { css: inputContainer2, ...props, children: [
11863
+ hiddenLabel || title ? null : /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ParameterLabel, { id, css: labelText2, children: [
11864
+ labelLeadingIcon ? labelLeadingIcon : null,
11865
+ label
11866
+ ] }),
11867
+ !title ? null : /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ParameterLabel, { id, asSpan: true, children: [
11868
+ labelLeadingIcon ? labelLeadingIcon : null,
11869
+ title
11870
+ ] }),
11871
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { css: inputWrapper, children: [
11872
+ menuItems ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ParameterMenuButton, { label: `${label} menu`, children: menuItems }) : null,
11873
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
11874
+ ParameterShellContext.Provider,
11875
+ {
11876
+ value: {
11877
+ id,
11878
+ label,
11879
+ hiddenLabel,
11880
+ errorMessage: errorMessaging,
11881
+ onManuallySetErrorMessage: (message) => setErrorMessage(message)
11882
+ },
11883
+ children: children ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { css: emptyParameterShell, children: [
11884
+ children,
11885
+ hasOverridingParams ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ParameterOverrideMarker, {}) : null
11886
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ParameterShellPlaceholder, { hasOverridingParams: true })
11887
+ }
11888
+ )
11889
+ ] }),
11890
+ caption ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Caption, { testId: captionTestId, children: caption }) : null,
11891
+ errorMessaging ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ErrorMessage, { message: errorMessaging, testId: errorTestId }) : null
11892
+ ] });
11893
+ };
11894
+ var ParameterShellPlaceholder = ({ hasOverridingParams }) => {
11895
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { role: "note", css: emptyParameterShell, children: [
11896
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { css: emptyParameterShellText, children: "Use component swap to replace with a parameter slot component" }),
11897
+ hasOverridingParams ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ParameterOverrideMarker, {}) : null
11898
+ ] });
11899
+ };
11900
+ var ParameterOverrideMarker = () => /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Tooltip, { title: "The default value has been overridden", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { role: "presentation", css: overrideMarker }) });
11901
+
11902
+ // src/components/ParameterInputs/ParameterImage.tsx
11903
+ var import_jsx_runtime71 = require("@emotion/react/jsx-runtime");
11904
+ var ParameterImage = (0, import_react74.forwardRef)((props, ref) => {
11905
+ const { shellProps, innerProps } = extractParameterProps(props);
11906
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ParameterShell, { "data-test-id": "parameter-image", ...shellProps, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ParameterImageInner, { ref, ...innerProps }) });
11907
+ });
11908
+ var BrokenImage = ({ ...props }) => {
11909
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
11910
+ "svg",
11911
+ {
11912
+ width: "214",
11913
+ height: "214",
11914
+ viewBox: "0 0 214 214",
11915
+ fill: "none",
11916
+ xmlns: "http://www.w3.org/2000/svg",
11917
+ xmlnsXlink: "http://www.w3.org/1999/xlink",
11918
+ ...props,
11919
+ children: [
11920
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("rect", { width: "214", height: "214", fill: "#F9FAFB" }),
11921
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("rect", { width: "214", height: "214", fill: "url(#pattern0)" }),
11922
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("defs", { children: [
11923
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("pattern", { id: "pattern0", patternContentUnits: "objectBoundingBox", width: "1", height: "1", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("use", { xlinkHref: "#image0_761_4353", transform: "scale(0.0025)" }) }),
11924
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
11925
+ "image",
11926
+ {
11927
+ id: "image0_761_4353",
11928
+ width: "400",
11929
+ height: "400",
11930
+ xlinkHref: "data:image/png;base64,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UfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBuB/we75KcVO2CRagAAAABJRU5ErkJggg=="
11931
+ }
11932
+ )
11933
+ ] })
11934
+ ]
11935
+ }
11936
+ );
11937
+ };
11938
+ var ParameterImageInner = (0, import_react74.forwardRef)(
11939
+ ({ ...props }, ref) => {
11940
+ const { id, label, hiddenLabel, errorMessage, onManuallySetErrorMessage } = useParameterShell();
11941
+ const [imageSrc, setImageSrc] = (0, import_react74.useState)();
11942
+ const [loading, setLoading] = (0, import_react74.useState)(false);
11943
+ const deferredValue = (0, import_react74.useDeferredValue)(imageSrc);
11944
+ const errorText = "The text you provided is not a valid URL";
11945
+ const updateImageSrc = (0, import_react74.useCallback)(
11946
+ (e) => {
11947
+ let message = void 0;
11948
+ try {
11949
+ if (e.currentTarget.value !== "") {
11950
+ new URL(e.currentTarget.value);
11951
+ setImageSrc(e.currentTarget.value);
11952
+ }
11953
+ message = void 0;
11954
+ } catch (e2) {
11955
+ message = errorText;
11956
+ }
11957
+ if (onManuallySetErrorMessage) {
11958
+ onManuallySetErrorMessage(message);
11959
+ }
11960
+ },
11961
+ [onManuallySetErrorMessage]
11962
+ );
11963
+ const handleLoadEvent = () => {
11964
+ if (deferredValue) {
11965
+ setLoading(true);
11966
+ }
11967
+ const timer = setTimeout(() => {
11968
+ setLoading(false);
11969
+ }, 200);
11970
+ return () => clearTimeout(timer);
11971
+ };
11972
+ const handleErrorEvent = () => {
11973
+ if (onManuallySetErrorMessage) {
11974
+ onManuallySetErrorMessage(errorText);
11975
+ }
11976
+ };
11977
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
11978
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
11979
+ "input",
11980
+ {
11981
+ css: input2,
11982
+ type: "text",
11983
+ id,
11984
+ ref,
11985
+ "aria-label": hiddenLabel ? label : void 0,
11986
+ autoComplete: "off",
11987
+ onChange: (e) => updateImageSrc(e),
11988
+ ...props
11989
+ }
11990
+ ),
11991
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { css: imageWrapper, children: [
11992
+ deferredValue && !errorMessage ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
11993
+ "img",
11994
+ {
11995
+ src: deferredValue,
11996
+ css: img,
11997
+ onLoad: handleLoadEvent,
11998
+ onError: handleErrorEvent,
11999
+ width: 214,
12000
+ height: 214,
12001
+ loading: "lazy"
12002
+ }
12003
+ ) : null,
12004
+ deferredValue && errorMessage ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(BrokenImage, { css: img }) : null
12005
+ ] }),
12006
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(LoadingIcon, {}) : null
12007
+ ] });
12008
+ }
12009
+ );
12010
+
12011
+ // src/components/ParameterInputs/ParameterInput.tsx
12012
+ var import_react75 = require("react");
12013
+ var import_jsx_runtime72 = require("@emotion/react/jsx-runtime");
12014
+ var ParameterInput = (0, import_react75.forwardRef)((props, ref) => {
12015
+ const { shellProps, innerProps } = extractParameterProps(props);
12016
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ParameterShell, { "data-test-id": "parameter-input", ...shellProps, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ParameterInputInner, { ref, ...innerProps }) });
12017
+ });
12018
+ var ParameterInputInner = (0, import_react75.forwardRef)(
12019
+ ({ ...props }, ref) => {
12020
+ const { id, label, hiddenLabel } = useParameterShell();
12021
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
12022
+ "input",
12023
+ {
12024
+ css: input2,
12025
+ id,
12026
+ type: props.type || "text",
12027
+ "aria-label": hiddenLabel ? label : void 0,
12028
+ autoComplete: "off",
12029
+ ref,
12030
+ ...props
12031
+ }
12032
+ );
12033
+ }
12034
+ );
12035
+
12036
+ // src/components/ParameterInputs/ParameterLink.tsx
12037
+ var import_react76 = require("react");
12038
+ var import_jsx_runtime73 = require("@emotion/react/jsx-runtime");
12039
+ var ParameterLink = (0, import_react76.forwardRef)(
12040
+ ({ buttonText = "Select project map node", disabled, onConnectLink, externalLink, ...props }, ref) => {
12041
+ const { shellProps, innerProps } = extractParameterProps(props);
12042
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
12043
+ ParameterShell,
12044
+ {
12045
+ "data-test-id": "parameter-link",
12046
+ ...shellProps,
12047
+ label: innerProps.value ? shellProps.label : "",
12048
+ title: !innerProps.value ? shellProps.label : void 0,
12049
+ children: !innerProps.value ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("button", { type: "button", css: dataConnectButton, disabled, onClick: onConnectLink, children: buttonText }) : /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
12050
+ ParameterLinkInner,
12051
+ {
12052
+ onConnectLink,
12053
+ externalLink,
12054
+ ref,
12055
+ ...innerProps
12056
+ }
12057
+ )
12058
+ }
12059
+ );
12060
+ }
12061
+ );
12062
+ var ParameterLinkInner = (0, import_react76.forwardRef)(
12063
+ ({ externalLink, onConnectLink, disabled, ...props }, ref) => {
12064
+ const { id, label, hiddenLabel } = useParameterShell();
12065
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { css: inputWrapper, children: [
12066
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
12067
+ "input",
12068
+ {
12069
+ type: "text",
12070
+ css: [input2, linkParameterInput],
12071
+ readOnly: Boolean(props.value),
12072
+ id,
12073
+ ref,
12074
+ "aria-label": hiddenLabel ? label : void 0,
12075
+ ...props
12076
+ }
12077
+ ),
12078
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
12079
+ "button",
12080
+ {
12081
+ type: "button",
12082
+ css: linkParameterBtn,
12083
+ disabled,
12084
+ onClick: onConnectLink,
12085
+ title: "edit current selection",
12086
+ children: "edit"
12087
+ }
12088
+ ),
12089
+ externalLink ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
12090
+ "a",
12091
+ {
12092
+ href: externalLink,
12093
+ css: linkParameterIcon,
12094
+ title: "Open link in new tab",
12095
+ target: "_blank",
12096
+ rel: "noopener noreferrer",
12097
+ children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Icon, { icon: "arrows-expand-up-right", iconColor: "currentColor", size: "1rem" })
12098
+ }
12099
+ ) : null
12100
+ ] });
12101
+ }
12102
+ );
12103
+
12104
+ // src/components/ParameterInputs/ParameterNameAndPublicIdInput.tsx
12105
+ var import_jsx_runtime74 = require("@emotion/react/jsx-runtime");
12106
+ var ParameterNameAndPublicIdInput = ({
12107
+ id,
12108
+ onBlur,
12109
+ autoFocus,
12110
+ onNameChange,
12111
+ onPublicIdChange,
12112
+ nameIdError,
12113
+ publicIdError,
12114
+ readOnly = false,
12115
+ hasInitialPublicIdField,
12116
+ label = "Name",
12117
+ warnOverLength,
12118
+ nameIdField = "name",
12119
+ nameCaption,
12120
+ namePlaceholderText,
12121
+ publicIdFieldName = "public_id",
12122
+ publicIdCaption = "This cannot change once created.",
12123
+ publicIdPlaceholderText,
12124
+ values
12125
+ }) => {
12126
+ const isReadonly = !!hasInitialPublicIdField || readOnly;
12127
+ const handleCopyPidFieldValue = () => {
12128
+ navigator.clipboard.writeText(values[publicIdFieldName]);
12129
+ };
12130
+ autoFocus == null ? void 0 : autoFocus();
12131
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_jsx_runtime74.Fragment, { children: [
12132
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
12133
+ ParameterInput,
12134
+ {
12135
+ id: nameIdField,
12136
+ name: nameIdField,
12137
+ label,
12138
+ "data-test-id": "name-field",
12139
+ autoComplete: "off",
12140
+ "data-af": "true",
12141
+ onBlur,
12142
+ onChange: onNameChange,
12143
+ caption: nameCaption,
12144
+ placeholder: namePlaceholderText,
12145
+ readOnly,
12146
+ errorMessage: nameIdError,
12147
+ disabled: readOnly,
12148
+ value: values[nameIdField]
12149
+ }
12150
+ ),
12151
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
12152
+ ParameterInput,
12153
+ {
12154
+ id: publicIdFieldName,
12155
+ name: publicIdFieldName,
12156
+ label: "Public ID",
12157
+ disabled: Boolean(id) || isReadonly,
12158
+ "data-test-id": "public-id-field",
12159
+ autoComplete: "off",
12160
+ onBlur,
12161
+ onChange: onPublicIdChange,
12162
+ caption: publicIdCaption,
12163
+ placeholder: publicIdPlaceholderText,
12164
+ errorMessage: publicIdError,
12165
+ menuItems: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
12166
+ MenuItem,
12167
+ {
12168
+ disabled: !values[publicIdFieldName],
12169
+ icon: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Icon, { icon: "path-trim", iconColor: "currentColor" }),
12170
+ onClick: handleCopyPidFieldValue,
12171
+ children: "Copy"
12172
+ }
12173
+ ),
12174
+ value: values[publicIdFieldName]
12175
+ }
12176
+ ),
12177
+ (warnOverLength == null ? void 0 : warnOverLength.length) && values[publicIdFieldName].length > warnOverLength.length ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Callout, { type: "caution", children: warnOverLength.message }) : null
12178
+ ] });
12179
+ };
12180
+
12181
+ // src/components/ParameterInputs/ParameterRichText.tsx
12182
+ var import_react77 = require("react");
12183
+ var import_jsx_runtime75 = require("@emotion/react/jsx-runtime");
12184
+ var ParameterRichText = (0, import_react77.forwardRef)(
12185
+ ({
12186
+ label,
12187
+ labelLeadingIcon,
12188
+ hiddenLabel,
12189
+ id,
12190
+ errorMessage,
12191
+ caption,
12192
+ errorTestId,
12193
+ captionTestId,
12194
+ menuItems,
12195
+ ...props
12196
+ }, ref) => {
12197
+ return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
12198
+ ParameterShell,
12199
+ {
12200
+ "data-test-id": "parameter-input",
12201
+ label,
12202
+ labelLeadingIcon,
12203
+ id,
12204
+ errorMessage,
12205
+ caption,
12206
+ errorTestId,
12207
+ captionTestId,
12208
+ menuItems,
12209
+ children: [
12210
+ /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(ParameterRichTextInner, { ref, ...props }),
12211
+ menuItems ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(ParameterMenuButton, { label: `${label} menu`, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_jsx_runtime75.Fragment, { children: menuItems }) }) : null
12212
+ ]
12213
+ }
12214
+ );
12215
+ }
12216
+ );
12217
+ var ParameterRichTextInner = (0, import_react77.forwardRef)(({ ...props }, ref) => {
12218
+ const { id, label, hiddenLabel } = useParameterShell();
12219
+ return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
12220
+ "textarea",
12221
+ {
12222
+ css: [input2, textarea2],
12223
+ id,
12224
+ ref,
12225
+ "aria-label": hiddenLabel ? label : void 0,
12226
+ ...props
12227
+ }
12228
+ );
12229
+ });
12230
+
12231
+ // src/components/ParameterInputs/ParameterSelect.tsx
12232
+ var import_react78 = require("react");
12233
+ var import_jsx_runtime76 = require("@emotion/react/jsx-runtime");
12234
+ var ParameterSelect = (0, import_react78.forwardRef)(
12235
+ ({ defaultOption, options, ...props }, ref) => {
12236
+ const { shellProps, innerProps } = extractParameterProps(props);
12237
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(ParameterShell, { ...shellProps, children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(ParameterSelectInner, { options, defaultOption, ...innerProps, ref }) });
12238
+ }
12239
+ );
12240
+ var ParameterSelectInner = (0, import_react78.forwardRef)(
12241
+ ({ defaultOption, options, ...props }, ref) => {
12242
+ const { id, label, hiddenLabel } = useParameterShell();
12243
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
12244
+ "select",
12245
+ {
12246
+ css: [input2, selectInput],
12247
+ id,
12248
+ "aria-label": hiddenLabel ? label : void 0,
12249
+ ref,
12250
+ ...props,
12251
+ children: [
12252
+ defaultOption ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("option", { value: "", children: defaultOption }) : null,
12253
+ options.map((option) => {
12254
+ var _a;
12255
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("option", { value: (_a = option.value) != null ? _a : option.label, children: option.label }, option.label);
12256
+ })
12257
+ ]
12258
+ }
12259
+ );
12260
+ }
12261
+ );
12262
+
12263
+ // src/components/ParameterInputs/ParameterTextarea.tsx
12264
+ var import_react79 = require("react");
12265
+ var import_jsx_runtime77 = require("@emotion/react/jsx-runtime");
12266
+ var ParameterTextarea = (0, import_react79.forwardRef)((props, ref) => {
12267
+ const { shellProps, innerProps } = extractParameterProps(props);
12268
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(ParameterShell, { "data-test-id": "parameter-textarea", ...shellProps, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(ParameterTextareaInner, { ref, ...innerProps }) });
12269
+ });
12270
+ var ParameterTextareaInner = (0, import_react79.forwardRef)(({ ...props }, ref) => {
12271
+ const { id, label, hiddenLabel } = useParameterShell();
12272
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
12273
+ "textarea",
12274
+ {
12275
+ css: [input2, textarea2],
12276
+ id,
12277
+ ref,
12278
+ "aria-label": hiddenLabel ? label : void 0,
12279
+ ...props
12280
+ }
12281
+ );
12282
+ });
12283
+
12284
+ // src/components/ParameterInputs/ParameterToggle.tsx
12285
+ var import_react80 = require("react");
12286
+ var import_jsx_runtime78 = require("@emotion/react/jsx-runtime");
12287
+ var ParameterToggle = (0, import_react80.forwardRef)((props, ref) => {
12288
+ const { shellProps, innerProps } = extractParameterProps(props);
12289
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(ParameterShell, { ...shellProps, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(ParameterToggleInner, { ref, ...innerProps }) });
11425
12290
  });
11426
- var TableHead = React14.forwardRef(
12291
+ var ParameterToggleInner = (0, import_react80.forwardRef)(
12292
+ ({ ...props }, ref) => {
12293
+ const { id, label } = useParameterShell();
12294
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("label", { css: inputToggleLabel2, children: [
12295
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("input", { css: toggleInput2, type: props.type, id, ref, ...props }),
12296
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { css: inlineLabel2, children: label })
12297
+ ] });
12298
+ }
12299
+ );
12300
+
12301
+ // src/components/Skeleton/Skeleton.styles.ts
12302
+ var import_react81 = require("@emotion/react");
12303
+ var lightFadingOut = import_react81.keyframes`
12304
+ from { opacity: 0.1; }
12305
+ to { opacity: 0.025; }
12306
+ `;
12307
+ var skeletonStyles = import_react81.css`
12308
+ animation: ${lightFadingOut} 1s ease-out infinite alternate;
12309
+ background-color: var(--gray-900);
12310
+ `;
12311
+
12312
+ // src/components/Skeleton/Skeleton.tsx
12313
+ var import_jsx_runtime79 = require("@emotion/react/jsx-runtime");
12314
+ var Skeleton = ({
12315
+ width = "100%",
12316
+ height = "1.25rem",
12317
+ inline = false,
12318
+ circle = false,
12319
+ children,
12320
+ ...otherProps
12321
+ }) => /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
12322
+ "div",
12323
+ {
12324
+ css: [
12325
+ skeletonStyles,
12326
+ {
12327
+ width: circle ? height : width,
12328
+ height,
12329
+ display: inline ? "inline-block" : "block",
12330
+ borderRadius: circle ? "var(--rounded-full)" : "var(--rounded-md)"
12331
+ }
12332
+ ],
12333
+ ...otherProps,
12334
+ "aria-busy": "true",
12335
+ "aria-label": "Loading...",
12336
+ children
12337
+ }
12338
+ );
12339
+
12340
+ // src/components/Switch/Switch.tsx
12341
+ var React14 = __toESM(require("react"));
12342
+
12343
+ // src/components/Switch/Switch.styles.ts
12344
+ var import_react82 = require("@emotion/react");
12345
+ var SwitchInputContainer = import_react82.css`
12346
+ cursor: pointer;
12347
+ display: inline-block;
12348
+ position: relative;
12349
+ margin-right: var(--spacing-sm);
12350
+ transition: var(--duration-fast) var(--timing-ease-out);
12351
+ vertical-align: middle;
12352
+ user-select: none;
12353
+ `;
12354
+ var SwitchInput = import_react82.css`
12355
+ appearance: none;
12356
+ border-radius: var(--rounded-full);
12357
+ background-color: var(--white);
12358
+ border: 2px solid var(--gray-400);
12359
+ cursor: pointer;
12360
+ position: absolute;
12361
+ display: block;
12362
+ width: var(--spacing-md);
12363
+ height: var(--spacing-md);
12364
+ transition: transform var(--duration-fast) var(--timing-ease-out),
12365
+ background-color var(--duration-fast) var(--timing-ease-out),
12366
+ background-image var(--duration-fast) var(--timing-ease-out);
12367
+ z-index: var(--z-10);
12368
+
12369
+ &:focus {
12370
+ outline: 3px solid var(--brand-secondary-1);
12371
+ outline-offset: 2px;
12372
+ }
12373
+
12374
+ &:checked {
12375
+ background-color: var(--brand-secondary-3);
12376
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%0A%3E%3Cpath d='M10.5858 13.4142L7.75735 10.5858L6.34314 12L10.5858 16.2427L17.6568 9.1716L16.2426 7.75739L10.5858 13.4142Z' fill='%23fff' /%3E%3C/svg%3E");
12377
+ background-position: center center;
12378
+ border-color: var(--brand-secondary-3);
12379
+ transform: translateX(var(--spacing-base));
12380
+
12381
+ &:hover,
12382
+ &:focus {
12383
+ border-color: var(--brand-secondary-1);
12384
+ background-color: var(--brand-secondary-1);
12385
+ }
12386
+ }
12387
+
12388
+ &:disabled {
12389
+ cursor: not-allowed;
12390
+ }
12391
+ `;
12392
+ var SwitchInputDisabled = import_react82.css`
12393
+ opacity: var(--opacity-50);
12394
+ cursor: not-allowed;
12395
+
12396
+ & > :before {
12397
+ cursor: not-allowed;
12398
+ }
12399
+ `;
12400
+ var SwitchInputLabel = import_react82.css`
12401
+ align-items: center;
12402
+ color: var(--brand-secondary-1);
12403
+ display: inline-flex;
12404
+ font-weight: var(--fw-bold);
12405
+ line-height: 1.25;
12406
+ padding-inline: var(--spacing-2xl) 0;
12407
+
12408
+ &:before {
12409
+ border-radius: var(--rounded-full);
12410
+ background-color: var(--gray-300);
12411
+ content: '';
12412
+ cursor: pointer;
12413
+ display: block;
12414
+ overflow: hidden;
12415
+ width: var(--spacing-xl);
12416
+ height: var(--spacing-md);
12417
+ position: absolute;
12418
+ left: 0;
12419
+ top: 0;
12420
+ }
12421
+ `;
12422
+ var SwitchText = import_react82.css`
12423
+ color: var(--gray-500);
12424
+ font-size: var(--fs-sm);
12425
+ padding-inline: var(--spacing-2xl) 0;
12426
+ `;
12427
+
12428
+ // src/components/Switch/Switch.tsx
12429
+ var import_jsx_runtime80 = require("@emotion/react/jsx-runtime");
12430
+ var Switch = React14.forwardRef(
12431
+ ({ label, infoText, toggleText, children, ...inputProps }, ref) => {
12432
+ let additionalText = infoText;
12433
+ if (infoText && toggleText) {
12434
+ additionalText = inputProps.checked ? toggleText : infoText;
12435
+ }
12436
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(import_jsx_runtime80.Fragment, { children: [
12437
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
12438
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
12439
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { css: SwitchInputLabel, children: label })
12440
+ ] }),
12441
+ additionalText ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { css: SwitchText, children: additionalText }) : null,
12442
+ children
12443
+ ] });
12444
+ }
12445
+ );
12446
+
12447
+ // src/components/Table/Table.tsx
12448
+ var React15 = __toESM(require("react"));
12449
+
12450
+ // src/components/Table/Table.styles.ts
12451
+ var import_react83 = require("@emotion/react");
12452
+ var table = import_react83.css`
12453
+ border-bottom: 1px solid var(--gray-400);
12454
+ border-collapse: collapse;
12455
+ min-width: 100%;
12456
+ table-layout: auto;
12457
+ `;
12458
+ var tableHead = import_react83.css`
12459
+ background: var(--gray-100);
12460
+ color: var(--brand-secondary-1);
12461
+ text-align: left;
12462
+ `;
12463
+ var tableRow = import_react83.css`
12464
+ border-bottom: 1px solid var(--gray-200);
12465
+ `;
12466
+ var tableCellHead = import_react83.css`
12467
+ font-size: var(--fs-sm);
12468
+ padding: var(--spacing-base) var(--spacing-md);
12469
+ text-transform: uppercase;
12470
+ font-weight: var(--fw-bold);
12471
+ `;
12472
+ var tableCellData = import_react83.css`
12473
+ padding: var(--spacing-base) var(--spacing-md);
12474
+ `;
12475
+
12476
+ // src/components/Table/Table.tsx
12477
+ var import_jsx_runtime81 = require("@emotion/react/jsx-runtime");
12478
+ var Table = React15.forwardRef(({ children, ...otherProps }, ref) => {
12479
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("table", { ref, css: table, ...otherProps, children });
12480
+ });
12481
+ var TableHead = React15.forwardRef(
11427
12482
  ({ children, ...otherProps }, ref) => {
11428
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("thead", { ref, css: tableHead, ...otherProps, children });
12483
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("thead", { ref, css: tableHead, ...otherProps, children });
11429
12484
  }
11430
12485
  );
11431
- var TableBody = React14.forwardRef(
12486
+ var TableBody = React15.forwardRef(
11432
12487
  ({ children, ...otherProps }, ref) => {
11433
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("tbody", { ref, ...otherProps, children });
12488
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("tbody", { ref, ...otherProps, children });
11434
12489
  }
11435
12490
  );
11436
- var TableFoot = React14.forwardRef(
12491
+ var TableFoot = React15.forwardRef(
11437
12492
  ({ children, ...otherProps }, ref) => {
11438
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("tfoot", { ref, ...otherProps, children });
12493
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("tfoot", { ref, ...otherProps, children });
11439
12494
  }
11440
12495
  );
11441
- var TableRow = React14.forwardRef(
12496
+ var TableRow = React15.forwardRef(
11442
12497
  ({ children, ...otherProps }, ref) => {
11443
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("tr", { ref, css: tableRow, ...otherProps, children });
12498
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("tr", { ref, css: tableRow, ...otherProps, children });
11444
12499
  }
11445
12500
  );
11446
- var TableCellHead = React14.forwardRef(
12501
+ var TableCellHead = React15.forwardRef(
11447
12502
  ({ children, ...otherProps }, ref) => {
11448
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("th", { ref, css: tableCellHead, ...otherProps, children });
12503
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("th", { ref, css: tableCellHead, ...otherProps, children });
11449
12504
  }
11450
12505
  );
11451
- var TableCellData = React14.forwardRef(
12506
+ var TableCellData = React15.forwardRef(
11452
12507
  ({ children, ...otherProps }, ref) => {
11453
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("td", { ref, css: tableCellData, ...otherProps, children });
12508
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("td", { ref, css: tableCellData, ...otherProps, children });
11454
12509
  }
11455
12510
  );
11456
12511
 
11457
12512
  // src/components/Tabs/Tabs.tsx
11458
- var import_react67 = require("react");
12513
+ var import_react85 = require("react");
11459
12514
  var import_Tab = require("reakit/Tab");
11460
12515
 
11461
12516
  // src/components/Tabs/Tabs.styles.ts
11462
- var import_react66 = require("@emotion/react");
11463
- var tabButtonStyles = import_react66.css`
12517
+ var import_react84 = require("@emotion/react");
12518
+ var tabButtonStyles = import_react84.css`
11464
12519
  align-items: center;
11465
12520
  border: 0;
11466
12521
  height: 2.5rem;
@@ -11477,81 +12532,60 @@ var tabButtonStyles = import_react66.css`
11477
12532
  -webkit-text-stroke-width: thin;
11478
12533
  }
11479
12534
  `;
11480
- var tabButtonGroupStyles = import_react66.css`
12535
+ var tabButtonGroupStyles = import_react84.css`
11481
12536
  display: flex;
11482
12537
  gap: var(--spacing-base);
12538
+ border-bottom: 1px solid var(--gray-300);
11483
12539
  `;
11484
12540
 
11485
12541
  // src/components/Tabs/Tabs.tsx
11486
- var import_jsx_runtime66 = require("@emotion/react/jsx-runtime");
11487
- var CurrentTabContext = (0, import_react67.createContext)(null);
12542
+ var import_jsx_runtime82 = require("@emotion/react/jsx-runtime");
12543
+ var CurrentTabContext = (0, import_react85.createContext)(null);
11488
12544
  var useCurrentTab = () => {
11489
- const context = (0, import_react67.useContext)(CurrentTabContext);
12545
+ const context = (0, import_react85.useContext)(CurrentTabContext);
11490
12546
  if (!context) {
11491
12547
  throw new Error("This component can only be used inside <Tabs>");
11492
12548
  }
11493
12549
  return context;
11494
12550
  };
11495
- var Tabs = ({ children, onSelectedIdChange, ...props }) => {
11496
- const tab = (0, import_Tab.useTabState)(props);
11497
- (0, import_react67.useEffect)(() => {
12551
+ var Tabs = ({ children, onSelectedIdChange, useHashForState, selectedId, ...props }) => {
12552
+ const selected = (0, import_react85.useMemo)(() => {
12553
+ if (selectedId)
12554
+ return selectedId;
12555
+ return useHashForState && typeof window !== "undefined" && window.location.hash ? window.location.hash.substring(1) : void 0;
12556
+ }, [selectedId, useHashForState]);
12557
+ const tab = (0, import_Tab.useTabState)({ ...props, selectedId: selected });
12558
+ (0, import_react85.useEffect)(() => {
11498
12559
  var _a;
11499
- onSelectedIdChange == null ? void 0 : onSelectedIdChange((_a = tab.selectedId) != null ? _a : void 0);
11500
- }, [tab.selectedId, onSelectedIdChange]);
11501
- (0, import_react67.useEffect)(() => {
11502
- tab.setSelectedId(props.selectedId);
11503
- }, [props.selectedId]);
11504
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CurrentTabContext.Provider, { value: tab, children });
12560
+ const selectedValueWithoutNull = (_a = tab.selectedId) != null ? _a : void 0;
12561
+ onSelectedIdChange == null ? void 0 : onSelectedIdChange(selectedValueWithoutNull);
12562
+ if (useHashForState && typeof window !== "undefined") {
12563
+ window.location.hash = selectedValueWithoutNull != null ? selectedValueWithoutNull : "";
12564
+ }
12565
+ }, [tab.selectedId, onSelectedIdChange, useHashForState]);
12566
+ (0, import_react85.useEffect)(() => {
12567
+ if (selected && selected !== tab.selectedId) {
12568
+ tab.setSelectedId(selected);
12569
+ }
12570
+ }, [selected]);
12571
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(CurrentTabContext.Provider, { value: tab, children });
11505
12572
  };
11506
12573
  var TabButtonGroup = ({ children, ...props }) => {
11507
12574
  const currentTab = useCurrentTab();
11508
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_Tab.TabList, { ...props, ...currentTab, css: tabButtonGroupStyles, children });
12575
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_Tab.TabList, { ...props, ...currentTab, css: tabButtonGroupStyles, children });
11509
12576
  };
11510
12577
  var TabButton = ({ children, id, ...props }) => {
11511
12578
  const currentTab = useCurrentTab();
11512
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_Tab.Tab, { type: "button", id, ...currentTab, ...props, css: tabButtonStyles, children });
12579
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_Tab.Tab, { type: "button", id, ...currentTab, ...props, css: tabButtonStyles, children });
11513
12580
  };
11514
12581
  var TabContent = ({ children, ...props }) => {
11515
12582
  const currentTab = useCurrentTab();
11516
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_Tab.TabPanel, { ...props, ...currentTab, children });
12583
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_Tab.TabPanel, { ...props, ...currentTab, children });
11517
12584
  };
11518
12585
 
11519
- // src/components/Tooltip/Tooltip.tsx
11520
- var import_react69 = __toESM(require("react"));
11521
- var import_Tooltip = require("reakit/Tooltip");
11522
-
11523
- // src/components/Tooltip/Tooltip.styles.ts
11524
- var import_react68 = require("@emotion/react");
11525
- var TooltipContainer = import_react68.css`
11526
- border: 2px solid var(--gray-300);
11527
- border-radius: var(--rounded-base);
11528
- padding: var(--spacing-xs) var(--spacing-sm);
11529
- color: var(--gray-500);
11530
- font-size: var(--fs-xs);
11531
- background: var(--white);
11532
- `;
11533
- var TooltipArrowStyles = import_react68.css`
11534
- svg {
11535
- fill: var(--gray-300);
11536
- }
11537
- `;
11538
-
11539
- // src/components/Tooltip/Tooltip.tsx
11540
- var import_jsx_runtime67 = require("@emotion/react/jsx-runtime");
11541
- function Tooltip({ children, title, placement = "bottom", visible, ...props }) {
11542
- const tooltip = (0, import_Tooltip.useTooltipState)({ placement });
11543
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
11544
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_Tooltip.TooltipReference, { ...tooltip, ...children.props, children: (referenceProps) => import_react69.default.cloneElement(children, referenceProps) }),
11545
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_Tooltip.Tooltip, { ...tooltip, ...props, css: TooltipContainer, visible: visible != null ? visible : tooltip.visible, children: [
11546
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_Tooltip.TooltipArrow, { ...tooltip, css: TooltipArrowStyles }),
11547
- title
11548
- ] })
11549
- ] });
11550
- }
11551
-
11552
12586
  // src/components/Validation/StatusBullet.styles.ts
11553
- var import_react70 = require("@emotion/react");
11554
- var StatusBulletContainer = import_react70.css`
12587
+ var import_react86 = require("@emotion/react");
12588
+ var StatusBulletContainer = import_react86.css`
11555
12589
  align-items: center;
11556
12590
  align-self: center;
11557
12591
  color: var(--gray-500);
@@ -11571,19 +12605,19 @@ var StatusBulletContainer = import_react70.css`
11571
12605
  height: var(--fs-xs);
11572
12606
  }
11573
12607
  `;
11574
- var StatusDraft = import_react70.css`
12608
+ var StatusDraft = import_react86.css`
11575
12609
  &:before {
11576
12610
  background: var(--white);
11577
12611
  box-shadow: inset 0 0 0 0.125rem var(--brand-primary-1);
11578
12612
  }
11579
12613
  `;
11580
- var StatusModified = import_react70.css`
12614
+ var StatusModified = import_react86.css`
11581
12615
  &:before {
11582
12616
  background: linear-gradient(to right, var(--white) 50%, var(--brand-primary-1) 50% 100%);
11583
12617
  box-shadow: inset 0 0 0 0.125rem var(--brand-primary-1);
11584
12618
  }
11585
12619
  `;
11586
- var StatusError = import_react70.css`
12620
+ var StatusError = import_react86.css`
11587
12621
  color: var(--error);
11588
12622
  &:before {
11589
12623
  background: var(--error);
@@ -11599,19 +12633,19 @@ var StatusError = import_react70.css`
11599
12633
  rotate: -45deg;
11600
12634
  }
11601
12635
  `;
11602
- var StatusPublished = import_react70.css`
12636
+ var StatusPublished = import_react86.css`
11603
12637
  &:before {
11604
12638
  background: var(--brand-secondary-3);
11605
12639
  }
11606
12640
  `;
11607
- var StatusOrphan = import_react70.css`
12641
+ var StatusOrphan = import_react86.css`
11608
12642
  &:before {
11609
12643
  background: var(--brand-secondary-5);
11610
12644
  }
11611
12645
  `;
11612
12646
 
11613
12647
  // src/components/Validation/StatusBullet.tsx
11614
- var import_jsx_runtime68 = require("@emotion/react/jsx-runtime");
12648
+ var import_jsx_runtime83 = require("@emotion/react/jsx-runtime");
11615
12649
  var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11616
12650
  const currentStateStyles = {
11617
12651
  Error: StatusError,
@@ -11621,7 +12655,7 @@ var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11621
12655
  Published: StatusPublished,
11622
12656
  Draft: StatusDraft
11623
12657
  };
11624
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
12658
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
11625
12659
  "span",
11626
12660
  {
11627
12661
  css: [StatusBulletContainer, currentStateStyles[status]],
@@ -11644,6 +12678,7 @@ var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11644
12678
  Card,
11645
12679
  CardContainer,
11646
12680
  CheckboxWithInfo,
12681
+ ConnectToDataElementButton,
11647
12682
  Counter,
11648
12683
  CreateTeamIntegrationTile,
11649
12684
  DashedBox,
@@ -11687,6 +12722,30 @@ var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11687
12722
  MenuItemSeparator,
11688
12723
  PageHeaderSection,
11689
12724
  Paragraph,
12725
+ ParameterDataResource,
12726
+ ParameterDrawerHeader,
12727
+ ParameterGroup,
12728
+ ParameterImage,
12729
+ ParameterImageInner,
12730
+ ParameterInput,
12731
+ ParameterInputInner,
12732
+ ParameterLabel,
12733
+ ParameterLink,
12734
+ ParameterLinkInner,
12735
+ ParameterMenuButton,
12736
+ ParameterNameAndPublicIdInput,
12737
+ ParameterOverrideMarker,
12738
+ ParameterRichText,
12739
+ ParameterRichTextInner,
12740
+ ParameterSelect,
12741
+ ParameterSelectInner,
12742
+ ParameterShell,
12743
+ ParameterShellContext,
12744
+ ParameterShellPlaceholder,
12745
+ ParameterTextarea,
12746
+ ParameterTextareaInner,
12747
+ ParameterToggle,
12748
+ ParameterToggleInner,
11690
12749
  ResolveIcon,
11691
12750
  ScrollableList,
11692
12751
  ScrollableListInputItem,
@@ -11724,6 +12783,7 @@ var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11724
12783
  buttonSecondaryInvert,
11725
12784
  buttonTertiary,
11726
12785
  buttonUnimportant,
12786
+ extractParameterProps,
11727
12787
  fadeIn,
11728
12788
  fadeInBottom,
11729
12789
  fadeInLtr,
@@ -11748,5 +12808,6 @@ var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11748
12808
  useIconContext,
11749
12809
  useMenuContext,
11750
12810
  useOutsideClick,
12811
+ useParameterShell,
11751
12812
  useShortcut
11752
12813
  });