@primer/react 38.19.0-rc.9add2ea76 → 38.19.0-rc.b42304a52

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.
@@ -3,7 +3,7 @@ import { FocusKeys } from '@primer/behaviors';
3
3
  import { isFocusable } from '@primer/behaviors/utils';
4
4
  import React, { useRef, useState } from 'react';
5
5
  import { isValidElementType } from 'react-is';
6
- import { useMergedRefs } from '../hooks/useMergedRefs.js';
6
+ import { useRefObjectAsForwardedRef } from '../hooks/useRefObjectAsForwardedRef.js';
7
7
  import { useFocusZone } from '../hooks/useFocusZone.js';
8
8
  import { useId } from '../hooks/useId.js';
9
9
  import Token from '../Token/Token.js';
@@ -25,7 +25,7 @@ const overflowCountClassMap = {
25
25
 
26
26
  // using forwardRef is important so that other components (ex. Autocomplete) can use the ref
27
27
  function TextInputWithTokensInnerComponent(t0, forwardedRef) {
28
- const $ = c(152);
28
+ const $ = c(151);
29
29
  let IconComponent;
30
30
  let LeadingVisual;
31
31
  let TrailingVisual;
@@ -165,7 +165,7 @@ function TextInputWithTokensInnerComponent(t0, forwardedRef) {
165
165
  }
166
166
  const ref = useRef(null);
167
167
  const selectedValuesDescriptionId = useId();
168
- const mergedRef = useMergedRefs(forwardedRef, ref);
168
+ useRefObjectAsForwardedRef(forwardedRef, ref);
169
169
  const [selectedTokenIndex, setSelectedTokenIndex] = useState();
170
170
  const [tokensAreTruncated, setTokensAreTruncated] = useState(Boolean(visibleTokenCount));
171
171
  let t6;
@@ -455,9 +455,9 @@ function TextInputWithTokensInnerComponent(t0, forwardedRef) {
455
455
  const t32 = validationStatus === "error" ? "true" : "false";
456
456
  const t33 = ariaDescribedBy || undefined;
457
457
  let t34;
458
- if ($[80] !== disabled || $[81] !== handleInputBlur || $[82] !== handleInputFocus || $[83] !== handleInputKeyDown || $[84] !== inputPropsRest || $[85] !== mergedRef || $[86] !== role || $[87] !== t32 || $[88] !== t33) {
458
+ if ($[80] !== disabled || $[81] !== handleInputBlur || $[82] !== handleInputFocus || $[83] !== handleInputKeyDown || $[84] !== inputPropsRest || $[85] !== role || $[86] !== t32 || $[87] !== t33) {
459
459
  t34 = /*#__PURE__*/jsx(UnstyledTextInput, {
460
- ref: mergedRef,
460
+ ref: ref,
461
461
  disabled: disabled,
462
462
  onFocus: handleInputFocus,
463
463
  onBlur: handleInputBlur,
@@ -474,43 +474,42 @@ function TextInputWithTokensInnerComponent(t0, forwardedRef) {
474
474
  $[82] = handleInputFocus;
475
475
  $[83] = handleInputKeyDown;
476
476
  $[84] = inputPropsRest;
477
- $[85] = mergedRef;
478
- $[86] = role;
479
- $[87] = t32;
480
- $[88] = t33;
481
- $[89] = t34;
477
+ $[85] = role;
478
+ $[86] = t32;
479
+ $[87] = t33;
480
+ $[88] = t34;
482
481
  } else {
483
- t34 = $[89];
482
+ t34 = $[88];
484
483
  }
485
484
  let t35;
486
- if ($[90] !== selectedValuesDescription || $[91] !== selectedValuesDescriptionId || $[92] !== shouldExposeSelectedValuesDescription) {
485
+ if ($[89] !== selectedValuesDescription || $[90] !== selectedValuesDescriptionId || $[91] !== shouldExposeSelectedValuesDescription) {
487
486
  t35 = shouldExposeSelectedValuesDescription ? /*#__PURE__*/jsx(VisuallyHidden, {
488
487
  id: selectedValuesDescriptionId,
489
488
  children: selectedValuesDescription
490
489
  }) : null;
491
- $[90] = selectedValuesDescription;
492
- $[91] = selectedValuesDescriptionId;
493
- $[92] = shouldExposeSelectedValuesDescription;
494
- $[93] = t35;
490
+ $[89] = selectedValuesDescription;
491
+ $[90] = selectedValuesDescriptionId;
492
+ $[91] = shouldExposeSelectedValuesDescription;
493
+ $[92] = t35;
495
494
  } else {
496
- t35 = $[93];
495
+ t35 = $[92];
497
496
  }
498
497
  let t36;
499
- if ($[94] !== t34 || $[95] !== t35) {
498
+ if ($[93] !== t34 || $[94] !== t35) {
500
499
  t36 = /*#__PURE__*/jsxs("div", {
501
500
  className: styles.InputWrapper,
502
501
  children: [t34, t35]
503
502
  });
504
- $[94] = t34;
505
- $[95] = t35;
506
- $[96] = t36;
503
+ $[93] = t34;
504
+ $[94] = t35;
505
+ $[95] = t36;
507
506
  } else {
508
- t36 = $[96];
507
+ t36 = $[95];
509
508
  }
510
509
  let t37;
511
- if ($[97] !== TokenComponent || $[98] !== disabled || $[99] !== handleTokenBlur || $[100] !== handleTokenFocus || $[101] !== handleTokenRemove || $[102] !== hideTokenRemoveButtons || $[103] !== selectedTokenIndex || $[104] !== size || $[105] !== visibleTokens) {
510
+ if ($[96] !== TokenComponent || $[97] !== disabled || $[98] !== handleTokenBlur || $[99] !== handleTokenFocus || $[100] !== handleTokenRemove || $[101] !== hideTokenRemoveButtons || $[102] !== selectedTokenIndex || $[103] !== size || $[104] !== visibleTokens) {
512
511
  let t38;
513
- if ($[107] !== TokenComponent || $[108] !== disabled || $[109] !== handleTokenBlur || $[110] !== handleTokenFocus || $[111] !== handleTokenRemove || $[112] !== hideTokenRemoveButtons || $[113] !== selectedTokenIndex || $[114] !== size) {
512
+ if ($[106] !== TokenComponent || $[107] !== disabled || $[108] !== handleTokenBlur || $[109] !== handleTokenFocus || $[110] !== handleTokenRemove || $[111] !== hideTokenRemoveButtons || $[112] !== selectedTokenIndex || $[113] !== size) {
514
513
  t38 = (t39, i) => {
515
514
  const {
516
515
  id,
@@ -532,89 +531,89 @@ function TextInputWithTokensInnerComponent(t0, forwardedRef) {
532
531
  ...tokenRest
533
532
  }, id);
534
533
  };
535
- $[107] = TokenComponent;
536
- $[108] = disabled;
537
- $[109] = handleTokenBlur;
538
- $[110] = handleTokenFocus;
539
- $[111] = handleTokenRemove;
540
- $[112] = hideTokenRemoveButtons;
541
- $[113] = selectedTokenIndex;
542
- $[114] = size;
543
- $[115] = t38;
534
+ $[106] = TokenComponent;
535
+ $[107] = disabled;
536
+ $[108] = handleTokenBlur;
537
+ $[109] = handleTokenFocus;
538
+ $[110] = handleTokenRemove;
539
+ $[111] = hideTokenRemoveButtons;
540
+ $[112] = selectedTokenIndex;
541
+ $[113] = size;
542
+ $[114] = t38;
544
543
  } else {
545
- t38 = $[115];
544
+ t38 = $[114];
546
545
  }
547
546
  t37 = visibleTokens.map(t38);
548
- $[97] = TokenComponent;
549
- $[98] = disabled;
550
- $[99] = handleTokenBlur;
551
- $[100] = handleTokenFocus;
552
- $[101] = handleTokenRemove;
553
- $[102] = hideTokenRemoveButtons;
554
- $[103] = selectedTokenIndex;
555
- $[104] = size;
556
- $[105] = visibleTokens;
557
- $[106] = t37;
547
+ $[96] = TokenComponent;
548
+ $[97] = disabled;
549
+ $[98] = handleTokenBlur;
550
+ $[99] = handleTokenFocus;
551
+ $[100] = handleTokenRemove;
552
+ $[101] = hideTokenRemoveButtons;
553
+ $[102] = selectedTokenIndex;
554
+ $[103] = size;
555
+ $[104] = visibleTokens;
556
+ $[105] = t37;
558
557
  } else {
559
- t37 = $[106];
558
+ t37 = $[105];
560
559
  }
561
560
  let t38;
562
- if ($[116] !== size || $[117] !== tokens.length || $[118] !== tokensAreTruncated || $[119] !== visibleTokens.length) {
561
+ if ($[115] !== size || $[116] !== tokens.length || $[117] !== tokensAreTruncated || $[118] !== visibleTokens.length) {
563
562
  t38 = tokensAreTruncated && tokens.length - visibleTokens.length ? /*#__PURE__*/jsxs(Text, {
564
563
  className: overflowCountClassMap[size],
565
564
  children: ["+", tokens.length - visibleTokens.length]
566
565
  }) : null;
567
- $[116] = size;
568
- $[117] = tokens.length;
569
- $[118] = tokensAreTruncated;
570
- $[119] = visibleTokens.length;
571
- $[120] = t38;
566
+ $[115] = size;
567
+ $[116] = tokens.length;
568
+ $[117] = tokensAreTruncated;
569
+ $[118] = visibleTokens.length;
570
+ $[119] = t38;
572
571
  } else {
573
- t38 = $[120];
572
+ t38 = $[119];
574
573
  }
575
574
  let t39;
576
- if ($[121] !== preventTokenWrapping || $[122] !== t31 || $[123] !== t36 || $[124] !== t37 || $[125] !== t38) {
575
+ if ($[120] !== preventTokenWrapping || $[121] !== t31 || $[122] !== t36 || $[123] !== t37 || $[124] !== t38) {
577
576
  t39 = /*#__PURE__*/jsxs("div", {
578
577
  ref: t31,
579
578
  className: styles.Container,
580
579
  "data-prevent-token-wrapping": preventTokenWrapping,
581
580
  children: [t36, t37, t38]
582
581
  });
583
- $[121] = preventTokenWrapping;
584
- $[122] = t31;
585
- $[123] = t36;
586
- $[124] = t37;
587
- $[125] = t38;
588
- $[126] = t39;
582
+ $[120] = preventTokenWrapping;
583
+ $[121] = t31;
584
+ $[122] = t36;
585
+ $[123] = t37;
586
+ $[124] = t38;
587
+ $[125] = t39;
589
588
  } else {
590
- t39 = $[126];
589
+ t39 = $[125];
591
590
  }
592
591
  const t40 = typeof loading === "boolean";
593
592
  let t41;
594
- if ($[127] !== TrailingVisual) {
593
+ if ($[126] !== TrailingVisual) {
595
594
  t41 = typeof TrailingVisual !== "string" && isValidElementType(TrailingVisual) ? /*#__PURE__*/jsx(TrailingVisual, {}) : TrailingVisual;
596
- $[127] = TrailingVisual;
597
- $[128] = t41;
595
+ $[126] = TrailingVisual;
596
+ $[127] = t41;
598
597
  } else {
599
- t41 = $[128];
598
+ t41 = $[127];
600
599
  }
601
600
  let t42;
602
- if ($[129] !== showTrailingLoadingIndicator || $[130] !== t40 || $[131] !== t41) {
601
+ if ($[128] !== showTrailingLoadingIndicator || $[129] !== t40 || $[130] !== t41) {
603
602
  t42 = /*#__PURE__*/jsx(TextInputInnerVisualSlot, {
604
603
  hasLoadingIndicator: t40,
605
604
  visualPosition: "trailing",
606
605
  showLoadingIndicator: showTrailingLoadingIndicator,
607
606
  children: t41
608
607
  });
609
- $[129] = showTrailingLoadingIndicator;
610
- $[130] = t40;
611
- $[131] = t41;
612
- $[132] = t42;
608
+ $[128] = showTrailingLoadingIndicator;
609
+ $[129] = t40;
610
+ $[130] = t41;
611
+ $[131] = t42;
613
612
  } else {
614
- t42 = $[132];
613
+ t42 = $[131];
615
614
  }
616
615
  let t43;
617
- if ($[133] !== block || $[134] !== contrast || $[135] !== disabled || $[136] !== maxWidthProp || $[137] !== minWidthProp || $[138] !== t21 || $[139] !== t22 || $[140] !== t23 || $[141] !== t24 || $[142] !== t25 || $[143] !== t26 || $[144] !== t27 || $[145] !== t30 || $[146] !== t39 || $[147] !== t42 || $[148] !== validationStatus || $[149] !== variantProp || $[150] !== widthProp) {
616
+ if ($[132] !== block || $[133] !== contrast || $[134] !== disabled || $[135] !== maxWidthProp || $[136] !== minWidthProp || $[137] !== t21 || $[138] !== t22 || $[139] !== t23 || $[140] !== t24 || $[141] !== t25 || $[142] !== t26 || $[143] !== t27 || $[144] !== t30 || $[145] !== t39 || $[146] !== t42 || $[147] !== validationStatus || $[148] !== variantProp || $[149] !== widthProp) {
618
617
  t43 = /*#__PURE__*/jsxs(TextInputWrapper, {
619
618
  block: block,
620
619
  contrast: contrast,
@@ -633,27 +632,27 @@ function TextInputWithTokensInnerComponent(t0, forwardedRef) {
633
632
  style: t26,
634
633
  children: [t27, t30, t39, t42]
635
634
  });
636
- $[133] = block;
637
- $[134] = contrast;
638
- $[135] = disabled;
639
- $[136] = maxWidthProp;
640
- $[137] = minWidthProp;
641
- $[138] = t21;
642
- $[139] = t22;
643
- $[140] = t23;
644
- $[141] = t24;
645
- $[142] = t25;
646
- $[143] = t26;
647
- $[144] = t27;
648
- $[145] = t30;
649
- $[146] = t39;
650
- $[147] = t42;
651
- $[148] = validationStatus;
652
- $[149] = variantProp;
653
- $[150] = widthProp;
654
- $[151] = t43;
635
+ $[132] = block;
636
+ $[133] = contrast;
637
+ $[134] = disabled;
638
+ $[135] = maxWidthProp;
639
+ $[136] = minWidthProp;
640
+ $[137] = t21;
641
+ $[138] = t22;
642
+ $[139] = t23;
643
+ $[140] = t24;
644
+ $[141] = t25;
645
+ $[142] = t26;
646
+ $[143] = t27;
647
+ $[144] = t30;
648
+ $[145] = t39;
649
+ $[146] = t42;
650
+ $[147] = validationStatus;
651
+ $[148] = variantProp;
652
+ $[149] = widthProp;
653
+ $[150] = t43;
655
654
  } else {
656
- t43 = $[151];
655
+ t43 = $[150];
657
656
  }
658
657
  return t43;
659
658
  }
@@ -2,7 +2,7 @@ import { c } from 'react-compiler-runtime';
2
2
  import React, { forwardRef, useRef } from 'react';
3
3
  import { IconButton } from '../../Button/IconButton.js';
4
4
  import useDialog from '../../hooks/useDialog.js';
5
- import { useMergedRefs } from '../../hooks/useMergedRefs.js';
5
+ import { useRefObjectAsForwardedRef } from '../../hooks/useRefObjectAsForwardedRef.js';
6
6
  import { XIcon } from '@primer/octicons-react';
7
7
  import { clsx } from 'clsx';
8
8
  import classes from './Dialog.module.css.js';
@@ -78,7 +78,7 @@ function _temp(ch) {
78
78
  return typeof ch === "string";
79
79
  }
80
80
  const Dialog = /*#__PURE__*/forwardRef((t0, forwardedRef) => {
81
- const $ = c(26);
81
+ const $ = c(25);
82
82
  let children;
83
83
  let className;
84
84
  let initialFocusRef;
@@ -121,7 +121,7 @@ const Dialog = /*#__PURE__*/forwardRef((t0, forwardedRef) => {
121
121
  const Component = t2 === undefined ? "div" : t2;
122
122
  const overlayRef = useRef(null);
123
123
  const modalRef = useRef(null);
124
- const mergedRef = useMergedRefs(forwardedRef, modalRef);
124
+ useRefObjectAsForwardedRef(forwardedRef, modalRef);
125
125
  const closeButtonRef = useRef(null);
126
126
  let t3;
127
127
  if ($[9] !== onDismiss || $[10] !== returnFocusRef) {
@@ -161,14 +161,14 @@ const Dialog = /*#__PURE__*/forwardRef((t0, forwardedRef) => {
161
161
  getDialogProps
162
162
  } = useDialog(t4);
163
163
  let t5;
164
- if ($[17] !== Component || $[18] !== children || $[19] !== className || $[20] !== getDialogProps || $[21] !== isOpen || $[22] !== mergedRef || $[23] !== onCloseClick || $[24] !== props) {
164
+ if ($[17] !== Component || $[18] !== children || $[19] !== className || $[20] !== getDialogProps || $[21] !== isOpen || $[22] !== onCloseClick || $[23] !== props) {
165
165
  t5 = isOpen ? /*#__PURE__*/jsxs(Fragment, {
166
166
  children: [/*#__PURE__*/jsx("span", {
167
167
  className: classes.Overlay,
168
168
  ref: overlayRef
169
169
  }), /*#__PURE__*/jsxs(Component, {
170
170
  tabIndex: -1,
171
- ref: mergedRef,
171
+ ref: modalRef,
172
172
  role: "dialog",
173
173
  "aria-modal": "true",
174
174
  ...props,
@@ -190,12 +190,11 @@ const Dialog = /*#__PURE__*/forwardRef((t0, forwardedRef) => {
190
190
  $[19] = className;
191
191
  $[20] = getDialogProps;
192
192
  $[21] = isOpen;
193
- $[22] = mergedRef;
194
- $[23] = onCloseClick;
195
- $[24] = props;
196
- $[25] = t5;
193
+ $[22] = onCloseClick;
194
+ $[23] = props;
195
+ $[24] = t5;
197
196
  } else {
198
- t5 = $[25];
197
+ t5 = $[24];
199
198
  }
200
199
  return t5;
201
200
  });
@@ -15,18 +15,18 @@ import type { ForwardedRef, Ref as StandardRef } from 'react';
15
15
  * // React 18
16
16
  * const Example = forwardRef<HTMLButtonElement, {}>((props, forwardedRef) => {
17
17
  * const ref = useRef<HTMLButtonElement>(null)
18
- * const mergedRef = useMergedRefs(forwardedRef, ref)
18
+ * const combinedRef = useMergedRefs(forwardedRef, ref)
19
19
  *
20
- * return <button ref={mergedRef} />
20
+ * return <button ref={combinedRef} />
21
21
  * })
22
22
  *
23
23
  * @example
24
24
  * // React 19
25
25
  * const Example = ({ref: externalRef}: {ref?: Ref<HTMLButtonElement>}) => {
26
26
  * const ref = useRef<HTMLButtonElement>(null)
27
- * const mergedRef = useMergedRefs(externalRef, ref)
27
+ * const combinedRef = useMergedRefs(externalRef, ref)
28
28
  *
29
- * return <button ref={mergedRef} />
29
+ * return <button ref={combinedRef} />
30
30
  * }
31
31
  */
32
32
  export declare function useMergedRefs<T>(refA: Ref<T | null>, refB: Ref<T | null>): (value: T | null) => () => void;
@@ -17,18 +17,18 @@ import 'react';
17
17
  * // React 18
18
18
  * const Example = forwardRef<HTMLButtonElement, {}>((props, forwardedRef) => {
19
19
  * const ref = useRef<HTMLButtonElement>(null)
20
- * const mergedRef = useMergedRefs(forwardedRef, ref)
20
+ * const combinedRef = useMergedRefs(forwardedRef, ref)
21
21
  *
22
- * return <button ref={mergedRef} />
22
+ * return <button ref={combinedRef} />
23
23
  * })
24
24
  *
25
25
  * @example
26
26
  * // React 19
27
27
  * const Example = ({ref: externalRef}: {ref?: Ref<HTMLButtonElement>}) => {
28
28
  * const ref = useRef<HTMLButtonElement>(null)
29
- * const mergedRef = useMergedRefs(externalRef, ref)
29
+ * const combinedRef = useMergedRefs(externalRef, ref)
30
30
  *
31
- * return <button ref={mergedRef} />
31
+ * return <button ref={combinedRef} />
32
32
  * }
33
33
  */
34
34
  function useMergedRefs(refA, refB) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@primer/react",
3
3
  "type": "module",
4
- "version": "38.19.0-rc.9add2ea76",
4
+ "version": "38.19.0-rc.b42304a52",
5
5
  "description": "An implementation of GitHub's Primer Design System using React",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Dialog/Dialog.module.css.js"],"names":[],"mappings":"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","file":"Dialog-b577691f.css","sourcesContent":["/* The --prc-dialog-scrollgutter property is used only on the body element to\n * simulate scrollbar-gutter:stable. This property is not and should not\n * be used elsewhere in the DOM. There is a performance penalty to\n * setting inherited properties which can cause a large style recalc to\n * occur, so it benefits us to prevent inheritance for this property.\n * See https://web.dev/blog/at-property-performance\n */\n@property --prc-dialog-scrollgutter {\n initial-value: 0;\n inherits: false;\n syntax: '<length>';\n}\n\n@keyframes dialog-backdrop-appear {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes Overlay--motion-scaleFade {\n 0% {\n opacity: 0;\n transform: scale(0.5);\n }\n\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes Overlay--motion-slideUp {\n from {\n transform: translateY(100%);\n }\n}\n\n@keyframes Overlay--motion-slideInRight {\n from {\n transform: translateX(-100%);\n }\n}\n\n@keyframes Overlay--motion-slideInLeft {\n from {\n transform: translateX(100%);\n }\n}\n\n/* Used to determine whether there should be a border between the body and footer */\n@keyframes detect-scroll {\n from,\n to {\n --can-scroll: 1;\n }\n}\n\n.Backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n background-color: var(--overlay-backdrop-bgColor);\n animation: dialog-backdrop-appear 200ms cubic-bezier(0.33, 1, 0.68, 1);\n align-items: center;\n justify-content: center;\n\n &[data-position-regular='center'] {\n align-items: center;\n justify-content: center;\n }\n\n &[data-position-regular='left'] {\n align-items: center;\n justify-content: flex-start;\n }\n\n &[data-position-regular='right'] {\n align-items: center;\n justify-content: flex-end;\n }\n\n /* align only applies when regular position is center (or absent).\n * :where() zeroes out the :not() specificity so narrow-position rules (coming later)\n * always win when data-position-narrow is bottom or fullscreen. */\n &:where(:not([data-position-regular='left']):not([data-position-regular='right'])) {\n &[data-align='top'] {\n align-items: flex-start;\n }\n\n &[data-align='center'] {\n align-items: center;\n }\n\n &[data-align='bottom'] {\n align-items: flex-end;\n }\n }\n\n @media (max-width: 767px) {\n &[data-position-narrow='center'] {\n align-items: center;\n justify-content: center;\n\n /* align still applies when narrow position is center */\n &[data-align='top'] {\n align-items: flex-start;\n }\n\n &[data-align='center'] {\n align-items: center;\n }\n\n &[data-align='bottom'] {\n align-items: flex-end;\n }\n }\n\n &[data-position-narrow='bottom'] {\n align-items: end;\n justify-content: center;\n }\n }\n}\n\n.Dialog {\n display: flex;\n /* stylelint-disable-next-line primer/responsive-widths */\n width: 640px;\n min-width: 296px;\n max-width: calc(100dvw - 64px);\n height: auto;\n max-height: calc(100dvh - 64px);\n flex-direction: column;\n background-color: var(--overlay-bgColor);\n border-radius: var(--borderRadius-large);\n border-radius: var(--borderRadius-large, var(--borderRadius-large));\n box-shadow: var(--shadow-floating-small);\n opacity: 1;\n\n &:where([data-width='small']) {\n width: 296px;\n }\n\n &:where([data-width='medium']) {\n width: 320px;\n }\n\n &:where([data-width='large']) {\n /* stylelint-disable-next-line primer/responsive-widths */\n width: 480px;\n }\n\n &:where([data-height='small']) {\n height: 480px;\n }\n\n &:where([data-height='large']) {\n height: 640px;\n }\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: Overlay--motion-scaleFade 0.2s cubic-bezier(0.33, 1, 0.68, 1) 1ms 1 normal none running;\n }\n\n &[data-position-regular='center'] {\n border-radius: var(--borderRadius-large, var(--borderRadius-large));\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: Overlay--motion-scaleFade 0.2s cubic-bezier(0.33, 1, 0.68, 1) 1ms 1 normal none running;\n }\n\n /* align margins only apply when regular position is center */\n &[data-align='top'] {\n margin-top: var(--base-size-64);\n }\n\n &[data-align='bottom'] {\n margin-bottom: var(--base-size-64);\n }\n }\n\n &[data-position-regular='left'] {\n height: 100dvh;\n max-height: unset;\n border-radius: var(--borderRadius-large, var(--borderRadius-large));\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: Overlay--motion-slideInRight 0.25s cubic-bezier(0.33, 1, 0.68, 1) 1ms 1 normal none running;\n }\n }\n\n &[data-position-regular='right'] {\n height: 100dvh;\n max-height: unset;\n border-radius: var(--borderRadius-large, var(--borderRadius-large));\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: Overlay--motion-slideInLeft 0.25s cubic-bezier(0.33, 1, 0.68, 1) 0s 1 normal none running;\n }\n }\n\n @media (max-width: 767px) {\n &[data-position-narrow='center'] {\n /* stylelint-disable-next-line primer/responsive-widths */\n width: 640px;\n height: auto;\n border-radius: var(--borderRadius-large, var(--borderRadius-large));\n\n &:where([data-width='small']) {\n width: 296px;\n }\n\n &:where([data-width='medium']) {\n width: 320px;\n }\n\n &:where([data-width='large']) {\n /* stylelint-disable-next-line primer/responsive-widths */\n width: 480px;\n }\n\n &:where([data-height='small']) {\n height: 480px;\n }\n\n &:where([data-height='large']) {\n height: 640px;\n }\n }\n\n @media (max-height: 280px) {\n max-height: calc(100dvh - 12px);\n max-width: calc(100dvw - 12px);\n }\n\n &[data-position-narrow='bottom'] {\n width: 100dvw;\n max-width: 100dvw;\n height: auto;\n max-height: calc(100dvh - 64px);\n border-radius: var(--borderRadius-large, var(--borderRadius-large));\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n\n /* reset align margins since position wins at narrow */\n &[data-align] {\n margin-top: 0;\n margin-bottom: 0;\n }\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: Overlay--motion-slideUp 0.25s cubic-bezier(0.33, 1, 0.68, 1) 1ms 1 normal none running;\n }\n }\n\n &[data-position-narrow='fullscreen'] {\n width: 100%;\n max-width: 100dvw;\n height: 100%;\n max-height: 100dvh;\n border-radius: unset !important;\n flex-grow: 1;\n\n /* reset align margins since fullscreen wins at narrow */\n &[data-align] {\n margin-top: 0;\n margin-bottom: 0;\n }\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: Overlay--motion-scaleFade 0.2s cubic-bezier(0.33, 1, 0.68, 1) 1ms 1 normal none running;\n }\n }\n }\n}\n\n/* DisableScroll class is added to Dialog when scroll should be disabled on body */\n.DisableScroll {\n /* This class is used as a selector target for the legacy :has() CSS selector */\n}\n\n/*\n * LEGACY: Scoped :has() selector with negation guard\n * Only evaluates when data-dialog-scroll-optimized is NOT present on body.\n * When the attribute IS present (flag ON), browser skips :has() evaluation\n * because the :not() check fails first (O(1) attribute lookup).\n */\n/* stylelint-disable-next-line selector-no-qualifying-type */\nbody:not([data-dialog-scroll-optimized]):has(.Dialog.DisableScroll) {\n /* stylelint-disable-next-line primer/spacing */\n padding-right: var(--prc-dialog-scrollgutter) !important;\n overflow: hidden !important;\n}\n\n/*\n * PERFORMANCE OPTIMIZATION: Direct attribute on body - O(1) lookup\n * Active when primer_react_css_has_selector_perf flag is ON\n */\n/* stylelint-disable-next-line selector-no-qualifying-type */\nbody[data-dialog-scroll-disabled] {\n /* stylelint-disable-next-line primer/spacing */\n padding-right: var(--prc-dialog-scrollgutter) !important;\n overflow: hidden !important;\n}\n\n.DialogOverflowWrapper {\n flex-grow: 1;\n}\n\n/*\nAdd a border between the body and footer if:\n- the dialog has a footer\n- the dialog has a body that can scroll\n- the browser supports the `animation-timeline` property and its `scroll()` function\n*/\n.Dialog[data-has-footer] {\n --can-scroll: 0;\n\n .DialogOverflowWrapper {\n /* If the browser does not support the `animation-timeline` property, always show a border */\n border-bottom: var(--borderWidth-default) solid var(--borderColor-default);\n animation: detect-scroll;\n animation-timeline: scroll(self);\n\n @supports (animation-timeline: scroll(self)) {\n border-bottom: calc(var(--borderWidth-thin) * var(--can-scroll)) solid var(--borderColor-default);\n }\n }\n}\n\n.Header {\n z-index: 1;\n max-height: 35vh;\n padding: var(--base-size-8);\n overflow-y: auto;\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: 0 1px 0 var(--borderColor-default);\n flex-shrink: 0;\n}\n\n.HeaderInner {\n display: flex;\n}\n\n.HeaderContent {\n display: flex;\n padding-inline: var(--base-size-8);\n padding-block: var(--base-size-6);\n flex-direction: column;\n flex-grow: 1;\n}\n\n.Title {\n margin: 0; /* override default margin */\n font-size: var(--text-body-size-medium);\n font-weight: var(--text-title-weight-large);\n}\n\n.Subtitle {\n margin: 0; /* override default margin */\n margin-top: var(--base-size-4);\n font-size: var(--text-body-size-small);\n font-weight: var(--base-text-weight-normal);\n color: var(--fgColor-muted);\n}\n\n.Body {\n padding: var(--base-size-16);\n overflow: auto;\n flex-grow: 1;\n}\n\n.Footer {\n z-index: 1;\n display: flex;\n flex-flow: wrap;\n justify-content: flex-end;\n padding: var(--base-size-16);\n gap: var(--base-size-8);\n flex-shrink: 0;\n}\n\n.Dialog[data-footer-button-layout='scroll'] .Footer {\n flex-wrap: nowrap;\n overflow-x: scroll;\n flex-direction: row;\n justify-content: unset;\n}\n"]}