@uniformdev/design-system 20.72.2-alpha.3 → 20.72.2

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
@@ -3530,6 +3530,87 @@ var inputError = css15`
3530
3530
  border-color: var(--action-destructive-hover);
3531
3531
  }
3532
3532
  `;
3533
+ var inputPrefixGroup = css15`
3534
+ align-items: center;
3535
+ background-color: var(--white);
3536
+ border: 1px solid var(--gray-200);
3537
+ border-radius: var(--rounded-sm);
3538
+ display: flex;
3539
+ min-height: 50px;
3540
+ padding-left: var(--spacing-sm);
3541
+ position: relative;
3542
+ transition:
3543
+ background var(--duration-fast) var(--timing-ease-out),
3544
+ border-color var(--duration-fast) var(--timing-ease-out),
3545
+ box-shadow var(--duration-fast) var(--timing-ease-out);
3546
+
3547
+ &:hover {
3548
+ border-color: var(--accent-dark-hover);
3549
+ }
3550
+
3551
+ &:focus-within {
3552
+ border-color: var(--accent-dark-active);
3553
+ box-shadow: var(--elevation-100);
3554
+ outline: none;
3555
+ }
3556
+
3557
+ &:has(input:disabled) {
3558
+ border-color: var(--gray-200);
3559
+ }
3560
+
3561
+ &:has(input:disabled) [data-input-prefix] {
3562
+ color: var(--gray-300);
3563
+ }
3564
+ `;
3565
+ var inputPrefixGroupError = css15`
3566
+ border-color: var(--action-destructive-default);
3567
+ box-shadow: var(--elevation-100);
3568
+
3569
+ &:hover {
3570
+ border-color: var(--action-destructive-hover);
3571
+ }
3572
+ `;
3573
+ var inputPrefixSlot = css15`
3574
+ color: var(--gray-300);
3575
+ flex: none;
3576
+ font-size: 1rem;
3577
+ padding-right: var(--spacing-sm);
3578
+ pointer-events: none;
3579
+ white-space: nowrap;
3580
+ `;
3581
+ var inputInPrefixGroup = css15`
3582
+ appearance: none;
3583
+ background: transparent;
3584
+ border: 0;
3585
+ box-shadow: none;
3586
+ color: var(--gray-700);
3587
+ flex: 1;
3588
+ min-height: 50px;
3589
+ min-width: 0;
3590
+ padding: 12px var(--spacing-base) 12px 0;
3591
+ width: 100%;
3592
+
3593
+ &::placeholder {
3594
+ color: var(--gray-400);
3595
+ }
3596
+
3597
+ &:hover,
3598
+ &:focus,
3599
+ &:focus-visible {
3600
+ border: 0;
3601
+ box-shadow: none;
3602
+ outline: none;
3603
+ }
3604
+
3605
+ &:disabled,
3606
+ &:disabled::placeholder {
3607
+ cursor: not-allowed;
3608
+ color: var(--gray-300);
3609
+ }
3610
+ `;
3611
+ var inputInPrefixGroupWithIcon = css15`
3612
+ padding-right: var(--spacing-2xl);
3613
+ `;
3533
3614
  var inputIcon = css15`
3534
3615
  align-items: center;
3535
3616
  display: flex;
@@ -5715,11 +5796,12 @@ var Label = ({ children, className, testId, ...props }) => {
5715
5796
  };
5716
5797
 
5717
5798
  // src/components/Input/Input.tsx
5718
- import { jsx as jsx39, jsxs as jsxs25 } from "@emotion/react/jsx-runtime";
5799
+ import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs25 } from "@emotion/react/jsx-runtime";
5719
5800
  var Input = forwardRef9(
5720
5801
  ({
5721
5802
  label: label2,
5722
5803
  icon,
5804
+ prefix,
5723
5805
  id,
5724
5806
  caption,
5725
5807
  showLabel = true,
@@ -5737,6 +5819,24 @@ var Input = forwardRef9(
5737
5819
  ...props
5738
5820
  }, ref) => {
5739
5821
  const isNumberInputAndMouseWheelDisabled = enableMouseWheel !== true && props.type === "number";
5822
+ const inputElement = /* @__PURE__ */ jsx39(
5823
+ "input",
5824
+ {
5825
+ id,
5826
+ css: [
5827
+ prefix ? inputInPrefixGroup : input("nowrap"),
5828
+ prefix && icon ? inputInPrefixGroupWithIcon : void 0,
5829
+ !prefix && errorMessage ? inputError : void 0,
5830
+ !prefix && icon ? inputWithIcon : "",
5831
+ typeof classNameControl === "object" ? classNameControl : void 0
5832
+ ],
5833
+ "aria-label": showLabel || typeof label2 !== "string" ? void 0 : label2,
5834
+ className: typeof classNameControl === "string" ? classNameControl : "",
5835
+ onWheel: isNumberInputAndMouseWheelDisabled ? disableMouseWheelEvent : void 0,
5836
+ ...props,
5837
+ ref
5838
+ }
5839
+ );
5740
5840
  return /* @__PURE__ */ jsxs25(
5741
5841
  "div",
5742
5842
  {
@@ -5753,31 +5853,27 @@ var Input = forwardRef9(
5753
5853
  children: label2
5754
5854
  }
5755
5855
  ) : null,
5756
- /* @__PURE__ */ jsxs25(
5856
+ /* @__PURE__ */ jsx39(
5757
5857
  "div",
5758
5858
  {
5759
5859
  css: [inputContainer, typeof classNameContainer === "object" ? classNameContainer : void 0],
5760
5860
  className: typeof classNameContainer === "string" ? classNameContainer : "",
5761
- children: [
5762
- /* @__PURE__ */ jsx39(
5763
- "input",
5764
- {
5765
- id,
5766
- css: [
5767
- input("nowrap"),
5768
- typeof classNameControl === "object" ? classNameControl : void 0,
5769
- errorMessage ? inputError : void 0,
5770
- icon ? inputWithIcon : ""
5771
- ],
5772
- "aria-label": showLabel || typeof label2 !== "string" ? void 0 : label2,
5773
- className: typeof classNameControl === "string" ? classNameControl : "",
5774
- onWheel: isNumberInputAndMouseWheelDisabled ? disableMouseWheelEvent : void 0,
5775
- ...props,
5776
- ref
5777
- }
5778
- ),
5861
+ children: prefix ? /* @__PURE__ */ jsxs25(
5862
+ "div",
5863
+ {
5864
+ css: [inputPrefixGroup, errorMessage ? inputPrefixGroupError : void 0],
5865
+ "data-input-prefix-group": true,
5866
+ "data-testid": "input-prefix-group",
5867
+ children: [
5868
+ /* @__PURE__ */ jsx39("span", { css: inputPrefixSlot, "aria-hidden": "true", "data-input-prefix": true, children: prefix }),
5869
+ inputElement,
5870
+ icon ? /* @__PURE__ */ jsx39("div", { css: inputIcon, children: icon }) : null
5871
+ ]
5872
+ }
5873
+ ) : /* @__PURE__ */ jsxs25(Fragment4, { children: [
5874
+ inputElement,
5779
5875
  icon ? /* @__PURE__ */ jsx39("div", { css: inputIcon, children: icon }) : null
5780
- ]
5876
+ ] })
5781
5877
  }
5782
5878
  ),
5783
5879
  /* @__PURE__ */ jsx39(
@@ -6294,7 +6390,7 @@ var DebouncedInputKeywordSearch = forwardRef10(
6294
6390
 
6295
6391
  // src/components/Input/InputSelect.tsx
6296
6392
  import { forwardRef as forwardRef11 } from "react";
6297
- import { Fragment as Fragment4, jsx as jsx43, jsxs as jsxs27 } from "@emotion/react/jsx-runtime";
6393
+ import { Fragment as Fragment5, jsx as jsx43, jsxs as jsxs27 } from "@emotion/react/jsx-runtime";
6298
6394
  var InputSelect = forwardRef11(
6299
6395
  ({
6300
6396
  label: label2,
@@ -6318,7 +6414,7 @@ var InputSelect = forwardRef11(
6318
6414
  css: [inputContainer, typeof classNameContainer === "object" ? classNameContainer : void 0],
6319
6415
  className: typeof classNameContainer === "string" ? classNameContainer : "",
6320
6416
  children: [
6321
- showLabel ? /* @__PURE__ */ jsx43(Fragment4, { children: /* @__PURE__ */ jsxs27(
6417
+ showLabel ? /* @__PURE__ */ jsx43(Fragment5, { children: /* @__PURE__ */ jsxs27(
6322
6418
  Label,
6323
6419
  {
6324
6420
  htmlFor: props.id,
@@ -6754,10 +6850,10 @@ var SuccessMessage = ({ message, testId, ...props }) => {
6754
6850
 
6755
6851
  // src/components/Input/Textarea.tsx
6756
6852
  import { forwardRef as forwardRef14 } from "react";
6757
- import { Fragment as Fragment5, jsx as jsx49, jsxs as jsxs32 } from "@emotion/react/jsx-runtime";
6853
+ import { Fragment as Fragment6, jsx as jsx49, jsxs as jsxs32 } from "@emotion/react/jsx-runtime";
6758
6854
  var Textarea = forwardRef14(
6759
6855
  ({ label: label2, icon, id, caption, showLabel = true, errorMessage, warningMessage, ...props }, ref) => {
6760
- return /* @__PURE__ */ jsxs32(Fragment5, { children: [
6856
+ return /* @__PURE__ */ jsxs32(Fragment6, { children: [
6761
6857
  showLabel ? /* @__PURE__ */ jsx49("label", { htmlFor: id, css: [labelText], children: label2 }) : null,
6762
6858
  /* @__PURE__ */ jsxs32("div", { css: [inputContainer], children: [
6763
6859
  /* @__PURE__ */ jsx49(
@@ -7150,7 +7246,7 @@ var wholeButtonWithMenuIconOffset = css39`
7150
7246
  `;
7151
7247
 
7152
7248
  // src/components/ButtonWithMenu/ButtonWithMenu.tsx
7153
- import { Fragment as Fragment6, jsx as jsx52, jsxs as jsxs35 } from "@emotion/react/jsx-runtime";
7249
+ import { Fragment as Fragment7, jsx as jsx52, jsxs as jsxs35 } from "@emotion/react/jsx-runtime";
7154
7250
  var buttonTheme2 = {
7155
7251
  primary: buttonPrimary2,
7156
7252
  secondary: buttonSecondary2,
@@ -7263,7 +7359,7 @@ var ButtonWithMenu = ({
7263
7359
  "data-testid": "multioptions-button",
7264
7360
  "aria-disabled": isButtonDisabled,
7265
7361
  children: [
7266
- tip ? /* @__PURE__ */ jsx52(Tooltip, { title: /* @__PURE__ */ jsx52(Fragment6, { children: tip }), children: /* @__PURE__ */ jsx52("span", { children: primaryButton }) }) : /* @__PURE__ */ jsx52("span", { children: primaryButton }),
7362
+ tip ? /* @__PURE__ */ jsx52(Tooltip, { title: /* @__PURE__ */ jsx52(Fragment7, { children: tip }), children: /* @__PURE__ */ jsx52("span", { children: primaryButton }) }) : /* @__PURE__ */ jsx52("span", { children: primaryButton }),
7267
7363
  isButtonDisabled ? menuButton : /* @__PURE__ */ jsx52(
7268
7364
  Menu,
7269
7365
  {
@@ -7748,7 +7844,7 @@ var paragraph = css44`
7748
7844
  `;
7749
7845
 
7750
7846
  // src/components/Typography/Paragraph.tsx
7751
- import { Fragment as Fragment7, jsx as jsx57 } from "@emotion/react/jsx-runtime";
7847
+ import { Fragment as Fragment8, jsx as jsx57 } from "@emotion/react/jsx-runtime";
7752
7848
  import { createElement } from "@emotion/react";
7753
7849
  var Paragraph = ({ className, htmlContent, children, ...pAttributes }) => {
7754
7850
  if (htmlContent && Array.isArray(htmlContent)) {
@@ -7762,7 +7858,7 @@ var Paragraph = ({ className, htmlContent, children, ...pAttributes }) => {
7762
7858
  dangerouslySetInnerHTML: { __html: html }
7763
7859
  }
7764
7860
  ));
7765
- return /* @__PURE__ */ jsx57(Fragment7, { children: paragraphContent });
7861
+ return /* @__PURE__ */ jsx57(Fragment8, { children: paragraphContent });
7766
7862
  }
7767
7863
  return htmlContent ? /* @__PURE__ */ jsx57(
7768
7864
  "p",
@@ -8867,7 +8963,7 @@ var DateTimePickerVariant = /* @__PURE__ */ ((DateTimePickerVariant2) => {
8867
8963
  })(DateTimePickerVariant || {});
8868
8964
 
8869
8965
  // src/components/DateTimePicker/DateTimePicker.tsx
8870
- import { Fragment as Fragment8, jsx as jsx67, jsxs as jsxs45 } from "@emotion/react/jsx-runtime";
8966
+ import { Fragment as Fragment9, jsx as jsx67, jsxs as jsxs45 } from "@emotion/react/jsx-runtime";
8871
8967
  var timeZoneOptions = typeof Intl !== "undefined" && typeof Intl.supportedValuesOf === "function" ? Intl.supportedValuesOf("timeZone") : ["Etc/UTC"];
8872
8968
  function getTimezoneOffset(tz) {
8873
8969
  const now = /* @__PURE__ */ new Date();
@@ -8927,7 +9023,7 @@ var DateTimePickerPopoverContent = ({
8927
9023
  handleTimezoneChange,
8928
9024
  handleSelectClick,
8929
9025
  setOpen
8930
- }) => /* @__PURE__ */ jsxs45(Fragment8, { children: [
9026
+ }) => /* @__PURE__ */ jsxs45(Fragment9, { children: [
8931
9027
  /* @__PURE__ */ jsxs45("div", { css: popoverInnerContent, children: [
8932
9028
  /* @__PURE__ */ jsx67("div", { css: calendarSection, children: /* @__PURE__ */ jsx67(
8933
9029
  Calendar,
@@ -9764,7 +9860,7 @@ var DrawerContent2 = ({ children, buttonGroup, noPadding = false, ...props }) =>
9764
9860
 
9765
9861
  // src/components/Drawer/DrawerRenderer.tsx
9766
9862
  import { useEffect as useEffect9, useMemo as useMemo4 } from "react";
9767
- import { Fragment as Fragment9, jsx as jsx74, jsxs as jsxs50 } from "@emotion/react/jsx-runtime";
9863
+ import { Fragment as Fragment10, jsx as jsx74, jsxs as jsxs50 } from "@emotion/react/jsx-runtime";
9768
9864
  var drawerWidth = {
9769
9865
  narrow: "29rem",
9770
9866
  medium: "43rem",
@@ -9857,7 +9953,7 @@ var DrawerWrapper = ({
9857
9953
  offsetInPx = Math.round(maxLayeringInPx * relativeLevel);
9858
9954
  }
9859
9955
  const calculatedWidth = `calc(${width} - ${offsetInPx}px)`;
9860
- return /* @__PURE__ */ jsxs50(Fragment9, { children: [
9956
+ return /* @__PURE__ */ jsxs50(Fragment10, { children: [
9861
9957
  /* @__PURE__ */ jsx74("div", { css: drawerWrapperOverlayStyles, onClick: onOverlayClick }),
9862
9958
  /* @__PURE__ */ jsx74(
9863
9959
  "div",
@@ -10591,10 +10687,10 @@ var IntegrationLoadingFrame = css67`
10591
10687
  `;
10592
10688
 
10593
10689
  // src/components/Tiles/IntegrationLoadingTile.tsx
10594
- import { Fragment as Fragment10, jsx as jsx86, jsxs as jsxs59 } from "@emotion/react/jsx-runtime";
10690
+ import { Fragment as Fragment11, jsx as jsx86, jsxs as jsxs59 } from "@emotion/react/jsx-runtime";
10595
10691
  var IntegrationLoadingTile = ({ count = 1 }) => {
10596
10692
  const componentCount = Array.from(Array(count).keys());
10597
- return /* @__PURE__ */ jsx86(Fragment10, { children: componentCount.map((i) => /* @__PURE__ */ jsxs59("div", { css: IntegrationLoadingTileContainer, children: [
10693
+ return /* @__PURE__ */ jsx86(Fragment11, { children: componentCount.map((i) => /* @__PURE__ */ jsxs59("div", { css: IntegrationLoadingTileContainer, children: [
10598
10694
  /* @__PURE__ */ jsx86("div", { css: [IntegrationLoadingTileImg, IntegrationLoadingFrame], role: "presentation" }),
10599
10695
  /* @__PURE__ */ jsx86("div", { css: [IntegrationLoadingTileText, IntegrationLoadingFrame] })
10600
10696
  ] }, i)) });
@@ -10934,7 +11030,7 @@ var IntegrationModalHeaderContentWrapper = css72`
10934
11030
  `;
10935
11031
 
10936
11032
  // src/components/IntegrationModalHeader/IntegrationModalHeader.tsx
10937
- import { Fragment as Fragment11, jsx as jsx93, jsxs as jsxs62 } from "@emotion/react/jsx-runtime";
11033
+ import { Fragment as Fragment12, jsx as jsx93, jsxs as jsxs62 } from "@emotion/react/jsx-runtime";
10938
11034
  var HexModalBackground = ({ ...props }) => {
10939
11035
  return /* @__PURE__ */ jsxs62(
10940
11036
  "svg",
@@ -10975,7 +11071,7 @@ var HexModalBackground = ({ ...props }) => {
10975
11071
  );
10976
11072
  };
10977
11073
  var IntegrationModalHeader = ({ icon, name, menu, children }) => {
10978
- return /* @__PURE__ */ jsxs62(Fragment11, { children: [
11074
+ return /* @__PURE__ */ jsxs62(Fragment12, { children: [
10979
11075
  /* @__PURE__ */ jsx93(HexModalBackground, { css: IntegrationModalHeaderSVGBackground, role: "presentation" }),
10980
11076
  /* @__PURE__ */ jsx93("div", { css: IntegrationModalHeaderGroup, children: /* @__PURE__ */ jsxs62("div", { css: IntegrationModalHeaderTitleGroup, children: [
10981
11077
  icon ? /* @__PURE__ */ jsx93(IntegrationModalIcon, { icon, name: name || "" }) : null,
@@ -12112,7 +12208,7 @@ var QuickFilter = ({
12112
12208
  };
12113
12209
 
12114
12210
  // src/components/LabelsQuickFilter/LabelsQuickFilter.tsx
12115
- import { Fragment as Fragment12, jsx as jsx100, jsxs as jsxs67 } from "@emotion/react/jsx-runtime";
12211
+ import { Fragment as Fragment13, jsx as jsx100, jsxs as jsxs67 } from "@emotion/react/jsx-runtime";
12116
12212
  var LabelsQuickFilter = ({
12117
12213
  buttonText,
12118
12214
  addButtonText,
@@ -12328,7 +12424,7 @@ var LabelsQuickFilter = ({
12328
12424
  }
12329
12425
  return renderLabelItem(item);
12330
12426
  }),
12331
- canCreateLabel && onCreateLabel ? /* @__PURE__ */ jsxs67(Fragment12, { children: [
12427
+ canCreateLabel && onCreateLabel ? /* @__PURE__ */ jsxs67(Fragment13, { children: [
12332
12428
  filteredItems.length > 0 ? /* @__PURE__ */ jsx100(MenuItemSeparator, {}) : null,
12333
12429
  /* @__PURE__ */ jsx100(MenuItem, { hideOnClick: false, disabled: isCreateDisabled, onClick: () => onCreateLabel(searchTerm), children: /* @__PURE__ */ jsxs67(HorizontalRhythm, { align: "center", gap: "sm", css: { fontSize: "var(--fs-sm)" }, children: [
12334
12430
  /* @__PURE__ */ jsx100("span", { css: { width: "var(--spacing-base)", flexShrink: 0 } }),
@@ -12383,7 +12479,7 @@ var PopoverBody2 = ({
12383
12479
  };
12384
12480
 
12385
12481
  // src/components/Popover/Popover.tsx
12386
- import { Fragment as Fragment13, jsx as jsx102, jsxs as jsxs68 } from "@emotion/react/jsx-runtime";
12482
+ import { Fragment as Fragment14, jsx as jsx102, jsxs as jsxs68 } from "@emotion/react/jsx-runtime";
12387
12483
  var PopoverComponentContext = createContext7(null);
12388
12484
  var Popover2 = ({
12389
12485
  iconColor = "action",
@@ -12473,7 +12569,7 @@ var Popover2 = ({
12473
12569
  title: buttonText,
12474
12570
  "data-testid": testId,
12475
12571
  disabled: disabled2,
12476
- children: trigger2 ? trigger2 : /* @__PURE__ */ jsxs68(Fragment13, { children: [
12572
+ children: trigger2 ? trigger2 : /* @__PURE__ */ jsxs68(Fragment14, { children: [
12477
12573
  /* @__PURE__ */ jsx102(Icon, { icon, iconColor, size: iconSize2 }),
12478
12574
  /* @__PURE__ */ jsx102("span", { hidden: true, children: buttonText })
12479
12575
  ] })
@@ -13382,7 +13478,7 @@ var CoverSelectedChip = css86`
13382
13478
  `;
13383
13479
 
13384
13480
  // src/components/Objects/ObjectGridItemCardCover.tsx
13385
- import { Fragment as Fragment14, jsx as jsx113, jsxs as jsxs78 } from "@emotion/react/jsx-runtime";
13481
+ import { Fragment as Fragment15, jsx as jsx113, jsxs as jsxs78 } from "@emotion/react/jsx-runtime";
13386
13482
  var ObjectGridItemCardCover = (props) => {
13387
13483
  if ("imageUrl" in props && props.imageUrl) {
13388
13484
  const { imageUrl, srcSet, alt, errorFallbackSrc } = props;
@@ -13416,7 +13512,7 @@ var ObjectGridItemCover = ({
13416
13512
  coverSlotBottomRight,
13417
13513
  ...props
13418
13514
  }) => {
13419
- return /* @__PURE__ */ jsxs78(Fragment14, { children: [
13515
+ return /* @__PURE__ */ jsxs78(Fragment15, { children: [
13420
13516
  coverSlotLeft ? /* @__PURE__ */ jsx113("div", { css: [CoverSlot, CoverSlotLeft], children: coverSlotLeft }) : null,
13421
13517
  /* @__PURE__ */ jsx113(ObjectGridItemCardCover, { ...props }),
13422
13518
  coverSlotRight ? /* @__PURE__ */ jsx113("div", { css: [CoverSlot, CoverSlotRight], children: coverSlotRight }) : null,
@@ -14443,7 +14539,7 @@ var previewModalImage = css97`
14443
14539
  `;
14444
14540
 
14445
14541
  // src/components/ParameterInputs/ParameterImagePreview.tsx
14446
- import { Fragment as Fragment15, jsx as jsx128, jsxs as jsxs88 } from "@emotion/react/jsx-runtime";
14542
+ import { Fragment as Fragment16, jsx as jsx128, jsxs as jsxs88 } from "@emotion/react/jsx-runtime";
14447
14543
  function ParameterImagePreview({ imageSrc }) {
14448
14544
  const [showModal, setShowModal] = useState24(false);
14449
14545
  return imageSrc ? /* @__PURE__ */ jsxs88("div", { css: previewWrapper, children: [
@@ -14462,7 +14558,7 @@ function ParameterImagePreview({ imageSrc }) {
14462
14558
  ] }) : null;
14463
14559
  }
14464
14560
  var PreviewImageModal = ({ open, onRequestClose, imageSrc }) => {
14465
- return open ? /* @__PURE__ */ jsx128(Fragment15, { children: createPortal2(
14561
+ return open ? /* @__PURE__ */ jsx128(Fragment16, { children: createPortal2(
14466
14562
  /* @__PURE__ */ jsx128(
14467
14563
  Modal,
14468
14564
  {
@@ -15013,7 +15109,7 @@ var ParameterShellPlaceholder = ({ children }) => {
15013
15109
  var ParameterOverrideMarker = (props) => /* @__PURE__ */ jsx131(Tooltip, { title: "The default value has been overridden", ...props.tooltipProps, children: /* @__PURE__ */ jsx131("button", { type: "button", css: overrideMarker, ...props, children: /* @__PURE__ */ jsx131("span", { hidden: true, children: "reset overridden value to default" }) }) });
15014
15110
 
15015
15111
  // src/components/ParameterInputs/ParameterImage.tsx
15016
- import { Fragment as Fragment16, jsx as jsx132, jsxs as jsxs90 } from "@emotion/react/jsx-runtime";
15112
+ import { Fragment as Fragment17, jsx as jsx132, jsxs as jsxs90 } from "@emotion/react/jsx-runtime";
15017
15113
  var ParameterImage = forwardRef25(
15018
15114
  ({ children, ...props }, ref) => {
15019
15115
  const { shellProps, innerProps } = extractParameterProps(props);
@@ -15027,7 +15123,7 @@ var ParameterImageInner = forwardRef25((props, ref) => {
15027
15123
  const { value } = props;
15028
15124
  const { id, label: label2, hiddenLabel, errorMessage } = useParameterShell();
15029
15125
  const deferredValue = useDeferredValue(value);
15030
- return /* @__PURE__ */ jsxs90(Fragment16, { children: [
15126
+ return /* @__PURE__ */ jsxs90(Fragment17, { children: [
15031
15127
  /* @__PURE__ */ jsx132(
15032
15128
  "input",
15033
15129
  {
@@ -15366,7 +15462,7 @@ var ParameterMultiSelectInner = (props) => {
15366
15462
  };
15367
15463
 
15368
15464
  // src/components/ParameterInputs/ParameterNameAndPublicIdInput.tsx
15369
- import { Fragment as Fragment17, jsx as jsx137, jsxs as jsxs92 } from "@emotion/react/jsx-runtime";
15465
+ import { Fragment as Fragment18, jsx as jsx137, jsxs as jsxs92 } from "@emotion/react/jsx-runtime";
15370
15466
  var ParameterNameAndPublicIdInput = ({
15371
15467
  id,
15372
15468
  onBlur,
@@ -15392,7 +15488,7 @@ var ParameterNameAndPublicIdInput = ({
15392
15488
  navigator.clipboard.writeText(values[publicIdFieldName]);
15393
15489
  };
15394
15490
  autoFocus == null ? void 0 : autoFocus();
15395
- return /* @__PURE__ */ jsxs92(Fragment17, { children: [
15491
+ return /* @__PURE__ */ jsxs92(Fragment18, { children: [
15396
15492
  /* @__PURE__ */ jsx137(
15397
15493
  ParameterInput,
15398
15494
  {
@@ -16677,7 +16773,7 @@ var normalizeStateForDeepEqualComparison = (editorState) => {
16677
16773
  };
16678
16774
 
16679
16775
  // src/components/ParameterInputs/rich-text/LinkNodePlugin.tsx
16680
- import { Fragment as Fragment18, jsx as jsx141, jsxs as jsxs94 } from "@emotion/react/jsx-runtime";
16776
+ import { Fragment as Fragment19, jsx as jsx141, jsxs as jsxs94 } from "@emotion/react/jsx-runtime";
16681
16777
  var isProjectMapLinkValue = (value) => {
16682
16778
  return (value == null ? void 0 : value.type) === "projectMapNode" && Boolean(
16683
16779
  value.nodeId && value.path && value.projectMapId
@@ -16750,12 +16846,28 @@ function convertAnchorElement(domNode) {
16750
16846
  } else if (type === "tel" && path.startsWith("tel:")) {
16751
16847
  path = path.replace("tel:", "");
16752
16848
  }
16849
+ let attributes = void 0;
16850
+ if (linkFromAttribute && typeof linkFromAttribute === "object") {
16851
+ if ("attributes" in linkFromAttribute && linkFromAttribute.attributes !== null && typeof linkFromAttribute.attributes === "object") {
16852
+ const raw = linkFromAttribute.attributes;
16853
+ const parsed = {};
16854
+ for (const [k, v] of Object.entries(raw)) {
16855
+ if (typeof v === "string") {
16856
+ parsed[k] = v;
16857
+ }
16858
+ }
16859
+ if (Object.keys(parsed).length > 0) {
16860
+ attributes = parsed;
16861
+ }
16862
+ }
16863
+ }
16753
16864
  const value = {
16754
16865
  type,
16755
16866
  path,
16756
16867
  projectMapId,
16757
16868
  nodeId,
16758
- dynamicInputValues
16869
+ dynamicInputValues,
16870
+ attributes
16759
16871
  };
16760
16872
  if (isProjectMapLinkValue(value) || isNonProjectMapLinkValue(value)) {
16761
16873
  node = $createLinkNode(value);
@@ -17165,7 +17277,7 @@ function LinkNodePlugin({
17165
17277
  });
17166
17278
  });
17167
17279
  };
17168
- return /* @__PURE__ */ jsxs94(Fragment18, { children: [
17280
+ return /* @__PURE__ */ jsxs94(Fragment19, { children: [
17169
17281
  /* @__PURE__ */ jsx141(
17170
17282
  NodeEventPlugin,
17171
17283
  {
@@ -17699,7 +17811,7 @@ import { calculateZoomLevel } from "@lexical/utils";
17699
17811
  import { $getNearestNodeFromDOMNode } from "lexical";
17700
17812
  import { useCallback as useCallback15, useEffect as useEffect26, useMemo as useMemo11, useRef as useRef18, useState as useState29 } from "react";
17701
17813
  import { createPortal as createPortal3 } from "react-dom";
17702
- import { Fragment as Fragment19, jsx as jsx143, jsxs as jsxs96 } from "@emotion/react/jsx-runtime";
17814
+ import { Fragment as Fragment20, jsx as jsx143, jsxs as jsxs96 } from "@emotion/react/jsx-runtime";
17703
17815
  var MIN_ROW_HEIGHT = 33;
17704
17816
  var MIN_COLUMN_WIDTH = 50;
17705
17817
  var tableResizer = css105`
@@ -18000,7 +18112,7 @@ function TableCellResizer({ editor, positioningAnchorEl }) {
18000
18112
  };
18001
18113
  }, [activeCell, draggingDirection, mouseCurrentPos, positioningAnchorEl]);
18002
18114
  const resizerStyles = getResizers();
18003
- return /* @__PURE__ */ jsx143("div", { ref: resizerRef, children: activeCell != null && !isMouseDown && /* @__PURE__ */ jsxs96(Fragment19, { children: [
18115
+ return /* @__PURE__ */ jsx143("div", { ref: resizerRef, children: activeCell != null && !isMouseDown && /* @__PURE__ */ jsxs96(Fragment20, { children: [
18004
18116
  /* @__PURE__ */ jsx143(
18005
18117
  "div",
18006
18118
  {
@@ -18260,7 +18372,7 @@ var useRichTextToolbarState = ({ config }) => {
18260
18372
  };
18261
18373
 
18262
18374
  // src/components/ParameterInputs/rich-text/toolbar/RichTextToolbar.tsx
18263
- import { Fragment as Fragment20, jsx as jsx144, jsxs as jsxs97 } from "@emotion/react/jsx-runtime";
18375
+ import { Fragment as Fragment21, jsx as jsx144, jsxs as jsxs97 } from "@emotion/react/jsx-runtime";
18264
18376
  var toolbar = css106`
18265
18377
  ${scrollbarStyles}
18266
18378
  background: var(--gray-50);
@@ -18517,7 +18629,7 @@ var RichTextToolbar = ({ config, customControls, onInsertTable, onInsertAsset })
18517
18629
  children: /* @__PURE__ */ jsx144(RichTextToolbarIcon, { icon: "link" })
18518
18630
  }
18519
18631
  ) }) : null,
18520
- visibleLists.size > 0 ? /* @__PURE__ */ jsxs97(Fragment20, { children: [
18632
+ visibleLists.size > 0 ? /* @__PURE__ */ jsxs97(Fragment21, { children: [
18521
18633
  visibleLists.has("unorderedList") ? /* @__PURE__ */ jsx144(Tooltip, { title: "Bullet List", placement: "top", children: /* @__PURE__ */ jsx144(
18522
18634
  "button",
18523
18635
  {
@@ -18700,7 +18812,7 @@ var editorInput = css107`
18700
18812
  `;
18701
18813
 
18702
18814
  // src/components/ParameterInputs/ParameterRichText.tsx
18703
- import { Fragment as Fragment21, jsx as jsx145, jsxs as jsxs98 } from "@emotion/react/jsx-runtime";
18815
+ import { Fragment as Fragment22, jsx as jsx145, jsxs as jsxs98 } from "@emotion/react/jsx-runtime";
18704
18816
  var ParameterRichText = ({
18705
18817
  label: label2,
18706
18818
  labelLeadingIcon,
@@ -18729,7 +18841,7 @@ var ParameterRichText = ({
18729
18841
  menuItems,
18730
18842
  children: [
18731
18843
  /* @__PURE__ */ jsx145(ParameterRichTextInner, { ...innerProps, children }),
18732
- menuItems ? /* @__PURE__ */ jsx145(ParameterMenuButton, { label: `${label2} menu`, children: /* @__PURE__ */ jsx145(Fragment21, { children: menuItems }) }) : null
18844
+ menuItems ? /* @__PURE__ */ jsx145(ParameterMenuButton, { label: `${label2} menu`, children: /* @__PURE__ */ jsx145(Fragment22, { children: menuItems }) }) : null
18733
18845
  ]
18734
18846
  }
18735
18847
  );
@@ -18798,7 +18910,7 @@ var ParameterRichTextInner = ({
18798
18910
  },
18799
18911
  editable: !richTextProps.readOnly
18800
18912
  };
18801
- return /* @__PURE__ */ jsxs98(Fragment21, { children: [
18913
+ return /* @__PURE__ */ jsxs98(Fragment22, { children: [
18802
18914
  /* @__PURE__ */ jsx145("div", { css: [editorWrapper, editorThemeStyles], className: editorWrapperClassName, children: /* @__PURE__ */ jsx145(LexicalComposer, { initialConfig: lexicalConfig, children: /* @__PURE__ */ jsx145(RichText, { ...richTextProps, children }) }) }),
18803
18915
  editorFooter ? editorFooter : null
18804
18916
  ] });
@@ -18866,7 +18978,7 @@ var RichText = ({
18866
18978
  setPortalContainerRef(_portalContainerRef);
18867
18979
  }
18868
18980
  };
18869
- return /* @__PURE__ */ jsxs98(Fragment21, { children: [
18981
+ return /* @__PURE__ */ jsxs98(Fragment22, { children: [
18870
18982
  readOnly || minimalInteractivity ? null : /* @__PURE__ */ jsx145(
18871
18983
  RichTextToolbar_default,
18872
18984
  {
@@ -18916,7 +19028,7 @@ var RichText = ({
18916
19028
  ]
18917
19029
  }
18918
19030
  ),
18919
- /* @__PURE__ */ jsx145(Fragment21, { children }),
19031
+ /* @__PURE__ */ jsx145(Fragment22, { children }),
18920
19032
  editorContainerRef ? /* @__PURE__ */ jsx145(
18921
19033
  LinkNodePlugin,
18922
19034
  {
@@ -20341,9 +20453,9 @@ function AnimatedHeaderItem({ index, children }) {
20341
20453
  }
20342
20454
 
20343
20455
  // src/components/StackedModal/StackedModalStep.tsx
20344
- import { Fragment as Fragment22, jsx as jsx157, jsxs as jsxs104 } from "@emotion/react/jsx-runtime";
20456
+ import { Fragment as Fragment23, jsx as jsx157, jsxs as jsxs104 } from "@emotion/react/jsx-runtime";
20345
20457
  function StackedModalStep({ children, buttonGroup }) {
20346
- return /* @__PURE__ */ jsxs104(Fragment22, { children: [
20458
+ return /* @__PURE__ */ jsxs104(Fragment23, { children: [
20347
20459
  /* @__PURE__ */ jsx157("div", { css: stepContentStyles, children }),
20348
20460
  buttonGroup ? /* @__PURE__ */ jsx157(
20349
20461
  HorizontalRhythm,
@@ -20549,7 +20661,7 @@ var SwitchInputContainerAlignmentRight = css116`
20549
20661
  `;
20550
20662
 
20551
20663
  // src/components/Switch/Switch.tsx
20552
- import { Fragment as Fragment23, jsx as jsx160, jsxs as jsxs106 } from "@emotion/react/jsx-runtime";
20664
+ import { Fragment as Fragment24, jsx as jsx160, jsxs as jsxs106 } from "@emotion/react/jsx-runtime";
20553
20665
  var Switch = forwardRef35(
20554
20666
  ({
20555
20667
  label: label2,
@@ -20578,7 +20690,7 @@ var Switch = forwardRef35(
20578
20690
  if (infoText && toggleText) {
20579
20691
  additionalText = inputProps.checked ? toggleText : infoText;
20580
20692
  }
20581
- return /* @__PURE__ */ jsxs106(Fragment23, { children: [
20693
+ return /* @__PURE__ */ jsxs106(Fragment24, { children: [
20582
20694
  /* @__PURE__ */ jsxs106(
20583
20695
  "label",
20584
20696
  {
package/dist/index.d.mts CHANGED
@@ -2283,13 +2283,20 @@ type InfoMessageProps = React.HTMLAttributes<HTMLSpanElement> & {
2283
2283
  */
2284
2284
  declare const InfoMessage: ({ message, testId, icon, ...props }: InfoMessageProps) => _emotion_react_jsx_runtime.JSX.Element | null;
2285
2285
 
2286
- type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
2286
+ type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'prefix'> & {
2287
2287
  /** (optional) sets the label value */
2288
2288
  label?: string | ReactNode;
2289
2289
  /** (optional) sets caption text value */
2290
2290
  caption?: string | ReactNode;
2291
2291
  /** (optional) add an input icon to the input field */
2292
2292
  icon?: ReactElement;
2293
+ /**
2294
+ * Static leading text adornment inside the input border (e.g. "#", "$").
2295
+ * Decorative; not part of the input value. Intended for plain text inputs only —
2296
+ * the prefixed layout uses a separate inner input style, so `aria-invalid` on the
2297
+ * control alone won't apply error border styling; use `errorMessage` instead.
2298
+ */
2299
+ prefix?: string;
2293
2300
  /** (optional) sets whether to show the label or hide it and add a aria-label attributes to the input field directly */
2294
2301
  showLabel?: boolean;
2295
2302
  /** (optional) sets and shows the the error message value */
@@ -2330,13 +2337,20 @@ type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
2330
2337
  * Input Component
2331
2338
  * @example - <Input label="my label" id="some-id" name="some-name" caption="some help text" errorMessage={hasError ? 'something went wrong' : undefined} />
2332
2339
  */
2333
- declare const Input: React$1.ForwardRefExoticComponent<React$1.InputHTMLAttributes<HTMLInputElement> & {
2340
+ declare const Input: React$1.ForwardRefExoticComponent<Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "prefix"> & {
2334
2341
  /** (optional) sets the label value */
2335
2342
  label?: string | ReactNode;
2336
2343
  /** (optional) sets caption text value */
2337
2344
  caption?: string | ReactNode;
2338
2345
  /** (optional) add an input icon to the input field */
2339
2346
  icon?: ReactElement;
2347
+ /**
2348
+ * Static leading text adornment inside the input border (e.g. "#", "$").
2349
+ * Decorative; not part of the input value. Intended for plain text inputs only —
2350
+ * the prefixed layout uses a separate inner input style, so `aria-invalid` on the
2351
+ * control alone won't apply error border styling; use `errorMessage` instead.
2352
+ */
2353
+ prefix?: string;
2340
2354
  /** (optional) sets whether to show the label or hide it and add a aria-label attributes to the input field directly */
2341
2355
  showLabel?: boolean;
2342
2356
  /** (optional) sets and shows the the error message value */
package/dist/index.d.ts CHANGED
@@ -2283,13 +2283,20 @@ type InfoMessageProps = React.HTMLAttributes<HTMLSpanElement> & {
2283
2283
  */
2284
2284
  declare const InfoMessage: ({ message, testId, icon, ...props }: InfoMessageProps) => _emotion_react_jsx_runtime.JSX.Element | null;
2285
2285
 
2286
- type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
2286
+ type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'prefix'> & {
2287
2287
  /** (optional) sets the label value */
2288
2288
  label?: string | ReactNode;
2289
2289
  /** (optional) sets caption text value */
2290
2290
  caption?: string | ReactNode;
2291
2291
  /** (optional) add an input icon to the input field */
2292
2292
  icon?: ReactElement;
2293
+ /**
2294
+ * Static leading text adornment inside the input border (e.g. "#", "$").
2295
+ * Decorative; not part of the input value. Intended for plain text inputs only —
2296
+ * the prefixed layout uses a separate inner input style, so `aria-invalid` on the
2297
+ * control alone won't apply error border styling; use `errorMessage` instead.
2298
+ */
2299
+ prefix?: string;
2293
2300
  /** (optional) sets whether to show the label or hide it and add a aria-label attributes to the input field directly */
2294
2301
  showLabel?: boolean;
2295
2302
  /** (optional) sets and shows the the error message value */
@@ -2330,13 +2337,20 @@ type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {
2330
2337
  * Input Component
2331
2338
  * @example - <Input label="my label" id="some-id" name="some-name" caption="some help text" errorMessage={hasError ? 'something went wrong' : undefined} />
2332
2339
  */
2333
- declare const Input: React$1.ForwardRefExoticComponent<React$1.InputHTMLAttributes<HTMLInputElement> & {
2340
+ declare const Input: React$1.ForwardRefExoticComponent<Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "prefix"> & {
2334
2341
  /** (optional) sets the label value */
2335
2342
  label?: string | ReactNode;
2336
2343
  /** (optional) sets caption text value */
2337
2344
  caption?: string | ReactNode;
2338
2345
  /** (optional) add an input icon to the input field */
2339
2346
  icon?: ReactElement;
2347
+ /**
2348
+ * Static leading text adornment inside the input border (e.g. "#", "$").
2349
+ * Decorative; not part of the input value. Intended for plain text inputs only —
2350
+ * the prefixed layout uses a separate inner input style, so `aria-invalid` on the
2351
+ * control alone won't apply error border styling; use `errorMessage` instead.
2352
+ */
2353
+ prefix?: string;
2340
2354
  /** (optional) sets whether to show the label or hide it and add a aria-label attributes to the input field directly */
2341
2355
  showLabel?: boolean;
2342
2356
  /** (optional) sets and shows the the error message value */
package/dist/index.js CHANGED
@@ -5299,6 +5299,87 @@ var inputError = import_react22.css`
5299
5299
  border-color: var(--action-destructive-hover);
5300
5300
  }
5301
5301
  `;
5302
+ var inputPrefixGroup = import_react22.css`
5303
+ align-items: center;
5304
+ background-color: var(--white);
5305
+ border: 1px solid var(--gray-200);
5306
+ border-radius: var(--rounded-sm);
5307
+ display: flex;
5308
+ min-height: 50px;
5309
+ padding-left: var(--spacing-sm);
5310
+ position: relative;
5311
+ transition:
5312
+ background var(--duration-fast) var(--timing-ease-out),
5313
+ border-color var(--duration-fast) var(--timing-ease-out),
5314
+ box-shadow var(--duration-fast) var(--timing-ease-out);
5315
+
5316
+ &:hover {
5317
+ border-color: var(--accent-dark-hover);
5318
+ }
5319
+
5320
+ &:focus-within {
5321
+ border-color: var(--accent-dark-active);
5322
+ box-shadow: var(--elevation-100);
5323
+ outline: none;
5324
+ }
5325
+
5326
+ &:has(input:disabled) {
5327
+ border-color: var(--gray-200);
5328
+ }
5329
+
5330
+ &:has(input:disabled) [data-input-prefix] {
5331
+ color: var(--gray-300);
5332
+ }
5333
+ `;
5334
+ var inputPrefixGroupError = import_react22.css`
5335
+ border-color: var(--action-destructive-default);
5336
+ box-shadow: var(--elevation-100);
5337
+
5338
+ &:hover {
5339
+ border-color: var(--action-destructive-hover);
5340
+ }
5341
+ `;
5342
+ var inputPrefixSlot = import_react22.css`
5343
+ color: var(--gray-300);
5344
+ flex: none;
5345
+ font-size: 1rem;
5346
+ padding-right: var(--spacing-sm);
5347
+ pointer-events: none;
5348
+ white-space: nowrap;
5349
+ `;
5350
+ var inputInPrefixGroup = import_react22.css`
5351
+ appearance: none;
5352
+ background: transparent;
5353
+ border: 0;
5354
+ box-shadow: none;
5355
+ color: var(--gray-700);
5356
+ flex: 1;
5357
+ min-height: 50px;
5358
+ min-width: 0;
5359
+ padding: 12px var(--spacing-base) 12px 0;
5360
+ width: 100%;
5361
+
5362
+ &::placeholder {
5363
+ color: var(--gray-400);
5364
+ }
5365
+
5366
+ &:hover,
5367
+ &:focus,
5368
+ &:focus-visible {
5369
+ border: 0;
5370
+ box-shadow: none;
5371
+ outline: none;
5372
+ }
5373
+
5374
+ &:disabled,
5375
+ &:disabled::placeholder {
5376
+ cursor: not-allowed;
5377
+ color: var(--gray-300);
5378
+ }
5379
+ `;
5380
+ var inputInPrefixGroupWithIcon = import_react22.css`
5381
+ padding-right: var(--spacing-2xl);
5382
+ `;
5302
5383
  var inputIcon = import_react22.css`
5303
5384
  align-items: center;
5304
5385
  display: flex;
@@ -7553,6 +7634,7 @@ var Input = (0, import_react49.forwardRef)(
7553
7634
  ({
7554
7635
  label: label2,
7555
7636
  icon,
7637
+ prefix,
7556
7638
  id,
7557
7639
  caption,
7558
7640
  showLabel = true,
@@ -7570,6 +7652,24 @@ var Input = (0, import_react49.forwardRef)(
7570
7652
  ...props
7571
7653
  }, ref) => {
7572
7654
  const isNumberInputAndMouseWheelDisabled = enableMouseWheel !== true && props.type === "number";
7655
+ const inputElement = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
7656
+ "input",
7657
+ {
7658
+ id,
7659
+ css: [
7660
+ prefix ? inputInPrefixGroup : input("nowrap"),
7661
+ prefix && icon ? inputInPrefixGroupWithIcon : void 0,
7662
+ !prefix && errorMessage ? inputError : void 0,
7663
+ !prefix && icon ? inputWithIcon : "",
7664
+ typeof classNameControl === "object" ? classNameControl : void 0
7665
+ ],
7666
+ "aria-label": showLabel || typeof label2 !== "string" ? void 0 : label2,
7667
+ className: typeof classNameControl === "string" ? classNameControl : "",
7668
+ onWheel: isNumberInputAndMouseWheelDisabled ? disableMouseWheelEvent : void 0,
7669
+ ...props,
7670
+ ref
7671
+ }
7672
+ );
7573
7673
  return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
7574
7674
  "div",
7575
7675
  {
@@ -7586,31 +7686,27 @@ var Input = (0, import_react49.forwardRef)(
7586
7686
  children: label2
7587
7687
  }
7588
7688
  ) : null,
7589
- /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
7689
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
7590
7690
  "div",
7591
7691
  {
7592
7692
  css: [inputContainer, typeof classNameContainer === "object" ? classNameContainer : void 0],
7593
7693
  className: typeof classNameContainer === "string" ? classNameContainer : "",
7594
- children: [
7595
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
7596
- "input",
7597
- {
7598
- id,
7599
- css: [
7600
- input("nowrap"),
7601
- typeof classNameControl === "object" ? classNameControl : void 0,
7602
- errorMessage ? inputError : void 0,
7603
- icon ? inputWithIcon : ""
7604
- ],
7605
- "aria-label": showLabel || typeof label2 !== "string" ? void 0 : label2,
7606
- className: typeof classNameControl === "string" ? classNameControl : "",
7607
- onWheel: isNumberInputAndMouseWheelDisabled ? disableMouseWheelEvent : void 0,
7608
- ...props,
7609
- ref
7610
- }
7611
- ),
7694
+ children: prefix ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
7695
+ "div",
7696
+ {
7697
+ css: [inputPrefixGroup, errorMessage ? inputPrefixGroupError : void 0],
7698
+ "data-input-prefix-group": true,
7699
+ "data-testid": "input-prefix-group",
7700
+ children: [
7701
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { css: inputPrefixSlot, "aria-hidden": "true", "data-input-prefix": true, children: prefix }),
7702
+ inputElement,
7703
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { css: inputIcon, children: icon }) : null
7704
+ ]
7705
+ }
7706
+ ) : /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
7707
+ inputElement,
7612
7708
  icon ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { css: inputIcon, children: icon }) : null
7613
- ]
7709
+ ] })
7614
7710
  }
7615
7711
  ),
7616
7712
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
@@ -18763,12 +18859,28 @@ function convertAnchorElement(domNode) {
18763
18859
  } else if (type === "tel" && path.startsWith("tel:")) {
18764
18860
  path = path.replace("tel:", "");
18765
18861
  }
18862
+ let attributes = void 0;
18863
+ if (linkFromAttribute && typeof linkFromAttribute === "object") {
18864
+ if ("attributes" in linkFromAttribute && linkFromAttribute.attributes !== null && typeof linkFromAttribute.attributes === "object") {
18865
+ const raw = linkFromAttribute.attributes;
18866
+ const parsed = {};
18867
+ for (const [k, v] of Object.entries(raw)) {
18868
+ if (typeof v === "string") {
18869
+ parsed[k] = v;
18870
+ }
18871
+ }
18872
+ if (Object.keys(parsed).length > 0) {
18873
+ attributes = parsed;
18874
+ }
18875
+ }
18876
+ }
18766
18877
  const value = {
18767
18878
  type,
18768
18879
  path,
18769
18880
  projectMapId,
18770
18881
  nodeId,
18771
- dynamicInputValues
18882
+ dynamicInputValues,
18883
+ attributes
18772
18884
  };
18773
18885
  if (isProjectMapLinkValue(value) || isNonProjectMapLinkValue(value)) {
18774
18886
  node = $createLinkNode(value);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/design-system",
3
- "version": "20.72.2-alpha.3+a1f072e7b4",
3
+ "version": "20.72.2",
4
4
  "description": "Uniform design system components",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "exports": {
@@ -34,8 +34,8 @@
34
34
  "@storybook/react-vite": "10.4.6",
35
35
  "@types/react": "19.2.17",
36
36
  "@types/react-dom": "19.2.3",
37
- "@uniformdev/canvas": "^20.72.2-alpha.3+a1f072e7b4",
38
- "@uniformdev/richtext": "^20.72.2-alpha.3+a1f072e7b4",
37
+ "@uniformdev/canvas": "^20.72.2",
38
+ "@uniformdev/richtext": "^20.72.2",
39
39
  "autoprefixer": "10.5.0",
40
40
  "hygen": "6.2.11",
41
41
  "jsdom": "29.1.1",
@@ -82,5 +82,5 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "gitHead": "a1f072e7b42ac4b3c694ebdd2e75216efd74a9c2"
85
+ "gitHead": "8b65535fb3ec81e23f9eb8e0ed0b0be478f6e0e8"
86
86
  }