From 45ae12139859f1c8c81a77fc0f514e79a92358f1 Mon Sep 17 00:00:00 2001 From: lisa Date: Wed, 22 Oct 2025 11:17:43 +0200 Subject: [PATCH] refactor: tabs vanilla extract --- .changeset/lovely-flies-flash.md | 5 + packages/ui/src/components/Tabs/Tab.tsx | 123 +- packages/ui/src/components/Tabs/TabMenu.tsx | 37 +- .../ui/src/components/Tabs/TabMenuItem.tsx | 15 +- .../__tests__/__snapshots__/Tab.test.tsx.snap | 309 +-- .../__snapshots__/index.test.tsx.snap | 1827 +---------------- packages/ui/src/components/Tabs/index.tsx | 77 +- packages/ui/src/components/Tabs/styles.css.ts | 157 ++ 8 files changed, 314 insertions(+), 2236 deletions(-) create mode 100644 .changeset/lovely-flies-flash.md create mode 100644 packages/ui/src/components/Tabs/styles.css.ts diff --git a/.changeset/lovely-flies-flash.md b/.changeset/lovely-flies-flash.md new file mode 100644 index 0000000000..2804c853b9 --- /dev/null +++ b/.changeset/lovely-flies-flash.md @@ -0,0 +1,5 @@ +--- +"@ultraviolet/ui": minor +--- + +Refactor component `Tabs` to use vanilla extract instead of Emotion diff --git a/packages/ui/src/components/Tabs/Tab.tsx b/packages/ui/src/components/Tabs/Tab.tsx index 521b8363d6..1d2ab16e29 100644 --- a/packages/ui/src/components/Tabs/Tab.tsx +++ b/packages/ui/src/components/Tabs/Tab.tsx @@ -1,6 +1,5 @@ 'use client' -import styled from '@emotion/styled' import type { ComponentProps, ElementType, @@ -15,96 +14,14 @@ import { Badge } from '../Badge' import { Stack } from '../Stack' import { Text } from '../Text' import { Tooltip } from '../Tooltip' +import { + tabsBadge, + tabsBadgeContainer, + tabsButton, + tabsTextSelected, +} from './styles.css' import { useTabsContext } from './TabsContext' -const StyledBadge = styled(Badge)` - padding: 0 ${({ theme }) => theme.space['1']}; - margin-left: ${({ theme }) => theme.space['1']}; -` - -const StyledText = styled(Text)`` - -const StyledTooltip = styled(Tooltip)`` - -const BadgeContainer = styled.span` - margin-left: ${({ theme }) => theme.space['1']}; - display: flex; -` - -export const StyledTabButton = styled('button')` - display: flex; - flex-direction: row; - padding: ${({ theme }) => `${theme.space['1']} ${theme.space['2']}`}; - cursor: pointer; - justify-content: center; - align-items: baseline; - white-space: nowrap; - color: ${({ theme }) => theme.colors.neutral.text}; - text-decoration: none; - user-select: none; - touch-action: manipulation; - transition: color 0.2s; - border: none; - background: none; - border-bottom-width: 2px; - border-bottom-style: solid; - border-bottom-color: ${({ theme }) => theme.colors.neutral.border}; - outline: none; - - font-size: ${({ theme }) => theme.typography.bodyStrong.fontSize}; - font-family: ${({ theme }) => theme.typography.bodyStrong.fontFamily}; - font-weight: ${({ theme }) => theme.typography.bodyStrong.weight}; - letter-spacing: ${({ theme }) => theme.typography.bodyStrong.letterSpacing}; - line-height: ${({ theme }) => theme.typography.bodyStrong.lineHeight}; - - &:hover, - &:active, - &:focus { - text-decoration: none; - outline: none; - } - - &:focus-visible { - outline: auto; - } - - &[aria-selected='true'] { - color: ${({ theme }) => theme.colors.primary.text}; - border-bottom-color: ${({ theme }) => theme.colors.primary.border}; - - ${StyledText} { - color: ${({ theme }) => theme.colors.primary.text}; - } - } - - &[aria-disabled='false']:not(:disabled) { - &:hover, - &:focus, - &:active { - outline: none; - color: ${({ theme }) => theme.colors.primary.text}; - border-bottom-color: ${({ theme }) => theme.colors.primary.border}; - - &[data-is-selected='false'] { - ${StyledBadge} { - background-color: ${({ theme }) => theme.colors.primary.background}; - border-color: ${({ theme }) => theme.colors.primary.background}; - color: ${({ theme }) => theme.colors.primary.text}; - } - ${StyledText} { - color: ${({ theme }) => theme.colors.primary.text}; - } - } - } - } - - &[aria-disabled='true'], - &:disabled { - cursor: not-allowed; - filter: grayscale(1) opacity(50%); - } -` - type TabProps = { as?: T badge?: ReactNode @@ -150,19 +67,19 @@ export const Tab = forwardRef( ) => { const { selected, onChange } = useTabsContext() const computedAs = as ?? 'button' + const ComputedComponent = as ?? 'button' const isSelected = useMemo( () => value !== undefined && selected === value, [value, selected], ) return ( - - + { @@ -186,31 +103,37 @@ export const Tab = forwardRef( {children} {typeof counter === 'number' || typeof counter === 'string' ? ( - {counter} - + + ) : null} + {badge ? ( + {badge} ) : null} - {badge ? {badge} : null} {subtitle ? ( - {subtitle} - + ) : null} - - + + ) }, ) diff --git a/packages/ui/src/components/Tabs/TabMenu.tsx b/packages/ui/src/components/Tabs/TabMenu.tsx index f7fa7e8d79..44a42676be 100644 --- a/packages/ui/src/components/Tabs/TabMenu.tsx +++ b/packages/ui/src/components/Tabs/TabMenu.tsx @@ -1,6 +1,5 @@ 'use client' -import styled from '@emotion/styled' import { ArrowDownIcon } from '@ultraviolet/icons' import type { ButtonHTMLAttributes, @@ -10,29 +9,7 @@ import type { } from 'react' import { forwardRef } from 'react' import { Menu } from '../Menu' -import { StyledTabButton } from './Tab' - -const ArrowIcon = styled(ArrowDownIcon)`` -const StyledMenu = styled(StyledTabButton)` - ${ArrowIcon} { - color: inherit; - margin-left: ${({ theme }) => theme.space['1']}; - transition: 300ms transform ease-out; - } - - &[aria-expanded='true'] ${ArrowIcon} { - transform: rotate(-180deg); - } -` - -// This will wrap and give the positioning to the popup div that is added onto the disclosure -const StyledPositioningWrapper = styled.div` - display: flex; - position: sticky; - top: 0; - bottom: 0; - right: 0; -` +import { tabsArrowIcon, tabsButton, tabsMenuWrapper } from './styles.css' type TabMenuProps = { children: ReactNode @@ -55,22 +32,22 @@ export const TabMenu = forwardRef( }: TabMenuProps, ref: Ref, ) => ( - +
{disclosure} - - + + } id={id} portalTarget={document.body} @@ -79,6 +56,6 @@ export const TabMenu = forwardRef( > {children} - +
), ) diff --git a/packages/ui/src/components/Tabs/TabMenuItem.tsx b/packages/ui/src/components/Tabs/TabMenuItem.tsx index 943b8a28d7..12004db0d3 100644 --- a/packages/ui/src/components/Tabs/TabMenuItem.tsx +++ b/packages/ui/src/components/Tabs/TabMenuItem.tsx @@ -1,20 +1,14 @@ 'use client' -import styled from '@emotion/styled' import type { ComponentProps } from 'react' import { useMemo } from 'react' import { Menu } from '../Menu' +import { tabsTextSelected } from './styles.css' import { useTabsContext } from './TabsContext' -const StyledMenuItem = styled(Menu.Item)` - &[aria-selected='true'] { - color: ${({ theme }) => theme.colors.primary.text}; - } -` - type TabMenuItemProps = { value?: string | number -} & ComponentProps +} & ComponentProps export const TabMenuItem = ({ value, @@ -30,8 +24,9 @@ export const TabMenuItem = ({ ) return ( - { if (value !== undefined) { onChange(value) @@ -41,6 +36,6 @@ export const TabMenuItem = ({ {...props} > {children} - + ) } diff --git a/packages/ui/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap b/packages/ui/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap index e419384cda..18e3224a57 100644 --- a/packages/ui/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap +++ b/packages/ui/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap @@ -2,105 +2,13 @@ exports[`tab > renders correctly 1`] = ` - .emotion-0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: baseline; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - white-space: nowrap; - color: #3f4250; - -webkit-text-decoration: none; - text-decoration: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - touch-action: manipulation; - -webkit-transition: color 0.2s; - transition: color 0.2s; - border: none; - background: none; - border-bottom-width: 2px; - border-bottom-style: solid; - border-bottom-color: #d9dadd; - outline: none; - font-size: 1rem; - font-family: Inter,sans-serif; - font-weight: 500; - letter-spacing: 0; - line-height: 1.5rem; -} - -.emotion-0:hover, -.emotion-0:active, -.emotion-0:focus { - -webkit-text-decoration: none; - text-decoration: none; - outline: none; -} - -.emotion-0:focus-visible { - outline: auto; -} - -.emotion-0[aria-selected='true'] { - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-0[aria-selected='true'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-0[aria-disabled='false']:not(:disabled):hover, -.emotion-0[aria-disabled='false']:not(:disabled):focus, -.emotion-0[aria-disabled='false']:not(:disabled):active { - outline: none; - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-0[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr4, -.emotion-0[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr4, -.emotion-0[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr4 { - background-color: #f1eefc; - border-color: #f1eefc; - color: #641cb3; -} - -.emotion-0[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr3, -.emotion-0[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr3, -.emotion-0[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-0[aria-disabled='true'], -.emotion-0:disabled { - cursor: not-allowed; - -webkit-filter: grayscale(1) opacity(50%); - filter: grayscale(1) opacity(50%); -} - -
renders correctly with Tabs menu selected 1`] = ` aria-disabled="false" aria-expanded="true" aria-haspopup="dialog" - class="emotion-10 emotion-11" + class="styles__1xz9hlg7" role="tab" type="button" > More renders correctly with Tabs menu selected 1`] = `
renders correctly with Tabs menu selected 1`] = ` aria-disabled="true" aria-expanded="false" aria-haspopup="dialog" - class="emotion-10 emotion-11" + class="styles__1xz9hlg7" disabled="" role="tab" type="button" > More again renders correctly with Tabs menu selected 1`] = ` exports[`tabs > renders correctly with Tabs name 1`] = ` - .emotion-0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex-wrap: nowrap; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - overflow-x: scroll; - position: relative; - z-index: 0; - -ms-overflow-style: none; - scrollbar-width: none; -} - -.emotion-0::after { - z-index: -1; - content: ''; - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 2px; - background: #d9dadd; -} - -.emotion-0::-webkit-scrollbar { - display: none; -} - -.emotion-0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex-wrap: nowrap; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - overflow-x: scroll; - position: relative; - z-index: 0; - -ms-overflow-style: none; - scrollbar-width: none; -} - -.emotion-0::after { - z-index: -1; - content: ''; - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 2px; - background: #d9dadd; -} - -.emotion-0::-webkit-scrollbar { - display: none; -} - -.emotion-2 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: baseline; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - white-space: nowrap; - color: #3f4250; - -webkit-text-decoration: none; - text-decoration: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - touch-action: manipulation; - -webkit-transition: color 0.2s; - transition: color 0.2s; - border: none; - background: none; - border-bottom-width: 2px; - border-bottom-style: solid; - border-bottom-color: #d9dadd; - outline: none; - font-size: 1rem; - font-family: Inter,sans-serif; - font-weight: 500; - letter-spacing: 0; - line-height: 1.5rem; -} - -.emotion-2:hover, -.emotion-2:active, -.emotion-2:focus { - -webkit-text-decoration: none; - text-decoration: none; - outline: none; -} - -.emotion-2:focus-visible { - outline: auto; -} - -.emotion-2[aria-selected='true'] { - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-2[aria-selected='true'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover, -.emotion-2[aria-disabled='false']:not(:disabled):focus, -.emotion-2[aria-disabled='false']:not(:disabled):active { - outline: none; - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr4, -.emotion-2[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr4, -.emotion-2[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr4 { - background-color: #f1eefc; - border-color: #f1eefc; - color: #641cb3; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr3, -.emotion-2[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr3, -.emotion-2[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-2[aria-disabled='true'], -.emotion-2:disabled { - cursor: not-allowed; - -webkit-filter: grayscale(1) opacity(50%); - filter: grayscale(1) opacity(50%); -} - -.emotion-2 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: baseline; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - white-space: nowrap; - color: #3f4250; - -webkit-text-decoration: none; - text-decoration: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - touch-action: manipulation; - -webkit-transition: color 0.2s; - transition: color 0.2s; - border: none; - background: none; - border-bottom-width: 2px; - border-bottom-style: solid; - border-bottom-color: #d9dadd; - outline: none; - font-size: 1rem; - font-family: Inter,sans-serif; - font-weight: 500; - letter-spacing: 0; - line-height: 1.5rem; -} - -.emotion-2:hover, -.emotion-2:active, -.emotion-2:focus { - -webkit-text-decoration: none; - text-decoration: none; - outline: none; -} - -.emotion-2:focus-visible { - outline: auto; -} - -.emotion-2[aria-selected='true'] { - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-2[aria-selected='true'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover, -.emotion-2[aria-disabled='false']:not(:disabled):focus, -.emotion-2[aria-disabled='false']:not(:disabled):active { - outline: none; - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr4, -.emotion-2[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr4, -.emotion-2[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr4 { - background-color: #f1eefc; - border-color: #f1eefc; - color: #641cb3; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr3, -.emotion-2[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr3, -.emotion-2[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-2[aria-disabled='true'], -.emotion-2:disabled { - cursor: not-allowed; - -webkit-filter: grayscale(1) opacity(50%); - filter: grayscale(1) opacity(50%); -} - -
renders correctly with Tabs with prop 1`] = ` aria-disabled="false" aria-expanded="true" aria-haspopup="dialog" - class="emotion-52 emotion-53" + class="styles__1xz9hlg7" role="tab" type="button" > Blabla renders correctly with Tabs with prop 1`] = `
renders correctly with Tabs with prop 1`] = ` aria-disabled="false" aria-expanded="true" aria-haspopup="dialog" - class="emotion-58 emotion-59 emotion-53" + class="styles__1xz9hlg1 styles__1xz9hlg7" role="tab" type="button" > More renders correctly with Tabs with prop 1`] = `
- .emotion-0[aria-selected='true'] { - color: #641cb3; -} - -
- .emotion-0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} - -.emotion-0 .emotion-3 { - font-size: 0.875rem; - line-height: 1.25rem; - font-weight: inherit; - padding: 0.5rem 1rem; - border-bottom-width: 1.5px; - width: 100%; - cursor: pointer; - min-width: 6.875rem; - background-color: transparent; -} - -.emotion-0 .emotion-3[aria-disabled='true'], -.emotion-0 .emotion-3:disabled { - cursor: not-allowed; - -webkit-filter: grayscale(1) opacity(50%); - filter: grayscale(1) opacity(50%); -} - -.emotion-2 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: baseline; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - white-space: nowrap; - color: #3f4250; - -webkit-text-decoration: none; - text-decoration: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - touch-action: manipulation; - -webkit-transition: color 0.2s; - transition: color 0.2s; - border: none; - background: none; - border-bottom-width: 2px; - border-bottom-style: solid; - border-bottom-color: #d9dadd; - outline: none; - font-size: 1rem; - font-family: Inter,sans-serif; - font-weight: 500; - letter-spacing: 0; - line-height: 1.5rem; -} - -.emotion-2:hover, -.emotion-2:active, -.emotion-2:focus { - -webkit-text-decoration: none; - text-decoration: none; - outline: none; -} - -.emotion-2:focus-visible { - outline: auto; -} - -.emotion-2[aria-selected='true'] { - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-2[aria-selected='true'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover, -.emotion-2[aria-disabled='false']:not(:disabled):focus, -.emotion-2[aria-disabled='false']:not(:disabled):active { - outline: none; - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .emotion-5, -.emotion-2[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .emotion-5, -.emotion-2[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .emotion-5 { - background-color: #f1eefc; - border-color: #f1eefc; - color: #641cb3; -} - -.emotion-2[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr3, -.emotion-2[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr3, -.emotion-2[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-2[aria-disabled='true'], -.emotion-2:disabled { - cursor: not-allowed; - -webkit-filter: grayscale(1) opacity(50%); - filter: grayscale(1) opacity(50%); -} - -.emotion-4 { - padding: 0 0.5rem; - margin-left: 0.5rem; -} - -.emotion-22 { - margin-left: 0.5rem; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; -} - -.emotion-50 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - position: -webkit-sticky; - position: sticky; - top: 0; - bottom: 0; - right: 0; -} - -.emotion-52 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: baseline; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - white-space: nowrap; - color: #3f4250; - -webkit-text-decoration: none; - text-decoration: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - touch-action: manipulation; - -webkit-transition: color 0.2s; - transition: color 0.2s; - border: none; - background: none; - border-bottom-width: 2px; - border-bottom-style: solid; - border-bottom-color: #d9dadd; - outline: none; - font-size: 1rem; - font-family: Inter,sans-serif; - font-weight: 500; - letter-spacing: 0; - line-height: 1.5rem; -} - -.emotion-52:hover, -.emotion-52:active, -.emotion-52:focus { - -webkit-text-decoration: none; - text-decoration: none; - outline: none; -} - -.emotion-52:focus-visible { - outline: auto; -} - -.emotion-52[aria-selected='true'] { - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-52[aria-selected='true'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-52[aria-disabled='false']:not(:disabled):hover, -.emotion-52[aria-disabled='false']:not(:disabled):focus, -.emotion-52[aria-disabled='false']:not(:disabled):active { - outline: none; - color: #641cb3; - border-bottom-color: #8c40ef; -} - -.emotion-52[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .emotion-5, -.emotion-52[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .emotion-5, -.emotion-52[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .emotion-5 { - background-color: #f1eefc; - border-color: #f1eefc; - color: #641cb3; -} - -.emotion-52[aria-disabled='false']:not(:disabled):hover[data-is-selected='false'] .e1hzf7cr3, -.emotion-52[aria-disabled='false']:not(:disabled):focus[data-is-selected='false'] .e1hzf7cr3, -.emotion-52[aria-disabled='false']:not(:disabled):active[data-is-selected='false'] .e1hzf7cr3 { - color: #641cb3; -} - -.emotion-52[aria-disabled='true'], -.emotion-52:disabled { - cursor: not-allowed; - -webkit-filter: grayscale(1) opacity(50%); - filter: grayscale(1) opacity(50%); -} - -.emotion-52 .emotion-55 { - color: inherit; - margin-left: 0.5rem; - -webkit-transition: 300ms -webkit-transform ease-out; - transition: 300ms transform ease-out; -} - -.emotion-52[aria-expanded='true'] .emotion-55 { - -webkit-transform: rotate(-180deg); - -moz-transform: rotate(-180deg); - -ms-transform: rotate(-180deg); - transform: rotate(-180deg); -} - - - .emotion-0[aria-selected='true'] { - color: #641cb3; -} - -