From 96af5e034b02572a4f82e47e917815d1bb3ec0f0 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sun, 23 Mar 2025 16:11:53 +0000 Subject: [PATCH 1/3] Fix Menu styles Signed-off-by: Charles de Dreuille --- .../src/components/Menu/Menu.stories.tsx | 18 +++- .../canon/src/components/Menu/Menu.styles.css | 90 ++++--------------- 2 files changed, 35 insertions(+), 73 deletions(-) diff --git a/packages/canon/src/components/Menu/Menu.stories.tsx b/packages/canon/src/components/Menu/Menu.stories.tsx index c971483b16..58284052af 100644 --- a/packages/canon/src/components/Menu/Menu.stories.tsx +++ b/packages/canon/src/components/Menu/Menu.stories.tsx @@ -17,6 +17,7 @@ import React from 'react'; import type { Meta, StoryObj } from '@storybook/react'; import { Menu } from './Menu'; +import { Button } from '../Button'; const meta = { title: 'Components/Menu', @@ -30,9 +31,15 @@ export const Default: Story = { args: { children: ( <> - Menu + ( + + )} + /> - + Item 1 Item 2 @@ -44,3 +51,10 @@ export const Default: Story = { ), }, }; + +export const Open: Story = { + args: { + ...Default.args, + open: true, + }, +}; diff --git a/packages/canon/src/components/Menu/Menu.styles.css b/packages/canon/src/components/Menu/Menu.styles.css index 4f76e5552f..403d34294e 100644 --- a/packages/canon/src/components/Menu/Menu.styles.css +++ b/packages/canon/src/components/Menu/Menu.styles.css @@ -1,54 +1,17 @@ -.canon-MenuTrigger { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - gap: 0.375rem; - height: 2.5rem; - padding: 0 0.875rem; - margin: 0; - outline: 0; - border: 1px solid var(--color-gray-200); - border-radius: 0.375rem; - background-color: var(--color-gray-50); - font-family: inherit; - font-size: 1rem; - font-weight: 500; - line-height: 1.5rem; - color: var(--color-gray-900); - user-select: none; - - @media (hover: hover) { - &:hover { - background-color: var(--color-gray-100); - } - } - - &:active { - background-color: var(--color-gray-100); - } - - &[data-popup-open] { - background-color: var(--color-gray-100); - } - - &:focus-visible { - outline: 2px solid var(--color-blue); - outline-offset: -1px; - } -} - .canon-MenuPositioner { outline: 0; } .canon-MenuPopup { - box-sizing: border-box; - padding-block: 0.25rem; + padding: var(--canon-space-2); border-radius: 0.375rem; - background-color: var(--canon-bg-elevated); - color: var(--color-fg-primary); + background-color: var(--canon-bg-surface-1); + border: 1px solid var(--canon-border); + color: var(--canon-fg-primary); + outline: none; + overflow: hidden; transform-origin: var(--transform-origin); + max-width: 340px; transition: transform 150ms, opacity 150ms; &[data-starting-style], @@ -56,44 +19,29 @@ opacity: 0; transform: scale(0.9); } - - @media (prefers-color-scheme: light) { - outline: 1px solid var(--color-gray-200); - box-shadow: 0px 10px 15px -3px var(--color-gray-200), - 0px 4px 6px -4px var(--color-gray-200); - } - - @media (prefers-color-scheme: dark) { - outline: 1px solid var(--color-gray-300); - outline-offset: -1px; - } } .canon-MenuItem { outline: 0; cursor: default; user-select: none; - padding-block: 0.5rem; - padding-left: 1rem; - padding-right: 2rem; display: flex; - font-size: 0.875rem; - line-height: 1rem; + gap: var(--canon-space-2); + color: var(--canon-fg-primary); + text-decoration: none; + border-radius: var(--canon-radius-2); + padding: var(--canon-space-2) var(--canon-space-2); + padding-right: var(--canon-space-4); + cursor: pointer; + + &:last-child { + border-bottom: none; + } &[data-highlighted] { z-index: 0; position: relative; - color: var(--color-gray-50); - } - - &[data-highlighted]::before { - content: ''; - z-index: -1; - position: absolute; - inset-block: 0; - inset-inline: 0.25rem; - border-radius: 0.25rem; - background-color: var(--color-gray-900); + background-color: var(--canon-bg-tint-hover); } } From 6af7b16b166337b4e931bbc7751f56e804e45429 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sun, 23 Mar 2025 16:18:38 +0000 Subject: [PATCH 2/3] Create cuddly-mirrors-ask.md Signed-off-by: Charles de Dreuille --- .changeset/cuddly-mirrors-ask.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cuddly-mirrors-ask.md diff --git a/.changeset/cuddly-mirrors-ask.md b/.changeset/cuddly-mirrors-ask.md new file mode 100644 index 0000000000..4fe611d067 --- /dev/null +++ b/.changeset/cuddly-mirrors-ask.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Updated styles for the Menu component in Canon. From 51b9a1c14d8676ae08b5a545dca722dc525f1f7b Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sun, 23 Mar 2025 16:37:39 +0000 Subject: [PATCH 3/3] Updated Menu styles Signed-off-by: Charles de Dreuille --- packages/canon/css/components.css | 89 +++++++------------------------ packages/canon/css/menu.css | 89 +++++++------------------------ packages/canon/css/styles.css | 89 +++++++------------------------ 3 files changed, 57 insertions(+), 210 deletions(-) diff --git a/packages/canon/css/components.css b/packages/canon/css/components.css index cb376e64ed..1713468367 100644 --- a/packages/canon/css/components.css +++ b/packages/canon/css/components.css @@ -481,101 +481,50 @@ margin: 0; } -.canon-MenuTrigger { - box-sizing: border-box; - border: 1px solid var(--color-gray-200); - background-color: var(--color-gray-50); - height: 2.5rem; - color: var(--color-gray-900); - user-select: none; - border-radius: .375rem; - outline: 0; - justify-content: center; - align-items: center; - gap: .375rem; - margin: 0; - padding: 0 .875rem; - font-family: inherit; - font-size: 1rem; - font-weight: 500; - line-height: 1.5rem; - display: flex; - - @media (hover: hover) { - &:hover { - background-color: var(--color-gray-100); - } - } - - &:active, &[data-popup-open] { - background-color: var(--color-gray-100); - } - - &:focus-visible { - outline: 2px solid var(--color-blue); - outline-offset: -1px; - } -} - .canon-MenuPositioner { outline: 0; } .canon-MenuPopup { - box-sizing: border-box; - background-color: var(--canon-bg-elevated); - color: var(--color-fg-primary); + padding: var(--canon-space-2); + background-color: var(--canon-bg-surface-1); + border: 1px solid var(--canon-border); + color: var(--canon-fg-primary); transform-origin: var(--transform-origin); border-radius: .375rem; - padding-block: .25rem; + outline: none; + max-width: 340px; transition: transform .15s, opacity .15s; + overflow: hidden; &[data-starting-style], &[data-ending-style] { opacity: 0; transform: scale(.9); } - - @media (prefers-color-scheme: light) { - & { - outline: 1px solid var(--color-gray-200); - box-shadow: 0px 10px 15px -3px var(--color-gray-200), 0px 4px 6px -4px var(--color-gray-200); - } - } - - @media (prefers-color-scheme: dark) { - & { - outline: 1px solid var(--color-gray-300); - outline-offset: -1px; - } - } } .canon-MenuItem { cursor: default; user-select: none; - padding-block: .5rem; + gap: var(--canon-space-2); + color: var(--canon-fg-primary); + border-radius: var(--canon-radius-2); + padding: var(--canon-space-2) var(--canon-space-2); + padding-right: var(--canon-space-4); + cursor: pointer; outline: 0; - padding-left: 1rem; - padding-right: 2rem; - font-size: .875rem; - line-height: 1rem; + text-decoration: none; display: flex; + &:last-child { + border-bottom: none; + } + &[data-highlighted] { z-index: 0; - color: var(--color-gray-50); + background-color: var(--canon-bg-tint-hover); position: relative; } - - &[data-highlighted]:before { - content: ""; - z-index: -1; - background-color: var(--color-gray-900); - border-radius: .25rem; - position: absolute; - inset-block: 0; - inset-inline: .25rem; - } } .canon-MenuSeparator { diff --git a/packages/canon/css/menu.css b/packages/canon/css/menu.css index 21192076b4..de811cde77 100644 --- a/packages/canon/css/menu.css +++ b/packages/canon/css/menu.css @@ -1,98 +1,47 @@ -.canon-MenuTrigger { - box-sizing: border-box; - border: 1px solid var(--color-gray-200); - background-color: var(--color-gray-50); - height: 2.5rem; - color: var(--color-gray-900); - user-select: none; - border-radius: .375rem; - outline: 0; - justify-content: center; - align-items: center; - gap: .375rem; - margin: 0; - padding: 0 .875rem; - font-family: inherit; - font-size: 1rem; - font-weight: 500; - line-height: 1.5rem; - display: flex; - - @media (hover: hover) { - &:hover { - background-color: var(--color-gray-100); - } - } - - &:active, &[data-popup-open] { - background-color: var(--color-gray-100); - } - - &:focus-visible { - outline: 2px solid var(--color-blue); - outline-offset: -1px; - } -} - .canon-MenuPositioner { outline: 0; } .canon-MenuPopup { - box-sizing: border-box; - background-color: var(--canon-bg-elevated); - color: var(--color-fg-primary); + padding: var(--canon-space-2); + background-color: var(--canon-bg-surface-1); + border: 1px solid var(--canon-border); + color: var(--canon-fg-primary); transform-origin: var(--transform-origin); border-radius: .375rem; - padding-block: .25rem; + outline: none; + max-width: 340px; transition: transform .15s, opacity .15s; + overflow: hidden; &[data-starting-style], &[data-ending-style] { opacity: 0; transform: scale(.9); } - - @media (prefers-color-scheme: light) { - & { - outline: 1px solid var(--color-gray-200); - box-shadow: 0px 10px 15px -3px var(--color-gray-200), 0px 4px 6px -4px var(--color-gray-200); - } - } - - @media (prefers-color-scheme: dark) { - & { - outline: 1px solid var(--color-gray-300); - outline-offset: -1px; - } - } } .canon-MenuItem { cursor: default; user-select: none; - padding-block: .5rem; + gap: var(--canon-space-2); + color: var(--canon-fg-primary); + border-radius: var(--canon-radius-2); + padding: var(--canon-space-2) var(--canon-space-2); + padding-right: var(--canon-space-4); + cursor: pointer; outline: 0; - padding-left: 1rem; - padding-right: 2rem; - font-size: .875rem; - line-height: 1rem; + text-decoration: none; display: flex; + &:last-child { + border-bottom: none; + } + &[data-highlighted] { z-index: 0; - color: var(--color-gray-50); + background-color: var(--canon-bg-tint-hover); position: relative; } - - &[data-highlighted]:before { - content: ""; - z-index: -1; - background-color: var(--color-gray-900); - border-radius: .25rem; - position: absolute; - inset-block: 0; - inset-inline: .25rem; - } } .canon-MenuSeparator { diff --git a/packages/canon/css/styles.css b/packages/canon/css/styles.css index 3b312c220e..799a1babbc 100644 --- a/packages/canon/css/styles.css +++ b/packages/canon/css/styles.css @@ -9682,101 +9682,50 @@ margin: 0; } -.canon-MenuTrigger { - box-sizing: border-box; - border: 1px solid var(--color-gray-200); - background-color: var(--color-gray-50); - height: 2.5rem; - color: var(--color-gray-900); - user-select: none; - border-radius: .375rem; - outline: 0; - justify-content: center; - align-items: center; - gap: .375rem; - margin: 0; - padding: 0 .875rem; - font-family: inherit; - font-size: 1rem; - font-weight: 500; - line-height: 1.5rem; - display: flex; - - @media (hover: hover) { - &:hover { - background-color: var(--color-gray-100); - } - } - - &:active, &[data-popup-open] { - background-color: var(--color-gray-100); - } - - &:focus-visible { - outline: 2px solid var(--color-blue); - outline-offset: -1px; - } -} - .canon-MenuPositioner { outline: 0; } .canon-MenuPopup { - box-sizing: border-box; - background-color: var(--canon-bg-elevated); - color: var(--color-fg-primary); + padding: var(--canon-space-2); + background-color: var(--canon-bg-surface-1); + border: 1px solid var(--canon-border); + color: var(--canon-fg-primary); transform-origin: var(--transform-origin); border-radius: .375rem; - padding-block: .25rem; + outline: none; + max-width: 340px; transition: transform .15s, opacity .15s; + overflow: hidden; &[data-starting-style], &[data-ending-style] { opacity: 0; transform: scale(.9); } - - @media (prefers-color-scheme: light) { - & { - outline: 1px solid var(--color-gray-200); - box-shadow: 0px 10px 15px -3px var(--color-gray-200), 0px 4px 6px -4px var(--color-gray-200); - } - } - - @media (prefers-color-scheme: dark) { - & { - outline: 1px solid var(--color-gray-300); - outline-offset: -1px; - } - } } .canon-MenuItem { cursor: default; user-select: none; - padding-block: .5rem; + gap: var(--canon-space-2); + color: var(--canon-fg-primary); + border-radius: var(--canon-radius-2); + padding: var(--canon-space-2) var(--canon-space-2); + padding-right: var(--canon-space-4); + cursor: pointer; outline: 0; - padding-left: 1rem; - padding-right: 2rem; - font-size: .875rem; - line-height: 1rem; + text-decoration: none; display: flex; + &:last-child { + border-bottom: none; + } + &[data-highlighted] { z-index: 0; - color: var(--color-gray-50); + background-color: var(--canon-bg-tint-hover); position: relative; } - - &[data-highlighted]:before { - content: ""; - z-index: -1; - background-color: var(--color-gray-900); - border-radius: .25rem; - position: absolute; - inset-block: 0; - inset-inline: .25rem; - } } .canon-MenuSeparator {