();
+ return (
+
+ setError(data.error)}
+ />
+
+ );
+};
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerFirstDayOfTheWeek.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerFirstDayOfTheWeek.stories.tsx
new file mode 100644
index 00000000000000..04ef9cf6a43e0c
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerFirstDayOfTheWeek.stories.tsx
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import { Field } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+export const FirstDayOfTheWeek = (): JSXElement => (
+
+
+
+);
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerLocalized.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerLocalized.stories.tsx
new file mode 100644
index 00000000000000..09952a16eec50c
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerLocalized.stories.tsx
@@ -0,0 +1,46 @@
+import * as React from 'react';
+import { Field } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { createCalendarDateTimeFormatter } from '@fluentui/react-calendar-preview';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+export const Localized = (): JSXElement => (
+
+ new Intl.DateTimeFormat('fr-FR').format(date)}
+ parseDate={text => {
+ const [day, month, year] = text.split('/').map(Number);
+ if (!day || !month || !year) {
+ return null;
+ }
+ const date = new Date(year, month - 1, day);
+ return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day ? date : null;
+ }}
+ contentAfter={{ 'aria-label': 'Ouvrir le calendrier' }}
+ popupSurface={{ 'aria-label': 'Calendrier' }}
+ calendar={{
+ firstDayOfWeek: 'monday',
+ formatters: {
+ dateTime: createCalendarDateTimeFormatter('fr-FR'),
+ previousMonthLabel: data => `Mois précédent ${data.formattedDate}`,
+ nextMonthLabel: data => `Mois suivant ${data.formattedDate}`,
+ previousYearLabel: data => `Année précédente ${data.formattedDate}`,
+ nextYearLabel: data => `Année suivante ${data.formattedDate}`,
+ previousYearRangeLabel: data => `Années précédentes ${data.formattedRange}`,
+ nextYearRangeLabel: data => `Années suivantes ${data.formattedRange}`,
+ monthPickerHeaderLabel: data => `${data.formattedDate}, changer l'année`,
+ yearPickerHeaderLabel: data => `${data.formattedDate}, changer le mois`,
+ yearRangePickerHeaderLabel: data => `${data.formattedRange}, changer l'année`,
+ weekNumberLabel: data => `Semaine ${data.weekNumber}`,
+ selectedDateLabel: data => `Date sélectionnée ${data.formattedDate}`,
+ todayDateLabel: data => `Aujourd'hui ${data.formattedDate}`,
+ dayMarkedLabel: data => `${data.formattedDate}, marqué`,
+ },
+ goToTodayButton: { children: "Aller Ă aujourd'hui" },
+ }}
+ />
+
+);
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerPopupOptions.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerPopupOptions.stories.tsx
new file mode 100644
index 00000000000000..92bd7b48fc37be
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerPopupOptions.stories.tsx
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import { Field } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+export const PopupOptions = (): JSXElement => (
+
+
+
+);
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerRequired.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerRequired.stories.tsx
new file mode 100644
index 00000000000000..db72e497e03b38
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerRequired.stories.tsx
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import { Field } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+export const Required = (): JSXElement => (
+
+
+
+);
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerSizes.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerSizes.stories.tsx
new file mode 100644
index 00000000000000..c327a40c9f846e
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerSizes.stories.tsx
@@ -0,0 +1,21 @@
+import * as React from 'react';
+import { Field, makeStyles, tokens } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+const useStyles = makeStyles({
+ stack: { display: 'flex', flexDirection: 'column', gap: tokens.spacingVerticalM, alignItems: 'flex-start' },
+});
+
+export const Sizes = (): JSXElement => {
+ const styles = useStyles();
+ return (
+
+ {(['small', 'medium', 'large'] as const).map(size => (
+
+
+
+ ))}
+
+ );
+};
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerTextInput.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerTextInput.stories.tsx
new file mode 100644
index 00000000000000..ea5fdaaa8d8244
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerTextInput.stories.tsx
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import { Field } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+export const TextInput = (): JSXElement => (
+
+
+
+);
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerWeekNumbers.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerWeekNumbers.stories.tsx
new file mode 100644
index 00000000000000..5ffb01e1913613
--- /dev/null
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/DatePickerWeekNumbers.stories.tsx
@@ -0,0 +1,13 @@
+import * as React from 'react';
+import { Field } from '@fluentui/react-components';
+import type { JSXElement } from '@fluentui/react-components';
+import { DatePicker } from '@fluentui/react-datepicker-preview';
+
+export const WeekNumbers = (): JSXElement => (
+
+
+
+);
diff --git a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/index.stories.tsx b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/index.stories.tsx
index a66fea00edb804..bac2252ed8e363 100644
--- a/packages/react-components/react-datepicker-preview/stories/src/DatePicker/index.stories.tsx
+++ b/packages/react-components/react-datepicker-preview/stories/src/DatePicker/index.stories.tsx
@@ -4,6 +4,23 @@ import descriptionMd from './DatePickerDescription.md';
import bestPracticesMd from './DatePickerBestPractices.md';
export { Default } from './DatePickerDefault.stories';
+export { DefaultOpen } from './DatePickerDefaultOpen.stories';
+export { DefaultOpenInline } from './DatePickerDefaultOpenInline.stories';
+export { Appearance } from './DatePickerAppearance.stories';
+export { CalendarComposition } from './DatePickerCalendarComposition.stories';
+export { Controlled } from './DatePickerControlled.stories';
+export { CustomDateFormatting } from './DatePickerCustomDateFormatting.stories';
+export { DateBoundaries } from './DatePickerDateBoundaries.stories';
+export { DateRange } from './DatePickerDateRange.stories';
+export { Disabled } from './DatePickerDisabled.stories';
+export { ErrorHandling } from './DatePickerErrorHandling.stories';
+export { FirstDayOfTheWeek } from './DatePickerFirstDayOfTheWeek.stories';
+export { Localized } from './DatePickerLocalized.stories';
+export { PopupOptions } from './DatePickerPopupOptions.stories';
+export { Required } from './DatePickerRequired.stories';
+export { Sizes } from './DatePickerSizes.stories';
+export { TextInput } from './DatePickerTextInput.stories';
+export { WeekNumbers } from './DatePickerWeekNumbers.stories';
export default {
title: 'Preview Components/DatePicker',
diff --git a/yarn.lock b/yarn.lock
index f4727feddc7664..8e075f51c068d6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3636,7 +3636,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui/react-calendar-preview@npm:*, @fluentui/react-calendar-preview@workspace:packages/react-components/react-calendar-preview/library":
+"@fluentui/react-calendar-preview@npm:*, @fluentui/react-calendar-preview@workspace:^, @fluentui/react-calendar-preview@workspace:packages/react-components/react-calendar-preview/library":
version: 0.0.0-use.local
resolution: "@fluentui/react-calendar-preview@workspace:packages/react-components/react-calendar-preview/library"
dependencies:
@@ -4186,10 +4186,19 @@ __metadata:
version: 0.0.0-use.local
resolution: "@fluentui/react-datepicker-preview@workspace:packages/react-components/react-datepicker-preview/library"
dependencies:
+ "@fluentui/react-calendar-preview": "workspace:^"
+ "@fluentui/react-field": "workspace:^"
+ "@fluentui/react-icons": "npm:^2.0.339"
+ "@fluentui/react-input": "workspace:^"
"@fluentui/react-jsx-runtime": "npm:^9.4.6"
+ "@fluentui/react-portal": "workspace:^"
+ "@fluentui/react-positioning": "workspace:^"
+ "@fluentui/react-provider": "npm:*"
"@fluentui/react-shared-contexts": "npm:^9.26.4"
+ "@fluentui/react-tabster": "workspace:^"
"@fluentui/react-theme": "npm:^9.2.2"
"@fluentui/react-utilities": "npm:^9.26.7"
+ "@fluentui/scripts-cypress": "npm:*"
"@griffel/react": "npm:^1.5.32"
"@swc/helpers": "npm:^0.5.1"
peerDependencies:
@@ -4391,7 +4400,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui/react-field@npm:*, @fluentui/react-field@npm:^9.5.6, @fluentui/react-field@workspace:packages/react-components/react-field/library":
+"@fluentui/react-field@npm:*, @fluentui/react-field@npm:^9.5.6, @fluentui/react-field@workspace:^, @fluentui/react-field@workspace:packages/react-components/react-field/library":
version: 0.0.0-use.local
resolution: "@fluentui/react-field@workspace:packages/react-components/react-field/library"
dependencies:
@@ -4738,7 +4747,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui/react-input@npm:*, @fluentui/react-input@npm:^9.8.8, @fluentui/react-input@workspace:packages/react-components/react-input/library":
+"@fluentui/react-input@npm:*, @fluentui/react-input@npm:^9.8.8, @fluentui/react-input@workspace:^, @fluentui/react-input@workspace:packages/react-components/react-input/library":
version: 0.0.0-use.local
resolution: "@fluentui/react-input@workspace:packages/react-components/react-input/library"
dependencies:
@@ -5319,7 +5328,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui/react-portal@npm:*, @fluentui/react-portal@npm:^9.8.17, @fluentui/react-portal@workspace:packages/react-components/react-portal/library":
+"@fluentui/react-portal@npm:*, @fluentui/react-portal@npm:^9.8.17, @fluentui/react-portal@workspace:^, @fluentui/react-portal@workspace:packages/react-components/react-portal/library":
version: 0.0.0-use.local
resolution: "@fluentui/react-portal@workspace:packages/react-components/react-portal/library"
dependencies:
@@ -5344,7 +5353,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui/react-positioning@npm:*, @fluentui/react-positioning@npm:^9.23.4, @fluentui/react-positioning@workspace:packages/react-components/react-positioning/library":
+"@fluentui/react-positioning@npm:*, @fluentui/react-positioning@npm:^9.23.4, @fluentui/react-positioning@workspace:^, @fluentui/react-positioning@workspace:packages/react-components/react-positioning/library":
version: 0.0.0-use.local
resolution: "@fluentui/react-positioning@workspace:packages/react-components/react-positioning/library"
dependencies:
@@ -5889,7 +5898,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@fluentui/react-tabster@npm:^9.26.19, @fluentui/react-tabster@workspace:packages/react-components/react-tabster":
+"@fluentui/react-tabster@npm:^9.26.19, @fluentui/react-tabster@workspace:^, @fluentui/react-tabster@workspace:packages/react-components/react-tabster":
version: 0.0.0-use.local
resolution: "@fluentui/react-tabster@workspace:packages/react-components/react-tabster"
dependencies: