diff --git a/packages/sample-app-fabric/App.tsx b/packages/sample-app-fabric/App.tsx
index 3ac27a50420..5bd37060a15 100644
--- a/packages/sample-app-fabric/App.tsx
+++ b/packages/sample-app-fabric/App.tsx
@@ -5,13 +5,44 @@
* @format
*/
-import React from 'react';
-import {SafeAreaView, StatusBar, useColorScheme} from 'react-native';
+/**
+ * Sample React Native App
+ * https://github.com/facebook/react-native
+ *
+ * @format
+ */
+
+import React, {useState} from 'react';
+import {SafeAreaView, StatusBar, useColorScheme, View, Text, StyleSheet} from 'react-native';
import {NewAppScreen} from '@react-native/new-app-screen';
+import {CalendarView} from 'xaml-calendar-view';
+
+type SectionProps = {
+ title: string;
+ children?: React.ReactNode;
+};
+
+function Section({title, children}: SectionProps): React.JSX.Element {
+ return (
+
+ {title}
+ {typeof children === 'string' ? (
+ {children}
+ ) : (
+ children
+ )}
+
+ );
+}
+
function App(): React.JSX.Element {
const isDarkMode = useColorScheme() === 'dark';
+ // Adjust this type if your native event uses a different shape.
+ // Many RNW components emit strings or numbers; you can swap to Date if you convert it.
+ const [selectedDate, setSelectedDate] = useState(undefined);
+
return (
+
+ {/* Your app content below the new screen */}
+
+
+
+ Showing a CalendarView here (displayMode=1 for month view).
+
+
+ {
+ setSelectedDate(e.nativeEvent.startDate);
+ }}
+ />
+
+
+
+
+ {selectedDate ?? '—'}
+
+
+
+ {/* New RN welcome screen */}
);
}
+const styles = StyleSheet.create({
+ content: {
+ paddingHorizontal: 24,
+ paddingVertical: 16,
+ },
+ sectionContainer: {
+ marginTop: 16,
+ },
+ sectionTitle: {
+ fontSize: 20,
+ fontWeight: '600',
+ marginBottom: 6,
+ },
+ sectionDescription: {
+ fontSize: 16,
+ fontWeight: '400',
+ },
+});
+
export default App;
diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json
index 043278e0fc6..6e0bc1c439c 100644
--- a/packages/sample-app-fabric/package.json
+++ b/packages/sample-app-fabric/package.json
@@ -18,7 +18,8 @@
"@react-native/new-app-screen": "0.82.0-nightly-20250806-5936f29d6",
"react": "^19.1.0",
"react-native": "0.82.0-nightly-20250806-5936f29d6",
- "react-native-windows": "^0.0.0-canary.1004"
+ "react-native-windows": "^0.0.0-canary.1004",
+ "xaml-calendar-view": "1.0.0"
},
"devDependencies": {
"@babel/core": "^7.25.2",
diff --git a/packages/sample-app-fabric/windows/SampleAppFabric.sln b/packages/sample-app-fabric/windows/SampleAppFabric.sln
index 1eabd0cabef..8711ed0bd9d 100644
--- a/packages/sample-app-fabric/windows/SampleAppFabric.sln
+++ b/packages/sample-app-fabric/windows/SampleAppFabric.sln
@@ -35,63 +35,54 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mso", "..\..\..\vnext\Mso\M
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Include", "..\..\..\vnext\include\Include.vcxitems", "{EF074BA1-2D54-4D49-A28E-5E040B47CD2E}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XamlCalendarView", "..\..\..\node_modules\xaml-calendar-view\windows\XamlCalendarView\XamlCalendarView.vcxproj", "{3501592F-3196-4EE1-B4AA-FE4A5F29063B}"
+EndProject
Global
- GlobalSection(SharedMSBuildProjectFiles) = preSolution
- ..\..\..\vnext\Shared\Shared.vcxitems*{2049dbe9-8d13-42c9-ae4b-413ae38fffd0}*SharedItemsImports = 9
- ..\..\..\vnext\Mso\Mso.vcxitems*{84e05bfa-cbaf-4f0d-bfb6-4ce85742a57e}*SharedItemsImports = 9
- ..\..\..\vnext\Chakra\Chakra.vcxitems*{c38970c0-5fbf-4d69-90d8-cbac225ae895}*SharedItemsImports = 9
- ..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{da8b35b3-da00-4b02-bde6-6a397b3fd46b}*SharedItemsImports = 9
- ..\..\..\vnext\include\Include.vcxitems*{ef074ba1-2d54-4d49-a28e-5e040b47cd2e}*SharedItemsImports = 9
- ..\..\..\vnext\Chakra\Chakra.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
- ..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
- ..\..\..\vnext\Mso\Mso.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
- ..\..\..\vnext\Shared\Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
- EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
- Debug|ARM64 = Debug|ARM64
+ Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
- Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|ARM64.Build.0 = Debug|ARM64
+ {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|ARM64.Deploy.0 = Debug|ARM64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|x64.ActiveCfg = Debug|x64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|x64.Build.0 = Debug|x64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|x64.Deploy.0 = Debug|x64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|x86.ActiveCfg = Debug|x86
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|x86.Build.0 = Debug|x86
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|x86.Deploy.0 = Debug|x86
- {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|ARM64.Build.0 = Debug|ARM64
- {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|ARM64.ActiveCfg = Release|ARM64
+ {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|ARM64.Build.0 = Release|ARM64
+ {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|ARM64.Deploy.0 = Release|ARM64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|x64.ActiveCfg = Release|x64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|x64.Build.0 = Release|x64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|x64.Deploy.0 = Release|x64
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|x86.ActiveCfg = Release|x86
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|x86.Build.0 = Release|x86
{7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|x86.Deploy.0 = Release|x86
- {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|ARM64.ActiveCfg = Release|ARM64
- {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|ARM64.Build.0 = Release|ARM64
- {7E2B86E3-E6B0-409D-812E-0D81DFFACA9D}.Release|ARM64.Deploy.0 = Release|ARM64
+ {E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|ARM64.Build.0 = Debug|ARM64
+ {E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|ARM64.Deploy.0 = Debug|ARM64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|x64.ActiveCfg = Debug|x64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|x64.Build.0 = Debug|x64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|x64.Deploy.0 = Debug|x64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|x86.ActiveCfg = Debug|Win32
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|x86.Build.0 = Debug|Win32
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|x86.Deploy.0 = Debug|Win32
- {E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|ARM64.Build.0 = Debug|ARM64
- {E278ABE5-5A88-48C5-A949-CA00B489643F}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|ARM64.ActiveCfg = Release|ARM64
+ {E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|ARM64.Build.0 = Release|ARM64
+ {E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|ARM64.Deploy.0 = Release|ARM64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|x64.ActiveCfg = Release|x64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|x64.Build.0 = Release|x64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|x64.Deploy.0 = Release|x64
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|x86.ActiveCfg = Release|Win32
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|x86.Build.0 = Release|Win32
{E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|x86.Deploy.0 = Release|Win32
- {E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|ARM64.ActiveCfg = Release|ARM64
- {E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|ARM64.Build.0 = Release|ARM64
- {E278ABE5-5A88-48C5-A949-CA00B489643F}.Release|ARM64.Deploy.0 = Release|ARM64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM64.Build.0 = Debug|ARM64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.ActiveCfg = Debug|x64
@@ -104,6 +95,20 @@ Global
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.Build.0 = Release|x64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.ActiveCfg = Release|Win32
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.Build.0 = Release|Win32
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|ARM64.Build.0 = Debug|ARM64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x64.ActiveCfg = Debug|x64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x64.Build.0 = Debug|x64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x86.ActiveCfg = Debug|Win32
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x86.Build.0 = Debug|Win32
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x86.Deploy.0 = Debug|Win32
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|ARM64.ActiveCfg = Release|ARM64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|ARM64.Build.0 = Release|ARM64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x64.ActiveCfg = Release|x64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x64.Build.0 = Release|x64
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x86.ActiveCfg = Release|Win32
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x86.Build.0 = Release|Win32
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x86.Deploy.0 = Release|Win32
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM64.Build.0 = Debug|ARM64
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.ActiveCfg = Debug|x64
@@ -140,26 +145,27 @@ Global
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.Build.0 = Release|x64
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.ActiveCfg = Release|Win32
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.Build.0 = Release|Win32
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|ARM64.Build.0 = Debug|ARM64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x64.ActiveCfg = Debug|x64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x64.Build.0 = Debug|x64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x86.ActiveCfg = Debug|Win32
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x86.Build.0 = Debug|Win32
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Debug|x86.Deploy.0 = Debug|Win32
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|ARM64.ActiveCfg = Release|ARM64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|ARM64.Build.0 = Release|ARM64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x64.ActiveCfg = Release|x64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x64.Build.0 = Release|x64
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x86.ActiveCfg = Release|Win32
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x86.Build.0 = Release|Win32
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C}.Release|x86.Deploy.0 = Release|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|ARM64.Build.0 = Debug|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x64.ActiveCfg = Debug|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x64.Build.0 = Debug|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x86.ActiveCfg = Debug|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x86.Build.0 = Debug|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x86.Deploy.0 = Debug|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|ARM64.ActiveCfg = Release|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|ARM64.Build.0 = Release|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x64.ActiveCfg = Release|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x64.Build.0 = Release|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x86.ActiveCfg = Release|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x86.Build.0 = Release|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x86.Deploy.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{A990658C-CE31-4BCC-976F-0FC6B1AF693D} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {14B93DC8-FD93-4A6D-81CB-8BC96644501C} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
{C38970C0-5FBF-4D69-90D8-CBAC225AE895} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
{F7D32BD0-2749-483E-9A0D-1635EF7E3136} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
@@ -168,9 +174,19 @@ Global
{2049DBE9-8D13-42C9-AE4B-413AE38FFFD0} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
{84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
{EF074BA1-2D54-4D49-A28E-5E040B47CD2E} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
- {14B93DC8-FD93-4A6D-81CB-8BC96644501C} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D43FAD39-F619-437D-BB40-04A3982ACB6A}
EndGlobalSection
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ ..\..\..\vnext\Shared\Shared.vcxitems*{2049dbe9-8d13-42c9-ae4b-413ae38fffd0}*SharedItemsImports = 9
+ ..\..\..\vnext\Mso\Mso.vcxitems*{84e05bfa-cbaf-4f0d-bfb6-4ce85742a57e}*SharedItemsImports = 9
+ ..\..\..\vnext\Chakra\Chakra.vcxitems*{c38970c0-5fbf-4d69-90d8-cbac225ae895}*SharedItemsImports = 9
+ ..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{da8b35b3-da00-4b02-bde6-6a397b3fd46b}*SharedItemsImports = 9
+ ..\..\..\vnext\include\Include.vcxitems*{ef074ba1-2d54-4d49-a28e-5e040b47cd2e}*SharedItemsImports = 9
+ ..\..\..\vnext\Chakra\Chakra.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\Mso\Mso.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\Shared\Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ EndGlobalSection
EndGlobal
diff --git a/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.cpp b/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.cpp
index 5821cfddc55..bc5c9b03d39 100644
--- a/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.cpp
+++ b/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.cpp
@@ -3,12 +3,16 @@
#include "pch.h"
#include "AutolinkedNativeModules.g.h"
+// Includes from xaml-calendar-view
+#include
+
namespace winrt::Microsoft::ReactNative
{
void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation::Collections::IVector const& packageProviders)
{
- UNREFERENCED_PARAMETER(packageProviders);
+ // IReactPackageProviders from xaml-calendar-view
+ packageProviders.Append(winrt::XamlCalendarView::ReactPackageProvider());
}
}
diff --git a/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.targets b/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.targets
index 6a85ec51cd9..0d854874f0b 100644
--- a/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.targets
+++ b/packages/sample-app-fabric/windows/SampleAppFabric/AutolinkedNativeModules.g.targets
@@ -2,5 +2,9 @@
+
+
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}
+
diff --git a/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json b/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json
index 83d8e870d2a..0fdb09a2480 100644
--- a/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json
+++ b/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json
@@ -99,6 +99,15 @@
"Folly": "[1.0.0, )",
"boost": "[1.83.0, )"
}
+ },
+ "xamlcalendarview": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.ReactNative": "[1.0.0, )",
+ "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )",
+ "Microsoft.WindowsAppSDK": "[1.7.250401001, )",
+ "boost": "[1.83.0, )"
+ }
}
},
"native,Version=v0.0/win": {
diff --git a/packages/xaml-calendar-view/.gitignore b/packages/xaml-calendar-view/.gitignore
new file mode 100644
index 00000000000..6ec7c452937
--- /dev/null
+++ b/packages/xaml-calendar-view/.gitignore
@@ -0,0 +1 @@
+lib-commonjs/
diff --git a/packages/xaml-calendar-view/NuGet.config b/packages/xaml-calendar-view/NuGet.config
new file mode 100644
index 00000000000..fe459fedd60
--- /dev/null
+++ b/packages/xaml-calendar-view/NuGet.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/xaml-calendar-view/babel.config.js b/packages/xaml-calendar-view/babel.config.js
new file mode 100644
index 00000000000..bb24878651d
--- /dev/null
+++ b/packages/xaml-calendar-view/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['module:@rnw-scripts/babel-react-native-config'],
+};
diff --git a/packages/xaml-calendar-view/jest.config.js b/packages/xaml-calendar-view/jest.config.js
new file mode 100644
index 00000000000..8eb675e9bc6
--- /dev/null
+++ b/packages/xaml-calendar-view/jest.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ preset: 'react-native',
+};
diff --git a/packages/xaml-calendar-view/just-task.js b/packages/xaml-calendar-view/just-task.js
new file mode 100644
index 00000000000..6627cf0c945
--- /dev/null
+++ b/packages/xaml-calendar-view/just-task.js
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ * @format
+ * @ts-check
+ */
+
+const {task, series} = require('just-scripts');
+const fs = require('fs');
+const glob = require('glob');
+const path = require('path');
+
+// Use the shared base configuration
+require('@rnw-scripts/just-task');
+
+// The TS build process will strip all the types from the NativeComponent spec file. Which means that the codegen babel will not correctly generate the JS view config for the component.
+// So here we manually run babel, overwriting the tsc output, so that we ship the generated code.
+task('codegenNativeComponents', () => {
+ const babel = require('@babel/core');
+ const matches = glob.sync('src/**/*NativeComponent.ts');
+
+ matches.forEach(matchedPath => {
+ const relativePath = path.relative(
+ path.resolve(process.cwd(), 'src'),
+ matchedPath,
+ );
+ const code = fs.readFileSync(matchedPath).toString();
+ const filename = path.resolve(process.cwd(), matchedPath);
+
+ const res = babel.transformSync(code, {
+ ast: false,
+ filename,
+ cwd: process.cwd(),
+ sourceRoot: process.cwd(),
+ root: process.cwd(),
+ babelrc: true,
+ });
+
+ const relativeOutputPath = relativePath.replace(/\.ts$/, '.js');
+
+ fs.writeFileSync(
+ path.resolve(process.cwd(), 'lib-commonjs', relativeOutputPath),
+ res?.code,
+ );
+ });
+});
+
+task(
+ 'buildWithCodegetNativeComponents',
+ series('build', 'codegenNativeComponents'),
+);
diff --git a/packages/xaml-calendar-view/package.json b/packages/xaml-calendar-view/package.json
new file mode 100644
index 00000000000..8b0380ccc5d
--- /dev/null
+++ b/packages/xaml-calendar-view/package.json
@@ -0,0 +1,57 @@
+{
+ "name": "xaml-calendar-view",
+ "version": "1.0.0",
+ "main": "lib-commonjs/index.js",
+ "types": "lib-commonjs/index.d.ts",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "build": "rnw-scripts buildWithCodegetNativeComponents",
+ "lint": "rnw-scripts lint",
+ "lint:fix": "rnw-scripts lint:fix"
+ },
+ "codegenConfig": {
+ "name": "CalendarView",
+ "type": "all",
+ "jsSrcsDir": "src",
+ "windows": {
+ "generators": "componentsWindows",
+ "namespace": "winrt::XamlCalendarView::Codegen",
+ "outputDirectory": "windows/XamlCalendarView/codegen"
+ }
+ },
+ "dependencies": {
+ "@types/react": "^19.0.0",
+ "react": "^19.0.0",
+ "react-native": "0.82.0-nightly-20250806-5936f29d6",
+ "react-native-windows": "^0.0.0-canary.1004"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/generator": "^7.25.0",
+ "@babel/preset-env": "^7.25.3",
+ "@babel/preset-typescript": "^7.8.3",
+ "@babel/runtime": "^7.20.0",
+ "@react-native-community/cli": "20.0.0",
+ "@react-native/metro-config": "0.82.0-nightly-20250806-5936f29d6",
+ "@rnw-scripts/babel-node-config": "2.3.2",
+ "@rnw-scripts/babel-react-native-config": "0.0.0",
+ "@rnw-scripts/eslint-config": "1.2.38",
+ "@rnw-scripts/just-task": "2.3.57",
+ "@rnw-scripts/metro-dev-config": "0.0.0",
+ "@rnw-scripts/ts-config": "2.0.6",
+ "@rnx-kit/jest-preset": "^0.1.16",
+ "@types/react": "^19.0.0",
+ "@typescript-eslint/eslint-plugin": "^7.1.1",
+ "@typescript-eslint/parser": "^7.1.1",
+ "babel-jest": "^29.6.3",
+ "eslint": "^8.19.0",
+ "glob": "^7.1.6",
+ "just-scripts": "^1.3.3",
+ "prettier": "2.8.8",
+ "typescript": "5.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+}
diff --git a/packages/xaml-calendar-view/src/CalendarView.tsx b/packages/xaml-calendar-view/src/CalendarView.tsx
new file mode 100644
index 00000000000..8fe23b958df
--- /dev/null
+++ b/packages/xaml-calendar-view/src/CalendarView.tsx
@@ -0,0 +1,15 @@
+
+import * as React from 'react';
+import RawCalendarView from './CalendarViewNativeComponent';
+
+import XamlHost from 'react-native-windows/Libraries/Components/Xaml/XamlHost';
+
+function CalendarView(props: any) {
+ return (
+
+
+
+ );
+}
+
+export { CalendarView, RawCalendarView };
diff --git a/packages/xaml-calendar-view/src/CalendarViewNativeComponent.ts b/packages/xaml-calendar-view/src/CalendarViewNativeComponent.ts
new file mode 100644
index 00000000000..7aab1a336fc
--- /dev/null
+++ b/packages/xaml-calendar-view/src/CalendarViewNativeComponent.ts
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ */
+
+import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
+import type { ViewProps } from 'react-native';
+import type {DirectEventHandler, Int32} from 'react-native/Libraries/Types/CodegenTypes';
+
+type SelectedDatesChangedEvent = Readonly<{
+ value: boolean;
+ startDate: string;
+}>;
+
+export interface CalendarViewProps extends ViewProps {
+ displayMode : Int32;
+ onSelectedDatesChanged?: DirectEventHandler;
+}
+
+export default codegenNativeComponent('CalendarView');
diff --git a/packages/xaml-calendar-view/src/index.tsx b/packages/xaml-calendar-view/src/index.tsx
new file mode 100644
index 00000000000..5cb606a5706
--- /dev/null
+++ b/packages/xaml-calendar-view/src/index.tsx
@@ -0,0 +1,2 @@
+import { CalendarView, RawCalendarView} from './CalendarView';
+export { CalendarView, RawCalendarView };
diff --git a/packages/xaml-calendar-view/tsconfig.json b/packages/xaml-calendar-view/tsconfig.json
new file mode 100644
index 00000000000..9fe5bc3cf9d
--- /dev/null
+++ b/packages/xaml-calendar-view/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "@rnw-scripts/ts-config",
+ "include": ["src"],
+ "exclude": [
+ "node_modules"
+ ]
+}
\ No newline at end of file
diff --git a/packages/xaml-calendar-view/windows/.gitignore b/packages/xaml-calendar-view/windows/.gitignore
new file mode 100644
index 00000000000..5bc72a4416d
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/.gitignore
@@ -0,0 +1,41 @@
+*AppPackages*
+*BundleArtifacts*
+
+#OS junk files
+[Tt]humbs.db
+*.DS_Store
+
+#Visual Studio files
+*.[Oo]bj
+*.user
+*.aps
+*.pch
+*.vspscc
+*.vssscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.[Cc]ache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.sdf
+*.opensdf
+*.opendb
+*.unsuccessfulbuild
+ipch/
+[Oo]bj/
+[Bb]in
+[Dd]ebug*/
+[Rr]elease*/
+Ankh.NoLoad
+.vs/
+# Visual C++ cache files
+
+#Files generated by the VS build
+**/Generated Files/**
diff --git a/packages/xaml-calendar-view/windows/ExperimentalFeatures.props b/packages/xaml-calendar-view/windows/ExperimentalFeatures.props
new file mode 100644
index 00000000000..3153babecb8
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/ExperimentalFeatures.props
@@ -0,0 +1,33 @@
+
+
+
+
+
+ true
+
+
+ false
+
+ true
+
+
+
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView.sln b/packages/xaml-calendar-view/windows/XamlCalendarView.sln
new file mode 100644
index 00000000000..cb7fc4ee0b2
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView.sln
@@ -0,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32929.385
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XamlCalendarView", "XamlCalendarView\XamlCalendarView.vcxproj", "{3501592F-3196-4EE1-B4AA-FE4A5F29063B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Debug|ARM64 = Debug|ARM64
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ Release|ARM64 = Release|ARM64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x64.ActiveCfg = Debug|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x64.Build.0 = Debug|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x64.Deploy.0 = Debug|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x86.ActiveCfg = Debug|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x86.Build.0 = Debug|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|x86.Deploy.0 = Debug|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|ARM64.Build.0 = Debug|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x64.ActiveCfg = Release|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x64.Build.0 = Release|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x64.Deploy.0 = Release|x64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x86.ActiveCfg = Release|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x86.Build.0 = Release|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|x86.Deploy.0 = Release|Win32
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|ARM64.ActiveCfg = Release|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|ARM64.Build.0 = Release|ARM64
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}.Release|ARM64.Deploy.0 = Release|ARM64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {D43FAD39-F619-437D-BB40-04A3982ACB6A}
+ EndGlobalSection
+EndGlobal
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.cpp b/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.cpp
new file mode 100644
index 00000000000..e2cff280d6c
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.cpp
@@ -0,0 +1,22 @@
+#include "pch.h"
+
+#include "ReactPackageProvider.h"
+#if __has_include("ReactPackageProvider.g.cpp")
+#include "ReactPackageProvider.g.cpp"
+#endif
+
+#include "XamlCalendarView.h"
+
+using namespace winrt::Microsoft::ReactNative;
+
+namespace winrt::XamlCalendarView::implementation
+{
+
+void ReactPackageProvider::CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept
+{
+ AddAttributedModules(packageBuilder, true);
+ RegisterCalendarViewNativeComponent(packageBuilder);
+ //settings.PackageProviders().Append(winrt::Microsoft::ReactNative::Xaml::ReactPackageProvider());
+}
+
+} // namespace winrt::XamlCalendarView::implementation
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.h b/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.h
new file mode 100644
index 00000000000..7baeecd516c
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "ReactPackageProvider.g.h"
+
+using namespace winrt::Microsoft::ReactNative;
+
+namespace winrt::XamlCalendarView::implementation
+{
+
+struct ReactPackageProvider : ReactPackageProviderT
+{
+ ReactPackageProvider() = default;
+
+ void CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept;
+};
+
+} // namespace winrt::XamlCalendarView::implementation
+
+namespace winrt::XamlCalendarView::factory_implementation
+{
+
+struct ReactPackageProvider : ReactPackageProviderT {};
+
+} // namespace winrt::XamlCalendarView::factory_implementation
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.idl b/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.idl
new file mode 100644
index 00000000000..ce11fd77d80
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/ReactPackageProvider.idl
@@ -0,0 +1,9 @@
+namespace XamlCalendarView
+{
+ [webhosthidden]
+ [default_interface]
+ runtimeclass ReactPackageProvider : Microsoft.ReactNative.IReactPackageProvider
+ {
+ ReactPackageProvider();
+ };
+}
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.cpp b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.cpp
new file mode 100644
index 00000000000..c1b5b954303
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.cpp
@@ -0,0 +1,86 @@
+#include "pch.h"
+
+#include "XamlCalendarView.h"
+
+#include
+#include
+
+namespace winrt::XamlCalendarView
+{
+
+struct CalendarView : public winrt::implements,
+ public Codegen::BaseCalendarView {
+
+ winrt::Microsoft::UI::Xaml::UIElement GetXamlElement() {
+ if (m_calendarView == nullptr) {
+ CreateXamlCalendarView();
+ }
+ return m_calendarView;
+ }
+
+ void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::com_ptr &newProps,
+ const winrt::com_ptr &oldProps) noexcept override {
+ Codegen::BaseCalendarView::UpdateProps(view, newProps, oldProps);
+
+ if (m_calendarView && newProps) {
+ m_calendarView.DisplayMode(static_cast(
+ newProps->displayMode));
+ }
+ }
+
+ void CreateXamlCalendarView() {
+ m_calendarView = winrt::Microsoft::UI::Xaml::Controls::CalendarView();
+ if (Props()) {
+ m_calendarView.DisplayMode(
+ static_cast(
+ Props()->displayMode));
+ }
+ m_calendarView.SelectedDatesChanged([this](auto &&, auto &&) {
+ if (auto emitter = EventEmitter()) {
+ Codegen::CalendarView_OnSelectedDatesChanged args;
+ auto selectedDates = m_calendarView.SelectedDates();
+ if (selectedDates.Size() == 0) {
+ args.startDate = "(none)";
+ } else {
+ auto firstSelectedDate = selectedDates.GetAt(0);
+
+ auto tt = winrt::clock::to_time_t(firstSelectedDate);
+ tm local{};
+ localtime_s(&local, &tt);
+ auto timeStr = std::put_time(&local, "%F");
+
+ std::stringstream ss;
+ ss << (timeStr._Tptr->tm_year + 1900) << "-" << (timeStr._Tptr->tm_mon + 1) << "-" << timeStr._Tptr->tm_mday;
+
+ args.startDate = ss.str();
+ }
+ emitter->onSelectedDatesChanged(args);
+ }
+ });
+ }
+
+
+ private:
+ winrt::Microsoft::UI::Xaml::Controls::CalendarView m_calendarView{ nullptr };
+};
+
+
+// See https://microsoft.github.io/react-native-windows/docs/native-modules for details on writing native modules
+
+void XamlCalendarView::Initialize(React::ReactContext const &reactContext) noexcept {
+ m_context = reactContext;
+}
+
+double XamlCalendarView::multiply(double a, double b) noexcept {
+ return a * b;
+}
+
+void RegisterCalendarViewNativeComponent(
+ winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder) noexcept {
+ Codegen::RegisterCalendarViewNativeComponent(packageBuilder, {});
+}
+
+
+} // namespace winrt::XamlCalendarView
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.def b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.def
new file mode 100644
index 00000000000..24e7c1235c3
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.def
@@ -0,0 +1,3 @@
+EXPORTS
+DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
+DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.h b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.h
new file mode 100644
index 00000000000..2f57b16c4ff
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "pch.h"
+#include "resource.h"
+
+#if __has_include("codegen/NativeXamlCalendarViewDataTypes.g.h")
+ #include "codegen/NativeXamlCalendarViewDataTypes.g.h"
+#endif
+
+#include "codegen/react/components/CalendarView/CalendarView.g.h"
+
+#include "NativeModules.h"
+
+namespace winrt::XamlCalendarView
+{
+
+REACT_MODULE(XamlCalendarView)
+struct XamlCalendarView
+{
+ //using ModuleSpec = XamlCalendarViewCodegen::XamlCalendarViewSpec;
+
+ REACT_INIT(Initialize)
+ void Initialize(React::ReactContext const &reactContext) noexcept;
+
+ REACT_SYNC_METHOD(multiply)
+ double multiply(double a, double b) noexcept;
+
+private:
+ React::ReactContext m_context;
+};
+
+void RegisterCalendarViewNativeComponent(
+ winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder) noexcept;
+
+} // namespace winrt::XamlCalendarView
+
+
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.rc b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.rc
new file mode 100644
index 00000000000..3212c105fce
Binary files /dev/null and b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.rc differ
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.vcxproj b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.vcxproj
new file mode 100644
index 00000000000..0d6a8c26676
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.vcxproj
@@ -0,0 +1,140 @@
+
+
+
+
+
+ true
+ true
+ {3501592F-3196-4EE1-B4AA-FE4A5F29063B}
+ XamlCalendarView
+ Win32Proj
+ XamlCalendarView
+ 10.0
+ en-US
+ 17.0
+ false
+
+
+ $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native-windows\package.json'))\node_modules\react-native-windows\
+ false
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
+
+
+ DynamicLibrary
+ Unicode
+ v143
+ false
+
+
+ true
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ Use
+ pch.h
+ $(IntDir)pch.pch
+ Level4
+ true
+ %(AdditionalOptions) /bigobj
+ 4453;28204
+ _WINRT_DLL;%(PreprocessorDefinitions)
+ $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)
+ stdcpp20
+
+
+ shell32.lib;user32.lib;windowsapp.lib;%(AdditionalDependenices)
+ Console
+ true
+ XamlCalendarView.def
+
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+
+
+
+
+ ReactPackageProvider.idl
+
+
+
+
+
+
+
+
+ Create
+
+
+ ReactPackageProvider.idl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references targets in your node_modules\react-native-windows folder. The missing file is {0}.
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.vcxproj.filters b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.vcxproj.filters
new file mode 100644
index 00000000000..c14f7bdb9af
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/XamlCalendarView.vcxproj.filters
@@ -0,0 +1,44 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/codegen/.clang-format b/packages/xaml-calendar-view/windows/XamlCalendarView/codegen/.clang-format
new file mode 100644
index 00000000000..a43d914ec38
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/codegen/.clang-format
@@ -0,0 +1,2 @@
+DisableFormat: true
+SortIncludes: false
\ No newline at end of file
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/codegen/react/components/CalendarView/CalendarView.g.h b/packages/xaml-calendar-view/windows/XamlCalendarView/codegen/react/components/CalendarView/CalendarView.g.h
new file mode 100644
index 00000000000..e09befdfeb9
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/codegen/react/components/CalendarView/CalendarView.g.h
@@ -0,0 +1,217 @@
+
+/*
+ * This file is auto-generated from CalendarViewNativeComponent spec file in flow / TypeScript.
+ */
+// clang-format off
+#pragma once
+
+#include
+
+#ifdef RNW_NEW_ARCH
+#include
+
+#include
+#include
+#endif // #ifdef RNW_NEW_ARCH
+
+#ifdef RNW_NEW_ARCH
+
+namespace winrt::XamlCalendarView::Codegen {
+
+REACT_STRUCT(CalendarViewProps)
+struct CalendarViewProps : winrt::implements {
+ CalendarViewProps(winrt::Microsoft::ReactNative::ViewProps props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom)
+ : ViewProps(props)
+ {
+ if (cloneFrom) {
+ auto cloneFromProps = cloneFrom.as();
+ displayMode = cloneFromProps->displayMode;
+ }
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_FIELD(displayMode)
+ int32_t displayMode{};
+
+ const winrt::Microsoft::ReactNative::ViewProps ViewProps;
+};
+
+REACT_STRUCT(CalendarView_OnSelectedDatesChanged)
+struct CalendarView_OnSelectedDatesChanged {
+ REACT_FIELD(value)
+ bool value{};
+
+ REACT_FIELD(startDate)
+ std::string startDate;
+};
+
+struct CalendarViewEventEmitter {
+ CalendarViewEventEmitter(const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter)
+ : m_eventEmitter(eventEmitter) {}
+
+ using OnSelectedDatesChanged = CalendarView_OnSelectedDatesChanged;
+
+ void onSelectedDatesChanged(OnSelectedDatesChanged &value) const {
+ m_eventEmitter.DispatchEvent(L"selectedDatesChanged", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {
+ winrt::Microsoft::ReactNative::WriteValue(writer, value);
+ });
+ }
+
+ private:
+ winrt::Microsoft::ReactNative::EventEmitter m_eventEmitter{nullptr};
+};
+
+template
+struct BaseCalendarView {
+
+ virtual void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView &/*view*/,
+ const winrt::com_ptr &newProps,
+ const winrt::com_ptr &/*oldProps*/) noexcept {
+ m_props = newProps;
+ }
+
+ // UpdateLayoutMetrics will only be called if this method is overridden
+ virtual void UpdateLayoutMetrics(
+ const winrt::Microsoft::ReactNative::ComponentView &/*view*/,
+ const winrt::Microsoft::ReactNative::LayoutMetrics &/*newLayoutMetrics*/,
+ const winrt::Microsoft::ReactNative::LayoutMetrics &/*oldLayoutMetrics*/) noexcept {
+ }
+
+ // UpdateState will only be called if this method is overridden
+ virtual void UpdateState(
+ const winrt::Microsoft::ReactNative::ComponentView &/*view*/,
+ const winrt::Microsoft::ReactNative::IComponentState &/*newState*/) noexcept {
+ }
+
+ virtual void UpdateEventEmitter(const std::shared_ptr &eventEmitter) noexcept {
+ m_eventEmitter = eventEmitter;
+ }
+
+ // MountChildComponentView will only be called if this method is overridden
+ virtual void MountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &/*args*/) noexcept {
+ }
+
+ // UnmountChildComponentView will only be called if this method is overridden
+ virtual void UnmountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &/*args*/) noexcept {
+ }
+
+ // Initialize will only be called if this method is overridden
+ virtual void Initialize(const winrt::Microsoft::ReactNative::ComponentView &/*view*/) noexcept {
+ }
+
+ // CreateVisual will only be called if this method is overridden
+ virtual winrt::Microsoft::UI::Composition::Visual CreateVisual(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
+ return view.as().Compositor().CreateSpriteVisual();
+ }
+
+ // FinalizeUpdate will only be called if this method is overridden
+ virtual void FinalizeUpdate(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,
+ winrt::Microsoft::ReactNative::ComponentViewUpdateMask /*mask*/) noexcept {
+ }
+
+
+
+ const std::shared_ptr& EventEmitter() const { return m_eventEmitter; }
+ const winrt::com_ptr& Props() const { return m_props; }
+
+private:
+ winrt::com_ptr m_props;
+ std::shared_ptr m_eventEmitter;
+};
+
+template
+void RegisterCalendarViewNativeComponent(
+ winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder,
+ std::function builderCallback) noexcept {
+ packageBuilder.as().AddViewComponent(
+ L"CalendarView", [builderCallback](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
+ auto compBuilder = builder.as();
+
+ builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props,
+ const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) noexcept {
+ return winrt::make(props, cloneFrom);
+ });
+
+ builder.SetUpdatePropsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept {
+ auto userData = view.UserData().as();
+ userData->UpdateProps(view, newProps ? newProps.as() : nullptr, oldProps ? oldProps.as() : nullptr);
+ });
+
+ compBuilder.SetUpdateLayoutMetricsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::LayoutMetrics &newLayoutMetrics,
+ const winrt::Microsoft::ReactNative::LayoutMetrics &oldLayoutMetrics) noexcept {
+ auto userData = view.UserData().as();
+ userData->UpdateLayoutMetrics(view, newLayoutMetrics, oldLayoutMetrics);
+ });
+
+ builder.SetUpdateEventEmitterHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter) noexcept {
+ auto userData = view.UserData().as();
+ userData->UpdateEventEmitter(std::make_shared(eventEmitter));
+ });
+
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseCalendarView::FinalizeUpdate) {
+ builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
+ auto userData = view.UserData().as();
+ userData->FinalizeUpdate(view, mask);
+ });
+ }
+
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseCalendarView::UpdateState) {
+ builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
+ auto userData = view.UserData().as();
+ userData->UpdateState(view, newState);
+ });
+ }
+
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseCalendarView::MountChildComponentView) {
+ builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
+ auto userData = view.UserData().as();
+ return userData->MountChildComponentView(view, args);
+ });
+ }
+
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseCalendarView::UnmountChildComponentView) {
+ builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
+ auto userData = view.UserData().as();
+ return userData->UnmountChildComponentView(view, args);
+ });
+ }
+
+ compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
+ auto userData = winrt::make_self();
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseCalendarView::Initialize) {
+ userData->Initialize(view);
+ }
+ view.UserData(*userData);
+ });
+
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseCalendarView::CreateVisual) {
+ compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
+ auto userData = view.UserData().as();
+ return userData->CreateVisual(view);
+ });
+ }
+
+ // Allow app to further customize the builder
+ if (builderCallback) {
+ builderCallback(compBuilder);
+ }
+ });
+}
+
+} // namespace winrt::XamlCalendarView::Codegen
+
+#endif // #ifdef RNW_NEW_ARCH
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/packages.lock.json b/packages/xaml-calendar-view/windows/XamlCalendarView/packages.lock.json
new file mode 100644
index 00000000000..957ffef6cca
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/packages.lock.json
@@ -0,0 +1,104 @@
+{
+ "version": 1,
+ "dependencies": {
+ "native,Version=v0.0": {
+ "boost": {
+ "type": "Direct",
+ "requested": "[1.83.0, )",
+ "resolved": "1.83.0",
+ "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ=="
+ },
+ "Microsoft.VCRTForwarders.140": {
+ "type": "Direct",
+ "requested": "[1.0.2-rc, )",
+ "resolved": "1.0.2-rc",
+ "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ=="
+ },
+ "Microsoft.Windows.CppWinRT": {
+ "type": "Direct",
+ "requested": "[2.0.230706.1, )",
+ "resolved": "2.0.230706.1",
+ "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ=="
+ },
+ "Microsoft.WindowsAppSDK": {
+ "type": "Direct",
+ "requested": "[1.7.250401001, )",
+ "resolved": "1.7.250401001",
+ "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==",
+ "dependencies": {
+ "Microsoft.Web.WebView2": "1.0.2903.40",
+ "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
+ }
+ },
+ "Microsoft.Build.Tasks.Git": {
+ "type": "Transitive",
+ "resolved": "1.1.1",
+ "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q=="
+ },
+ "Microsoft.JavaScript.Hermes": {
+ "type": "Transitive",
+ "resolved": "0.0.0-2511.7001-d7ca19b3",
+ "contentHash": "/EGy/gbTWpFZPZ4Z81QxbGQxpZhqiOE3qrnSokZRgXAyHivl15s7zZkRLOy9daDmVyEfanq7YBCOMi0ha58uQA=="
+ },
+ "Microsoft.SourceLink.Common": {
+ "type": "Transitive",
+ "resolved": "1.1.1",
+ "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg=="
+ },
+ "Microsoft.SourceLink.GitHub": {
+ "type": "Transitive",
+ "resolved": "1.1.1",
+ "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==",
+ "dependencies": {
+ "Microsoft.Build.Tasks.Git": "1.1.1",
+ "Microsoft.SourceLink.Common": "1.1.1"
+ }
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.2903.40",
+ "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ=="
+ },
+ "Microsoft.Windows.SDK.BuildTools": {
+ "type": "Transitive",
+ "resolved": "10.0.22621.756",
+ "contentHash": "7ZL2sFSioYm1Ry067Kw1hg0SCcW5kuVezC2SwjGbcPE61Nn+gTbH86T73G3LcEOVj0S3IZzNuE/29gZvOLS7VA=="
+ },
+ "common": {
+ "type": "Project",
+ "dependencies": {
+ "boost": "[1.83.0, )"
+ }
+ },
+ "fmt": {
+ "type": "Project"
+ },
+ "folly": {
+ "type": "Project",
+ "dependencies": {
+ "boost": "[1.83.0, )",
+ "fmt": "[1.0.0, )"
+ }
+ },
+ "microsoft.reactnative": {
+ "type": "Project",
+ "dependencies": {
+ "Common": "[1.0.0, )",
+ "Folly": "[1.0.0, )",
+ "Microsoft.JavaScript.Hermes": "[0.0.0-2511.7001-d7ca19b3, )",
+ "Microsoft.SourceLink.GitHub": "[1.1.1, )",
+ "Microsoft.WindowsAppSDK": "[1.7.250401001, )",
+ "ReactCommon": "[1.0.0, )",
+ "boost": "[1.83.0, )"
+ }
+ },
+ "reactcommon": {
+ "type": "Project",
+ "dependencies": {
+ "Folly": "[1.0.0, )",
+ "boost": "[1.83.0, )"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/pch.cpp b/packages/xaml-calendar-view/windows/XamlCalendarView/pch.cpp
new file mode 100644
index 00000000000..1d9f38c57d6
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/pch.cpp
@@ -0,0 +1 @@
+#include "pch.h"
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/pch.h b/packages/xaml-calendar-view/windows/XamlCalendarView/pch.h
new file mode 100644
index 00000000000..61d356df65a
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/pch.h
@@ -0,0 +1,30 @@
+// pch.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#define NOMINMAX 1
+#define WIN32_LEAN_AND_MEAN 1
+#define WINRT_LEAN_AND_MEAN 1
+
+// Windows Header Files
+#include
+#undef GetCurrentTime
+#include
+
+// WinRT Header Files
+#include
+#include
+#include
+
+// C RunTime Header Files
+#include
+#include
+#include
+#include
+
+// Reference additional headers your project requires here
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/resource.h b/packages/xaml-calendar-view/windows/XamlCalendarView/resource.h
new file mode 100644
index 00000000000..c8bbf48db31
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/resource.h
@@ -0,0 +1,5 @@
+//
+// Microsoft Visual C++ generated include file.
+// Used by XamlCalendarView.rc
+
+#pragma once
diff --git a/packages/xaml-calendar-view/windows/XamlCalendarView/targetver.h b/packages/xaml-calendar-view/windows/XamlCalendarView/targetver.h
new file mode 100644
index 00000000000..87c0086de75
--- /dev/null
+++ b/packages/xaml-calendar-view/windows/XamlCalendarView/targetver.h
@@ -0,0 +1,8 @@
+#pragma once
+
+// Including SDKDDKVer.h defines the highest available Windows platform.
+
+// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
+// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
+
+#include
diff --git a/vnext/Microsoft.ReactNative/ReactNativeHost.cpp b/vnext/Microsoft.ReactNative/ReactNativeHost.cpp
index 543a0c7d441..a1294c3f4ad 100644
--- a/vnext/Microsoft.ReactNative/ReactNativeHost.cpp
+++ b/vnext/Microsoft.ReactNative/ReactNativeHost.cpp
@@ -19,6 +19,8 @@
#include
#include
+#include "XamlHost.h"
+
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
@@ -96,6 +98,8 @@ IAsyncAction ReactNativeHost::ReloadInstance() noexcept {
winrt::Microsoft::ReactNative::Composition::implementation::RegisterWindowsModalHostNativeComponent(m_packageBuilder);
+ RegisterXamlHostComponentView(m_packageBuilder);
+
if (auto packageProviders = InstanceSettings().PackageProviders()) {
for (auto const &packageProvider : packageProviders) {
packageProvider.CreatePackage(m_packageBuilder);
diff --git a/vnext/Microsoft.ReactNative/XamlHost.h b/vnext/Microsoft.ReactNative/XamlHost.h
index 7abc42b8241..6ffd845203c 100644
--- a/vnext/Microsoft.ReactNative/XamlHost.h
+++ b/vnext/Microsoft.ReactNative/XamlHost.h
@@ -2,6 +2,7 @@
#if defined(RNW_NEW_ARCH)
-void RegisterXamlHostComponentView(winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder);
+void RegisterXamlHostComponentView(
+ winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder);
-#endif // defined(RNW_NEW_ARCH) && defined(USE_EXPERIMENTAL_WINUI3)
+#endif // defined(RNW_NEW_ARCH)
diff --git a/vnext/Microsoft.ReactNative/microsoft.reactnative.def b/vnext/Microsoft.ReactNative/microsoft.reactnative.def
index d04a02ea81e..faff126f6c4 100644
--- a/vnext/Microsoft.ReactNative/microsoft.reactnative.def
+++ b/vnext/Microsoft.ReactNative/microsoft.reactnative.def
@@ -1,3 +1,4 @@
EXPORTS
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
+RegisterXamlHostComponentView
diff --git a/yarn.lock b/yarn.lock
index 9fb9c64e0b3..1d5fe9128fe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1051,20 +1051,7 @@
"@babel/parser" "^7.27.2"
"@babel/types" "^7.27.1"
-"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b"
- integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==
- dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.5"
- "@babel/helper-globals" "^7.28.0"
- "@babel/parser" "^7.28.5"
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.5"
- debug "^4.3.1"
-
-"@babel/traverse@^7.23.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5":
+"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3", "@babel/traverse@^7.23.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b"
integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==
@@ -2258,6 +2245,11 @@
invariant "^2.2.4"
nullthrows "^1.1.1"
+"@rnw-scripts/babel-node-config@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@rnw-scripts/babel-node-config/-/babel-node-config-2.3.2.tgz#9390105194f054269ae759ef8f4ab5b986c2097d"
+ integrity sha512-DBHZGG6bT4vN9OCrApc9NQcQqWPYeSxQxltaYZX3WY4rK3HutETmKdJHqa83MdYF/KMegFzBKROFv9/jAGYElw==
+
"@rnx-kit/align-deps@^2.5.0":
version "2.5.5"
resolved "https://registry.yarnpkg.com/@rnx-kit/align-deps/-/align-deps-2.5.5.tgz#708b4fd65941699e1ef33c728d34bc568e648b73"
@@ -10361,7 +10353,7 @@ react-test-renderer@19.1.1:
react-is "^19.1.1"
scheduler "^0.26.0"
-react@19.1.0, react@19.1.1, react@^19.1.0:
+react@19.1.0, react@19.1.1, react@^19.0.0, react@^19.1.0:
version "19.1.1"
resolved "https://registry.yarnpkg.com/react/-/react-19.1.1.tgz#06d9149ec5e083a67f9a1e39ce97b06a03b644af"
integrity sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==
@@ -11230,16 +11222,7 @@ string-natural-compare@^3.0.1:
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
-"string-width-cjs@npm:string-width@^4.2.0":
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string-width@4.2.3, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", string-width@4.2.3, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -11347,14 +11330,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-ansi@^5.0.0, strip-ansi@^5.2.0, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1, strip-ansi@^7.1.0, strip-ansi@^7.1.2:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^5.0.0, strip-ansi@^5.2.0, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1, strip-ansi@^7.1.0, strip-ansi@^7.1.2:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -12207,7 +12183,7 @@ workspace-tools@^0.38.2:
js-yaml "^4.1.0"
micromatch "^4.0.0"
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -12225,15 +12201,6 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^8.0.1, wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"