diff --git a/src/frontend/src/primitives/Tabs.tsx b/src/frontend/src/primitives/Tabs.tsx index c44110f5..c2b76fb3 100644 --- a/src/frontend/src/primitives/Tabs.tsx +++ b/src/frontend/src/primitives/Tabs.tsx @@ -10,6 +10,7 @@ import { } from 'react-aria-components' import { styled } from '@/styled-system/jsx' import { StyledVariantProps } from '@/styled-system/types' +import React from 'react' const StyledTabs = styled(RACTabs, { base: { @@ -42,34 +43,64 @@ const StyledTab = styled(RACTab, { transition: 'color 200ms ease, backgroundColor 200ms ease', borderColor: 'transparent', forcedColorAdjust: 'none', - '&[data-focused]': {}, - '&[data-selected]': { - borderColor: 'primary', + }, + variants: { + border: { + true: { + '&[data-selected]': { + borderColor: 'primary', + }, + borderBottom: 'var(--horizontal) solid', + borderInlineEnd: 'var(--vertical) solid', + }, + false: { + border: 'none', + }, }, - borderBottom: 'var(--horizontal) solid', - borderInlineEnd: 'var(--vertical) solid', + }, + defaultVariants: { + border: true, }, }) export type TabProps = RACTabProps & StyledVariantProps export const Tab = ({ children, ...props }: TabProps) => { - return {children} + const parentBorder = React.useContext(BorderContext) + return ( + + {children} + + ) } const StyledTabList = styled(RACTabList, { base: { display: 'flex', - '&[data-orientation=horizontal]': { - borderBottom: '1px solid', - borderColor: 'gray.300', - }, '&[data-orientation=vertical]': { flexDirection: 'column', - borderInlineEnd: '1px solid', - borderColor: 'gray.300', }, }, + variants: { + border: { + false: { + border: 'none', + }, + true: { + '&[data-orientation=horizontal]': { + borderBottom: '1px solid', + borderColor: 'gray.300', + }, + '&[data-orientation=vertical]': { + borderInlineEnd: '1px solid', + borderColor: 'gray.300', + }, + }, + }, + }, + defaultVariants: { + border: true, + }, }) // @fixme type could be simplified to avoid redefining the children props @@ -78,8 +109,16 @@ export type TabListProps = { } & RACTabListProps & StyledVariantProps -export const TabList = ({ children, ...props }: TabListProps) => { - return {children} +const BorderContext = React.createContext(true) + +export const TabList = ({ children, border, ...props }: TabListProps) => { + return ( + + + {children} + + + ) } const StyledTabPanel = styled(RACTabPanel, {