/* Navigation Menu mapping. ui-viz has no Navigation Menu spec, so these are current HM values built from the HM Semantic tokens. It is for navigation destinations: top-level triggers and links share one text-button look, the current location (Radix `data-active`) is bold and tinted, and the content / viewport is a floating panel that can hold links with descriptions. Radix attributes drive the states (data-state, data-active, data-motion). No --hm-dropdown-menu-* token is referenced. */ :root, [data-hm-theme] { --hm-navigation-menu-height: 34px; --hm-navigation-menu-padding-x: 12px; --hm-navigation-menu-gap: 4px; --hm-navigation-menu-radius: var(--hm-radius-control-md); --hm-navigation-menu-font-size: 14px; --hm-navigation-menu-line-height: 20px; --hm-navigation-menu-font-weight: 500; --hm-navigation-menu-text: var(--hm-sem-fg-primary); --hm-navigation-menu-icon-size: 12px; --hm-navigation-menu-hover-background: var(--accent); --hm-navigation-menu-hover-text: var(--accent-foreground); /* Current location: same family as the Tabs / Select highlight (green tint), softer than hover. */ --hm-navigation-menu-active-background: var(--hm-sem-surface-highlight); --hm-navigation-menu-active-text: var(--hm-sem-action-primary); --hm-navigation-menu-active-font-weight: 700; /* Content / viewport surface */ --hm-navigation-menu-background: var(--hm-sem-floating-background); --hm-navigation-menu-border-width: var(--hm-sem-floating-border-width); --hm-navigation-menu-border-color: var(--hm-sem-floating-border-color); --hm-navigation-menu-surface-radius: var(--hm-sem-floating-radius); --hm-navigation-menu-shadow: var(--hm-sem-floating-shadow); --hm-navigation-menu-content-padding: 8px; --hm-navigation-menu-content-min-width: 240px; /* Link inside the content (destination with an optional description) */ --hm-navigation-menu-item-padding: 8px 12px; --hm-navigation-menu-item-gap: 2px; --hm-navigation-menu-item-radius: 2px; --hm-navigation-menu-description-color: var(--hm-sem-fg-secondary); --hm-navigation-menu-description-font-size: 12px; --hm-navigation-menu-description-line-height: 18px; /* Current HM value for this component only; not a global Disabled rule. */ --hm-navigation-menu-disabled-opacity: 0.6; } [data-slot="navigation-menu-list"] { gap: var(--hm-navigation-menu-gap); } /* Top-level trigger and link: the same text-button look. */ [data-slot="navigation-menu-trigger"], [data-slot="navigation-menu-link"] { box-sizing: border-box; align-items: center; height: var(--hm-navigation-menu-height); padding: 0 var(--hm-navigation-menu-padding-x); border-radius: var(--hm-navigation-menu-radius); background: transparent; color: var(--hm-navigation-menu-text); font-size: var(--hm-navigation-menu-font-size); line-height: var(--hm-navigation-menu-line-height); font-weight: var(--hm-navigation-menu-font-weight); text-decoration: none; cursor: pointer; } [data-slot="navigation-menu-trigger"]:hover, [data-slot="navigation-menu-trigger"]:focus-visible, [data-slot="navigation-menu-trigger"][data-state="open"], [data-slot="navigation-menu-link"]:hover, [data-slot="navigation-menu-link"]:focus-visible { background: var(--hm-navigation-menu-hover-background); color: var(--hm-navigation-menu-hover-text); } [data-slot="navigation-menu-trigger"]:focus-visible, [data-slot="navigation-menu-link"]:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 50%, transparent); } [data-slot="navigation-menu-link"][data-active] { background: var(--hm-navigation-menu-active-background); color: var(--hm-navigation-menu-active-text); font-weight: var(--hm-navigation-menu-active-font-weight); } [data-slot="navigation-menu-link"][data-active]:hover, [data-slot="navigation-menu-link"][data-active]:focus-visible { background: var(--hm-navigation-menu-hover-background); } [data-slot="navigation-menu-trigger"]:disabled { opacity: var(--hm-navigation-menu-disabled-opacity); cursor: not-allowed; } [data-slot="navigation-menu-trigger-icon"] { width: var(--hm-navigation-menu-icon-size); height: var(--hm-navigation-menu-icon-size); } /* Floating panel: the viewport carries the surface (viewport mode) or the content does (viewport={false}). */ [data-slot="navigation-menu-viewport"], [data-viewport="false"] [data-slot="navigation-menu-content"] { border: var(--hm-navigation-menu-border-width) solid var(--hm-navigation-menu-border-color); border-radius: var(--hm-navigation-menu-surface-radius); background: var(--hm-navigation-menu-background); color: var(--hm-navigation-menu-text); box-shadow: var(--hm-navigation-menu-shadow); } [data-slot="navigation-menu-content"] { box-sizing: border-box; min-width: var(--hm-navigation-menu-content-min-width); padding: var(--hm-navigation-menu-content-padding); } [data-slot="navigation-menu-indicator-arrow"] { background: var(--hm-navigation-menu-border-color); } /* Links inside the content are destinations: block items, optional title + description children. */ [data-slot="navigation-menu-content"] [data-slot="navigation-menu-link"] { height: auto; flex-direction: column; align-items: stretch; gap: var(--hm-navigation-menu-item-gap); padding: var(--hm-navigation-menu-item-padding); border-radius: var(--hm-navigation-menu-item-radius); } [data-slot="navigation-menu-content"] [data-slot="navigation-menu-link"] [data-description] { color: var(--hm-navigation-menu-description-color); font-size: var(--hm-navigation-menu-description-font-size); line-height: var(--hm-navigation-menu-description-line-height); font-weight: 400; } [data-slot="navigation-menu-content"] [data-slot="navigation-menu-link"]:hover [data-description], [data-slot="navigation-menu-content"] [data-slot="navigation-menu-link"]:focus-visible [data-description] { color: inherit; }