diff --git a/.changeset/tab-hover-underline.md b/.changeset/tab-hover-underline.md
new file mode 100644
index 000000000000..73afb31896f4
--- /dev/null
+++ b/.changeset/tab-hover-underline.md
@@ -0,0 +1,9 @@
+---
+'@astryxdesign/core': patch
+---
+
+[fix] Restore the light underline on Tab and TabMenu hover (#2768)
+
+Hovering an unselected tab now reveals a light bottom-bar underline — a muted version of the selected-tab indicator — instead of the filled ghost-button pill introduced in #1357.
+
+@kentonquatman
diff --git a/packages/core/src/TabList/Tab.tsx b/packages/core/src/TabList/Tab.tsx
index dcf4f118c85d..56e621dc9027 100644
--- a/packages/core/src/TabList/Tab.tsx
+++ b/packages/core/src/TabList/Tab.tsx
@@ -115,23 +115,6 @@ const styles = stylex.create({
':focus-visible': '2px',
},
},
- hoverBg: {
- position: 'absolute',
- inset: 0,
- margin: 'auto',
- width: '100%',
- borderRadius: radiusVars['--radius-element'],
- pointerEvents: 'none',
- backgroundColor: {
- default: 'transparent',
- [stylex.when.ancestor(':hover', tabScope)]: {
- '@media (hover: hover)': colorVars['--color-overlay-hover'],
- },
- },
- transitionProperty: 'background-color',
- transitionDuration: durationVars['--duration-fast'],
- transitionTimingFunction: easeVars['--ease-standard'],
- },
selected: {
color: colorVars['--color-text-primary'],
fontWeight: fontWeightVars['--font-weight-semibold'],
@@ -153,8 +136,13 @@ const styles = stylex.create({
opacity: 1,
},
indicatorUnselected: {
- backgroundColor: 'transparent',
- opacity: 0,
+ backgroundColor: colorVars['--color-accent'],
+ opacity: {
+ default: 0,
+ [stylex.when.ancestor(':hover', tabScope)]: {
+ '@media (hover: hover)': 0.4,
+ },
+ },
},
icon: {
display: 'inline-flex',
@@ -189,13 +177,6 @@ const sizeStyles = stylex.create({
lg: {height: sizeVars['--size-element-lg']},
});
-// Hover bg uses the standard element size (one step smaller than tab)
-const hoverSizeStyles = stylex.create({
- sm: {height: sizeVars['--size-element-sm']},
- md: {height: sizeVars['--size-element-md']},
- lg: {height: sizeVars['--size-element-lg']},
-});
-
const layoutStyles = stylex.create({
fill: {
flex: 1,
@@ -283,13 +264,6 @@ export function Tab({
),
};
- const hoverBgElement = (
-
- );
-
const indicatorElement = (
- {hoverBgElement}
{iconElement}
{labelElement}
{endContentElement}
@@ -335,7 +308,6 @@ export function Tab({
return (
{popover.render(