Skip to content

Commit a8941d5

Browse files
authored
feat(react-divider): implement headless style hook for Divider component (#35506)
1 parent 5f51555 commit a8941d5

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "minor",
3+
"comment": "feat: implement headless style hook for Divider component",
4+
"packageName": "@fluentui/react-divider",
5+
"email": "[email protected]",
6+
"dependentChangeType": "patch"
7+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'use client';
2+
3+
import { DividerSlots, DividerState } from './Divider.types';
4+
import type { SlotClassNames } from '@fluentui/react-utilities';
5+
6+
export const dividerClassNames: SlotClassNames<DividerSlots> = {
7+
root: 'fui-Divider',
8+
wrapper: 'fui-Divider__wrapper',
9+
};
10+
11+
/**
12+
* Attaches only semantic slot class names and state modifiers
13+
*/
14+
export const useDividerStyles_unstable = (state: DividerState): DividerState => {
15+
'use no memo';
16+
17+
const { alignContent, appearance, inset, vertical } = state;
18+
19+
state.root.className = [
20+
dividerClassNames.root,
21+
22+
// Alignment
23+
`${dividerClassNames}--align-${alignContent}`,
24+
25+
// Appearance
26+
`${dividerClassNames}--${appearance}`,
27+
28+
// Orientation
29+
vertical ? `${dividerClassNames}--vertical` : `${dividerClassNames}--horizontal`,
30+
31+
// Inset
32+
inset && `${dividerClassNames}--inset`,
33+
34+
// User provided class name
35+
state.root.className,
36+
]
37+
.filter(Boolean)
38+
.join(' ');
39+
40+
if (state.wrapper) {
41+
state.wrapper.className = [dividerClassNames.wrapper, state.wrapper.className].filter(Boolean).join(' ');
42+
}
43+
44+
return state;
45+
};

0 commit comments

Comments
 (0)