diff --git a/canon-docs/src/app/(docs)/components/menu/page.mdx b/canon-docs/src/app/(docs)/components/menu/page.mdx index 98c4949438..524db26cd1 100644 --- a/canon-docs/src/app/(docs)/components/menu/page.mdx +++ b/canon-docs/src/app/(docs)/components/menu/page.mdx @@ -155,3 +155,48 @@ You can additionally configure how quickly the menu opens on hover using the `de `} /> + +### Nested navigation + +You can nest menus to create a more complex navigation structure. + +} + code={` ( + + )} + /> + + + + Settings + Invite new members + Download app + Log out + + Submenu + + + + Submenu Item 1 + Submenu Item 2 + Submenu Item 3 + + + + + + + `} +/> diff --git a/packages/canon/css/components.css b/packages/canon/css/components.css index 23f1b69728..124d575a96 100644 --- a/packages/canon/css/components.css +++ b/packages/canon/css/components.css @@ -701,6 +701,7 @@ transform-origin: var(--transform-origin); max-width: min(var(--available-width), 340px); max-height: min(var(--available-height), 500px); + padding-bottom: var(--canon-space-1); border-radius: .375rem; outline: none; flex-direction: column; @@ -735,10 +736,6 @@ margin-top: var(--canon-space-1); } - &:last-child { - margin-bottom: var(--canon-space-1); - } - &[data-highlighted] { background-color: var(--canon-gray-3); } @@ -765,6 +762,10 @@ color: var(--canon-fg-secondary); } + &:first-child { + margin-top: var(--canon-space-1); + } + &[data-popup-open], &[data-highlighted] { background-color: var(--canon-gray-3); diff --git a/packages/canon/css/menu.css b/packages/canon/css/menu.css index 7671217198..4c9433275c 100644 --- a/packages/canon/css/menu.css +++ b/packages/canon/css/menu.css @@ -9,6 +9,7 @@ transform-origin: var(--transform-origin); max-width: min(var(--available-width), 340px); max-height: min(var(--available-height), 500px); + padding-bottom: var(--canon-space-1); border-radius: .375rem; outline: none; flex-direction: column; @@ -43,10 +44,6 @@ margin-top: var(--canon-space-1); } - &:last-child { - margin-bottom: var(--canon-space-1); - } - &[data-highlighted] { background-color: var(--canon-gray-3); } @@ -73,6 +70,10 @@ color: var(--canon-fg-secondary); } + &:first-child { + margin-top: var(--canon-space-1); + } + &[data-popup-open], &[data-highlighted] { background-color: var(--canon-gray-3); diff --git a/packages/canon/css/styles.css b/packages/canon/css/styles.css index c441260aaa..084aef2855 100644 --- a/packages/canon/css/styles.css +++ b/packages/canon/css/styles.css @@ -9925,6 +9925,7 @@ transform-origin: var(--transform-origin); max-width: min(var(--available-width), 340px); max-height: min(var(--available-height), 500px); + padding-bottom: var(--canon-space-1); border-radius: .375rem; outline: none; flex-direction: column; @@ -9959,10 +9960,6 @@ margin-top: var(--canon-space-1); } - &:last-child { - margin-bottom: var(--canon-space-1); - } - &[data-highlighted] { background-color: var(--canon-gray-3); } @@ -9989,6 +9986,10 @@ color: var(--canon-fg-secondary); } + &:first-child { + margin-top: var(--canon-space-1); + } + &[data-popup-open], &[data-highlighted] { background-color: var(--canon-gray-3); diff --git a/packages/canon/src/components/Menu/Menu.stories.tsx b/packages/canon/src/components/Menu/Menu.stories.tsx index a41faffc19..578ce945ae 100644 --- a/packages/canon/src/components/Menu/Menu.stories.tsx +++ b/packages/canon/src/components/Menu/Menu.stories.tsx @@ -16,7 +16,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Menu } from './Menu'; -import { Text, Icon, Button } from '../../index'; +import { Text, Icon, Button, Flex } from '../../index'; import { useState } from 'react'; const meta = { @@ -131,7 +131,7 @@ export const SubmenuCombobox = () => { const [selectedValues, setSelectedValues] = useState([]); return ( - <> + {selectedValues.length === 0 ? 'Which is your favorite fruit?' @@ -173,7 +173,7 @@ export const SubmenuCombobox = () => { - + ); }; @@ -181,7 +181,7 @@ export const SubmenuComboboxMultiselect = () => { const [selectedValues, setSelectedValues] = useState([]); return ( - <> + {selectedValues.length === 0 ? 'Tell us what fruits you like.' @@ -226,6 +226,6 @@ export const SubmenuComboboxMultiselect = () => { - + ); }; diff --git a/packages/canon/src/components/Menu/Menu.styles.css b/packages/canon/src/components/Menu/Menu.styles.css index 4e2b473162..07d257f57f 100644 --- a/packages/canon/src/components/Menu/Menu.styles.css +++ b/packages/canon/src/components/Menu/Menu.styles.css @@ -16,6 +16,7 @@ max-height: min(var(--available-height), 500px); transition: transform 150ms, opacity 150ms; position: relative; + padding-bottom: var(--canon-space-1); &[data-starting-style], &[data-ending-style] { @@ -44,10 +45,6 @@ margin-top: var(--canon-space-1); } - &:last-child { - margin-bottom: var(--canon-space-1); - } - &[data-highlighted] { background-color: var(--canon-gray-3); } @@ -74,6 +71,10 @@ color: var(--canon-fg-secondary); } + &:first-child { + margin-top: var(--canon-space-1); + } + &[data-popup-open], &[data-highlighted] { background-color: var(--canon-gray-3);