Skip to content

Commit b9bff75

Browse files
committed
address review comments
1 parent 274492a commit b9bff75

20 files changed

Lines changed: 59 additions & 341 deletions

packages/react-components/react-headless-components-preview/library/.babelrc.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/react-components/react-headless-components-preview/library/.swcrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"useSpread": true
2424
}
2525
},
26-
"target": "es2019"
26+
"target": "es2022"
2727
},
2828
"minify": false,
2929
"sourceMaps": true
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# @fluentui/react-headless-components-preview
22

3-
**React Headless Components components for [Fluent UI React](https://react.fluentui.dev/)**
3+
**React Headless Components for [Fluent UI React](https://react.fluentui.dev/)**
44

5-
These are not production-ready components and **should never be used in product**. This space is useful for testing new components whose APIs might change before final release.
5+
> [!WARNING] > **This package is in preview and not production-ready.** APIs may change without notice before final release. **Do not use in production.**
6+
>
7+
> This package exposes unstyled, headless Fluent UI v9 primitives for teams building custom design systems. For most teams, [`@fluentui/react-components`](https://www.npmjs.com/package/@fluentui/react-components) remains the recommended default.

packages/react-components/react-headless-components-preview/library/bundle-size/webpack.analyze.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

packages/react-components/react-headless-components-preview/library/etc/react-headless-components-preview.api.md

Lines changed: 1 addition & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -20,65 +20,16 @@ import type { AccordionPanelBaseProps } from '@fluentui/react-accordion';
2020
import type { AccordionPanelBaseState } from '@fluentui/react-accordion';
2121
import type { AccordionPanelSlots as AccordionPanelSlots_2 } from '@fluentui/react-accordion';
2222
import type { AccordionSlots as AccordionSlots_2 } from '@fluentui/react-accordion';
23-
import { AnnounceContextValue } from '@fluentui/react-shared-contexts';
24-
import { AnnounceProvider } from '@fluentui/react-shared-contexts';
25-
import { assertSlots } from '@fluentui/react-utilities';
2623
import type { ButtonBaseProps } from '@fluentui/react-button';
2724
import { ButtonBaseState } from '@fluentui/react-button';
2825
import type { ButtonSlots as ButtonSlots_2 } from '@fluentui/react-button';
29-
import { ComponentProps } from '@fluentui/react-utilities';
30-
import { ComponentState } from '@fluentui/react-utilities';
3126
import { ContextSelector } from '@fluentui/react-context-selector';
3227
import type { DividerBaseProps } from '@fluentui/react-divider';
3328
import { DividerBaseState } from '@fluentui/react-divider';
3429
import type { DividerSlots as DividerSlots_2 } from '@fluentui/react-divider';
35-
import { ForwardRefComponent } from '@fluentui/react-utilities';
36-
import { getIntrinsicElementProps } from '@fluentui/react-utilities';
37-
import { getNativeElementProps } from '@fluentui/react-utilities';
38-
import { getPartitionedNativeProps } from '@fluentui/react-utilities';
39-
import { getSlotClassNameProp_unstable } from '@fluentui/react-utilities';
40-
import { getSlots } from '@fluentui/react-utilities';
41-
import { IdPrefixProvider } from '@fluentui/react-utilities';
42-
import { isHTMLElement } from '@fluentui/react-utilities';
30+
import type { ForwardRefComponent } from '@fluentui/react-utilities';
4331
import { JSXElement } from '@fluentui/react-utilities';
44-
import { JSXIntrinsicElement } from '@fluentui/react-utilities';
45-
import { JSXIntrinsicElementKeys } from '@fluentui/react-utilities';
46-
import { mergeCallbacks } from '@fluentui/react-utilities';
47-
import { OnSelectionChangeCallback } from '@fluentui/react-utilities';
48-
import { OnSelectionChangeData } from '@fluentui/react-utilities';
49-
import { PortalMountNodeProvider } from '@fluentui/react-shared-contexts';
5032
import type * as React_2 from 'react';
51-
import { resetIdsForTests } from '@fluentui/react-utilities';
52-
import { resolveShorthand } from '@fluentui/react-utilities';
53-
import { ResolveShorthandFunction } from '@fluentui/react-utilities';
54-
import { ResolveShorthandOptions } from '@fluentui/react-utilities';
55-
import { SelectionHookParams } from '@fluentui/react-utilities';
56-
import { SelectionItemId } from '@fluentui/react-utilities';
57-
import { SelectionMethods } from '@fluentui/react-utilities';
58-
import { SelectionMode as SelectionMode_2 } from '@fluentui/react-utilities';
59-
import { Slot } from '@fluentui/react-utilities';
60-
import { slot } from '@fluentui/react-utilities';
61-
import { SlotClassNames } from '@fluentui/react-utilities';
62-
import { SlotComponentType } from '@fluentui/react-utilities';
63-
import { SlotOptions } from '@fluentui/react-utilities';
64-
import { SlotPropsRecord } from '@fluentui/react-utilities';
65-
import { SlotRenderFunction } from '@fluentui/react-utilities';
66-
import { SSRProvider } from '@fluentui/react-utilities';
67-
import { useAnimationFrame } from '@fluentui/react-utilities';
68-
import { useAnnounce } from '@fluentui/react-shared-contexts';
69-
import { useApplyScrollbarWidth } from '@fluentui/react-utilities';
70-
import { useEventCallback } from '@fluentui/react-utilities';
71-
import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
72-
import { useId } from '@fluentui/react-utilities';
73-
import { useIsomorphicLayoutEffect } from '@fluentui/react-utilities';
74-
import { useIsSSR } from '@fluentui/react-utilities';
75-
import { useMergedRefs } from '@fluentui/react-utilities';
76-
import { usePortalMountNode } from '@fluentui/react-shared-contexts';
77-
import { useScrollbarWidth } from '@fluentui/react-utilities';
78-
import { useSelection } from '@fluentui/react-utilities';
79-
import { useThemeClassName_unstable as useThemeClassName } from '@fluentui/react-shared-contexts';
80-
import { useTimeout } from '@fluentui/react-utilities';
81-
import { useTooltipVisibility_unstable as useTooltipVisibility } from '@fluentui/react-shared-contexts';
8233

8334
// @public
8435
export const Accordion: ForwardRefComponent<AccordionProps>;
@@ -131,12 +82,6 @@ export type AccordionSlots = AccordionSlots_2;
13182
// @public (undocumented)
13283
export type AccordionState = AccordionBaseState;
13384

134-
export { AnnounceContextValue }
135-
136-
export { AnnounceProvider }
137-
138-
export { assertSlots }
139-
14085
// @public
14186
export const Button: ForwardRefComponent<ButtonProps>;
14287

@@ -149,10 +94,6 @@ export type ButtonSlots = ButtonSlots_2;
14994
// @public
15095
export type ButtonState = ButtonBaseState;
15196

152-
export { ComponentProps }
153-
154-
export { ComponentState }
155-
15697
// @public
15798
export const Divider: ForwardRefComponent<DividerProps>;
15899

@@ -165,36 +106,6 @@ export type DividerSlots = DividerSlots_2;
165106
// @public (undocumented)
166107
export type DividerState = DividerBaseState;
167108

168-
export { ForwardRefComponent }
169-
170-
export { getIntrinsicElementProps }
171-
172-
export { getNativeElementProps }
173-
174-
export { getPartitionedNativeProps }
175-
176-
export { getSlotClassNameProp_unstable }
177-
178-
export { getSlots }
179-
180-
export { IdPrefixProvider }
181-
182-
export { isHTMLElement }
183-
184-
export { JSXElement }
185-
186-
export { JSXIntrinsicElement }
187-
188-
export { JSXIntrinsicElementKeys }
189-
190-
export { mergeCallbacks }
191-
192-
export { OnSelectionChangeCallback }
193-
194-
export { OnSelectionChangeData }
195-
196-
export { PortalMountNodeProvider }
197-
198109
// @public
199110
export const renderAccordion: (state: AccordionBaseState, contextValues: AccordionContextValues_2) => JSXElement;
200111

@@ -213,38 +124,6 @@ export const renderButton: (state: ButtonBaseState) => JSXElement;
213124
// @public
214125
export const renderDivider: (state: DividerBaseState) => JSXElement;
215126

216-
export { resetIdsForTests }
217-
218-
export { resolveShorthand }
219-
220-
export { ResolveShorthandFunction }
221-
222-
export { ResolveShorthandOptions }
223-
224-
export { SelectionHookParams }
225-
226-
export { SelectionItemId }
227-
228-
export { SelectionMethods }
229-
230-
export { SelectionMode_2 as SelectionMode }
231-
232-
export { Slot }
233-
234-
export { slot }
235-
236-
export { SlotClassNames }
237-
238-
export { SlotComponentType }
239-
240-
export { SlotOptions }
241-
242-
export { SlotPropsRecord }
243-
244-
export { SlotRenderFunction }
245-
246-
export { SSRProvider }
247-
248127
// @public
249128
export const useAccordion: (props: AccordionProps, ref: React_2.Ref<HTMLElement>) => AccordionState;
250129

@@ -263,42 +142,12 @@ export const useAccordionItem: (props: AccordionItemProps, ref: React_2.Ref<HTML
263142
// @public
264143
export const useAccordionPanel: (props: AccordionPanelProps, ref: React_2.Ref<HTMLElement>) => AccordionPanelState;
265144

266-
export { useAnimationFrame }
267-
268-
export { useAnnounce }
269-
270-
export { useApplyScrollbarWidth }
271-
272145
// @public
273146
export const useButton: (props: ButtonProps, ref: React_2.Ref<HTMLButtonElement | HTMLAnchorElement>) => ButtonState;
274147

275148
// @public
276149
export const useDivider: (props: DividerProps, ref: React_2.Ref<HTMLElement>) => DividerState;
277150

278-
export { useEventCallback }
279-
280-
export { useFluent }
281-
282-
export { useId }
283-
284-
export { useIsomorphicLayoutEffect }
285-
286-
export { useIsSSR }
287-
288-
export { useMergedRefs }
289-
290-
export { usePortalMountNode }
291-
292-
export { useScrollbarWidth }
293-
294-
export { useSelection }
295-
296-
export { useThemeClassName }
297-
298-
export { useTimeout }
299-
300-
export { useTooltipVisibility }
301-
302151
// (No @packageDocumentation comment for this package)
303152

304153
```

packages/react-components/react-headless-components-preview/library/jest.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,4 @@ module.exports = {
3030
},
3131
coverageDirectory: './coverage',
3232
setupFilesAfterEnv: ['./config/tests.js'],
33-
snapshotSerializers: ['@griffel/jest-serializer'],
3433
};

packages/react-components/react-headless-components-preview/library/src/components/Accordion/AccordionItem/useAccordionItem.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
} from '@fluentui/react-accordion';
99

1010
import type { AccordionItemProps, AccordionItemState, AccordionItemContextValues } from './AccordionItem.types';
11-
import { mapStateToDataAttributes } from '../../../utils/mapStateToDataAttributes';
11+
import { stringifyDataAttribute } from '../../../utils';
1212

1313
/**
1414
* Returns the state for an AccordionItem component, given its props and ref.
@@ -17,7 +17,10 @@ import { mapStateToDataAttributes } from '../../../utils/mapStateToDataAttribute
1717
export const useAccordionItem = (props: AccordionItemProps, ref: React.Ref<HTMLElement>): AccordionItemState => {
1818
const state = useAccordionItem_unstable(props, ref);
1919

20-
Object.assign(state.root, mapStateToDataAttributes(state, ['disabled', 'open']));
20+
Object.assign(state.root, {
21+
'data-disabled': stringifyDataAttribute(state.disabled),
22+
'data-open': stringifyDataAttribute(state.open),
23+
});
2124

2225
return state;
2326
};

packages/react-components/react-headless-components-preview/library/src/components/Accordion/useAccordion.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
} from '@fluentui/react-accordion';
99

1010
import type { AccordionProps, AccordionState, AccordionContextValues } from './Accordion.types';
11-
import { mapStateToDataAttributes } from '../../utils/mapStateToDataAttributes';
11+
import { stringifyDataAttribute } from '../../utils';
1212

1313
/**
1414
* Returns the state for an Accordion component, given its props and ref.
@@ -17,7 +17,10 @@ import { mapStateToDataAttributes } from '../../utils/mapStateToDataAttributes';
1717
export const useAccordion = (props: AccordionProps, ref: React.Ref<HTMLElement>): AccordionState => {
1818
const state = useAccordionBase_unstable(props, ref);
1919

20-
Object.assign(state.root, mapStateToDataAttributes(state, ['collapsible', 'multiple']));
20+
Object.assign(state.root, {
21+
'data-collapsible': stringifyDataAttribute(state.collapsible),
22+
'data-multiple': stringifyDataAttribute(state.multiple),
23+
});
2124

2225
return state;
2326
};

packages/react-components/react-headless-components-preview/library/src/components/Button/useButton.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type * as React from 'react';
44
import { useButtonBase_unstable } from '@fluentui/react-button';
55

66
import type { ButtonProps, ButtonState } from './Button.types';
7-
import { mapStateToDataAttributes } from '../../utils/mapStateToDataAttributes';
7+
import { stringifyDataAttribute } from '../../utils';
88

99
/**
1010
* Returns the state for a Button component, given its props and ref.
@@ -13,7 +13,11 @@ import { mapStateToDataAttributes } from '../../utils/mapStateToDataAttributes';
1313
export const useButton = (props: ButtonProps, ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>): ButtonState => {
1414
const state = useButtonBase_unstable(props, ref);
1515

16-
Object.assign(state.root, mapStateToDataAttributes(state, ['disabled', 'disabledFocusable', 'iconOnly']));
16+
Object.assign(state.root, {
17+
'data-disabled': stringifyDataAttribute(state.disabled),
18+
'data-disabled-focusable': stringifyDataAttribute(state.disabledFocusable),
19+
'data-icon-only': stringifyDataAttribute(state.iconOnly),
20+
});
1721

1822
return state;
1923
};

0 commit comments

Comments
 (0)