Skip to content

Commit 9a7c02f

Browse files
Barsnesmimarz
authored andcommitted
feat(tabs): css changes (#2431)
part of #2295
1 parent 8d093af commit 9a7c02f

File tree

4 files changed

+58
-66
lines changed

4 files changed

+58
-66
lines changed

.changeset/purple-berries-repeat.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@digdir/designsystemet-css": patch
3+
"@digdir/designsystemet-react": patch
4+
---
5+
6+
Tabs: css changes

packages/css/tabs.css

+47-49
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,28 @@
55
--dsc-tabs-content-padding: var(--ds-spacing-5);
66
--dsc-tabs-content-color: var(--ds-color-neutral-text-default);
77
--dsc-tabs-list-border-color: var(--ds-color-neutral-border-subtle);
8+
9+
&[data-size='sm'] {
10+
--dsc-tabs-tab-padding: var(--ds-spacing-2) var(--ds-spacing-4);
11+
--dsc-tabs-content-padding: var(--ds-spacing-4);
12+
}
13+
14+
&[data-size='lg'] {
15+
--dsc-tabs-tab-padding: var(--ds-spacing-4) var(--ds-spacing-6);
16+
--dsc-tabs-content-padding: var(--ds-spacing-6);
17+
}
18+
}
19+
20+
.ds-tabs__content {
21+
padding: var(--dsc-tabs-content-padding);
22+
color: var(--dsc-tabs-content-color);
23+
}
24+
25+
.ds-tabs__tablist {
26+
display: flex;
27+
flex-direction: row;
28+
border-bottom: var(--ds-border-width-default) solid var(--dsc-tabs-list-border-color);
29+
position: relative;
830
}
931

1032
.ds-tabs__tab {
@@ -23,59 +45,35 @@
2345
color: var(--dsc-tabs-tab-color);
2446
position: relative;
2547
font-family: inherit;
26-
}
27-
28-
.ds-tabs__content {
29-
padding: var(--dsc-tabs-content-padding);
30-
color: var(--dsc-tabs-content-color);
31-
}
32-
33-
.ds-tabs--sm {
34-
--dsc-tabs-tab-padding: var(--ds-spacing-2) var(--ds-spacing-4);
35-
--dsc-tabs-content-padding: var(--ds-spacing-4);
36-
}
3748

38-
.ds-tabs--md {
39-
--dsc-tabs-tab-padding: var(--ds-spacing-3) var(--ds-spacing-5);
40-
--dsc-tabs-content-padding: var(--ds-spacing-5);
41-
}
42-
43-
.ds-tabs--lg {
44-
--dsc-tabs-tab-padding: var(--ds-spacing-4) var(--ds-spacing-6);
45-
--dsc-tabs-content-padding: var(--ds-spacing-6);
46-
}
47-
48-
@media (hover: hover) and (pointer: fine) {
49-
.ds-tabs__tab:hover:not([aria-selected='true']) {
50-
--dsc-tabs__tab-bottom-border-color: var(--ds-color-neutral-border-subtle);
51-
--dsc-tabs-tab-color: var(--ds-color-neutral-text-default);
49+
&[aria-selected='true'] {
50+
--dsc-tabs__tab-bottom-border-color: var(--ds-color-accent-base-default);
51+
--dsc-tabs-tab-color: var(--ds-color-accent-text-subtle);
5252
}
53-
}
5453

55-
.ds-tabs__tab[aria-selected='true'] {
56-
--dsc-tabs__tab-bottom-border-color: var(--ds-color-accent-base-default);
57-
--dsc-tabs-tab-color: var(--ds-color-accent-text-subtle);
58-
}
54+
@composes ds-focus from './utilities.css';
5955

60-
.ds-tabs__tab:focus {
61-
z-index: 2;
62-
}
56+
/* We set z-index to make sure the active line does not bleed over the focus indicator */
57+
&:focus-visible {
58+
z-index: 2;
59+
}
6360

64-
.ds-tabs__tab::after {
65-
content: '';
66-
display: block;
67-
height: 3px;
68-
width: 100%;
69-
border-radius: var(--dsc-border-radius-full);
70-
background-color: var(--dsc-tabs__tab-bottom-border-color);
71-
position: absolute;
72-
bottom: 0;
73-
left: 0;
74-
}
61+
&::after {
62+
content: '';
63+
display: block;
64+
height: 3px;
65+
width: 100%;
66+
border-radius: var(--dsc-border-radius-full);
67+
background-color: var(--dsc-tabs__tab-bottom-border-color);
68+
position: absolute;
69+
bottom: 0;
70+
left: 0;
71+
}
7572

76-
.ds-tabs__tablist {
77-
display: flex;
78-
flex-direction: row;
79-
border-bottom: var(--ds-border-width-default) solid var(--dsc-tabs-list-border-color);
80-
position: relative;
73+
@media (hover: hover) and (pointer: fine) {
74+
&:hover:not([aria-selected='true']) {
75+
--dsc-tabs__tab-bottom-border-color: var(--ds-color-neutral-border-subtle);
76+
--dsc-tabs-tab-color: var(--ds-color-neutral-text-default);
77+
}
78+
}
8179
}

packages/react/src/components/Tabs/Tab.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const Tab = forwardRef<HTMLButtonElement, TabProps>((props, ref) => {
2727
<button
2828
{...useTabRest}
2929
type='button'
30-
className={cl('ds-tabs__tab', 'ds-focus', className)}
30+
className={cl('ds-tabs__tab', className)}
3131
ref={ref}
3232
>
3333
{children}

packages/react/src/components/Tabs/TabsRoot.tsx

+4-16
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,7 @@ export const TabsContext = createContext<TabsContextProps>({});
4242
* ```
4343
*/
4444
export const TabsRoot = forwardRef<HTMLDivElement, TabsProps>(
45-
(
46-
{
47-
size = 'md',
48-
children,
49-
value,
50-
defaultValue,
51-
className,
52-
onChange,
53-
...rest
54-
},
55-
ref,
56-
) => {
45+
({ size = 'md', value, defaultValue, className, onChange, ...rest }, ref) => {
5746
const isControlled = value !== undefined;
5847
const [uncontrolledValue, setUncontrolledValue] = useState<
5948
string | undefined
@@ -77,12 +66,11 @@ export const TabsRoot = forwardRef<HTMLDivElement, TabsProps>(
7766
}}
7867
>
7968
<div
80-
className={cl('ds-tabs', `ds-tabs--${size}`, className)}
69+
className={cl('ds-tabs', className)}
70+
data-size={size}
8171
ref={ref}
8272
{...rest}
83-
>
84-
{children}
85-
</div>
73+
/>
8674
</TabsContext.Provider>
8775
);
8876
},

0 commit comments

Comments
 (0)