diff --git a/change/@fluentui-web-components-34bbc81e-cea2-4fe8-8367-7c1f6fe72fe8.json b/change/@fluentui-web-components-34bbc81e-cea2-4fe8-8367-7c1f6fe72fe8.json
new file mode 100644
index 00000000000000..0c5c4ea57a274f
--- /dev/null
+++ b/change/@fluentui-web-components-34bbc81e-cea2-4fe8-8367-7c1f6fe72fe8.json
@@ -0,0 +1,7 @@
+{
+ "type": "prerelease",
+ "comment": "Export patterns.",
+ "packageName": "@fluentui/web-components",
+ "email": "mlijanto@microsoft.com",
+ "dependentChangeType": "patch"
+}
diff --git a/packages/web-components/docs/api-report.md b/packages/web-components/docs/api-report.md
index 6029615a7df809..b306a326ec6020 100644
--- a/packages/web-components/docs/api-report.md
+++ b/packages/web-components/docs/api-report.md
@@ -6,6 +6,7 @@
///
+import { CaptureType } from '@microsoft/fast-element';
import { CSSDirective } from '@microsoft/fast-element';
import { Direction } from '@microsoft/fast-web-utilities';
import { ElementStyles } from '@microsoft/fast-element';
@@ -61,8 +62,6 @@ export class AccordionItem extends BaseAccordionItem {
sizeChanged(prev: AccordionItemSize, next: AccordionItemSize): void;
}
-// Warning: (ae-forgotten-export) The symbol "StartEnd" needs to be exported by the entry point index.d.ts
-//
// @internal
export interface AccordionItem extends StartEnd {
}
@@ -81,8 +80,6 @@ export const AccordionItemMarkerPosition: {
// @public
export type AccordionItemMarkerPosition = ValuesOf;
-// Warning: (ae-forgotten-export) The symbol "StartEndOptions" needs to be exported by the entry point index.d.ts
-//
// @public
export type AccordionItemOptions = StartEndOptions & {
expandedIcon?: StaticallyComposableHTML;
@@ -2229,6 +2226,14 @@ export const durationUltraFast = "var(--durationUltraFast)";
// @public
export const durationUltraSlow = "var(--durationUltraSlow)";
+// @public
+export type EndOptions = {
+ end?: StaticallyComposableHTML;
+};
+
+// @public
+export function endSlotTemplate(options: EndOptions): CaptureType;
+
// @public
export class Field extends BaseField {
labelPosition: FieldLabelPosition;
@@ -3223,6 +3228,25 @@ export const SpinnerStyles: ElementStyles;
// @public (undocumented)
export const SpinnerTemplate: ViewTemplate;
+// @public
+export class StartEnd {
+ // (undocumented)
+ end: HTMLSlotElement;
+ // (undocumented)
+ start: HTMLSlotElement;
+}
+
+// @public
+export type StartEndOptions = StartOptions & EndOptions;
+
+// @public
+export type StartOptions = {
+ start?: StaticallyComposableHTML;
+};
+
+// @public
+export function startSlotTemplate(options: StartOptions): CaptureType;
+
// @public
export const strokeWidthThick = "var(--strokeWidthThick)";
diff --git a/packages/web-components/src/index.ts b/packages/web-components/src/index.ts
index 993480800d6bc2..47e6386cb66d87 100644
--- a/packages/web-components/src/index.ts
+++ b/packages/web-components/src/index.ts
@@ -146,6 +146,8 @@ export {
export type { MenuItemColumnCount, MenuItemOptions } from './menu-item/index.js';
export { MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
export { Menu, MenuDefinition, MenuStyles, MenuTemplate } from './menu/index.js';
+export { StartEnd, endSlotTemplate, startSlotTemplate } from './patterns/start-end.js';
+export type { StartOptions, EndOptions, StartEndOptions } from './patterns/start-end.js';
export {
BaseProgressBar,
ProgressBar,