@primer/react 38.37.1-rc.f1c7ced7b → 38.38.0-rc.1d4172bf2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/ActionBar/ActionBar.js +2 -2
  3. package/dist/ActionList/Description.js +2 -2
  4. package/dist/ActionList/Divider.js +1 -1
  5. package/dist/ActionList/Group.js +3 -3
  6. package/dist/ActionList/GroupHeadingTrailingAction.js +1 -1
  7. package/dist/ActionList/Heading.js +2 -2
  8. package/dist/ActionList/Item.js +3 -3
  9. package/dist/ActionList/List.js +2 -2
  10. package/dist/ActionList/Selection.js +1 -1
  11. package/dist/ActionList/TrailingAction.js +2 -2
  12. package/dist/ActionList/Visuals.js +2 -2
  13. package/dist/ActionMenu/ActionMenu.js +2 -2
  14. package/dist/AnchoredOverlay/AnchoredOverlay.js +3 -3
  15. package/dist/Autocomplete/Autocomplete.js +1 -1
  16. package/dist/Autocomplete/AutocompleteInput.js +1 -1
  17. package/dist/Autocomplete/AutocompleteMenu.js +2 -2
  18. package/dist/Autocomplete/AutocompleteOverlay.js +2 -2
  19. package/dist/Avatar/Avatar.js +2 -2
  20. package/dist/AvatarStack/AvatarStack.js +2 -2
  21. package/dist/Banner/Banner.js +2 -2
  22. package/dist/BaseStyles.js +1 -1
  23. package/dist/Blankslate/Blankslate.js +2 -2
  24. package/dist/BranchName/BranchName.js +1 -1
  25. package/dist/Breadcrumbs/Breadcrumbs.js +2 -2
  26. package/dist/Button/Button.js +1 -1
  27. package/dist/Button/ButtonBase.js +4 -4
  28. package/dist/Button/IconButton.js +2 -2
  29. package/dist/Button/LinkButton.js +1 -1
  30. package/dist/ButtonGroup/ButtonGroup.js +2 -2
  31. package/dist/Card/Card.js +2 -2
  32. package/dist/Checkbox/Checkbox.js +2 -2
  33. package/dist/CheckboxGroup/CheckboxGroup.js +1 -1
  34. package/dist/CircleBadge/CircleBadge.js +1 -1
  35. package/dist/ConfirmationDialog/ConfirmationDialog.js +1 -1
  36. package/dist/CounterLabel/CounterLabel.js +3 -3
  37. package/dist/DataTable/Pagination.js +4 -4
  38. package/dist/DataTable/Table.js +3 -3
  39. package/dist/Details/Details.js +2 -2
  40. package/dist/Dialog/Dialog.js +3 -3
  41. package/dist/FeatureFlags/FeatureFlags.js +1 -1
  42. package/dist/FilteredActionList/FilteredActionList.js +2 -2
  43. package/dist/FilteredActionList/FilteredActionListInput.js +1 -1
  44. package/dist/FilteredActionList/useAnnouncements.js +1 -1
  45. package/dist/Flash/Flash.js +2 -2
  46. package/dist/FormControl/FormControl.js +3 -3
  47. package/dist/FormControl/FormControlCaption.js +1 -1
  48. package/dist/Header/Header.js +2 -2
  49. package/dist/Heading/Heading.js +2 -2
  50. package/dist/Hidden/Hidden.js +1 -1
  51. package/dist/InlineMessage/InlineMessage.js +1 -1
  52. package/dist/KeybindingHint/KeybindingHint.js +2 -2
  53. package/dist/KeybindingHint/components/Chord.js +3 -3
  54. package/dist/KeybindingHint/components/Sequence.js +3 -3
  55. package/dist/Label/Label.js +2 -2
  56. package/dist/LabelGroup/LabelGroup.js +2 -2
  57. package/dist/Link/Link.js +2 -2
  58. package/dist/NavList/NavList.js +5 -5
  59. package/dist/Octicon/Octicon.js +1 -1
  60. package/dist/Overlay/Overlay.js +2 -2
  61. package/dist/PageHeader/PageHeader.js +3 -3
  62. package/dist/PageLayout/DragHandle.js +1 -1
  63. package/dist/PageLayout/PageLayout.js +2 -2
  64. package/dist/Pagehead/Pagehead.js +1 -1
  65. package/dist/Pagination/Pagination.js +3 -3
  66. package/dist/Popover/Popover.js +2 -2
  67. package/dist/ProgressBar/ProgressBar.js +2 -2
  68. package/dist/Radio/Radio.js +2 -2
  69. package/dist/RelativeTime/RelativeTime.js +2 -1
  70. package/dist/ScrollableRegion/ScrollableRegion.js +2 -2
  71. package/dist/SegmentedControl/SegmentedControl.js +3 -3
  72. package/dist/SegmentedControl/SegmentedControlButton.js +1 -1
  73. package/dist/SegmentedControl/SegmentedControlIconButton.js +1 -1
  74. package/dist/Select/Select.js +2 -2
  75. package/dist/SelectPanel/SelectPanel.js +4 -4
  76. package/dist/SelectPanel/SelectPanelMessage.js +1 -1
  77. package/dist/SideNav.js +1 -1
  78. package/dist/Skeleton/SkeletonBox.js +2 -2
  79. package/dist/SkeletonAvatar/SkeletonAvatar.js +1 -1
  80. package/dist/SkeletonText/SkeletonText.js +1 -1
  81. package/dist/Spinner/Spinner.js +2 -2
  82. package/dist/Stack/Stack.js +2 -2
  83. package/dist/StateLabel/StateLabel.js +2 -2
  84. package/dist/SubNav/SubNav.js +2 -2
  85. package/dist/TabNav/TabNav.js +2 -2
  86. package/dist/Text/Text.js +1 -1
  87. package/dist/TextInput/TextInput.js +5 -5
  88. package/dist/TextInputWithTokens/TextInputWithTokens.js +2 -2
  89. package/dist/Textarea/Textarea.js +3 -3
  90. package/dist/ThemeProvider.js +1 -1
  91. package/dist/Timeline/Timeline.js +2 -2
  92. package/dist/ToggleSwitch/ToggleSwitch.js +3 -3
  93. package/dist/Token/IssueLabelToken.js +2 -2
  94. package/dist/Token/Token.js +2 -2
  95. package/dist/Token/TokenBase.js +2 -2
  96. package/dist/Token/_RemoveTokenButton.js +1 -1
  97. package/dist/Token/_TokenTextContainer.js +1 -1
  98. package/dist/Tooltip/Tooltip.js +2 -2
  99. package/dist/TooltipV2/Tooltip.js +4 -4
  100. package/dist/TopicTag/TopicTag.js +1 -1
  101. package/dist/TopicTag/TopicTagGroup.js +1 -1
  102. package/dist/TreeView/TreeView.js +9 -9
  103. package/dist/Truncate/Truncate.js +2 -2
  104. package/dist/UnderlineNav/UnderlineNav.js +2 -2
  105. package/dist/UnderlineNav/UnderlineNavItem.js +1 -1
  106. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  107. package/dist/_VisuallyHidden.js +1 -1
  108. package/dist/deprecated/ActionList/Header.js +1 -1
  109. package/dist/deprecated/ActionList/Item.js +3 -3
  110. package/dist/deprecated/ActionList/List.js +2 -2
  111. package/dist/deprecated/ActionMenu.js +1 -1
  112. package/dist/deprecated/DialogV1/Dialog.js +3 -3
  113. package/dist/deprecated/FilteredSearch/FilteredSearch.js +1 -1
  114. package/dist/deprecated/UnderlineNav/UnderlineNav.js +2 -2
  115. package/dist/experimental/IssueLabel/IssueLabel.js +1 -1
  116. package/dist/experimental/SelectPanel2/SelectPanel.js +5 -5
  117. package/dist/experimental/Tabs/Tabs.js +1 -1
  118. package/dist/experimental/UnderlinePanels/UnderlinePanels.js +2 -2
  119. package/dist/experimental/index.d.ts +3 -3
  120. package/dist/experimental/index.js +1 -1
  121. package/dist/index.d.ts +3 -1
  122. package/dist/index.js +3 -1
  123. package/dist/internal/components/ButtonReset.js +1 -1
  124. package/dist/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.js +3 -3
  125. package/dist/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupCaption.js +2 -2
  126. package/dist/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupLabel.js +2 -2
  127. package/dist/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupValidation.js +1 -1
  128. package/dist/internal/components/InputLabel.js +1 -1
  129. package/dist/internal/components/InputValidation.js +1 -1
  130. package/dist/internal/components/OverflowObserverProvider.js +1 -1
  131. package/dist/internal/components/TextInputInnerAction.js +3 -3
  132. package/dist/internal/components/TextInputInnerVisualSlot.js +1 -1
  133. package/dist/internal/components/TextInputWrapper.js +2 -2
  134. package/dist/internal/components/UnderlineTabbedInterface-a5cd75c0.css +2 -0
  135. package/dist/internal/components/UnderlineTabbedInterface-a5cd75c0.css.map +1 -0
  136. package/dist/internal/components/UnderlineTabbedInterface.js +2 -2
  137. package/dist/internal/components/UnderlineTabbedInterface.module.css.js +1 -1
  138. package/dist/internal/components/UnstyledTextInput.js +2 -2
  139. package/dist/internal/components/ValidationAnimationContainer.js +1 -1
  140. package/dist/live-region/Announce.js +2 -2
  141. package/dist/live-region/AriaAlert.d.ts +1 -1
  142. package/dist/utils/descendant-registry.js +1 -1
  143. package/generated/components.json +73 -0
  144. package/package.json +1 -1
  145. package/dist/internal/components/UnderlineTabbedInterface-8a52007f.css +0 -2
  146. package/dist/internal/components/UnderlineTabbedInterface-8a52007f.css.map +0 -1
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use client";
2
2
  import theme from "./theme.js";
3
+ import { AriaAlert } from "./live-region/AriaAlert.js";
4
+ import { AriaStatus } from "./live-region/AriaStatus.js";
3
5
  import BaseStyles from "./BaseStyles.js";
4
6
  import { useSyncedState } from "./hooks/useSyncedState.js";
5
7
  import { useColorSchemeVar, useTheme } from "./useTheme.js";
@@ -94,4 +96,4 @@ import { TreeView } from "./TreeView/TreeView.js";
94
96
  import { UnderlineNav } from "./UnderlineNav/index.js";
95
97
  import { ActionBar } from "./ActionBar/index.js";
96
98
  import { PageHeader } from "./PageHeader/PageHeader.js";
97
- export { ActionBar, ActionList, ActionMenu, AnchoredOverlay, Autocomplete_default as Autocomplete, Avatar, AvatarStack, Banner, BaseStyles, BranchName_default as BranchName, Breadcrumb, Breadcrumbs_default as Breadcrumbs, ButtonComponent as Button, ButtonBase, ButtonGroup, Checkbox, CheckboxGroup_default as CheckboxGroup, CircleBadge_default as CircleBadge, ConfirmationDialog, CounterLabel, Details, Dialog, DragHandle, Flash, FocusKeys, FormControl_default as FormControl, Header_default as Header, Heading, IconButton, IssueLabelToken, Label_default as Label, LabelGroup, Link, LinkButton, NavList, Overlay, PageHeader, PageLayout, Pagination_default as Pagination, Popover_default as Popover, Portal_default as Portal, PortalContext, ProgressBar, Radio, RadioGroup_default as RadioGroup, RelativeTime, SegmentedControl, Select_default as Select, SelectPanel, SideNav_default as SideNav, SkeletonBox, Spinner, SplitPageLayout, Stack, StateLabel, SubNav_default as SubNav, Text_default as Text, TextInput_default as TextInput, TextInputWithTokens, Textarea, ThemeProvider, Timeline_default as Timeline, ToggleSwitch, Token, Tooltip, TreeView, Truncate, UnderlineNav, VisuallyHidden, asSlot, createComponent, defaultPaneWidth, isSlot, registerPortalRoot, theme, useAnchoredPosition, useColorSchemeVar, useConfirm, useDetails, useFocusTrap, useFocusZone, useFormControlForwardedProps, useId, useIsomorphicLayoutEffect, useMergedRefs, useOnEscapePress, useOnOutsideClick, useOpenAndCloseFocus, useOverlay, usePaneWidth, useProvidedRefOrCreate, useRefObjectAsForwardedRef, useResizeObserver, useResponsiveValue, useRovingTabIndex, useSafeTimeout, useSlots, useSyncedState, useTheme };
99
+ export { ActionBar, ActionList, ActionMenu, AnchoredOverlay, AriaAlert, AriaStatus, Autocomplete_default as Autocomplete, Avatar, AvatarStack, Banner, BaseStyles, BranchName_default as BranchName, Breadcrumb, Breadcrumbs_default as Breadcrumbs, ButtonComponent as Button, ButtonBase, ButtonGroup, Checkbox, CheckboxGroup_default as CheckboxGroup, CircleBadge_default as CircleBadge, ConfirmationDialog, CounterLabel, Details, Dialog, DragHandle, Flash, FocusKeys, FormControl_default as FormControl, Header_default as Header, Heading, IconButton, IssueLabelToken, Label_default as Label, LabelGroup, Link, LinkButton, NavList, Overlay, PageHeader, PageLayout, Pagination_default as Pagination, Popover_default as Popover, Portal_default as Portal, PortalContext, ProgressBar, Radio, RadioGroup_default as RadioGroup, RelativeTime, SegmentedControl, Select_default as Select, SelectPanel, SideNav_default as SideNav, SkeletonBox, Spinner, SplitPageLayout, Stack, StateLabel, SubNav_default as SubNav, Text_default as Text, TextInput_default as TextInput, TextInputWithTokens, Textarea, ThemeProvider, Timeline_default as Timeline, ToggleSwitch, Token, Tooltip, TreeView, Truncate, UnderlineNav, VisuallyHidden, asSlot, createComponent, defaultPaneWidth, isSlot, registerPortalRoot, theme, useAnchoredPosition, useColorSchemeVar, useConfirm, useDetails, useFocusTrap, useFocusZone, useFormControlForwardedProps, useId, useIsomorphicLayoutEffect, useMergedRefs, useOnEscapePress, useOnOutsideClick, useOpenAndCloseFocus, useOverlay, usePaneWidth, useProvidedRefOrCreate, useRefObjectAsForwardedRef, useResizeObserver, useResponsiveValue, useRovingTabIndex, useSafeTimeout, useSlots, useSyncedState, useTheme };
@@ -1,7 +1,7 @@
1
1
  import ButtonReset_module_css_default from "./ButtonReset.module.css.js";
2
2
  import { c } from "react-compiler-runtime";
3
- import { clsx } from "clsx";
4
3
  import { jsx } from "react/jsx-runtime";
4
+ import { clsx } from "clsx";
5
5
  //#region src/internal/components/ButtonReset.tsx
6
6
  /**
7
7
  * Provides an unstyled button that can be styled as-needed for components
@@ -8,9 +8,9 @@ import CheckboxOrRadioGroupCaption from "./CheckboxOrRadioGroupCaption.js";
8
8
  import CheckboxOrRadioGroupLabel from "./CheckboxOrRadioGroupLabel.js";
9
9
  import CheckboxOrRadioGroupValidation from "./CheckboxOrRadioGroupValidation.js";
10
10
  import { c } from "react-compiler-runtime";
11
- import { clsx } from "clsx";
12
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
11
  import React from "react";
12
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
+ import { clsx } from "clsx";
14
14
  //#region src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.tsx
15
15
  const CheckboxOrRadioGroup = (t0) => {
16
16
  const $ = c(51);
@@ -84,7 +84,7 @@ const CheckboxOrRadioGroup = (t0) => {
84
84
  slots.caption,
85
85
  /*#__PURE__*/ React.isValidElement(slots.validation) && slots.validation.props.children && /*#__PURE__*/ jsx(VisuallyHidden, { children: slots.validation.props.children })
86
86
  ]
87
- }) : /*#__PURE__*/ jsxs(Fragment, { children: [slots.caption, required && requiredMessageId && /*#__PURE__*/ jsx(VisuallyHidden, {
87
+ }) : /*#__PURE__*/ jsxs(Fragment$1, { children: [slots.caption, required && requiredMessageId && /*#__PURE__*/ jsx(VisuallyHidden, {
88
88
  id: requiredMessageId,
89
89
  children: "Required"
90
90
  })] });
@@ -2,9 +2,9 @@ import Text_default from "../../../Text/Text.js";
2
2
  import CheckboxOrRadioGroupContext from "./CheckboxOrRadioGroupContext.js";
3
3
  import CheckboxOrRadioGroup_module_css_default from "./CheckboxOrRadioGroup.module.css.js";
4
4
  import { c } from "react-compiler-runtime";
5
- import { clsx } from "clsx";
6
- import { jsx } from "react/jsx-runtime";
7
5
  import React from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { clsx } from "clsx";
8
8
  //#region src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupCaption.tsx
9
9
  const CheckboxOrRadioGroupCaption = (t0) => {
10
10
  const $ = c(7);
@@ -3,9 +3,9 @@ import CheckboxOrRadioGroupContext from "./CheckboxOrRadioGroupContext.js";
3
3
  import CheckboxOrRadioGroup_module_css_default from "./CheckboxOrRadioGroup.module.css.js";
4
4
  import { Stack } from "../../../Stack/index.js";
5
5
  import { c } from "react-compiler-runtime";
6
- import { clsx } from "clsx";
7
- import { jsx, jsxs } from "react/jsx-runtime";
8
6
  import React from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { clsx } from "clsx";
9
9
  //#region src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupLabel.tsx
10
10
  const CheckboxOrRadioGroupLabel = (t0) => {
11
11
  const $ = c(12);
@@ -1,8 +1,8 @@
1
1
  import CheckboxOrRadioGroupContext from "./CheckboxOrRadioGroupContext.js";
2
2
  import InputValidation from "../InputValidation.js";
3
3
  import { c } from "react-compiler-runtime";
4
- import { jsx } from "react/jsx-runtime";
5
4
  import React from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
6
  //#region src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupValidation.tsx
7
7
  const CheckboxOrRadioGroupValidation = (t0) => {
8
8
  const $ = c(5);
@@ -1,7 +1,7 @@
1
1
  import InputLabel_module_css_default from "./InputLabel.module.css.js";
2
2
  import { c } from "react-compiler-runtime";
3
- import { clsx } from "clsx";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { clsx } from "clsx";
5
5
  //#region src/internal/components/InputLabel.tsx
6
6
  function InputLabel(t0) {
7
7
  const $ = c(28);
@@ -1,8 +1,8 @@
1
1
  import Text_default from "../../Text/Text.js";
2
2
  import InputValidation_module_css_default from "./InputValidation.module.css.js";
3
3
  import { c } from "react-compiler-runtime";
4
- import { clsx } from "clsx";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { clsx } from "clsx";
6
6
  import { AlertFillIcon, CheckCircleFillIcon } from "@primer/octicons-react";
7
7
  //#region src/internal/components/InputValidation.tsx
8
8
  const validationIconMap = {
@@ -1,8 +1,8 @@
1
1
  import useIsomorphicLayoutEffect from "../../utils/useIsomorphicLayoutEffect.js";
2
2
  import { OverflowObserverContext } from "../hooks/useOverflowObserver.js";
3
3
  import { c } from "react-compiler-runtime";
4
- import { jsx } from "react/jsx-runtime";
5
4
  import { useEffect, useRef } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
6
  //#region src/internal/components/OverflowObserverProvider.tsx
7
7
  /**
8
8
  * Owns a single `IntersectionObserver` shared by every descendant that calls `useIsClipped`, instead of each item
@@ -3,9 +3,9 @@ import { IconButton } from "../../Button/IconButton.js";
3
3
  import { ButtonComponent } from "../../Button/Button.js";
4
4
  import TextInputInnerAction_module_css_default from "./TextInputInnerAction.module.css.js";
5
5
  import { c } from "react-compiler-runtime";
6
- import { clsx } from "clsx";
7
- import { Fragment, jsx } from "react/jsx-runtime";
8
6
  import { forwardRef } from "react";
7
+ import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
8
+ import { clsx } from "clsx";
9
9
  //#region src/internal/components/TextInputInnerAction.tsx
10
10
  const ConditionalTooltip = (t0) => {
11
11
  const $ = c(6);
@@ -25,7 +25,7 @@ const ConditionalTooltip = (t0) => {
25
25
  } else t1 = $[3];
26
26
  let t2;
27
27
  if ($[4] !== t1) {
28
- t2 = /*#__PURE__*/ jsx(Fragment, { children: t1 });
28
+ t2 = /*#__PURE__*/ jsx(Fragment$1, { children: t1 });
29
29
  $[4] = t1;
30
30
  $[5] = t2;
31
31
  } else t2 = $[5];
@@ -1,8 +1,8 @@
1
1
  import Spinner from "../../Spinner/Spinner.js";
2
2
  import TextInputInnerVisualSlot_module_css_default from "./TextInputInnerVisualSlot.module.css.js";
3
3
  import { c } from "react-compiler-runtime";
4
- import { clsx } from "clsx";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { clsx } from "clsx";
6
6
  //#region src/internal/components/TextInputInnerVisualSlot.tsx
7
7
  const TextInputInnerVisualSlot = (t0) => {
8
8
  const $ = c(21);
@@ -1,8 +1,8 @@
1
1
  import TextInputWrapper_module_css_default from "./TextInputWrapper.module.css.js";
2
2
  import { c } from "react-compiler-runtime";
3
- import { clsx } from "clsx";
4
- import { jsx } from "react/jsx-runtime";
5
3
  import React from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { clsx } from "clsx";
6
6
  //#region src/internal/components/TextInputWrapper.tsx
7
7
  const TextInputBaseWrapper = /*#__PURE__*/ React.forwardRef(function TextInputBaseWrapper(t0, forwardRef) {
8
8
  const $ = c(44);
@@ -0,0 +1,2 @@
1
+ .prc-components-UnderlineWrapper-eT-Yj{align-items:flex-start;box-shadow:inset 0 -1px var(--borderColor-muted,#d1d9e0b3);display:flex;justify-content:flex-start;min-height:var(--control-xlarge-size,3rem);padding-top:var(--base-size-8,.5rem);padding-inline:var(--stack-padding-normal,1rem)}.prc-components-UnderlineWrapper-eT-Yj[data-variant=flush]{padding-inline:unset}.prc-components-UnderlineWrapper-eT-Yj[data-overflow-mode=wrap]{border:0!important;box-sizing:border-box!important;max-height:var(--control-xlarge-size,3rem);overflow:hidden;padding-block:var(--base-size-8,.5rem) 0!important}.prc-components-UnderlineWrapper-eT-Yj[data-overflow-mode=wrap] .prc-components-UnderlineItemList-xKlKC{flex-grow:1;flex-wrap:wrap;overflow:hidden}.prc-components-UnderlineItemList-xKlKC{contain:layout;display:flex;gap:var(--stack-gap-condensed,.5rem);list-style:none;margin:0;padding:0;white-space:nowrap}.prc-components-UnderlineItem-7fP-n,.prc-components-UnderlineItemList-xKlKC{align-items:center;position:relative}.prc-components-UnderlineItem-7fP-n{appearance:none;background-color:transparent;border:0;border-radius:var(--borderRadius-medium,.375rem);color:var(--fgColor-default,#1f2328);cursor:pointer;display:inline-flex;font:inherit;font-size:var(--text-body-size-medium,.875rem);height:var(--base-size-32,2rem);line-height:var(--text-body-lineHeight-medium,1.4285);margin-bottom:var(--base-size-8,.5rem);max-width:100%;padding-block:var(--base-size-6,.375rem);padding-inline:var(--base-size-8,.5rem);text-align:center;-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.prc-components-UnderlineItem-7fP-n:hover{background-color:var(--bgColor-neutral-muted,#818b981f);-webkit-text-decoration:none;text-decoration:none;transition:background-color .12s ease-out}}.prc-components-UnderlineItem-7fP-n:focus{box-shadow:inset 0 0 0 2px var(--fgColor-accent,#0969da);outline:2px solid transparent}.prc-components-UnderlineItem-7fP-n:focus:not(:focus-visible){box-shadow:none}.prc-components-UnderlineItem-7fP-n:focus-visible{box-shadow:inset 0 0 0 2px var(--fgColor-accent,#0969da);outline:2px solid transparent}.prc-components-UnderlineItem-7fP-n [data-content]:before{content:attr(data-content);display:block;font-weight:var(--base-text-weight-semibold,600);height:0;visibility:hidden;white-space:nowrap}.prc-components-UnderlineItem-7fP-n [data-component=icon]{align-items:center;color:var(--fgColor-muted,#59636e);display:inline-flex;margin-inline-end:var(--base-size-8,.5rem)}.prc-components-UnderlineItem-7fP-n [data-component=text]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prc-components-UnderlineItem-7fP-n [data-component=counter]{align-items:center;display:flex;margin-inline-start:var(--base-size-8,.5rem)}.prc-components-UnderlineItem-7fP-n:after{background-color:transparent;content:"";height:2px;inset:auto 0 0;margin-bottom:calc(var(--base-size-8,.5rem)*-1);pointer-events:none;position:absolute}.prc-components-UnderlineItem-7fP-n[aria-current]:not([aria-current=false]) [data-component=text],.prc-components-UnderlineItem-7fP-n[aria-selected=true] [data-component=text]{font-weight:var(--base-text-weight-semibold,600)}.prc-components-UnderlineItem-7fP-n[aria-current]:not([aria-current=false]):after,.prc-components-UnderlineItem-7fP-n[aria-selected=true]:after{background-color:var(--underlineNav-borderColor-active,var(--color-primer-border-active,#fd8c73))}@media (forced-colors:active){.prc-components-UnderlineItem-7fP-n[aria-current]:not([aria-current=false]):after,.prc-components-UnderlineItem-7fP-n[aria-selected=true]:after{background-color:LinkText}}.prc-components-LoadingCounter-dBuLy{animation:prc-components-loadingCounterKeyFrames-8tMlf 1.2s ease-in-out infinite alternate;background-color:var(--bgColor-neutral-muted,#818b981f);border-color:var(--borderColor-default,#d1d9e0);border-radius:20px;display:inline-block;height:1rem;width:1.5rem}@keyframes prc-components-loadingCounterKeyFrames-8tMlf{0%{opacity:1}to{opacity:.2}}
2
+ /*# sourceMappingURL=UnderlineTabbedInterface-a5cd75c0.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/internal/components/UnderlineTabbedInterface.module.css.js"],"names":[],"mappings":"AAAA,uCAME,sBAAuB,CAOvB,0DAAiD,CAZjD,YAAa,CAIb,0BAA2B,CAI3B,0CAAsC,CAPtC,oCAA+B,CAE/B,+CAgCF,CArBE,2DAEE,oBACF,CAEA,gEAOE,kBAAoB,CADpB,+BAAiC,CAHjC,0CAAsC,CADtC,eAAgB,CAMhB,kDAOF,CALE,wGACE,WAAY,CACZ,cAAe,CACf,eACF,CAIJ,wCAaE,cAAe,CAXf,YAAa,CAMb,oCAA+B,CAF/B,eAAgB,CAFhB,QAAS,CADT,SAAU,CAEV,kBASF,CAEA,4EATE,kBAAmB,CANnB,iBA8CF,CA/BA,oCAmBE,eAAgB,CARhB,4BAA6B,CAC7B,QAAS,CACT,gDAAyC,CANzC,oCAA6B,CAG7B,cAAe,CAPf,mBAAoB,CACpB,YAAa,CACb,8CAAuC,CAWvC,+BAA2B,CAV3B,qDAAuD,CASvD,sCAAiC,CADjC,cAAe,CAOf,wCAAiC,CADjC,uCAAkC,CAZlC,iBAAkB,CAClB,4BAAqB,CAArB,oBAsBF,CAPE,qBACE,0CAEE,uDAA8C,CAD9C,4BAAqB,CAArB,oBAAqB,CAErB,yCACF,CACF,CAGF,0CAGE,wDAAiD,CAFjD,6BAQF,CAHE,8DACE,eACF,CAGF,kDAGE,wDAAiD,CAFjD,6BAGF,CAGA,0DAME,0BAA2B,CAL3B,aAAc,CAEd,gDAA6C,CAD7C,QAAS,CAGT,iBAAkB,CADlB,kBAGF,CAEA,0DAGE,kBAAmB,CADnB,kCAA2B,CAD3B,mBAAoB,CAGpB,0CACF,CAGA,0DACE,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAEA,6DAGE,kBAAmB,CADnB,YAAa,CADb,4CAGF,CAEA,0CAOE,4BAA6B,CAD7B,UAAW,CAFX,UAAW,CAFX,cAAe,CACf,+CAA4C,CAE5C,mBAAoB,CAJpB,iBAOF,CAEA,gLAEE,gDACF,CAEA,gJAGE,iGAMF,CAJE,8BALF,gJAOI,yBAEJ,CADE,CAGF,qCASE,0FAAsE,CAJtE,uDAA8C,CAC9C,+CAAwC,CAExC,kBAAmB,CAPnB,oBAAqB,CAErB,WAAY,CADZ,YAQF,CAEA,wDACE,GACE,SACF,CAEA,GACE,UACF,CACF","file":"UnderlineTabbedInterface-a5cd75c0.css","sourcesContent":[".UnderlineWrapper {\n display: flex;\n padding-top: var(--base-size-8);\n /* stylelint-disable-next-line primer/spacing */\n padding-inline: var(--stack-padding-normal);\n justify-content: flex-start;\n align-items: flex-start;\n\n /* make space for the underline */\n min-height: var(--control-xlarge-size);\n\n /* using a box-shadow instead of a border to accommodate 'overflow-y: hidden' on UnderlinePanels */\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: inset 0 -1px var(--borderColor-muted);\n\n &[data-variant='flush'] {\n /* stylelint-disable-next-line primer/spacing */\n padding-inline: unset;\n }\n\n &[data-overflow-mode='wrap'] {\n /* Wrap items onto hidden next lines */\n overflow: hidden;\n max-height: var(--control-xlarge-size);\n\n /* Pin the vertical box model so external box-sizing/border/padding overrides can't change the height budget and incorrectly trigger the overflow \"more\" menu */\n box-sizing: border-box !important;\n border: 0 !important;\n padding-block: var(--base-size-8) 0 !important;\n\n .UnderlineItemList {\n flex-grow: 1;\n flex-wrap: wrap;\n overflow: hidden;\n }\n }\n}\n\n.UnderlineItemList {\n position: relative;\n display: flex;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n list-style: none;\n align-items: center;\n gap: var(--stack-gap-condensed);\n\n /* Isolate the ResizeObserver-driven item swapping (UnderlineNav overflow menu / UnderlinePanels)\n so it can't invalidate ancestor layout. Safe because UnderlineNav's overflow menu is rendered via ActionMenu.Overlay\n (portal by default), and layout containment does not clip. */\n contain: layout;\n}\n\n.UnderlineItem {\n /* underline tab specific styles */\n position: relative;\n display: inline-flex;\n font: inherit;\n font-size: var(--text-body-size-medium);\n line-height: var(--text-body-lineHeight-medium, 1.4285);\n color: var(--fgColor-default);\n text-align: center;\n text-decoration: none;\n cursor: pointer;\n background-color: transparent;\n border: 0;\n border-radius: var(--borderRadius-medium);\n max-width: 100%;\n margin-bottom: var(--base-size-8);\n height: var(--base-size-32);\n\n /* button resets */\n appearance: none;\n padding-inline: var(--base-size-8);\n padding-block: var(--base-size-6);\n align-items: center;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: none;\n background-color: var(--bgColor-neutral-muted);\n transition: background-color 0.12s ease-out;\n }\n }\n}\n\n.UnderlineItem:focus {\n outline: 2px solid transparent;\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: inset 0 0 0 2px var(--fgColor-accent);\n\n /* where focus-visible is supported, remove the focus box-shadow */\n &:not(:focus-visible) {\n box-shadow: none;\n }\n}\n\n.UnderlineItem:focus-visible {\n outline: 2px solid transparent;\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: inset 0 0 0 2px var(--fgColor-accent);\n}\n\n/* renders a visibly hidden \"copy\" of the label in bold, reserving box space for when label becomes bold on selected */\n.UnderlineItem [data-content]::before {\n display: block;\n height: 0;\n font-weight: var(--base-text-weight-semibold);\n white-space: nowrap;\n visibility: hidden;\n content: attr(data-content);\n}\n\n.UnderlineItem [data-component='icon'] {\n display: inline-flex;\n color: var(--fgColor-muted);\n align-items: center;\n margin-inline-end: var(--base-size-8);\n}\n\n/* Truncate items if necessary (should only ever apply to the last item after everything else overflows) */\n.UnderlineItem [data-component='text'] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.UnderlineItem [data-component='counter'] {\n margin-inline-start: var(--base-size-8);\n display: flex;\n align-items: center;\n}\n\n.UnderlineItem::after {\n position: absolute;\n inset: auto 0 0;\n margin-bottom: calc(-1 * var(--base-size-8));\n height: 2px;\n pointer-events: none;\n content: '';\n background-color: transparent;\n}\n\n.UnderlineItem[aria-current]:not([aria-current='false']) [data-component='text'],\n.UnderlineItem[aria-selected='true'] [data-component='text'] {\n font-weight: var(--base-text-weight-semibold);\n}\n\n.UnderlineItem[aria-current]:not([aria-current='false'])::after,\n.UnderlineItem[aria-selected='true']::after {\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--underlineNav-borderColor-active, var(--color-primer-border-active, #fd8c73));\n\n @media (forced-colors: active) {\n /* Support for Window Force Color Mode https://learn.microsoft.com/en-us/fluent-ui/web-components/design-system/high-contrast */\n background-color: LinkText;\n }\n}\n\n.LoadingCounter {\n display: inline-block;\n width: 1.5rem;\n height: 1rem;\n /* 16px */\n background-color: var(--bgColor-neutral-muted);\n border-color: var(--borderColor-default);\n /* stylelint-disable-next-line primer/borders */\n border-radius: 20px;\n animation: loadingCounterKeyFrames 1.2s ease-in-out infinite alternate;\n}\n\n@keyframes loadingCounterKeyFrames {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0.2;\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import CounterLabel from "../../CounterLabel/CounterLabel.js";
2
2
  import UnderlineTabbedInterface_module_css_default from "./UnderlineTabbedInterface.module.css.js";
3
3
  import { c } from "react-compiler-runtime";
4
- import { clsx } from "clsx";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
4
  import React, { forwardRef } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { clsx } from "clsx";
7
7
  import { isElement } from "react-is";
8
8
  //#region src/internal/components/UnderlineTabbedInterface.tsx
9
9
  function getTextContent(children) {
@@ -1,4 +1,4 @@
1
- import "./UnderlineTabbedInterface-8a52007f.css";
1
+ import "./UnderlineTabbedInterface-a5cd75c0.css";
2
2
  //#region src/internal/components/UnderlineTabbedInterface.module.css.js
3
3
  var UnderlineTabbedInterface_module_css_default = {
4
4
  "UnderlineWrapper": "prc-components-UnderlineWrapper-eT-Yj",
@@ -1,8 +1,8 @@
1
1
  import UnstyledTextInput_module_css_default from "./UnstyledTextInput.module.css.js";
2
2
  import { c } from "react-compiler-runtime";
3
- import { clsx } from "clsx";
4
- import { jsx } from "react/jsx-runtime";
5
3
  import React from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { clsx } from "clsx";
6
6
  //#region src/internal/components/UnstyledTextInput.tsx
7
7
  const UnstyledTextInput = /*#__PURE__*/ React.forwardRef(function UnstyledTextInput(t0, forwardRef) {
8
8
  const $ = c(9);
@@ -1,7 +1,7 @@
1
1
  import ValidationAnimationContainer_module_css_default from "./ValidationAnimationContainer.module.css.js";
2
2
  import { c } from "react-compiler-runtime";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { useState } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  //#region src/internal/components/ValidationAnimationContainer.tsx
6
6
  const ValidationAnimationContainer = (t0) => {
7
7
  const $ = c(14);
@@ -1,9 +1,9 @@
1
1
  import { useEffectOnce } from "../internal/hooks/useEffectOnce.js";
2
2
  import { useEffectCallback } from "../internal/hooks/useEffectCallback.js";
3
3
  import { c } from "react-compiler-runtime";
4
- import { jsx } from "react/jsx-runtime";
5
- import { useEffect, useRef } from "react";
6
4
  import { announceFromElement } from "@primer/live-region-element";
5
+ import { useEffect, useRef } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
7
  //#region src/live-region/Announce.tsx
8
8
  /**
9
9
  * `Announce` is a component that will announce the text content of the
@@ -2,7 +2,7 @@ import { PolymorphicProps } from "../utils/modern-polymorphic.js";
2
2
  import React, { ElementType } from "react";
3
3
 
4
4
  //#region src/live-region/AriaAlert.d.ts
5
- type AriaAlertProps<As extends ElementType> = PolymorphicProps<As, 'div', {
5
+ type AriaAlertProps<As extends ElementType = 'div'> = PolymorphicProps<As, 'div', {
6
6
  /**
7
7
  * Specify if the content of the element should be announced when this
8
8
  * component is rendered and is not hidden
@@ -1,7 +1,7 @@
1
1
  import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect.js";
2
2
  import { c } from "react-compiler-runtime";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { createContext, useContext, useEffect, useId, useReducer, useRef, useState } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  //#region src/utils/descendant-registry.tsx
6
6
  /**
7
7
  * Create a "descendant registry" for a component. This allows a parent to store and track an ordered registry of
@@ -9151,6 +9151,79 @@
9151
9151
  }
9152
9152
  ]
9153
9153
  },
9154
+ "aria-alert": {
9155
+ "source": "https://github.com/primer/react/tree/main/packages/react/src/live-region",
9156
+ "id": "aria-alert",
9157
+ "name": "AriaAlert",
9158
+ "status": "alpha",
9159
+ "a11yReviewed": false,
9160
+ "importPath": "@primer/react",
9161
+ "stories": [
9162
+ {
9163
+ "id": "components-ariaalert--default",
9164
+ "code": "() => {\n const [message, setMessage] = useState('Default message')\n useEffect(() => {\n const interval = setInterval(() => {\n setMessage(`Last updated at ${new Date().toLocaleTimeString()}`)\n }, 5000)\n return () => {\n clearInterval(interval)\n }\n }, [])\n return <AriaAlert>{message}</AriaAlert>\n}"
9165
+ },
9166
+ {
9167
+ "id": "components-ariaalert-features--visually-hidden-story",
9168
+ "code": "() => {\n return (\n <>\n <p>This is an example</p>\n <VisuallyHidden>\n <AriaAlert>A visually hidden message</AriaAlert>\n </VisuallyHidden>\n </>\n )\n}"
9169
+ }
9170
+ ],
9171
+ "props": [
9172
+ {
9173
+ "name": "announceOnShow",
9174
+ "type": "boolean",
9175
+ "description": "Specify if the content of the element should be announced when this component is rendered and is not hidden",
9176
+ "defaultValue": "true"
9177
+ },
9178
+ {
9179
+ "name": "hidden",
9180
+ "type": "boolean",
9181
+ "description": "Specify if the element is hidden",
9182
+ "defaultValue": "false"
9183
+ }
9184
+ ]
9185
+ },
9186
+ "aria-status": {
9187
+ "source": "https://github.com/primer/react/tree/main/packages/react/src/live-region",
9188
+ "id": "aria-status",
9189
+ "name": "AriaStatus",
9190
+ "status": "alpha",
9191
+ "a11yReviewed": false,
9192
+ "importPath": "@primer/react",
9193
+ "stories": [
9194
+ {
9195
+ "id": "components-ariastatus--default",
9196
+ "code": "() => {\n const [message, setMessage] = useState('Default message')\n useEffect(() => {\n const interval = setInterval(() => {\n setMessage(`Last updated at ${new Date().toLocaleTimeString()}`)\n }, 5000)\n return () => {\n clearInterval(interval)\n }\n }, [])\n return <AriaStatus>{message}</AriaStatus>\n}"
9197
+ },
9198
+ {
9199
+ "id": "components-ariastatus-features--visually-hidden-story",
9200
+ "code": "() => {\n return (\n <>\n <p>This is an example</p>\n <VisuallyHidden>\n <AriaStatus>A visually hidden message</AriaStatus>\n </VisuallyHidden>\n </>\n )\n}"
9201
+ },
9202
+ {
9203
+ "id": "components-ariastatus-features--with-delay",
9204
+ "code": "() => {\n const [message, setMessage] = useState('Default message')\n useEffect(() => {\n const interval = setInterval(() => {\n setMessage(`Last updated at ${new Date().toLocaleTimeString()}`)\n }, 5000)\n return () => {\n clearInterval(interval)\n }\n }, [])\n return <AriaStatus delayMs={1000}>{message}</AriaStatus>\n}"
9205
+ }
9206
+ ],
9207
+ "props": [
9208
+ {
9209
+ "name": "announceOnShow",
9210
+ "type": "boolean",
9211
+ "description": "Specify if the content of the element should be announced when this component is rendered and is not hidden",
9212
+ "defaultValue": "false"
9213
+ },
9214
+ {
9215
+ "name": "hidden",
9216
+ "type": "boolean",
9217
+ "description": "Specify if the element is hidden",
9218
+ "defaultValue": "false"
9219
+ },
9220
+ {
9221
+ "name": "delayMs",
9222
+ "type": "number",
9223
+ "description": "Provide a delay in milliseconds before the announcement is made"
9224
+ }
9225
+ ]
9226
+ },
9154
9227
  "dialog": {
9155
9228
  "source": "https://github.com/primer/react/tree/main/packages/react/src/deprecated/DialogV1",
9156
9229
  "id": "dialog",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@primer/react",
3
3
  "type": "module",
4
- "version": "38.37.1-rc.f1c7ced7b",
4
+ "version": "38.38.0-rc.1d4172bf2",
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,2 +0,0 @@
1
- .prc-components-UnderlineWrapper-eT-Yj{align-items:flex-start;box-shadow:inset 0 -1px var(--borderColor-muted,#d1d9e0b3);display:flex;justify-content:flex-start;min-height:var(--control-xlarge-size,3rem);padding-top:var(--base-size-8,.5rem);padding-inline:var(--stack-padding-normal,1rem)}.prc-components-UnderlineWrapper-eT-Yj[data-variant=flush]{padding-inline:unset}.prc-components-UnderlineWrapper-eT-Yj[data-overflow-mode=wrap]{border-block:0!important;box-sizing:border-box!important;max-height:var(--control-xlarge-size,3rem);overflow:hidden;padding-block:var(--base-size-8,.5rem) 0!important}.prc-components-UnderlineWrapper-eT-Yj[data-overflow-mode=wrap] .prc-components-UnderlineItemList-xKlKC{flex-grow:1;flex-wrap:wrap;overflow:hidden}.prc-components-UnderlineItemList-xKlKC{contain:layout;display:flex;gap:var(--stack-gap-condensed,.5rem);list-style:none;margin:0;padding:0;white-space:nowrap}.prc-components-UnderlineItem-7fP-n,.prc-components-UnderlineItemList-xKlKC{align-items:center;position:relative}.prc-components-UnderlineItem-7fP-n{appearance:none;background-color:transparent;border:0;border-radius:var(--borderRadius-medium,.375rem);color:var(--fgColor-default,#1f2328);cursor:pointer;display:inline-flex;font:inherit;font-size:var(--text-body-size-medium,.875rem);height:var(--base-size-32,2rem);line-height:var(--text-body-lineHeight-medium,1.4285);margin-bottom:var(--base-size-8,.5rem);max-width:100%;padding-block:var(--base-size-6,.375rem);padding-inline:var(--base-size-8,.5rem);text-align:center;-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.prc-components-UnderlineItem-7fP-n:hover{background-color:var(--bgColor-neutral-muted,#818b981f);-webkit-text-decoration:none;text-decoration:none;transition:background-color .12s ease-out}}.prc-components-UnderlineItem-7fP-n:focus{box-shadow:inset 0 0 0 2px var(--fgColor-accent,#0969da);outline:2px solid transparent}.prc-components-UnderlineItem-7fP-n:focus:not(:focus-visible){box-shadow:none}.prc-components-UnderlineItem-7fP-n:focus-visible{box-shadow:inset 0 0 0 2px var(--fgColor-accent,#0969da);outline:2px solid transparent}.prc-components-UnderlineItem-7fP-n [data-content]:before{content:attr(data-content);display:block;font-weight:var(--base-text-weight-semibold,600);height:0;visibility:hidden;white-space:nowrap}.prc-components-UnderlineItem-7fP-n [data-component=icon]{align-items:center;color:var(--fgColor-muted,#59636e);display:inline-flex;margin-inline-end:var(--base-size-8,.5rem)}.prc-components-UnderlineItem-7fP-n [data-component=text]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prc-components-UnderlineItem-7fP-n [data-component=counter]{align-items:center;display:flex;margin-inline-start:var(--base-size-8,.5rem)}.prc-components-UnderlineItem-7fP-n:after{background-color:transparent;content:"";height:2px;inset:auto 0 0;margin-bottom:calc(var(--base-size-8,.5rem)*-1);pointer-events:none;position:absolute}.prc-components-UnderlineItem-7fP-n[aria-current]:not([aria-current=false]) [data-component=text],.prc-components-UnderlineItem-7fP-n[aria-selected=true] [data-component=text]{font-weight:var(--base-text-weight-semibold,600)}.prc-components-UnderlineItem-7fP-n[aria-current]:not([aria-current=false]):after,.prc-components-UnderlineItem-7fP-n[aria-selected=true]:after{background-color:var(--underlineNav-borderColor-active,var(--color-primer-border-active,#fd8c73))}@media (forced-colors:active){.prc-components-UnderlineItem-7fP-n[aria-current]:not([aria-current=false]):after,.prc-components-UnderlineItem-7fP-n[aria-selected=true]:after{background-color:LinkText}}.prc-components-LoadingCounter-dBuLy{animation:prc-components-loadingCounterKeyFrames-8tMlf 1.2s ease-in-out infinite alternate;background-color:var(--bgColor-neutral-muted,#818b981f);border-color:var(--borderColor-default,#d1d9e0);border-radius:20px;display:inline-block;height:1rem;width:1.5rem}@keyframes prc-components-loadingCounterKeyFrames-8tMlf{0%{opacity:1}to{opacity:.2}}
2
- /*# sourceMappingURL=UnderlineTabbedInterface-8a52007f.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/internal/components/UnderlineTabbedInterface.module.css.js"],"names":[],"mappings":"AAAA,uCAME,sBAAuB,CAOvB,0DAAiD,CAZjD,YAAa,CAIb,0BAA2B,CAI3B,0CAAsC,CAPtC,oCAA+B,CAE/B,+CAgCF,CArBE,2DAEE,oBACF,CAEA,gEAOE,wBAA0B,CAD1B,+BAAiC,CAHjC,0CAAsC,CADtC,eAAgB,CAMhB,kDAOF,CALE,wGACE,WAAY,CACZ,cAAe,CACf,eACF,CAIJ,wCAaE,cAAe,CAXf,YAAa,CAMb,oCAA+B,CAF/B,eAAgB,CAFhB,QAAS,CADT,SAAU,CAEV,kBASF,CAEA,4EATE,kBAAmB,CANnB,iBA8CF,CA/BA,oCAmBE,eAAgB,CARhB,4BAA6B,CAC7B,QAAS,CACT,gDAAyC,CANzC,oCAA6B,CAG7B,cAAe,CAPf,mBAAoB,CACpB,YAAa,CACb,8CAAuC,CAWvC,+BAA2B,CAV3B,qDAAuD,CASvD,sCAAiC,CADjC,cAAe,CAOf,wCAAiC,CADjC,uCAAkC,CAZlC,iBAAkB,CAClB,4BAAqB,CAArB,oBAsBF,CAPE,qBACE,0CAEE,uDAA8C,CAD9C,4BAAqB,CAArB,oBAAqB,CAErB,yCACF,CACF,CAGF,0CAGE,wDAAiD,CAFjD,6BAQF,CAHE,8DACE,eACF,CAGF,kDAGE,wDAAiD,CAFjD,6BAGF,CAGA,0DAME,0BAA2B,CAL3B,aAAc,CAEd,gDAA6C,CAD7C,QAAS,CAGT,iBAAkB,CADlB,kBAGF,CAEA,0DAGE,kBAAmB,CADnB,kCAA2B,CAD3B,mBAAoB,CAGpB,0CACF,CAGA,0DACE,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAEA,6DAGE,kBAAmB,CADnB,YAAa,CADb,4CAGF,CAEA,0CAOE,4BAA6B,CAD7B,UAAW,CAFX,UAAW,CAFX,cAAe,CACf,+CAA4C,CAE5C,mBAAoB,CAJpB,iBAOF,CAEA,gLAEE,gDACF,CAEA,gJAGE,iGAMF,CAJE,8BALF,gJAOI,yBAEJ,CADE,CAGF,qCASE,0FAAsE,CAJtE,uDAA8C,CAC9C,+CAAwC,CAExC,kBAAmB,CAPnB,oBAAqB,CAErB,WAAY,CADZ,YAQF,CAEA,wDACE,GACE,SACF,CAEA,GACE,UACF,CACF","file":"UnderlineTabbedInterface-8a52007f.css","sourcesContent":[".UnderlineWrapper {\n display: flex;\n padding-top: var(--base-size-8);\n /* stylelint-disable-next-line primer/spacing */\n padding-inline: var(--stack-padding-normal);\n justify-content: flex-start;\n align-items: flex-start;\n\n /* make space for the underline */\n min-height: var(--control-xlarge-size);\n\n /* using a box-shadow instead of a border to accommodate 'overflow-y: hidden' on UnderlinePanels */\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: inset 0 -1px var(--borderColor-muted);\n\n &[data-variant='flush'] {\n /* stylelint-disable-next-line primer/spacing */\n padding-inline: unset;\n }\n\n &[data-overflow-mode='wrap'] {\n /* Wrap items onto hidden next lines */\n overflow: hidden;\n max-height: var(--control-xlarge-size);\n\n /* Pin the vertical box model so external box-sizing/border/padding overrides can't change the height budget and incorrectly trigger the overflow \"more\" menu */\n box-sizing: border-box !important;\n border-block: 0 !important;\n padding-block: var(--base-size-8) 0 !important;\n\n .UnderlineItemList {\n flex-grow: 1;\n flex-wrap: wrap;\n overflow: hidden;\n }\n }\n}\n\n.UnderlineItemList {\n position: relative;\n display: flex;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n list-style: none;\n align-items: center;\n gap: var(--stack-gap-condensed);\n\n /* Isolate the ResizeObserver-driven item swapping (UnderlineNav overflow menu / UnderlinePanels)\n so it can't invalidate ancestor layout. Safe because UnderlineNav's overflow menu is rendered via ActionMenu.Overlay\n (portal by default), and layout containment does not clip. */\n contain: layout;\n}\n\n.UnderlineItem {\n /* underline tab specific styles */\n position: relative;\n display: inline-flex;\n font: inherit;\n font-size: var(--text-body-size-medium);\n line-height: var(--text-body-lineHeight-medium, 1.4285);\n color: var(--fgColor-default);\n text-align: center;\n text-decoration: none;\n cursor: pointer;\n background-color: transparent;\n border: 0;\n border-radius: var(--borderRadius-medium);\n max-width: 100%;\n margin-bottom: var(--base-size-8);\n height: var(--base-size-32);\n\n /* button resets */\n appearance: none;\n padding-inline: var(--base-size-8);\n padding-block: var(--base-size-6);\n align-items: center;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: none;\n background-color: var(--bgColor-neutral-muted);\n transition: background-color 0.12s ease-out;\n }\n }\n}\n\n.UnderlineItem:focus {\n outline: 2px solid transparent;\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: inset 0 0 0 2px var(--fgColor-accent);\n\n /* where focus-visible is supported, remove the focus box-shadow */\n &:not(:focus-visible) {\n box-shadow: none;\n }\n}\n\n.UnderlineItem:focus-visible {\n outline: 2px solid transparent;\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: inset 0 0 0 2px var(--fgColor-accent);\n}\n\n/* renders a visibly hidden \"copy\" of the label in bold, reserving box space for when label becomes bold on selected */\n.UnderlineItem [data-content]::before {\n display: block;\n height: 0;\n font-weight: var(--base-text-weight-semibold);\n white-space: nowrap;\n visibility: hidden;\n content: attr(data-content);\n}\n\n.UnderlineItem [data-component='icon'] {\n display: inline-flex;\n color: var(--fgColor-muted);\n align-items: center;\n margin-inline-end: var(--base-size-8);\n}\n\n/* Truncate items if necessary (should only ever apply to the last item after everything else overflows) */\n.UnderlineItem [data-component='text'] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.UnderlineItem [data-component='counter'] {\n margin-inline-start: var(--base-size-8);\n display: flex;\n align-items: center;\n}\n\n.UnderlineItem::after {\n position: absolute;\n inset: auto 0 0;\n margin-bottom: calc(-1 * var(--base-size-8));\n height: 2px;\n pointer-events: none;\n content: '';\n background-color: transparent;\n}\n\n.UnderlineItem[aria-current]:not([aria-current='false']) [data-component='text'],\n.UnderlineItem[aria-selected='true'] [data-component='text'] {\n font-weight: var(--base-text-weight-semibold);\n}\n\n.UnderlineItem[aria-current]:not([aria-current='false'])::after,\n.UnderlineItem[aria-selected='true']::after {\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--underlineNav-borderColor-active, var(--color-primer-border-active, #fd8c73));\n\n @media (forced-colors: active) {\n /* Support for Window Force Color Mode https://learn.microsoft.com/en-us/fluent-ui/web-components/design-system/high-contrast */\n background-color: LinkText;\n }\n}\n\n.LoadingCounter {\n display: inline-block;\n width: 1.5rem;\n height: 1rem;\n /* 16px */\n background-color: var(--bgColor-neutral-muted);\n border-color: var(--borderColor-default);\n /* stylelint-disable-next-line primer/borders */\n border-radius: 20px;\n animation: loadingCounterKeyFrames 1.2s ease-in-out infinite alternate;\n}\n\n@keyframes loadingCounterKeyFrames {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0.2;\n }\n}\n"]}