@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/esm/index.js CHANGED
@@ -1196,7 +1196,9 @@ var customIcons = {
1196
1196
  // src/components/Icons/IconsProvider.tsx
1197
1197
  import { jsx as jsx5 } from "@emotion/react/jsx-runtime";
1198
1198
  var IconContext = createContext({
1199
+ /** object mapping of available icons */
1199
1200
  iconsMap: {},
1201
+ /** sets the loading state of the icon */
1200
1202
  isLoading: true
1201
1203
  });
1202
1204
  function useIconContext() {
@@ -8275,6 +8277,7 @@ var Button = React5.forwardRef(
8275
8277
  ghost: buttonGhost,
8276
8278
  ghostDestructive: buttonGhostDestructive,
8277
8279
  unimportant: buttonUnimportant,
8280
+ /** @deprecated */
8278
8281
  tertiary: buttonTertiary
8279
8282
  };
8280
8283
  const btnSize = {
@@ -9018,6 +9021,9 @@ var counterIcon = css24`
9018
9021
  // src/components/Counter/Counter.tsx
9019
9022
  import { jsx as jsx27, jsxs as jsxs15 } from "@emotion/react/jsx-runtime";
9020
9023
  var Counter = ({ count }) => {
9024
+ if (typeof count === "undefined") {
9025
+ return null;
9026
+ }
9021
9027
  const isTripleDigits = count > 99 ? /* @__PURE__ */ jsxs15("span", { css: counterTripleValue, title: `${count}`, children: [
9022
9028
  "99",
9023
9029
  /* @__PURE__ */ jsx27(Icon, { icon: "math-plus", iconColor: "currentColor", size: "0.5rem", css: counterIcon })
@@ -9078,6 +9084,7 @@ import * as React8 from "react";
9078
9084
  // src/components/Details/Details.styles.ts
9079
9085
  import { css as css26 } from "@emotion/react";
9080
9086
  var details = css26`
9087
+ cursor: pointer;
9081
9088
  &[open] {
9082
9089
  & > summary svg {
9083
9090
  rotate: 0deg;
@@ -9712,6 +9719,7 @@ function InputComboBox(props) {
9712
9719
  ...base,
9713
9720
  margin: "0",
9714
9721
  padding: "0",
9722
+ // Prevents input shadow when focused within the select area
9715
9723
  "& > input": {
9716
9724
  boxShadow: "none !important"
9717
9725
  },
@@ -9731,11 +9739,13 @@ function InputComboBox(props) {
9731
9739
  return {
9732
9740
  ...base,
9733
9741
  className: "input-combobox-control",
9742
+ // Used to provide overriding styles for blue focus ring and offset borders
9734
9743
  border: state.isFocused ? "1px solid transparent" : "1px solid var(--gray-400)",
9735
9744
  lineHeight: 1.25,
9736
9745
  outline: state.isFocused ? "1px solid var(--brand-secondary-1)" : "none",
9737
9746
  outlineOffset: 0,
9738
9747
  minHeight: "58px",
9748
+ // matches the min-height of other input fields
9739
9749
  boxShadow: "none",
9740
9750
  "&:hover": {
9741
9751
  boxShadow: "none"
@@ -10169,6 +10179,7 @@ var LimitsBar = ({ current, max, label }) => {
10169
10179
  const colorMap = {
10170
10180
  base: "var(--gray-400)",
10171
10181
  warn: "#facc15",
10182
+ // Not in the design system token at present
10172
10183
  danger: "var(--brand-secondary-5)"
10173
10184
  };
10174
10185
  const statusColor = progressBarValue === 100 ? colorMap.danger : progressBarValue >= 75 ? colorMap.warn : colorMap.base;
@@ -11100,219 +11111,1237 @@ var IntegrationModalHeader = ({ icon, name, menu: menu2, children }) => {
11100
11111
  ] });
11101
11112
  };
11102
11113
 
11103
- // src/components/Skeleton/Skeleton.styles.ts
11104
- import { css as css51, keyframes as keyframes4 } from "@emotion/react";
11105
- var lightFadingOut = keyframes4`
11106
- from { opacity: 0.1; }
11107
- to { opacity: 0.025; }
11114
+ // src/components/Tooltip/Tooltip.tsx
11115
+ import React13 from "react";
11116
+ import {
11117
+ Tooltip as ReakitTooltip,
11118
+ TooltipArrow,
11119
+ TooltipReference,
11120
+ useTooltipState
11121
+ } from "reakit/Tooltip";
11122
+
11123
+ // src/components/Tooltip/Tooltip.styles.ts
11124
+ import { css as css51 } from "@emotion/react";
11125
+ var TooltipContainer = css51`
11126
+ border: 2px solid var(--gray-300);
11127
+ border-radius: var(--rounded-base);
11128
+ padding: var(--spacing-xs) var(--spacing-sm);
11129
+ color: var(--gray-500);
11130
+ font-size: var(--fs-xs);
11131
+ background: var(--white);
11108
11132
  `;
11109
- var skeletonStyles = css51`
11110
- animation: ${lightFadingOut} 1s ease-out infinite alternate;
11111
- background-color: var(--gray-900);
11133
+ var TooltipArrowStyles = css51`
11134
+ svg {
11135
+ fill: var(--gray-300);
11136
+ }
11112
11137
  `;
11113
11138
 
11114
- // src/components/Skeleton/Skeleton.tsx
11115
- import { jsx as jsx64 } from "@emotion/react/jsx-runtime";
11116
- var Skeleton = ({
11117
- width = "100%",
11118
- height = "1.25rem",
11119
- inline = false,
11120
- circle = false,
11139
+ // src/components/Tooltip/Tooltip.tsx
11140
+ import { Fragment as Fragment9, jsx as jsx64, jsxs as jsxs44 } from "@emotion/react/jsx-runtime";
11141
+ function Tooltip({ children, title, placement = "bottom", visible, ...props }) {
11142
+ const tooltip = useTooltipState({ placement });
11143
+ return /* @__PURE__ */ jsxs44(Fragment9, { children: [
11144
+ /* @__PURE__ */ jsx64(TooltipReference, { ...tooltip, ...children.props, children: (referenceProps) => React13.cloneElement(children, referenceProps) }),
11145
+ /* @__PURE__ */ jsxs44(ReakitTooltip, { ...tooltip, ...props, css: TooltipContainer, visible: visible != null ? visible : tooltip.visible, children: [
11146
+ /* @__PURE__ */ jsx64(TooltipArrow, { ...tooltip, css: TooltipArrowStyles }),
11147
+ title
11148
+ ] })
11149
+ ] });
11150
+ }
11151
+
11152
+ // src/components/ParameterInputs/styles/ParameterBindingButton.styles.ts
11153
+ import { css as css52 } from "@emotion/react";
11154
+ var inputIconBtn = css52`
11155
+ align-items: center;
11156
+ border: none;
11157
+ border-radius: var(--rounded-base);
11158
+ background: none;
11159
+ display: flex;
11160
+ padding: var(--spacing-2xs);
11161
+ transition: background var(--duration-fast) var(--timing-ease-out),
11162
+ color var(--duration-fast) var(--timing-ease-out);
11163
+
11164
+ &:hover,
11165
+ &[aria-pressed='true']:not(:disabled) {
11166
+ background: var(--brand-secondary-3);
11167
+ color: var(--white);
11168
+ }
11169
+ `;
11170
+
11171
+ // src/components/ParameterInputs/ConnectToDataElementButton.tsx
11172
+ import { jsx as jsx65, jsxs as jsxs45 } from "@emotion/react/jsx-runtime";
11173
+ var ConnectToDataElementButton = ({
11174
+ icon,
11175
+ iconColor,
11121
11176
  children,
11122
- ...otherProps
11123
- }) => /* @__PURE__ */ jsx64(
11124
- "div",
11125
- {
11126
- css: [
11127
- skeletonStyles,
11177
+ isBound,
11178
+ isLocked,
11179
+ ...props
11180
+ }) => {
11181
+ const title = isLocked ? "Read-only pattern parameter" : isBound ? "Connected to external content. Click to edit" : "Click to connect to external content";
11182
+ return /* @__PURE__ */ jsx65(Tooltip, { title, children: /* @__PURE__ */ jsxs45("button", { css: inputIconBtn, type: "button", "aria-pressed": isBound, ...props, disabled: isLocked, children: [
11183
+ /* @__PURE__ */ jsx65(
11184
+ Icon,
11128
11185
  {
11129
- width: circle ? height : width,
11130
- height,
11131
- display: inline ? "inline-block" : "block",
11132
- borderRadius: circle ? "var(--rounded-full)" : "var(--rounded-md)"
11186
+ icon: isLocked ? "lock" : icon ? icon : "arrows-expand-down-right",
11187
+ iconColor: iconColor ? iconColor : "currentColor",
11188
+ size: "1rem"
11133
11189
  }
11134
- ],
11135
- ...otherProps,
11136
- "aria-busy": "true",
11137
- "aria-label": "Loading...",
11190
+ ),
11138
11191
  children
11139
- }
11140
- );
11192
+ ] }) });
11193
+ };
11141
11194
 
11142
- // src/components/Switch/Switch.tsx
11143
- import * as React13 from "react";
11195
+ // src/components/ParameterInputs/hooks/ParameterShellContext.tsx
11196
+ import { createContext as createContext4, useContext as useContext5 } from "react";
11197
+ var ParameterShellContext = createContext4({
11198
+ id: "",
11199
+ label: "",
11200
+ hiddenLabel: void 0,
11201
+ errorMessage: void 0,
11202
+ onManuallySetErrorMessage: () => {
11203
+ }
11204
+ });
11205
+ var useParameterShell = () => {
11206
+ const { id, label, hiddenLabel, errorMessage, onManuallySetErrorMessage } = useContext5(ParameterShellContext);
11207
+ return {
11208
+ id,
11209
+ label,
11210
+ hiddenLabel,
11211
+ errorMessage,
11212
+ onManuallySetErrorMessage
11213
+ };
11214
+ };
11144
11215
 
11145
- // src/components/Switch/Switch.styles.ts
11146
- import { css as css52 } from "@emotion/react";
11147
- var SwitchInputContainer = css52`
11148
- cursor: pointer;
11149
- display: inline-block;
11216
+ // src/components/ParameterInputs/styles/ParameterInput.styles.ts
11217
+ import { css as css53 } from "@emotion/react";
11218
+ var inputContainer2 = css53`
11150
11219
  position: relative;
11151
- margin-right: var(--spacing-sm);
11152
- transition: var(--duration-fast) var(--timing-ease-out);
11153
- vertical-align: middle;
11154
- user-select: none;
11220
+
11221
+ &:hover,
11222
+ &:focus,
11223
+ &:focus-within {
11224
+ .parameter-menu {
11225
+ opacity: var(--opacity-100);
11226
+ translate: 0 0;
11227
+ }
11228
+ }
11155
11229
  `;
11156
- var SwitchInput = css52`
11157
- appearance: none;
11158
- border-radius: var(--rounded-full);
11159
- background-color: var(--white);
11160
- border: 2px solid var(--gray-400);
11161
- cursor: pointer;
11162
- position: absolute;
11230
+ var labelText2 = css53`
11231
+ align-items: center;
11232
+ display: flex;
11233
+ gap: var(--spacing-xs);
11234
+ font-weight: var(--fw-regular);
11235
+ margin: 0 0 var(--spacing-xs);
11236
+ `;
11237
+ var input2 = css53`
11163
11238
  display: block;
11164
- width: var(--spacing-md);
11165
- height: var(--spacing-md);
11166
- transition: transform var(--duration-fast) var(--timing-ease-out),
11167
- background-color var(--duration-fast) var(--timing-ease-out),
11168
- background-image var(--duration-fast) var(--timing-ease-out);
11169
- z-index: var(--z-10);
11239
+ appearance: none;
11240
+ box-sizing: border-box;
11241
+ background: var(--white);
11242
+ border: 1px solid var(--white);
11243
+ border-radius: var(--rounded-sm);
11244
+ color: var(--gray-700);
11245
+ font-size: var(--fs-sm);
11246
+ line-height: 1.2;
11247
+ min-height: 2rem;
11248
+ padding: var(--spacing-sm);
11249
+ width: 100%;
11250
+ position: relative;
11251
+ white-space: wrap;
11252
+ transition-property: background, border-color, color, box-shadow, border-radius;
11253
+ transition-duration: var(--duration-fast);
11254
+ transition-timing-function: var(--timing-ease-out);
11170
11255
 
11171
- &:focus {
11172
- outline: 3px solid var(--brand-secondary-1);
11173
- outline-offset: 2px;
11256
+ &::placeholder {
11257
+ color: var(--gray-400);
11174
11258
  }
11175
11259
 
11176
- &:checked {
11177
- background-color: var(--brand-secondary-3);
11178
- 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");
11179
- background-position: center center;
11180
- border-color: var(--brand-secondary-3);
11181
- transform: translateX(var(--spacing-base));
11182
-
11183
- &:hover,
11184
- &:focus {
11185
- border-color: var(--brand-secondary-1);
11186
- background-color: var(--brand-secondary-1);
11187
- }
11260
+ &:focus,
11261
+ &:focus-within {
11262
+ border-radius: var(--rounded-md);
11263
+ box-shadow: none;
11264
+ border: 1px solid var(--gray-300);
11265
+ outline: none;
11188
11266
  }
11189
11267
 
11190
- &:disabled {
11268
+ &:disabled,
11269
+ &:disabled::placeholder,
11270
+ &:disabled:hover {
11271
+ border-radius: var(--rounded-md);
11191
11272
  cursor: not-allowed;
11273
+ color: var(--gray-400);
11192
11274
  }
11193
- `;
11194
- var SwitchInputDisabled = css52`
11195
- opacity: var(--opacity-50);
11196
- cursor: not-allowed;
11197
11275
 
11198
- & > :before {
11276
+ &[readonly] {
11199
11277
  cursor: not-allowed;
11278
+ color: var(--gray-400);
11200
11279
  }
11201
11280
  `;
11202
- var SwitchInputLabel = css52`
11281
+ var selectInput = css53`
11282
+ 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");
11283
+ background-position: right var(--spacing-sm) center;
11284
+ background-repeat: no-repeat;
11285
+ background-size: 1rem;
11286
+ padding-right: var(--spacing-xl);
11287
+ `;
11288
+ var inputWrapper = css53`
11289
+ display: flex; // used to correct overflow with chrome textarea
11290
+ position: relative;
11291
+ `;
11292
+ var inputIcon2 = css53`
11203
11293
  align-items: center;
11204
- color: var(--brand-secondary-1);
11294
+ background: var(--white);
11295
+ border-radius: var(--rounded-md) 0 0 var(--rounded-md);
11296
+ border-right: 1px solid var(--gray-100);
11297
+ color: var(--gray-300);
11298
+ display: flex;
11299
+ justify-content: center;
11300
+ transition: background var(--duration-fast) var(--timing-ease-out);
11301
+ position: absolute;
11302
+ top: 0;
11303
+ left: 0;
11304
+ bottom: 0;
11305
+ width: var(--spacing-lg);
11306
+ z-index: var(--z-10);
11307
+ `;
11308
+ var inputToggleLabel2 = css53`
11309
+ align-items: center;
11310
+ background: var(--white);
11311
+ cursor: pointer;
11205
11312
  display: inline-flex;
11206
- font-weight: var(--fw-bold);
11207
- line-height: 1.25;
11208
- padding-inline: var(--spacing-2xl) 0;
11313
+ gap: var(--spacing-sm);
11314
+ font-weight: var(--fw-regular);
11315
+ font-size: var(--fs-sm);
11316
+ min-height: var(--spacing-md);
11317
+ position: relative;
11318
+ `;
11319
+ var toggleInput2 = css53`
11320
+ appearance: none;
11321
+ border: 1px solid var(--gray-300);
11322
+ background: var(--white);
11323
+ width: var(--spacing-md);
11324
+ height: var(--spacing-md);
11325
+ transition: background var(--duration-fast) var(--timing-ease-out),
11326
+ border-color var(--duration-fast) var(--timing-ease-out),
11327
+ color var(--duration-fast) var(--timing-ease-out);
11328
+ font-size: var(--fs-sm);
11329
+ line-height: 1;
11209
11330
 
11210
- &:before {
11331
+ position: absolute;
11332
+ left: 0;
11333
+
11334
+ &:where([type='radio']) {
11211
11335
  border-radius: var(--rounded-full);
11212
- background-color: var(--gray-300);
11213
- content: '';
11214
- cursor: pointer;
11215
- display: block;
11216
- overflow: hidden;
11217
- width: var(--spacing-xl);
11218
- height: var(--spacing-md);
11219
- position: absolute;
11220
- left: 0;
11221
- top: 0;
11222
11336
  }
11223
- `;
11224
- var SwitchText = css52`
11225
- color: var(--gray-500);
11226
- font-size: var(--fs-sm);
11227
- padding-inline: var(--spacing-2xl) 0;
11228
- `;
11229
11337
 
11230
- // src/components/Switch/Switch.tsx
11231
- import { Fragment as Fragment9, jsx as jsx65, jsxs as jsxs44 } from "@emotion/react/jsx-runtime";
11232
- var Switch = React13.forwardRef(
11233
- ({ label, infoText, toggleText, children, ...inputProps }, ref) => {
11234
- let additionalText = infoText;
11235
- if (infoText && toggleText) {
11236
- additionalText = inputProps.checked ? toggleText : infoText;
11237
- }
11238
- return /* @__PURE__ */ jsxs44(Fragment9, { children: [
11239
- /* @__PURE__ */ jsxs44("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
11240
- /* @__PURE__ */ jsx65("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
11241
- /* @__PURE__ */ jsx65("span", { css: SwitchInputLabel, children: label })
11242
- ] }),
11243
- additionalText ? /* @__PURE__ */ jsx65("p", { css: SwitchText, children: additionalText }) : null,
11244
- children
11245
- ] });
11338
+ &:where([type='checkbox']) {
11339
+ border-radius: var(--rounded-md);
11246
11340
  }
11247
- );
11248
11341
 
11249
- // src/components/Table/Table.tsx
11250
- import * as React14 from "react";
11342
+ &:checked,
11343
+ &:checked:hover,
11344
+ &:checked:focus {
11345
+ background: var(--brand-secondary-3)
11346
+ 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")
11347
+ no-repeat center center;
11348
+ border-color: var(--brand-secondary-3);
11349
+ color: var(--white);
11350
+ }
11251
11351
 
11252
- // src/components/Table/Table.styles.ts
11253
- import { css as css53 } from "@emotion/react";
11254
- var table = css53`
11255
- border-bottom: 1px solid var(--gray-400);
11256
- border-collapse: collapse;
11257
- min-width: 100%;
11258
- table-layout: auto;
11259
- `;
11260
- var tableHead = css53`
11261
- background: var(--gray-100);
11262
- color: var(--brand-secondary-1);
11263
- text-align: left;
11264
- `;
11265
- var tableRow = css53`
11266
- border-bottom: 1px solid var(--gray-200);
11352
+ &:disabled {
11353
+ cursor: not-allowed;
11354
+ color: var(--gray-400);
11355
+ border-color: var(--gray-300);
11356
+ }
11267
11357
  `;
11268
- var tableCellHead = css53`
11358
+ var inlineLabel2 = css53`
11359
+ padding-left: var(--spacing-lg);
11269
11360
  font-size: var(--fs-sm);
11270
- padding: var(--spacing-base) var(--spacing-md);
11271
- text-transform: uppercase;
11361
+ font-weight: var(--fw-regular);
11362
+ translate: 0 1px; // brings the span into central alignment
11363
+ pointer-events: none; // prevents e2e failing on click event, this does not happen to the end user
11364
+
11365
+ > a {
11366
+ color: var(--brand-secondary-3);
11367
+ text-decoration: underline;
11368
+
11369
+ &:hover {
11370
+ text-decoration: none;
11371
+ }
11372
+ }
11373
+ `;
11374
+ var inputMenu = css53`
11375
+ background: none;
11376
+ border: none;
11377
+ padding: 0;
11378
+ position: absolute;
11379
+ top: calc(var(--spacing-md) * -1.2);
11380
+ right: 0;
11381
+ opacity: var(--opacity-50);
11382
+ transition: opacity var(--duration-fast) var(--timing-ease-out);
11383
+
11384
+ // css trick to style the input like a hover or active state when the menu button is active or hovered
11385
+ &:hover,
11386
+ &[aria-expanded='true'] {
11387
+ ~ input,
11388
+ ~ select,
11389
+ ~ textarea {
11390
+ 'order-radius: var(--rounded-md);
11391
+ }
11392
+
11393
+ }
11394
+ `;
11395
+ var textarea2 = css53`
11396
+ resize: vertical;
11397
+ min-height: 2rem;
11398
+ `;
11399
+ var imageWrapper = css53`
11400
+ background: var(--white);
11401
+ `;
11402
+ var img = css53`
11403
+ animation: ${fadeIn} var(--duration-fast) var(--timing-ease-out) forwards;
11404
+ aspect-ratio: 1 / 1;
11405
+ max-width: 100%;
11406
+ height: auto;
11407
+ opacity: var(--opacity-0);
11408
+ margin-top: var(--spacing-sm);
11409
+ `;
11410
+ var dataConnectButton = css53`
11411
+ align-items: center;
11412
+ appearance: none;
11413
+ box-sizing: border-box;
11414
+ background-color: var(--white);
11415
+ border: 1px solid var(--brand-secondary-3);
11416
+ border-radius: var(--rounded-md);
11417
+ color: var(--brand-secondary-3);
11418
+ display: flex;
11419
+ padding: var(--spacing-sm);
11420
+ position: relative;
11421
+ transition: background var(--duration-fast) var(--timing-ease-out),
11422
+ outline-color var(--duration-fast) var(--timing-ease-out),
11423
+ color var(--duration-fast) var(--timing-ease-out);
11424
+ width: 100%;
11425
+ font-weight: var(--fw-medium);
11426
+ font-size: var(--fs-sm);
11427
+ line-height: 1;
11428
+ min-height: 34px;
11429
+ justify-content: center;
11430
+
11431
+ &:focus,
11432
+ &:focus-within {
11433
+ outline: 1px solid var(--gray-300);
11434
+ border-radius: var(--rounded-md);
11435
+ }
11436
+
11437
+ &:disabled:hover,
11438
+ &:disabled {
11439
+ border-radius: var(--rounded-md);
11440
+ cursor: not-allowed;
11441
+ color: var(--gray-400);
11442
+ pointer-events: none;
11443
+ }
11444
+ `;
11445
+ var linkParameterBtn = css53`
11446
+ border-radius: var(--rounded-base);
11447
+ background: var(--white);
11448
+ border: none;
11449
+ color: var(--brand-secondary-3);
11450
+ font-weight: var(--fw-regular);
11451
+ font-size: var(--fs-sm);
11452
+ line-height: 1;
11453
+ position: absolute;
11454
+ inset: 0 var(--spacing-base) 0 auto;
11455
+ padding: 0 var(--spacing-base);
11456
+ `;
11457
+ var linkParameterInput = css53`
11458
+ padding-right: calc(var(--spacing-2xl) + var(--spacing-base));
11459
+ `;
11460
+ var linkParameterIcon = css53`
11461
+ align-items: center;
11462
+ color: var(--brand-secondary-3);
11463
+ display: flex;
11464
+ justify-content: center;
11465
+ padding: var(--spacing-2xs);
11466
+ transition: color var(--duration-fast) var(--timing-ease-out);
11467
+ margin-left: auto;
11468
+
11469
+ &:hover {
11470
+ color: var(--brand-secondary-1);
11471
+ }
11472
+ `;
11473
+
11474
+ // src/components/ParameterInputs/ParameterDataResource.tsx
11475
+ import { jsx as jsx66, jsxs as jsxs46 } from "@emotion/react/jsx-runtime";
11476
+ function ParameterDataResource({
11477
+ label,
11478
+ labelLeadingIcon,
11479
+ id,
11480
+ onConnectDatasource,
11481
+ caption,
11482
+ disabled,
11483
+ children
11484
+ }) {
11485
+ return /* @__PURE__ */ jsxs46("div", { "data-testid": "parameter-data-connect-button", children: [
11486
+ /* @__PURE__ */ jsxs46("span", { css: labelText2, children: [
11487
+ labelLeadingIcon ? labelLeadingIcon : null,
11488
+ label
11489
+ ] }),
11490
+ /* @__PURE__ */ jsxs46(
11491
+ "button",
11492
+ {
11493
+ type: "button",
11494
+ css: dataConnectButton,
11495
+ "aria-controls": id,
11496
+ disabled,
11497
+ onClick: onConnectDatasource,
11498
+ children: [
11499
+ /* @__PURE__ */ jsx66("span", { className: "advance-input-icon", css: [inputIcon2], children: /* @__PURE__ */ jsx66(Icon, { icon: "stack", iconColor: "currentColor", size: "1rem" }) }),
11500
+ children
11501
+ ]
11502
+ }
11503
+ ),
11504
+ caption ? /* @__PURE__ */ jsx66(Caption, { children: caption }) : null
11505
+ ] });
11506
+ }
11507
+
11508
+ // src/components/ParameterInputs/styles/ParameterDrawerHeader.styles.ts
11509
+ import { css as css54 } from "@emotion/react";
11510
+ var ParameterDrawerHeaderContainer = css54`
11511
+ align-items: center;
11512
+ display: flex;
11513
+ gap: var(--spacing-base);
11514
+ justify-content: space-between;
11515
+ margin-bottom: var(--spacing-sm);
11516
+ `;
11517
+ var ParameterDrawerHeaderTitleGroup = css54`
11518
+ align-items: center;
11519
+ display: flex;
11520
+ gap: var(--spacing-sm);
11521
+ `;
11522
+ var ParameterDrawerHeaderTitle = css54`
11523
+ text-overflow: ellipsis;
11524
+ white-space: nowrap;
11525
+ overflow: hidden;
11526
+ max-width: 16ch;
11527
+ `;
11528
+
11529
+ // src/components/ParameterInputs/ParameterDrawerHeader.tsx
11530
+ import { jsx as jsx67, jsxs as jsxs47 } from "@emotion/react/jsx-runtime";
11531
+ var ParameterDrawerHeader = ({ title, iconBeforeTitle, children }) => {
11532
+ return /* @__PURE__ */ jsxs47("div", { css: ParameterDrawerHeaderContainer, children: [
11533
+ /* @__PURE__ */ jsxs47("header", { css: ParameterDrawerHeaderTitleGroup, children: [
11534
+ iconBeforeTitle,
11535
+ /* @__PURE__ */ jsx67(Heading, { level: 3, withMarginBottom: false, css: ParameterDrawerHeaderTitle, title, children: title })
11536
+ ] }),
11537
+ children
11538
+ ] });
11539
+ };
11540
+
11541
+ // src/components/ParameterInputs/ParameterGroup.tsx
11542
+ import { forwardRef as forwardRef7 } from "react";
11543
+
11544
+ // src/components/ParameterInputs/styles/ParameterGroup.styles.ts
11545
+ import { css as css55 } from "@emotion/react";
11546
+ var fieldsetStyles = css55`
11547
+ &:disabled,
11548
+ [readonly] {
11549
+ pointer-events: none;
11550
+
11551
+ label,
11552
+ legend {
11553
+ opacity: var(--opacity-60);
11554
+ }
11555
+ }
11556
+ `;
11557
+ var fieldsetLegend2 = css55`
11558
+ display: block;
11559
+ font-weight: var(--fw-medium);
11560
+ margin-bottom: var(--spacing-sm);
11561
+ `;
11562
+
11563
+ // src/components/ParameterInputs/ParameterGroup.tsx
11564
+ import { jsx as jsx68, jsxs as jsxs48 } from "@emotion/react/jsx-runtime";
11565
+ var ParameterGroup = forwardRef7(
11566
+ ({ legend, isDisabled, children, ...props }, ref) => {
11567
+ return /* @__PURE__ */ jsxs48("fieldset", { css: fieldsetStyles, disabled: isDisabled, ref, ...props, children: [
11568
+ /* @__PURE__ */ jsx68("legend", { css: fieldsetLegend2, children: legend }),
11569
+ children
11570
+ ] });
11571
+ }
11572
+ );
11573
+
11574
+ // src/components/ParameterInputs/ParameterImage.tsx
11575
+ import { forwardRef as forwardRef9, useCallback as useCallback2, useDeferredValue, useState as useState8 } from "react";
11576
+
11577
+ // src/components/ParameterInputs/ParameterShell.tsx
11578
+ import { useState as useState7 } from "react";
11579
+
11580
+ // src/components/ParameterInputs/ParameterLabel.tsx
11581
+ import { jsx as jsx69 } from "@emotion/react/jsx-runtime";
11582
+ var ParameterLabel = ({ id, asSpan, children, ...props }) => {
11583
+ return !asSpan ? /* @__PURE__ */ jsx69("label", { ...props, htmlFor: id, css: labelText2, children }) : /* @__PURE__ */ jsx69("span", { "aria-labelledby": id, css: labelText2, children });
11584
+ };
11585
+
11586
+ // src/components/ParameterInputs/ParameterMenuButton.tsx
11587
+ import { forwardRef as forwardRef8 } from "react";
11588
+ import { jsx as jsx70 } from "@emotion/react/jsx-runtime";
11589
+ var ParameterMenuButton = forwardRef8(
11590
+ ({ label, children }, ref) => {
11591
+ return /* @__PURE__ */ jsx70(
11592
+ Menu,
11593
+ {
11594
+ menuLabel: `${label} menu`,
11595
+ menuTrigger: /* @__PURE__ */ jsx70(
11596
+ "button",
11597
+ {
11598
+ className: "parameter-menu",
11599
+ css: inputMenu,
11600
+ type: "button",
11601
+ "aria-label": `${label} options`,
11602
+ ref,
11603
+ children: /* @__PURE__ */ jsx70(Icon, { icon: "more-alt", iconColor: "currentColor" })
11604
+ }
11605
+ ),
11606
+ children
11607
+ }
11608
+ );
11609
+ }
11610
+ );
11611
+
11612
+ // src/components/ParameterInputs/styles/ParameterShell.styles.ts
11613
+ import { css as css56 } from "@emotion/react";
11614
+ var emptyParameterShell = css56`
11615
+ border-radius: var(--rounded-sm);
11616
+ background: var(--white);
11617
+ flex-grow: 1;
11618
+ padding: var(--spacing-xs);
11619
+ position: relative;
11620
+ `;
11621
+ var emptyParameterShellText = css56`
11622
+ background: var(--brand-secondary-6);
11623
+ border-radius: var(--rounded-sm);
11624
+ padding: var(--spacing-sm);
11625
+ text-align: center;
11626
+ font-size: var(--fs-sm);
11627
+ margin: 0;
11628
+ `;
11629
+ var overrideMarker = css56`
11630
+ border-radius: var(--rounded-sm);
11631
+ border: 10px solid var(--gray-300);
11632
+ border-left-color: transparent;
11633
+ border-bottom-color: transparent;
11634
+ position: absolute;
11635
+ top: 0;
11636
+ right: 0;
11637
+ `;
11638
+
11639
+ // src/components/ParameterInputs/ParameterShell.tsx
11640
+ import { jsx as jsx71, jsxs as jsxs49 } from "@emotion/react/jsx-runtime";
11641
+ var extractParameterProps = (props) => {
11642
+ const {
11643
+ id,
11644
+ label,
11645
+ caption,
11646
+ captionTestId,
11647
+ errorMessage,
11648
+ errorTestId,
11649
+ hiddenLabel,
11650
+ labelLeadingIcon,
11651
+ menuItems,
11652
+ onManuallySetErrorMessage,
11653
+ title,
11654
+ hasOverridingParams,
11655
+ ...innerProps
11656
+ } = props;
11657
+ return {
11658
+ shellProps: {
11659
+ id,
11660
+ label,
11661
+ caption,
11662
+ captionTestId,
11663
+ errorMessage,
11664
+ errorTestId,
11665
+ hiddenLabel,
11666
+ labelLeadingIcon,
11667
+ menuItems,
11668
+ onManuallySetErrorMessage,
11669
+ title,
11670
+ hasOverridingParams
11671
+ },
11672
+ innerProps
11673
+ };
11674
+ };
11675
+ var ParameterShell = ({
11676
+ label,
11677
+ labelLeadingIcon,
11678
+ hiddenLabel,
11679
+ id,
11680
+ errorMessage,
11681
+ caption,
11682
+ errorTestId,
11683
+ captionTestId,
11684
+ menuItems,
11685
+ hasOverridingParams,
11686
+ title,
11687
+ children,
11688
+ ...props
11689
+ }) => {
11690
+ const [manualErrorMessage, setManualErrorMessage] = useState7(void 0);
11691
+ const setErrorMessage = (message) => setManualErrorMessage(message);
11692
+ const errorMessaging = errorMessage || manualErrorMessage;
11693
+ return /* @__PURE__ */ jsxs49("div", { css: inputContainer2, ...props, children: [
11694
+ hiddenLabel || title ? null : /* @__PURE__ */ jsxs49(ParameterLabel, { id, css: labelText2, children: [
11695
+ labelLeadingIcon ? labelLeadingIcon : null,
11696
+ label
11697
+ ] }),
11698
+ !title ? null : /* @__PURE__ */ jsxs49(ParameterLabel, { id, asSpan: true, children: [
11699
+ labelLeadingIcon ? labelLeadingIcon : null,
11700
+ title
11701
+ ] }),
11702
+ /* @__PURE__ */ jsxs49("div", { css: inputWrapper, children: [
11703
+ menuItems ? /* @__PURE__ */ jsx71(ParameterMenuButton, { label: `${label} menu`, children: menuItems }) : null,
11704
+ /* @__PURE__ */ jsx71(
11705
+ ParameterShellContext.Provider,
11706
+ {
11707
+ value: {
11708
+ id,
11709
+ label,
11710
+ hiddenLabel,
11711
+ errorMessage: errorMessaging,
11712
+ onManuallySetErrorMessage: (message) => setErrorMessage(message)
11713
+ },
11714
+ children: children ? /* @__PURE__ */ jsxs49("div", { css: emptyParameterShell, children: [
11715
+ children,
11716
+ hasOverridingParams ? /* @__PURE__ */ jsx71(ParameterOverrideMarker, {}) : null
11717
+ ] }) : /* @__PURE__ */ jsx71(ParameterShellPlaceholder, { hasOverridingParams: true })
11718
+ }
11719
+ )
11720
+ ] }),
11721
+ caption ? /* @__PURE__ */ jsx71(Caption, { testId: captionTestId, children: caption }) : null,
11722
+ errorMessaging ? /* @__PURE__ */ jsx71(ErrorMessage, { message: errorMessaging, testId: errorTestId }) : null
11723
+ ] });
11724
+ };
11725
+ var ParameterShellPlaceholder = ({ hasOverridingParams }) => {
11726
+ return /* @__PURE__ */ jsxs49("div", { role: "note", css: emptyParameterShell, children: [
11727
+ /* @__PURE__ */ jsx71("p", { css: emptyParameterShellText, children: "Use component swap to replace with a parameter slot component" }),
11728
+ hasOverridingParams ? /* @__PURE__ */ jsx71(ParameterOverrideMarker, {}) : null
11729
+ ] });
11730
+ };
11731
+ var ParameterOverrideMarker = () => /* @__PURE__ */ jsx71(Tooltip, { title: "The default value has been overridden", children: /* @__PURE__ */ jsx71("span", { role: "presentation", css: overrideMarker }) });
11732
+
11733
+ // src/components/ParameterInputs/ParameterImage.tsx
11734
+ import { Fragment as Fragment10, jsx as jsx72, jsxs as jsxs50 } from "@emotion/react/jsx-runtime";
11735
+ var ParameterImage = forwardRef9((props, ref) => {
11736
+ const { shellProps, innerProps } = extractParameterProps(props);
11737
+ return /* @__PURE__ */ jsx72(ParameterShell, { "data-test-id": "parameter-image", ...shellProps, children: /* @__PURE__ */ jsx72(ParameterImageInner, { ref, ...innerProps }) });
11738
+ });
11739
+ var BrokenImage = ({ ...props }) => {
11740
+ return /* @__PURE__ */ jsxs50(
11741
+ "svg",
11742
+ {
11743
+ width: "214",
11744
+ height: "214",
11745
+ viewBox: "0 0 214 214",
11746
+ fill: "none",
11747
+ xmlns: "http://www.w3.org/2000/svg",
11748
+ xmlnsXlink: "http://www.w3.org/1999/xlink",
11749
+ ...props,
11750
+ children: [
11751
+ /* @__PURE__ */ jsx72("rect", { width: "214", height: "214", fill: "#F9FAFB" }),
11752
+ /* @__PURE__ */ jsx72("rect", { width: "214", height: "214", fill: "url(#pattern0)" }),
11753
+ /* @__PURE__ */ jsxs50("defs", { children: [
11754
+ /* @__PURE__ */ jsx72("pattern", { id: "pattern0", patternContentUnits: "objectBoundingBox", width: "1", height: "1", children: /* @__PURE__ */ jsx72("use", { xlinkHref: "#image0_761_4353", transform: "scale(0.0025)" }) }),
11755
+ /* @__PURE__ */ jsx72(
11756
+ "image",
11757
+ {
11758
+ id: "image0_761_4353",
11759
+ width: "400",
11760
+ height: "400",
11761
+ xlinkHref: "data:image/png;base64,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UfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBsBDMtNUfKBgDEBDMtYXFKDgBuB/we75KcVO2CRagAAAABJRU5ErkJggg=="
11762
+ }
11763
+ )
11764
+ ] })
11765
+ ]
11766
+ }
11767
+ );
11768
+ };
11769
+ var ParameterImageInner = forwardRef9(
11770
+ ({ ...props }, ref) => {
11771
+ const { id, label, hiddenLabel, errorMessage, onManuallySetErrorMessage } = useParameterShell();
11772
+ const [imageSrc, setImageSrc] = useState8();
11773
+ const [loading, setLoading] = useState8(false);
11774
+ const deferredValue = useDeferredValue(imageSrc);
11775
+ const errorText = "The text you provided is not a valid URL";
11776
+ const updateImageSrc = useCallback2(
11777
+ (e) => {
11778
+ let message = void 0;
11779
+ try {
11780
+ if (e.currentTarget.value !== "") {
11781
+ new URL(e.currentTarget.value);
11782
+ setImageSrc(e.currentTarget.value);
11783
+ }
11784
+ message = void 0;
11785
+ } catch (e2) {
11786
+ message = errorText;
11787
+ }
11788
+ if (onManuallySetErrorMessage) {
11789
+ onManuallySetErrorMessage(message);
11790
+ }
11791
+ },
11792
+ [onManuallySetErrorMessage]
11793
+ );
11794
+ const handleLoadEvent = () => {
11795
+ if (deferredValue) {
11796
+ setLoading(true);
11797
+ }
11798
+ const timer = setTimeout(() => {
11799
+ setLoading(false);
11800
+ }, 200);
11801
+ return () => clearTimeout(timer);
11802
+ };
11803
+ const handleErrorEvent = () => {
11804
+ if (onManuallySetErrorMessage) {
11805
+ onManuallySetErrorMessage(errorText);
11806
+ }
11807
+ };
11808
+ return /* @__PURE__ */ jsxs50(Fragment10, { children: [
11809
+ /* @__PURE__ */ jsx72(
11810
+ "input",
11811
+ {
11812
+ css: input2,
11813
+ type: "text",
11814
+ id,
11815
+ ref,
11816
+ "aria-label": hiddenLabel ? label : void 0,
11817
+ autoComplete: "off",
11818
+ onChange: (e) => updateImageSrc(e),
11819
+ ...props
11820
+ }
11821
+ ),
11822
+ /* @__PURE__ */ jsxs50("div", { css: imageWrapper, children: [
11823
+ deferredValue && !errorMessage ? /* @__PURE__ */ jsx72(
11824
+ "img",
11825
+ {
11826
+ src: deferredValue,
11827
+ css: img,
11828
+ onLoad: handleLoadEvent,
11829
+ onError: handleErrorEvent,
11830
+ width: 214,
11831
+ height: 214,
11832
+ loading: "lazy"
11833
+ }
11834
+ ) : null,
11835
+ deferredValue && errorMessage ? /* @__PURE__ */ jsx72(BrokenImage, { css: img }) : null
11836
+ ] }),
11837
+ loading ? /* @__PURE__ */ jsx72(LoadingIcon, {}) : null
11838
+ ] });
11839
+ }
11840
+ );
11841
+
11842
+ // src/components/ParameterInputs/ParameterInput.tsx
11843
+ import { forwardRef as forwardRef10 } from "react";
11844
+ import { jsx as jsx73 } from "@emotion/react/jsx-runtime";
11845
+ var ParameterInput = forwardRef10((props, ref) => {
11846
+ const { shellProps, innerProps } = extractParameterProps(props);
11847
+ return /* @__PURE__ */ jsx73(ParameterShell, { "data-test-id": "parameter-input", ...shellProps, children: /* @__PURE__ */ jsx73(ParameterInputInner, { ref, ...innerProps }) });
11848
+ });
11849
+ var ParameterInputInner = forwardRef10(
11850
+ ({ ...props }, ref) => {
11851
+ const { id, label, hiddenLabel } = useParameterShell();
11852
+ return /* @__PURE__ */ jsx73(
11853
+ "input",
11854
+ {
11855
+ css: input2,
11856
+ id,
11857
+ type: props.type || "text",
11858
+ "aria-label": hiddenLabel ? label : void 0,
11859
+ autoComplete: "off",
11860
+ ref,
11861
+ ...props
11862
+ }
11863
+ );
11864
+ }
11865
+ );
11866
+
11867
+ // src/components/ParameterInputs/ParameterLink.tsx
11868
+ import { forwardRef as forwardRef11 } from "react";
11869
+ import { jsx as jsx74, jsxs as jsxs51 } from "@emotion/react/jsx-runtime";
11870
+ var ParameterLink = forwardRef11(
11871
+ ({ buttonText = "Select project map node", disabled, onConnectLink, externalLink, ...props }, ref) => {
11872
+ const { shellProps, innerProps } = extractParameterProps(props);
11873
+ return /* @__PURE__ */ jsx74(
11874
+ ParameterShell,
11875
+ {
11876
+ "data-test-id": "parameter-link",
11877
+ ...shellProps,
11878
+ label: innerProps.value ? shellProps.label : "",
11879
+ title: !innerProps.value ? shellProps.label : void 0,
11880
+ children: !innerProps.value ? /* @__PURE__ */ jsx74("button", { type: "button", css: dataConnectButton, disabled, onClick: onConnectLink, children: buttonText }) : /* @__PURE__ */ jsx74(
11881
+ ParameterLinkInner,
11882
+ {
11883
+ onConnectLink,
11884
+ externalLink,
11885
+ ref,
11886
+ ...innerProps
11887
+ }
11888
+ )
11889
+ }
11890
+ );
11891
+ }
11892
+ );
11893
+ var ParameterLinkInner = forwardRef11(
11894
+ ({ externalLink, onConnectLink, disabled, ...props }, ref) => {
11895
+ const { id, label, hiddenLabel } = useParameterShell();
11896
+ return /* @__PURE__ */ jsxs51("div", { css: inputWrapper, children: [
11897
+ /* @__PURE__ */ jsx74(
11898
+ "input",
11899
+ {
11900
+ type: "text",
11901
+ css: [input2, linkParameterInput],
11902
+ readOnly: Boolean(props.value),
11903
+ id,
11904
+ ref,
11905
+ "aria-label": hiddenLabel ? label : void 0,
11906
+ ...props
11907
+ }
11908
+ ),
11909
+ /* @__PURE__ */ jsx74(
11910
+ "button",
11911
+ {
11912
+ type: "button",
11913
+ css: linkParameterBtn,
11914
+ disabled,
11915
+ onClick: onConnectLink,
11916
+ title: "edit current selection",
11917
+ children: "edit"
11918
+ }
11919
+ ),
11920
+ externalLink ? /* @__PURE__ */ jsx74(
11921
+ "a",
11922
+ {
11923
+ href: externalLink,
11924
+ css: linkParameterIcon,
11925
+ title: "Open link in new tab",
11926
+ target: "_blank",
11927
+ rel: "noopener noreferrer",
11928
+ children: /* @__PURE__ */ jsx74(Icon, { icon: "arrows-expand-up-right", iconColor: "currentColor", size: "1rem" })
11929
+ }
11930
+ ) : null
11931
+ ] });
11932
+ }
11933
+ );
11934
+
11935
+ // src/components/ParameterInputs/ParameterNameAndPublicIdInput.tsx
11936
+ import { Fragment as Fragment11, jsx as jsx75, jsxs as jsxs52 } from "@emotion/react/jsx-runtime";
11937
+ var ParameterNameAndPublicIdInput = ({
11938
+ id,
11939
+ onBlur,
11940
+ autoFocus,
11941
+ onNameChange,
11942
+ onPublicIdChange,
11943
+ nameIdError,
11944
+ publicIdError,
11945
+ readOnly = false,
11946
+ hasInitialPublicIdField,
11947
+ label = "Name",
11948
+ warnOverLength,
11949
+ nameIdField = "name",
11950
+ nameCaption,
11951
+ namePlaceholderText,
11952
+ publicIdFieldName = "public_id",
11953
+ publicIdCaption = "This cannot change once created.",
11954
+ publicIdPlaceholderText,
11955
+ values
11956
+ }) => {
11957
+ const isReadonly = !!hasInitialPublicIdField || readOnly;
11958
+ const handleCopyPidFieldValue = () => {
11959
+ navigator.clipboard.writeText(values[publicIdFieldName]);
11960
+ };
11961
+ autoFocus == null ? void 0 : autoFocus();
11962
+ return /* @__PURE__ */ jsxs52(Fragment11, { children: [
11963
+ /* @__PURE__ */ jsx75(
11964
+ ParameterInput,
11965
+ {
11966
+ id: nameIdField,
11967
+ name: nameIdField,
11968
+ label,
11969
+ "data-test-id": "name-field",
11970
+ autoComplete: "off",
11971
+ "data-af": "true",
11972
+ onBlur,
11973
+ onChange: onNameChange,
11974
+ caption: nameCaption,
11975
+ placeholder: namePlaceholderText,
11976
+ readOnly,
11977
+ errorMessage: nameIdError,
11978
+ disabled: readOnly,
11979
+ value: values[nameIdField]
11980
+ }
11981
+ ),
11982
+ /* @__PURE__ */ jsx75(
11983
+ ParameterInput,
11984
+ {
11985
+ id: publicIdFieldName,
11986
+ name: publicIdFieldName,
11987
+ label: "Public ID",
11988
+ disabled: Boolean(id) || isReadonly,
11989
+ "data-test-id": "public-id-field",
11990
+ autoComplete: "off",
11991
+ onBlur,
11992
+ onChange: onPublicIdChange,
11993
+ caption: publicIdCaption,
11994
+ placeholder: publicIdPlaceholderText,
11995
+ errorMessage: publicIdError,
11996
+ menuItems: /* @__PURE__ */ jsx75(
11997
+ MenuItem,
11998
+ {
11999
+ disabled: !values[publicIdFieldName],
12000
+ icon: /* @__PURE__ */ jsx75(Icon, { icon: "path-trim", iconColor: "currentColor" }),
12001
+ onClick: handleCopyPidFieldValue,
12002
+ children: "Copy"
12003
+ }
12004
+ ),
12005
+ value: values[publicIdFieldName]
12006
+ }
12007
+ ),
12008
+ (warnOverLength == null ? void 0 : warnOverLength.length) && values[publicIdFieldName].length > warnOverLength.length ? /* @__PURE__ */ jsx75(Callout, { type: "caution", children: warnOverLength.message }) : null
12009
+ ] });
12010
+ };
12011
+
12012
+ // src/components/ParameterInputs/ParameterRichText.tsx
12013
+ import { forwardRef as forwardRef12 } from "react";
12014
+ import { Fragment as Fragment12, jsx as jsx76, jsxs as jsxs53 } from "@emotion/react/jsx-runtime";
12015
+ var ParameterRichText = forwardRef12(
12016
+ ({
12017
+ label,
12018
+ labelLeadingIcon,
12019
+ hiddenLabel,
12020
+ id,
12021
+ errorMessage,
12022
+ caption,
12023
+ errorTestId,
12024
+ captionTestId,
12025
+ menuItems,
12026
+ ...props
12027
+ }, ref) => {
12028
+ return /* @__PURE__ */ jsxs53(
12029
+ ParameterShell,
12030
+ {
12031
+ "data-test-id": "parameter-input",
12032
+ label,
12033
+ labelLeadingIcon,
12034
+ id,
12035
+ errorMessage,
12036
+ caption,
12037
+ errorTestId,
12038
+ captionTestId,
12039
+ menuItems,
12040
+ children: [
12041
+ /* @__PURE__ */ jsx76(ParameterRichTextInner, { ref, ...props }),
12042
+ menuItems ? /* @__PURE__ */ jsx76(ParameterMenuButton, { label: `${label} menu`, children: /* @__PURE__ */ jsx76(Fragment12, { children: menuItems }) }) : null
12043
+ ]
12044
+ }
12045
+ );
12046
+ }
12047
+ );
12048
+ var ParameterRichTextInner = forwardRef12(({ ...props }, ref) => {
12049
+ const { id, label, hiddenLabel } = useParameterShell();
12050
+ return /* @__PURE__ */ jsx76(
12051
+ "textarea",
12052
+ {
12053
+ css: [input2, textarea2],
12054
+ id,
12055
+ ref,
12056
+ "aria-label": hiddenLabel ? label : void 0,
12057
+ ...props
12058
+ }
12059
+ );
12060
+ });
12061
+
12062
+ // src/components/ParameterInputs/ParameterSelect.tsx
12063
+ import { forwardRef as forwardRef13 } from "react";
12064
+ import { jsx as jsx77, jsxs as jsxs54 } from "@emotion/react/jsx-runtime";
12065
+ var ParameterSelect = forwardRef13(
12066
+ ({ defaultOption, options, ...props }, ref) => {
12067
+ const { shellProps, innerProps } = extractParameterProps(props);
12068
+ return /* @__PURE__ */ jsx77(ParameterShell, { ...shellProps, children: /* @__PURE__ */ jsx77(ParameterSelectInner, { options, defaultOption, ...innerProps, ref }) });
12069
+ }
12070
+ );
12071
+ var ParameterSelectInner = forwardRef13(
12072
+ ({ defaultOption, options, ...props }, ref) => {
12073
+ const { id, label, hiddenLabel } = useParameterShell();
12074
+ return /* @__PURE__ */ jsxs54(
12075
+ "select",
12076
+ {
12077
+ css: [input2, selectInput],
12078
+ id,
12079
+ "aria-label": hiddenLabel ? label : void 0,
12080
+ ref,
12081
+ ...props,
12082
+ children: [
12083
+ defaultOption ? /* @__PURE__ */ jsx77("option", { value: "", children: defaultOption }) : null,
12084
+ options.map((option) => {
12085
+ var _a;
12086
+ return /* @__PURE__ */ jsx77("option", { value: (_a = option.value) != null ? _a : option.label, children: option.label }, option.label);
12087
+ })
12088
+ ]
12089
+ }
12090
+ );
12091
+ }
12092
+ );
12093
+
12094
+ // src/components/ParameterInputs/ParameterTextarea.tsx
12095
+ import { forwardRef as forwardRef14 } from "react";
12096
+ import { jsx as jsx78 } from "@emotion/react/jsx-runtime";
12097
+ var ParameterTextarea = forwardRef14((props, ref) => {
12098
+ const { shellProps, innerProps } = extractParameterProps(props);
12099
+ return /* @__PURE__ */ jsx78(ParameterShell, { "data-test-id": "parameter-textarea", ...shellProps, children: /* @__PURE__ */ jsx78(ParameterTextareaInner, { ref, ...innerProps }) });
12100
+ });
12101
+ var ParameterTextareaInner = forwardRef14(({ ...props }, ref) => {
12102
+ const { id, label, hiddenLabel } = useParameterShell();
12103
+ return /* @__PURE__ */ jsx78(
12104
+ "textarea",
12105
+ {
12106
+ css: [input2, textarea2],
12107
+ id,
12108
+ ref,
12109
+ "aria-label": hiddenLabel ? label : void 0,
12110
+ ...props
12111
+ }
12112
+ );
12113
+ });
12114
+
12115
+ // src/components/ParameterInputs/ParameterToggle.tsx
12116
+ import { forwardRef as forwardRef15 } from "react";
12117
+ import { jsx as jsx79, jsxs as jsxs55 } from "@emotion/react/jsx-runtime";
12118
+ var ParameterToggle = forwardRef15((props, ref) => {
12119
+ const { shellProps, innerProps } = extractParameterProps(props);
12120
+ return /* @__PURE__ */ jsx79(ParameterShell, { ...shellProps, children: /* @__PURE__ */ jsx79(ParameterToggleInner, { ref, ...innerProps }) });
12121
+ });
12122
+ var ParameterToggleInner = forwardRef15(
12123
+ ({ ...props }, ref) => {
12124
+ const { id, label } = useParameterShell();
12125
+ return /* @__PURE__ */ jsxs55("label", { css: inputToggleLabel2, children: [
12126
+ /* @__PURE__ */ jsx79("input", { css: toggleInput2, type: props.type, id, ref, ...props }),
12127
+ /* @__PURE__ */ jsx79("span", { css: inlineLabel2, children: label })
12128
+ ] });
12129
+ }
12130
+ );
12131
+
12132
+ // src/components/Skeleton/Skeleton.styles.ts
12133
+ import { css as css57, keyframes as keyframes4 } from "@emotion/react";
12134
+ var lightFadingOut = keyframes4`
12135
+ from { opacity: 0.1; }
12136
+ to { opacity: 0.025; }
12137
+ `;
12138
+ var skeletonStyles = css57`
12139
+ animation: ${lightFadingOut} 1s ease-out infinite alternate;
12140
+ background-color: var(--gray-900);
12141
+ `;
12142
+
12143
+ // src/components/Skeleton/Skeleton.tsx
12144
+ import { jsx as jsx80 } from "@emotion/react/jsx-runtime";
12145
+ var Skeleton = ({
12146
+ width = "100%",
12147
+ height = "1.25rem",
12148
+ inline = false,
12149
+ circle = false,
12150
+ children,
12151
+ ...otherProps
12152
+ }) => /* @__PURE__ */ jsx80(
12153
+ "div",
12154
+ {
12155
+ css: [
12156
+ skeletonStyles,
12157
+ {
12158
+ width: circle ? height : width,
12159
+ height,
12160
+ display: inline ? "inline-block" : "block",
12161
+ borderRadius: circle ? "var(--rounded-full)" : "var(--rounded-md)"
12162
+ }
12163
+ ],
12164
+ ...otherProps,
12165
+ "aria-busy": "true",
12166
+ "aria-label": "Loading...",
12167
+ children
12168
+ }
12169
+ );
12170
+
12171
+ // src/components/Switch/Switch.tsx
12172
+ import * as React14 from "react";
12173
+
12174
+ // src/components/Switch/Switch.styles.ts
12175
+ import { css as css58 } from "@emotion/react";
12176
+ var SwitchInputContainer = css58`
12177
+ cursor: pointer;
12178
+ display: inline-block;
12179
+ position: relative;
12180
+ margin-right: var(--spacing-sm);
12181
+ transition: var(--duration-fast) var(--timing-ease-out);
12182
+ vertical-align: middle;
12183
+ user-select: none;
12184
+ `;
12185
+ var SwitchInput = css58`
12186
+ appearance: none;
12187
+ border-radius: var(--rounded-full);
12188
+ background-color: var(--white);
12189
+ border: 2px solid var(--gray-400);
12190
+ cursor: pointer;
12191
+ position: absolute;
12192
+ display: block;
12193
+ width: var(--spacing-md);
12194
+ height: var(--spacing-md);
12195
+ transition: transform var(--duration-fast) var(--timing-ease-out),
12196
+ background-color var(--duration-fast) var(--timing-ease-out),
12197
+ background-image var(--duration-fast) var(--timing-ease-out);
12198
+ z-index: var(--z-10);
12199
+
12200
+ &:focus {
12201
+ outline: 3px solid var(--brand-secondary-1);
12202
+ outline-offset: 2px;
12203
+ }
12204
+
12205
+ &:checked {
12206
+ background-color: var(--brand-secondary-3);
12207
+ 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");
12208
+ background-position: center center;
12209
+ border-color: var(--brand-secondary-3);
12210
+ transform: translateX(var(--spacing-base));
12211
+
12212
+ &:hover,
12213
+ &:focus {
12214
+ border-color: var(--brand-secondary-1);
12215
+ background-color: var(--brand-secondary-1);
12216
+ }
12217
+ }
12218
+
12219
+ &:disabled {
12220
+ cursor: not-allowed;
12221
+ }
12222
+ `;
12223
+ var SwitchInputDisabled = css58`
12224
+ opacity: var(--opacity-50);
12225
+ cursor: not-allowed;
12226
+
12227
+ & > :before {
12228
+ cursor: not-allowed;
12229
+ }
12230
+ `;
12231
+ var SwitchInputLabel = css58`
12232
+ align-items: center;
12233
+ color: var(--brand-secondary-1);
12234
+ display: inline-flex;
12235
+ font-weight: var(--fw-bold);
12236
+ line-height: 1.25;
12237
+ padding-inline: var(--spacing-2xl) 0;
12238
+
12239
+ &:before {
12240
+ border-radius: var(--rounded-full);
12241
+ background-color: var(--gray-300);
12242
+ content: '';
12243
+ cursor: pointer;
12244
+ display: block;
12245
+ overflow: hidden;
12246
+ width: var(--spacing-xl);
12247
+ height: var(--spacing-md);
12248
+ position: absolute;
12249
+ left: 0;
12250
+ top: 0;
12251
+ }
12252
+ `;
12253
+ var SwitchText = css58`
12254
+ color: var(--gray-500);
12255
+ font-size: var(--fs-sm);
12256
+ padding-inline: var(--spacing-2xl) 0;
12257
+ `;
12258
+
12259
+ // src/components/Switch/Switch.tsx
12260
+ import { Fragment as Fragment13, jsx as jsx81, jsxs as jsxs56 } from "@emotion/react/jsx-runtime";
12261
+ var Switch = React14.forwardRef(
12262
+ ({ label, infoText, toggleText, children, ...inputProps }, ref) => {
12263
+ let additionalText = infoText;
12264
+ if (infoText && toggleText) {
12265
+ additionalText = inputProps.checked ? toggleText : infoText;
12266
+ }
12267
+ return /* @__PURE__ */ jsxs56(Fragment13, { children: [
12268
+ /* @__PURE__ */ jsxs56("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
12269
+ /* @__PURE__ */ jsx81("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
12270
+ /* @__PURE__ */ jsx81("span", { css: SwitchInputLabel, children: label })
12271
+ ] }),
12272
+ additionalText ? /* @__PURE__ */ jsx81("p", { css: SwitchText, children: additionalText }) : null,
12273
+ children
12274
+ ] });
12275
+ }
12276
+ );
12277
+
12278
+ // src/components/Table/Table.tsx
12279
+ import * as React15 from "react";
12280
+
12281
+ // src/components/Table/Table.styles.ts
12282
+ import { css as css59 } from "@emotion/react";
12283
+ var table = css59`
12284
+ border-bottom: 1px solid var(--gray-400);
12285
+ border-collapse: collapse;
12286
+ min-width: 100%;
12287
+ table-layout: auto;
12288
+ `;
12289
+ var tableHead = css59`
12290
+ background: var(--gray-100);
12291
+ color: var(--brand-secondary-1);
12292
+ text-align: left;
12293
+ `;
12294
+ var tableRow = css59`
12295
+ border-bottom: 1px solid var(--gray-200);
12296
+ `;
12297
+ var tableCellHead = css59`
12298
+ font-size: var(--fs-sm);
12299
+ padding: var(--spacing-base) var(--spacing-md);
12300
+ text-transform: uppercase;
11272
12301
  font-weight: var(--fw-bold);
11273
12302
  `;
11274
- var tableCellData = css53`
12303
+ var tableCellData = css59`
11275
12304
  padding: var(--spacing-base) var(--spacing-md);
11276
12305
  `;
11277
12306
 
11278
12307
  // src/components/Table/Table.tsx
11279
- import { jsx as jsx66 } from "@emotion/react/jsx-runtime";
11280
- var Table = React14.forwardRef(({ children, ...otherProps }, ref) => {
11281
- return /* @__PURE__ */ jsx66("table", { ref, css: table, ...otherProps, children });
12308
+ import { jsx as jsx82 } from "@emotion/react/jsx-runtime";
12309
+ var Table = React15.forwardRef(({ children, ...otherProps }, ref) => {
12310
+ return /* @__PURE__ */ jsx82("table", { ref, css: table, ...otherProps, children });
11282
12311
  });
11283
- var TableHead = React14.forwardRef(
12312
+ var TableHead = React15.forwardRef(
11284
12313
  ({ children, ...otherProps }, ref) => {
11285
- return /* @__PURE__ */ jsx66("thead", { ref, css: tableHead, ...otherProps, children });
12314
+ return /* @__PURE__ */ jsx82("thead", { ref, css: tableHead, ...otherProps, children });
11286
12315
  }
11287
12316
  );
11288
- var TableBody = React14.forwardRef(
12317
+ var TableBody = React15.forwardRef(
11289
12318
  ({ children, ...otherProps }, ref) => {
11290
- return /* @__PURE__ */ jsx66("tbody", { ref, ...otherProps, children });
12319
+ return /* @__PURE__ */ jsx82("tbody", { ref, ...otherProps, children });
11291
12320
  }
11292
12321
  );
11293
- var TableFoot = React14.forwardRef(
12322
+ var TableFoot = React15.forwardRef(
11294
12323
  ({ children, ...otherProps }, ref) => {
11295
- return /* @__PURE__ */ jsx66("tfoot", { ref, ...otherProps, children });
12324
+ return /* @__PURE__ */ jsx82("tfoot", { ref, ...otherProps, children });
11296
12325
  }
11297
12326
  );
11298
- var TableRow = React14.forwardRef(
12327
+ var TableRow = React15.forwardRef(
11299
12328
  ({ children, ...otherProps }, ref) => {
11300
- return /* @__PURE__ */ jsx66("tr", { ref, css: tableRow, ...otherProps, children });
12329
+ return /* @__PURE__ */ jsx82("tr", { ref, css: tableRow, ...otherProps, children });
11301
12330
  }
11302
12331
  );
11303
- var TableCellHead = React14.forwardRef(
12332
+ var TableCellHead = React15.forwardRef(
11304
12333
  ({ children, ...otherProps }, ref) => {
11305
- return /* @__PURE__ */ jsx66("th", { ref, css: tableCellHead, ...otherProps, children });
12334
+ return /* @__PURE__ */ jsx82("th", { ref, css: tableCellHead, ...otherProps, children });
11306
12335
  }
11307
12336
  );
11308
- var TableCellData = React14.forwardRef(
12337
+ var TableCellData = React15.forwardRef(
11309
12338
  ({ children, ...otherProps }, ref) => {
11310
- return /* @__PURE__ */ jsx66("td", { ref, css: tableCellData, ...otherProps, children });
12339
+ return /* @__PURE__ */ jsx82("td", { ref, css: tableCellData, ...otherProps, children });
11311
12340
  }
11312
12341
  );
11313
12342
 
11314
12343
  // src/components/Tabs/Tabs.tsx
11315
- import { createContext as createContext4, useContext as useContext5, useEffect as useEffect7 } from "react";
12344
+ import { createContext as createContext5, useContext as useContext6, useEffect as useEffect7, useMemo as useMemo2 } from "react";
11316
12345
  import {
11317
12346
  Tab as ReakitTab,
11318
12347
  TabList as ReakitTabList,
@@ -11321,8 +12350,8 @@ import {
11321
12350
  } from "reakit/Tab";
11322
12351
 
11323
12352
  // src/components/Tabs/Tabs.styles.ts
11324
- import { css as css54 } from "@emotion/react";
11325
- var tabButtonStyles = css54`
12353
+ import { css as css60 } from "@emotion/react";
12354
+ var tabButtonStyles = css60`
11326
12355
  align-items: center;
11327
12356
  border: 0;
11328
12357
  height: 2.5rem;
@@ -11339,86 +12368,60 @@ var tabButtonStyles = css54`
11339
12368
  -webkit-text-stroke-width: thin;
11340
12369
  }
11341
12370
  `;
11342
- var tabButtonGroupStyles = css54`
12371
+ var tabButtonGroupStyles = css60`
11343
12372
  display: flex;
11344
12373
  gap: var(--spacing-base);
12374
+ border-bottom: 1px solid var(--gray-300);
11345
12375
  `;
11346
12376
 
11347
12377
  // src/components/Tabs/Tabs.tsx
11348
- import { jsx as jsx67 } from "@emotion/react/jsx-runtime";
11349
- var CurrentTabContext = createContext4(null);
12378
+ import { jsx as jsx83 } from "@emotion/react/jsx-runtime";
12379
+ var CurrentTabContext = createContext5(null);
11350
12380
  var useCurrentTab = () => {
11351
- const context = useContext5(CurrentTabContext);
12381
+ const context = useContext6(CurrentTabContext);
11352
12382
  if (!context) {
11353
12383
  throw new Error("This component can only be used inside <Tabs>");
11354
12384
  }
11355
12385
  return context;
11356
12386
  };
11357
- var Tabs = ({ children, onSelectedIdChange, ...props }) => {
11358
- const tab = useTabState(props);
12387
+ var Tabs = ({ children, onSelectedIdChange, useHashForState, selectedId, ...props }) => {
12388
+ const selected = useMemo2(() => {
12389
+ if (selectedId)
12390
+ return selectedId;
12391
+ return useHashForState && typeof window !== "undefined" && window.location.hash ? window.location.hash.substring(1) : void 0;
12392
+ }, [selectedId, useHashForState]);
12393
+ const tab = useTabState({ ...props, selectedId: selected });
11359
12394
  useEffect7(() => {
11360
12395
  var _a;
11361
- onSelectedIdChange == null ? void 0 : onSelectedIdChange((_a = tab.selectedId) != null ? _a : void 0);
11362
- }, [tab.selectedId, onSelectedIdChange]);
12396
+ const selectedValueWithoutNull = (_a = tab.selectedId) != null ? _a : void 0;
12397
+ onSelectedIdChange == null ? void 0 : onSelectedIdChange(selectedValueWithoutNull);
12398
+ if (useHashForState && typeof window !== "undefined") {
12399
+ window.location.hash = selectedValueWithoutNull != null ? selectedValueWithoutNull : "";
12400
+ }
12401
+ }, [tab.selectedId, onSelectedIdChange, useHashForState]);
11363
12402
  useEffect7(() => {
11364
- tab.setSelectedId(props.selectedId);
11365
- }, [props.selectedId]);
11366
- return /* @__PURE__ */ jsx67(CurrentTabContext.Provider, { value: tab, children });
12403
+ if (selected && selected !== tab.selectedId) {
12404
+ tab.setSelectedId(selected);
12405
+ }
12406
+ }, [selected]);
12407
+ return /* @__PURE__ */ jsx83(CurrentTabContext.Provider, { value: tab, children });
11367
12408
  };
11368
12409
  var TabButtonGroup = ({ children, ...props }) => {
11369
12410
  const currentTab = useCurrentTab();
11370
- return /* @__PURE__ */ jsx67(ReakitTabList, { ...props, ...currentTab, css: tabButtonGroupStyles, children });
12411
+ return /* @__PURE__ */ jsx83(ReakitTabList, { ...props, ...currentTab, css: tabButtonGroupStyles, children });
11371
12412
  };
11372
12413
  var TabButton = ({ children, id, ...props }) => {
11373
12414
  const currentTab = useCurrentTab();
11374
- return /* @__PURE__ */ jsx67(ReakitTab, { type: "button", id, ...currentTab, ...props, css: tabButtonStyles, children });
12415
+ return /* @__PURE__ */ jsx83(ReakitTab, { type: "button", id, ...currentTab, ...props, css: tabButtonStyles, children });
11375
12416
  };
11376
12417
  var TabContent = ({ children, ...props }) => {
11377
12418
  const currentTab = useCurrentTab();
11378
- return /* @__PURE__ */ jsx67(ReakitTabPanel, { ...props, ...currentTab, children });
12419
+ return /* @__PURE__ */ jsx83(ReakitTabPanel, { ...props, ...currentTab, children });
11379
12420
  };
11380
12421
 
11381
- // src/components/Tooltip/Tooltip.tsx
11382
- import React16 from "react";
11383
- import {
11384
- Tooltip as ReakitTooltip,
11385
- TooltipArrow,
11386
- TooltipReference,
11387
- useTooltipState
11388
- } from "reakit/Tooltip";
11389
-
11390
- // src/components/Tooltip/Tooltip.styles.ts
11391
- import { css as css55 } from "@emotion/react";
11392
- var TooltipContainer = css55`
11393
- border: 2px solid var(--gray-300);
11394
- border-radius: var(--rounded-base);
11395
- padding: var(--spacing-xs) var(--spacing-sm);
11396
- color: var(--gray-500);
11397
- font-size: var(--fs-xs);
11398
- background: var(--white);
11399
- `;
11400
- var TooltipArrowStyles = css55`
11401
- svg {
11402
- fill: var(--gray-300);
11403
- }
11404
- `;
11405
-
11406
- // src/components/Tooltip/Tooltip.tsx
11407
- import { Fragment as Fragment10, jsx as jsx68, jsxs as jsxs45 } from "@emotion/react/jsx-runtime";
11408
- function Tooltip({ children, title, placement = "bottom", visible, ...props }) {
11409
- const tooltip = useTooltipState({ placement });
11410
- return /* @__PURE__ */ jsxs45(Fragment10, { children: [
11411
- /* @__PURE__ */ jsx68(TooltipReference, { ...tooltip, ...children.props, children: (referenceProps) => React16.cloneElement(children, referenceProps) }),
11412
- /* @__PURE__ */ jsxs45(ReakitTooltip, { ...tooltip, ...props, css: TooltipContainer, visible: visible != null ? visible : tooltip.visible, children: [
11413
- /* @__PURE__ */ jsx68(TooltipArrow, { ...tooltip, css: TooltipArrowStyles }),
11414
- title
11415
- ] })
11416
- ] });
11417
- }
11418
-
11419
12422
  // src/components/Validation/StatusBullet.styles.ts
11420
- import { css as css56 } from "@emotion/react";
11421
- var StatusBulletContainer = css56`
12423
+ import { css as css61 } from "@emotion/react";
12424
+ var StatusBulletContainer = css61`
11422
12425
  align-items: center;
11423
12426
  align-self: center;
11424
12427
  color: var(--gray-500);
@@ -11438,19 +12441,19 @@ var StatusBulletContainer = css56`
11438
12441
  height: var(--fs-xs);
11439
12442
  }
11440
12443
  `;
11441
- var StatusDraft = css56`
12444
+ var StatusDraft = css61`
11442
12445
  &:before {
11443
12446
  background: var(--white);
11444
12447
  box-shadow: inset 0 0 0 0.125rem var(--brand-primary-1);
11445
12448
  }
11446
12449
  `;
11447
- var StatusModified = css56`
12450
+ var StatusModified = css61`
11448
12451
  &:before {
11449
12452
  background: linear-gradient(to right, var(--white) 50%, var(--brand-primary-1) 50% 100%);
11450
12453
  box-shadow: inset 0 0 0 0.125rem var(--brand-primary-1);
11451
12454
  }
11452
12455
  `;
11453
- var StatusError = css56`
12456
+ var StatusError = css61`
11454
12457
  color: var(--error);
11455
12458
  &:before {
11456
12459
  background: var(--error);
@@ -11466,19 +12469,19 @@ var StatusError = css56`
11466
12469
  rotate: -45deg;
11467
12470
  }
11468
12471
  `;
11469
- var StatusPublished = css56`
12472
+ var StatusPublished = css61`
11470
12473
  &:before {
11471
12474
  background: var(--brand-secondary-3);
11472
12475
  }
11473
12476
  `;
11474
- var StatusOrphan = css56`
12477
+ var StatusOrphan = css61`
11475
12478
  &:before {
11476
12479
  background: var(--brand-secondary-5);
11477
12480
  }
11478
12481
  `;
11479
12482
 
11480
12483
  // src/components/Validation/StatusBullet.tsx
11481
- import { jsx as jsx69 } from "@emotion/react/jsx-runtime";
12484
+ import { jsx as jsx84 } from "@emotion/react/jsx-runtime";
11482
12485
  var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11483
12486
  const currentStateStyles = {
11484
12487
  Error: StatusError,
@@ -11488,7 +12491,7 @@ var StatusBullet = ({ status, hideText = false, message, ...props }) => {
11488
12491
  Published: StatusPublished,
11489
12492
  Draft: StatusDraft
11490
12493
  };
11491
- return /* @__PURE__ */ jsx69(
12494
+ return /* @__PURE__ */ jsx84(
11492
12495
  "span",
11493
12496
  {
11494
12497
  css: [StatusBulletContainer, currentStateStyles[status]],
@@ -11510,6 +12513,7 @@ export {
11510
12513
  Card,
11511
12514
  CardContainer2 as CardContainer,
11512
12515
  CheckboxWithInfo,
12516
+ ConnectToDataElementButton,
11513
12517
  Counter,
11514
12518
  CreateTeamIntegrationTile,
11515
12519
  DashedBox,
@@ -11553,6 +12557,30 @@ export {
11553
12557
  MenuItemSeparator,
11554
12558
  PageHeaderSection,
11555
12559
  Paragraph,
12560
+ ParameterDataResource,
12561
+ ParameterDrawerHeader,
12562
+ ParameterGroup,
12563
+ ParameterImage,
12564
+ ParameterImageInner,
12565
+ ParameterInput,
12566
+ ParameterInputInner,
12567
+ ParameterLabel,
12568
+ ParameterLink,
12569
+ ParameterLinkInner,
12570
+ ParameterMenuButton,
12571
+ ParameterNameAndPublicIdInput,
12572
+ ParameterOverrideMarker,
12573
+ ParameterRichText,
12574
+ ParameterRichTextInner,
12575
+ ParameterSelect,
12576
+ ParameterSelectInner,
12577
+ ParameterShell,
12578
+ ParameterShellContext,
12579
+ ParameterShellPlaceholder,
12580
+ ParameterTextarea,
12581
+ ParameterTextareaInner,
12582
+ ParameterToggle,
12583
+ ParameterToggleInner,
11556
12584
  ResolveIcon,
11557
12585
  ScrollableList,
11558
12586
  ScrollableListInputItem,
@@ -11590,6 +12618,7 @@ export {
11590
12618
  buttonSecondaryInvert,
11591
12619
  buttonTertiary,
11592
12620
  buttonUnimportant,
12621
+ extractParameterProps,
11593
12622
  fadeIn,
11594
12623
  fadeInBottom,
11595
12624
  fadeInLtr,
@@ -11614,5 +12643,6 @@ export {
11614
12643
  useIconContext,
11615
12644
  useMenuContext,
11616
12645
  useOutsideClick,
12646
+ useParameterShell,
11617
12647
  useShortcut
11618
12648
  };