diff --git a/.eslintignore b/.eslintignore
index 8a2b2137a8..e8f63e7a0a 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -17,8 +17,7 @@ built-storybooks
.eslintrc.js
!.jest.config.js
!.storybook
+!.rnstorybook
examples/expo-example/metro.config.js
storybook.requires.js
-jest.config.js
-app/react-native/scripts/mocks
-addons/ondevice-knobs
\ No newline at end of file
+jest.config.js
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
index b610270dda..9c69c252c4 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,6 +1,9 @@
module.exports = {
root: true,
extends: '@react-native',
+ parserOptions: {
+ requireConfigFile: false,
+ },
rules: {
'react-native/no-inline-styles': 'off',
'react/react-in-jsx-scope': 'off',
diff --git a/MIGRATION.md b/MIGRATION.md
index 440b5c691a..49d1e76172 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -1,6 +1,7 @@
# Migration
- [Migration](#migration)
+ - [From version 8.6.x to 9.x.x](#from-version-86x-to-9xx)
- [From version 7.6.x to 8.3.x](#from-version-76x-to-83x)
- [Dependencies](#dependencies)
- [Regenerate your requires file](#regenerate-your-requires-file)
@@ -39,6 +40,14 @@
- [Test ids for tabs](#test-ids-for-tabs)
- [The server](#the-server)
+## From version 8.6.x to 9.x.x
+
+Update storybook dependencies to 9.x
+
+Rename .storybook to .rnstorybook
+
+install the 'storybook' package if not already installed
+
## From version 7.6.x to 8.3.x
In this version of storybook we've reworked the UI using some community react native packages. We've also overhauled the theme to match the web version.
@@ -65,11 +74,12 @@ For example you may end up with something like this
Add the new required dependencies to your project.
-Expo:
+Expo:
```sh
npx expo install react-native-reanimated react-native-gesture-handler @gorhom/bottom-sheet react-native-svg
```
+
RN Cli:
```sh
diff --git a/examples/expo-example/.maestro/baseline/ActionExample-Actions---Another-Action.png b/examples/expo-example/.maestro/baseline/ActionExample-Actions---Another-Action.png
new file mode 100644
index 0000000000..4066061ce2
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ActionExample-Actions---Another-Action.png differ
diff --git a/examples/expo-example/.maestro/baseline/ActionExample-Actions---Basic.png b/examples/expo-example/.maestro/baseline/ActionExample-Actions---Basic.png
new file mode 100644
index 0000000000..4066061ce2
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ActionExample-Actions---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/BackgroundExample-BackgroundCsf---Basic.png b/examples/expo-example/.maestro/baseline/BackgroundExample-BackgroundCsf---Basic.png
new file mode 100644
index 0000000000..7ba3318f3f
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/BackgroundExample-BackgroundCsf---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Array---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Array---Basic.png
new file mode 100644
index 0000000000..3d4248bb6b
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Array---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Boolean---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Boolean---Basic.png
new file mode 100644
index 0000000000..9f5390a008
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Boolean---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Boolean---On.png b/examples/expo-example/.maestro/baseline/ControlExamples-Boolean---On.png
new file mode 100644
index 0000000000..68bb774f90
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Boolean---On.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Color---Color-Example.png b/examples/expo-example/.maestro/baseline/ControlExamples-Color---Color-Example.png
new file mode 100644
index 0000000000..c0449b6fe7
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Color---Color-Example.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-ControlExample---Example.png b/examples/expo-example/.maestro/baseline/ControlExamples-ControlExample---Example.png
new file mode 100644
index 0000000000..d9e7b442dc
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-ControlExample---Example.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Date---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Date---Basic.png
new file mode 100644
index 0000000000..24508eb8fa
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Date---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Number---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Number---Basic.png
new file mode 100644
index 0000000000..857b3faa0a
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Number---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Number---Range.png b/examples/expo-example/.maestro/baseline/ControlExamples-Number---Range.png
new file mode 100644
index 0000000000..ab1510eb68
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Number---Range.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Object---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Object---Basic.png
new file mode 100644
index 0000000000..28aa1f5eb8
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Object---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Radio---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Radio---Basic.png
new file mode 100644
index 0000000000..164eeebda3
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Radio---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Reproductions-SelectWithNumber---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Reproductions-SelectWithNumber---Basic.png
new file mode 100644
index 0000000000..b958b47e6f
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Reproductions-SelectWithNumber---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Select---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Select---Basic.png
new file mode 100644
index 0000000000..162134b52b
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Select---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Select---With-Labels.png b/examples/expo-example/.maestro/baseline/ControlExamples-Select---With-Labels.png
new file mode 100644
index 0000000000..286bb7fa2a
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Select---With-Labels.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Select---With-Mapping.png b/examples/expo-example/.maestro/baseline/ControlExamples-Select---With-Mapping.png
new file mode 100644
index 0000000000..ff168c1885
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Select---With-Mapping.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-Text---Basic.png b/examples/expo-example/.maestro/baseline/ControlExamples-Text---Basic.png
new file mode 100644
index 0000000000..11dd3bced9
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-Text---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-WebCompatibility---Defined.png b/examples/expo-example/.maestro/baseline/ControlExamples-WebCompatibility---Defined.png
new file mode 100644
index 0000000000..363350e0c8
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-WebCompatibility---Defined.png differ
diff --git a/examples/expo-example/.maestro/baseline/ControlExamples-WebCompatibility---Undefined.png b/examples/expo-example/.maestro/baseline/ControlExamples-WebCompatibility---Undefined.png
new file mode 100644
index 0000000000..f27a8d16d0
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/ControlExamples-WebCompatibility---Undefined.png differ
diff --git a/examples/expo-example/.maestro/baseline/DeepControls---Basic.png b/examples/expo-example/.maestro/baseline/DeepControls---Basic.png
new file mode 100644
index 0000000000..0ba364895e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/DeepControls---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/InputExample-TextInput---Basic.png b/examples/expo-example/.maestro/baseline/InputExample-TextInput---Basic.png
new file mode 100644
index 0000000000..0a8b7f6e30
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/InputExample-TextInput---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/InteractionExample---Scrolling.png b/examples/expo-example/.maestro/baseline/InteractionExample---Scrolling.png
new file mode 100644
index 0000000000..0f953b09d4
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/InteractionExample---Scrolling.png differ
diff --git a/examples/expo-example/.maestro/baseline/InteractionExample---Static.png b/examples/expo-example/.maestro/baseline/InteractionExample---Static.png
new file mode 100644
index 0000000000..0fce3ee6a8
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/InteractionExample---Static.png differ
diff --git a/examples/expo-example/.maestro/baseline/InteractionExample---Touchable.png b/examples/expo-example/.maestro/baseline/InteractionExample---Touchable.png
new file mode 100644
index 0000000000..aca40bcc35
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/InteractionExample---Touchable.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-ChatMessage---Message-First.png b/examples/expo-example/.maestro/baseline/NestingExample-ChatMessage---Message-First.png
new file mode 100644
index 0000000000..b57c98369e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-ChatMessage---Message-First.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-ChatMessage---Message-Second.png b/examples/expo-example/.maestro/baseline/NestingExample-ChatMessage---Message-Second.png
new file mode 100644
index 0000000000..b074a5ce2e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-ChatMessage---Message-Second.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-Message-Reactions---Message-One.png b/examples/expo-example/.maestro/baseline/NestingExample-Message-Reactions---Message-One.png
new file mode 100644
index 0000000000..b57c98369e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-Message-Reactions---Message-One.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-Message-Reactions---Message-Two.png b/examples/expo-example/.maestro/baseline/NestingExample-Message-Reactions---Message-Two.png
new file mode 100644
index 0000000000..b074a5ce2e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-Message-Reactions---Message-Two.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble---First.png b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble---First.png
new file mode 100644
index 0000000000..dc9cd76b5d
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble---First.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble---Second-Story.png b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble---Second-Story.png
new file mode 100644
index 0000000000..d80126a37f
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble---Second-Story.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---First.png b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---First.png
new file mode 100644
index 0000000000..dc9cd76b5d
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---First.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---Second-Story.png b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---Second-Story.png
new file mode 100644
index 0000000000..d80126a37f
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---Second-Story.png differ
diff --git a/examples/expo-example/.maestro/baseline/NestingExample-MessageInput---Basic.png b/examples/expo-example/.maestro/baseline/NestingExample-MessageInput---Basic.png
new file mode 100644
index 0000000000..b57c98369e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NestingExample-MessageInput---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/NotesExample---Notes-Example.png b/examples/expo-example/.maestro/baseline/NotesExample---Notes-Example.png
new file mode 100644
index 0000000000..cec63250bd
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/NotesExample---Notes-Example.png differ
diff --git a/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaInside---Basic.png b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaInside---Basic.png
new file mode 100644
index 0000000000..2ef8718320
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaInside---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaInside---List-Basic.png b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaInside---List-Basic.png
new file mode 100644
index 0000000000..ff5c2a3c1e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaInside---List-Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaOutside---Basic.png b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaOutside---Basic.png
new file mode 100644
index 0000000000..29b0f2d6c1
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaOutside---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaOutside---List-Basic.png b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaOutside---List-Basic.png
new file mode 100644
index 0000000000..4fbcd6c61e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/SafeAreaExample-SafeAreaOutside---List-Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/SafeAreaExample-UsableArea---No-Safe-Area.png b/examples/expo-example/.maestro/baseline/SafeAreaExample-UsableArea---No-Safe-Area.png
new file mode 100644
index 0000000000..13b9bfabfc
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/SafeAreaExample-UsableArea---No-Safe-Area.png differ
diff --git a/examples/expo-example/.maestro/baseline/SafeAreaExample-UsableArea---Safe-Area.png b/examples/expo-example/.maestro/baseline/SafeAreaExample-UsableArea---Safe-Area.png
new file mode 100644
index 0000000000..13b9bfabfc
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/SafeAreaExample-UsableArea---Safe-Area.png differ
diff --git a/examples/expo-example/.maestro/baseline/TestCase---Basic.png b/examples/expo-example/.maestro/baseline/TestCase---Basic.png
new file mode 100644
index 0000000000..60d0af617d
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/TestCase---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/TestCase2---Basic.png b/examples/expo-example/.maestro/baseline/TestCase2---Basic.png
new file mode 100644
index 0000000000..a869f5057e
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/TestCase2---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Active.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Active.png
new file mode 100644
index 0000000000..baa0c23c7c
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Active.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Animated.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Animated.png
new file mode 100644
index 0000000000..33be9ab11b
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Animated.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Base.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Base.png
new file mode 100644
index 0000000000..5611459d00
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Base.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Disabled.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Disabled.png
new file mode 100644
index 0000000000..d27e79f0f8
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Disabled.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Icon-Only.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Icon-Only.png
new file mode 100644
index 0000000000..041b191ded
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Icon-Only.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Sizes.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Sizes.png
new file mode 100644
index 0000000000..057e312d64
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Sizes.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Variants.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Variants.png
new file mode 100644
index 0000000000..dff6965cb3
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---Variants.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---With-Icon.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---With-Icon.png
new file mode 100644
index 0000000000..7ff70bf78c
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Button---With-Icon.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-SearchResults---Default.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-SearchResults---Default.png
new file mode 100644
index 0000000000..9635bdf352
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-SearchResults---Default.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Explorer---Simple.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Explorer---Simple.png
new file mode 100644
index 0000000000..60c00b9f39
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Explorer---Simple.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Bottom.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Bottom.png
new file mode 100644
index 0000000000..7cb3c82222
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Bottom.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Empty.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Empty.png
new file mode 100644
index 0000000000..5ea56a6148
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Empty.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Index-Error.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Index-Error.png
new file mode 100644
index 0000000000..5ea56a6148
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Index-Error.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Ref-Error.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Ref-Error.png
new file mode 100644
index 0000000000..5ea56a6148
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Ref-Error.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Refs.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Refs.png
new file mode 100644
index 0000000000..977a14ea24
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Refs.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading.png
new file mode 100644
index 0000000000..5ea56a6148
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Loading.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Scrolled.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Scrolled.png
new file mode 100644
index 0000000000..2058efff3b
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Scrolled.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Searching.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Searching.png
new file mode 100644
index 0000000000..7cb3c82222
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Searching.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Simple.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Simple.png
new file mode 100644
index 0000000000..7cb3c82222
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Simple.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Statuses-Collapsed.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Statuses-Collapsed.png
new file mode 100644
index 0000000000..7cb3c82222
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Statuses-Collapsed.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Statuses-Open.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Statuses-Open.png
new file mode 100644
index 0000000000..7cb3c82222
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---Statuses-Open.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---With-Ref-Empty.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---With-Ref-Empty.png
new file mode 100644
index 0000000000..5ea56a6148
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---With-Ref-Empty.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---With-Refs.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---With-Refs.png
new file mode 100644
index 0000000000..2df1cf5140
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Sidebar---With-Refs.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Dark.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Dark.png
new file mode 100644
index 0000000000..17e8d8dad8
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Dark.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Full.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Full.png
new file mode 100644
index 0000000000..17e8d8dad8
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Full.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Single-Story-Components.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Single-Story-Components.png
new file mode 100644
index 0000000000..6a1341f04b
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Single-Story-Components.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Story-with-a-storyName.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Story-with-a-storyName.png
new file mode 100644
index 0000000000..c463380275
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-Tree---Story-with-a-storyName.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Expandable-Long-Name.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Expandable-Long-Name.png
new file mode 100644
index 0000000000..c7bd6c44f6
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Expandable-Long-Name.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Expandable.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Expandable.png
new file mode 100644
index 0000000000..71c5740c83
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Expandable.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Nested.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Nested.png
new file mode 100644
index 0000000000..7c5bd6b825
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Nested.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Selection-With-Long-Name.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Selection-With-Long-Name.png
new file mode 100644
index 0000000000..66cc461edb
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Selection-With-Long-Name.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Selection.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Selection.png
new file mode 100644
index 0000000000..e79f205cbd
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Selection.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Types.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Types.png
new file mode 100644
index 0000000000..c118845d5a
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-Sidebar-TreeNode---Types.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Element-Logo.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Element-Logo.png
new file mode 100644
index 0000000000..99f12f487f
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Element-Logo.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Logo.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Logo.png
new file mode 100644
index 0000000000..f42413f391
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Logo.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Source-Logo.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Source-Logo.png
new file mode 100644
index 0000000000..798102a62b
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Source-Logo.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Url-Logo.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Url-Logo.png
new file mode 100644
index 0000000000..f42413f391
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Image-Url-Logo.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Title-Logo.png b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Title-Logo.png
new file mode 100644
index 0000000000..d158596131
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-UI-StorybookLogo---Title-Logo.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Basic.png b/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Basic.png
new file mode 100644
index 0000000000..b085ca1b93
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Basic.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Overflow-Addons-Example.png b/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Overflow-Addons-Example.png
new file mode 100644
index 0000000000..b085ca1b93
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Overflow-Addons-Example.png differ
diff --git a/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Overflow-Sidebar-Example.png b/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Overflow-Sidebar-Example.png
new file mode 100644
index 0000000000..b085ca1b93
Binary files /dev/null and b/examples/expo-example/.maestro/baseline/react-native-ui-src-Layout---Overflow-Sidebar-Example.png differ
diff --git a/examples/expo-example/.maestro/storybook-screenshots.yaml b/examples/expo-example/.maestro/storybook-screenshots.yaml
index 32c2f09879..6416c5a020 100644
--- a/examples/expo-example/.maestro/storybook-screenshots.yaml
+++ b/examples/expo-example/.maestro/storybook-screenshots.yaml
@@ -4,144 +4,144 @@ name: Take screenshots of all Storybook stories
- stopApp: host.exp.Exponent
# Story 0
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=actionexample-actions--basic'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-controlexample--example'
- waitForAnimationToEnd
- assertVisible:
- id: 'actionexample-actions--basic'
-- takeScreenshot: '.maestro/screenshots/ActionExample-Actions---Basic'
+ id: 'controlexamples-controlexample--example'
+- takeScreenshot: '.maestro/screenshots/ControlExamples-ControlExample---Example'
# Story 1
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=actionexample-actions--another-action'
-- waitForAnimationToEnd
-- assertVisible:
- id: 'actionexample-actions--another-action'
-- takeScreenshot: '.maestro/screenshots/ActionExample-Actions---Another-Action'
-
-# Story 2
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=backgroundexample-backgroundcsf--basic'
-- waitForAnimationToEnd
-- assertVisible:
- id: 'backgroundexample-backgroundcsf--basic'
-- takeScreenshot: '.maestro/screenshots/BackgroundExample-BackgroundCsf---Basic'
-
-# Story 3
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-array--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-array--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Array---Basic'
-# Story 4
+# Story 2
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-boolean--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-boolean--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Boolean---Basic'
-# Story 5
+# Story 3
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-boolean--on'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-boolean--on'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Boolean---On'
-# Story 6
+# Story 4
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-color--color-example'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-color--color-example'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Color---Color-Example'
-# Story 7
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-controlexample--example'
-- waitForAnimationToEnd
-- assertVisible:
- id: 'controlexamples-controlexample--example'
-- takeScreenshot: '.maestro/screenshots/ControlExamples-ControlExample---Example'
-
-# Story 8
+# Story 5
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-date--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-date--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Date---Basic'
-# Story 9
+# Story 6
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-number--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-number--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Number---Basic'
-# Story 10
+# Story 7
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-number--range'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-number--range'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Number---Range'
-# Story 11
+# Story 8
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-object--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-object--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Object---Basic'
-# Story 12
+# Story 9
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-radio--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-radio--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Radio---Basic'
-# Story 13
+# Story 10
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-reproductions-selectwithnumber--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-reproductions-selectwithnumber--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Reproductions-SelectWithNumber---Basic'
-# Story 14
+# Story 11
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-select--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-select--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Select---Basic'
-# Story 15
+# Story 12
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-select--with-labels'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-select--with-labels'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Select---With-Labels'
-# Story 16
+# Story 13
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-select--with-mapping'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-select--with-mapping'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Select---With-Mapping'
-# Story 17
+# Story 14
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-text--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-text--basic'
- takeScreenshot: '.maestro/screenshots/ControlExamples-Text---Basic'
-# Story 18
+# Story 15
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-webcompatibility--defined'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'controlexamples-webcompatibility--defined'
+- takeScreenshot: '.maestro/screenshots/ControlExamples-WebCompatibility---Defined'
+
+# Story 16
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-webcompatibility--undefined'
- waitForAnimationToEnd
- assertVisible:
id: 'controlexamples-webcompatibility--undefined'
- takeScreenshot: '.maestro/screenshots/ControlExamples-WebCompatibility---Undefined'
+# Story 17
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=interactionexample--scrolling'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'interactionexample--scrolling'
+- takeScreenshot: '.maestro/screenshots/InteractionExample---Scrolling'
+
+# Story 18
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=interactionexample--static'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'interactionexample--static'
+- takeScreenshot: '.maestro/screenshots/InteractionExample---Static'
+
# Story 19
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=controlexamples-webcompatibility--defined'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=interactionexample--touchable'
- waitForAnimationToEnd
- assertVisible:
- id: 'controlexamples-webcompatibility--defined'
-- takeScreenshot: '.maestro/screenshots/ControlExamples-WebCompatibility---Defined'
+ id: 'interactionexample--touchable'
+- takeScreenshot: '.maestro/screenshots/InteractionExample---Touchable'
# Story 20
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=deepcontrols--basic'
@@ -151,32 +151,32 @@ name: Take screenshots of all Storybook stories
- takeScreenshot: '.maestro/screenshots/DeepControls---Basic'
# Story 21
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=inputexample-textinput--basic'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=actionexample-actions--another-action'
- waitForAnimationToEnd
- assertVisible:
- id: 'inputexample-textinput--basic'
-- takeScreenshot: '.maestro/screenshots/InputExample-TextInput---Basic'
+ id: 'actionexample-actions--another-action'
+- takeScreenshot: '.maestro/screenshots/ActionExample-Actions---Another-Action'
# Story 22
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=interactionexample--static'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=actionexample-actions--basic'
- waitForAnimationToEnd
- assertVisible:
- id: 'interactionexample--static'
-- takeScreenshot: '.maestro/screenshots/InteractionExample---Static'
+ id: 'actionexample-actions--basic'
+- takeScreenshot: '.maestro/screenshots/ActionExample-Actions---Basic'
# Story 23
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=interactionexample--touchable'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=backgroundexample-backgroundcsf--basic'
- waitForAnimationToEnd
- assertVisible:
- id: 'interactionexample--touchable'
-- takeScreenshot: '.maestro/screenshots/InteractionExample---Touchable'
+ id: 'backgroundexample-backgroundcsf--basic'
+- takeScreenshot: '.maestro/screenshots/BackgroundExample-BackgroundCsf---Basic'
# Story 24
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=interactionexample--scrolling'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=inputexample-textinput--basic'
- waitForAnimationToEnd
- assertVisible:
- id: 'interactionexample--scrolling'
-- takeScreenshot: '.maestro/screenshots/InteractionExample---Scrolling'
+ id: 'inputexample-textinput--basic'
+- takeScreenshot: '.maestro/screenshots/InputExample-TextInput---Basic'
# Story 25
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-chatmessage--message-first'
@@ -193,54 +193,54 @@ name: Take screenshots of all Storybook stories
- takeScreenshot: '.maestro/screenshots/NestingExample-ChatMessage---Message-Second'
# Story 27
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble--first'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--first'
- waitForAnimationToEnd
- assertVisible:
- id: 'nestingexample-message-bubble--first'
-- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble---First'
+ id: 'nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--first'
+- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---First'
# Story 28
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble--second'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--second'
- waitForAnimationToEnd
- assertVisible:
- id: 'nestingexample-message-bubble--second'
-- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble---Second-Story'
+ id: 'nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--second'
+- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---Second-Story'
# Story 29
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--first'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble--first'
- waitForAnimationToEnd
- assertVisible:
- id: 'nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--first'
-- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---First'
+ id: 'nestingexample-message-bubble--first'
+- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble---First'
# Story 30
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--second'
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-bubble--second'
- waitForAnimationToEnd
- assertVisible:
- id: 'nestingexample-message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going--second'
-- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble-a-very-long-name-for-a-title-that-just-keeps-going-and-going---Second-Story'
+ id: 'nestingexample-message-bubble--second'
+- takeScreenshot: '.maestro/screenshots/NestingExample-Message-bubble---Second-Story'
# Story 31
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-messageinput--basic'
-- waitForAnimationToEnd
-- assertVisible:
- id: 'nestingexample-messageinput--basic'
-- takeScreenshot: '.maestro/screenshots/NestingExample-MessageInput---Basic'
-
-# Story 32
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-reactions--message-one'
- waitForAnimationToEnd
- assertVisible:
id: 'nestingexample-message-reactions--message-one'
- takeScreenshot: '.maestro/screenshots/NestingExample-Message-Reactions---Message-One'
-# Story 33
+# Story 32
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-message-reactions--message-two'
- waitForAnimationToEnd
- assertVisible:
id: 'nestingexample-message-reactions--message-two'
- takeScreenshot: '.maestro/screenshots/NestingExample-Message-Reactions---Message-Two'
+# Story 33
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=nestingexample-messageinput--basic'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'nestingexample-messageinput--basic'
+- takeScreenshot: '.maestro/screenshots/NestingExample-MessageInput---Basic'
+
# Story 34
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=notesexample--notes-example'
- waitForAnimationToEnd
@@ -249,43 +249,344 @@ name: Take screenshots of all Storybook stories
- takeScreenshot: '.maestro/screenshots/NotesExample---Notes-Example'
# Story 35
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-src-layout--basic'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-src-layout--basic'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-src-Layout---Basic'
+
+# Story 36
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-src-layout--overflow-addons-example'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-src-layout--overflow-addons-example'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-src-Layout---Overflow-Addons-Example'
+
+# Story 37
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-src-layout--overflow-sidebar-example'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-src-layout--overflow-sidebar-example'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-src-Layout---Overflow-Sidebar-Example'
+
+# Story 38
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--active'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--active'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Active'
+
+# Story 39
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--animated'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--animated'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Animated'
+
+# Story 40
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--base'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--base'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Base'
+
+# Story 41
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--disabled'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--disabled'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Disabled'
+
+# Story 42
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--icon-only'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--icon-only'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Icon-Only'
+
+# Story 43
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--sizes'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--sizes'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Sizes'
+
+# Story 44
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--variants'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--variants'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---Variants'
+
+# Story 45
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-button--with-icon'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-button--with-icon'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Button---With-Icon'
+
+# Story 46
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-searchresults--default'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-searchresults--default'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-SearchResults---Default'
+
+# Story 47
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-explorer--simple'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-explorer--simple'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Explorer---Simple'
+
+# Story 48
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--bottom'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--bottom'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Bottom'
+
+# Story 49
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--empty'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--empty'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Empty'
+
+# Story 50
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--index-error'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--index-error'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Index-Error'
+
+# Story 51
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--loading'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--loading'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Loading'
+
+# Story 52
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--loading-with-ref-error'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--loading-with-ref-error'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Ref-Error'
+
+# Story 53
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--loading-with-refs'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--loading-with-refs'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Loading-With-Refs'
+
+# Story 54
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--scrolled'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--scrolled'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Scrolled'
+
+# Story 55
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--searching'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--searching'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Searching'
+
+# Story 56
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--simple'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--simple'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Simple'
+
+# Story 57
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--statuses-collapsed'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--statuses-collapsed'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Statuses-Collapsed'
+
+# Story 58
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--statuses-open'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--statuses-open'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---Statuses-Open'
+
+# Story 59
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--with-ref-empty'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--with-ref-empty'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---With-Ref-Empty'
+
+# Story 60
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-sidebar--with-refs'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-sidebar--with-refs'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Sidebar---With-Refs'
+
+# Story 61
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-tree--dark'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-tree--dark'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Tree---Dark'
+
+# Story 62
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-tree--full'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-tree--full'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Tree---Full'
+
+# Story 63
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-tree--single-story-components'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-tree--single-story-components'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Tree---Single-Story-Components'
+
+# Story 64
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-tree--with-story-names'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-tree--with-story-names'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-Tree---Story-with-a-storyName'
+
+# Story 65
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-treenode--expandable'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-treenode--expandable'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-TreeNode---Expandable'
+
+# Story 66
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-treenode--expandable-long-name'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-treenode--expandable-long-name'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-TreeNode---Expandable-Long-Name'
+
+# Story 67
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-treenode--nested'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-treenode--nested'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-TreeNode---Nested'
+
+# Story 68
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-treenode--selection'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-treenode--selection'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-TreeNode---Selection'
+
+# Story 69
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-treenode--selection-with-long-name'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-treenode--selection-with-long-name'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-TreeNode---Selection-With-Long-Name'
+
+# Story 70
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-sidebar-treenode--types'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-sidebar-treenode--types'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-Sidebar-TreeNode---Types'
+
+# Story 71
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-storybooklogo--image-element-logo'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-storybooklogo--image-element-logo'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-StorybookLogo---Image-Element-Logo'
+
+# Story 72
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-storybooklogo--image-logo'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-storybooklogo--image-logo'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-StorybookLogo---Image-Logo'
+
+# Story 73
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-storybooklogo--image-source-logo'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-storybooklogo--image-source-logo'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-StorybookLogo---Image-Source-Logo'
+
+# Story 74
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-storybooklogo--image-url-logo'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-storybooklogo--image-url-logo'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-StorybookLogo---Image-Url-Logo'
+
+# Story 75
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=react-native-ui-ui-storybooklogo--title-logo'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'react-native-ui-ui-storybooklogo--title-logo'
+- takeScreenshot: '.maestro/screenshots/react-native-ui-UI-StorybookLogo---Title-Logo'
+
+# Story 76
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-safeareainside--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'safeareaexample-safeareainside--basic'
- takeScreenshot: '.maestro/screenshots/SafeAreaExample-SafeAreaInside---Basic'
-# Story 36
+# Story 77
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-safeareainside--list-basic'
- waitForAnimationToEnd
- assertVisible:
id: 'safeareaexample-safeareainside--list-basic'
- takeScreenshot: '.maestro/screenshots/SafeAreaExample-SafeAreaInside---List-Basic'
-# Story 37
+# Story 78
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-safeareaoutside--basic'
- waitForAnimationToEnd
- assertVisible:
id: 'safeareaexample-safeareaoutside--basic'
- takeScreenshot: '.maestro/screenshots/SafeAreaExample-SafeAreaOutside---Basic'
-# Story 38
+# Story 79
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-safeareaoutside--list-basic'
- waitForAnimationToEnd
- assertVisible:
id: 'safeareaexample-safeareaoutside--list-basic'
- takeScreenshot: '.maestro/screenshots/SafeAreaExample-SafeAreaOutside---List-Basic'
-# Story 39
+# Story 80
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-usablearea--no-safe-area'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'safeareaexample-usablearea--no-safe-area'
+- takeScreenshot: '.maestro/screenshots/SafeAreaExample-UsableArea---No-Safe-Area'
+
+# Story 81
- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-usablearea--safe-area'
- waitForAnimationToEnd
- assertVisible:
id: 'safeareaexample-usablearea--safe-area'
- takeScreenshot: '.maestro/screenshots/SafeAreaExample-UsableArea---Safe-Area'
-# Story 40
-- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=safeareaexample-usablearea--no-safe-area'
+# Story 82
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=testcase--basic'
- waitForAnimationToEnd
- assertVisible:
- id: 'safeareaexample-usablearea--no-safe-area'
-- takeScreenshot: '.maestro/screenshots/SafeAreaExample-UsableArea---No-Safe-Area'
+ id: 'testcase--basic'
+- takeScreenshot: '.maestro/screenshots/TestCase---Basic'
+
+# Story 83
+- openLink: 'exp://127.0.0.1:8081/--/?STORYBOOK_STORY_ID=testcase2--basic'
+- waitForAnimationToEnd
+- assertVisible:
+ id: 'testcase2--basic'
+- takeScreenshot: '.maestro/screenshots/TestCase2---Basic'
diff --git a/examples/expo-example/.rnstorybook/index.tsx b/examples/expo-example/.rnstorybook/index.tsx
new file mode 100644
index 0000000000..80283816e9
--- /dev/null
+++ b/examples/expo-example/.rnstorybook/index.tsx
@@ -0,0 +1,50 @@
+import { SafeAreaView, StatusBar, Text } from 'react-native';
+import { view } from './storybook.requires';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import { theme, ThemeProvider } from '@storybook/react-native-theming';
+const isScreenshotTesting = process.env.EXPO_PUBLIC_SCREENSHOT_TESTING === 'true';
+import { SafeAreaProvider } from 'react-native-safe-area-context';
+
+const StorybookUIRoot = view.getStorybookUI({
+ shouldPersistSelection: true,
+ storage: {
+ getItem: AsyncStorage.getItem,
+ setItem: AsyncStorage.setItem,
+ },
+ enableWebsockets: false,
+ onDeviceUI: !isScreenshotTesting,
+ // host: '192.x.x.x',
+ // port: 7007,
+
+ // initialSelection: { kind: 'TextInput', name: 'Basic' },
+ // onDeviceUI: false,
+ // host: '192.168.1.69',
+ /* theme: {
+ brand: {
+ image: {
+ uri: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/512px-React-icon.svg.png',
+ width: 25,
+ height: 25,
+ } ,
+ },
+ }, */
+});
+
+const StorybookUI = () => {
+ if (isScreenshotTesting) {
+ return (
+
+
+
+
+
+
+
+
+ );
+ }
+
+ return ;
+};
+
+export default StorybookUI;
diff --git a/examples/expo-example/.storybook/local-addon-example/preview.js b/examples/expo-example/.rnstorybook/local-addon-example/preview.js
similarity index 100%
rename from examples/expo-example/.storybook/local-addon-example/preview.js
rename to examples/expo-example/.rnstorybook/local-addon-example/preview.js
diff --git a/examples/expo-example/.storybook/local-addon-example/register.js b/examples/expo-example/.rnstorybook/local-addon-example/register.js
similarity index 100%
rename from examples/expo-example/.storybook/local-addon-example/register.js
rename to examples/expo-example/.rnstorybook/local-addon-example/register.js
diff --git a/examples/expo-example/.rnstorybook/main.ts b/examples/expo-example/.rnstorybook/main.ts
new file mode 100644
index 0000000000..a0f13d9972
--- /dev/null
+++ b/examples/expo-example/.rnstorybook/main.ts
@@ -0,0 +1,28 @@
+import { StorybookConfig } from '@storybook/react-native';
+
+const main: StorybookConfig = {
+ stories: [
+ '../components/**/*.stories.?(ts|tsx|js|jsx)',
+ '../other_components/**/*.stories.?(ts|tsx|js|jsx)',
+ {
+ directory: '../../../packages/react-native-ui',
+ titlePrefix: 'react-native-ui',
+ files: '**/*.stories.?(ts|tsx|js|jsx)',
+ },
+ ],
+ addons: [
+ { name: '@storybook/addon-ondevice-controls' },
+ '@storybook/addon-ondevice-backgrounds',
+ '@storybook/addon-ondevice-actions',
+ '@storybook/addon-ondevice-notes',
+ 'storybook-addon-deep-controls',
+ './local-addon-example',
+ ],
+ reactNative: {
+ playFn: false,
+ },
+
+ framework: '@storybook/react-native',
+};
+
+export default main;
diff --git a/examples/expo-example/.rnstorybook/preview.tsx b/examples/expo-example/.rnstorybook/preview.tsx
new file mode 100644
index 0000000000..501e55a0b6
--- /dev/null
+++ b/examples/expo-example/.rnstorybook/preview.tsx
@@ -0,0 +1,43 @@
+import { View, Appearance } from 'react-native';
+import { withBackgrounds } from '@storybook/addon-ondevice-backgrounds';
+import type { Preview } from '@storybook/react';
+
+const preview: Preview = {
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ withBackgrounds,
+ ],
+ parameters: {
+ actions: { argTypesRegex: '^on[A-Z].*' },
+ controls: {
+ matchers: {
+ color: /(background|color)$/i,
+ date: /Date$/,
+ },
+ },
+ options: {
+ storySort: {
+ method: 'alphabetical',
+ includeNames: true,
+ order: ['ControlExamples', ['ControlExample'], 'InteractionExample', 'DeepControls'],
+ },
+ },
+ hideFullScreenButton: false,
+ noSafeArea: false,
+ my_param: 'anything',
+ backgrounds: {
+ default: Appearance.getColorScheme() === 'dark' ? 'dark' : 'plain',
+ values: [
+ { name: 'plain', value: 'white' },
+ { name: 'dark', value: '#333' },
+ { name: 'app', value: '#eeeeee' },
+ ],
+ },
+ },
+};
+
+export default preview;
diff --git a/examples/expo-example/.storybook/storybook.requires.ts b/examples/expo-example/.rnstorybook/storybook.requires.ts
similarity index 100%
rename from examples/expo-example/.storybook/storybook.requires.ts
rename to examples/expo-example/.rnstorybook/storybook.requires.ts
diff --git a/examples/expo-example/.storybook-web/main.ts b/examples/expo-example/.storybook-web/main.ts
deleted file mode 100644
index 3ebea79f1a..0000000000
--- a/examples/expo-example/.storybook-web/main.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import type { StorybookConfig } from '@storybook/react-native-web-vite';
-import { join, dirname } from 'path';
-
-type ServerStorybookConfig = StorybookConfig & {
- reactNativeServerOptions: { host: string; port: number };
-};
-
-const main: ServerStorybookConfig = {
- stories: ['../components/**/*.stories.?(ts|tsx|js|jsx)'],
-
- addons: [
- '@storybook/addon-essentials',
- '@storybook/addon-interactions',
- // note why does this break with get absolute?
- '@storybook/addon-react-native-server',
- 'storybook-addon-deep-controls',
- ],
-
- framework: {
- name: '@storybook/react-native-web-vite',
- options: {},
- },
-
- // logLevel: 'debug',
-
- reactNativeServerOptions: {
- host: 'localhost',
- port: 7007,
- },
-};
-
-export default main;
diff --git a/examples/expo-example/.storybook-web/preview.tsx b/examples/expo-example/.storybook-web/preview.tsx
deleted file mode 100644
index 2eea01b86f..0000000000
--- a/examples/expo-example/.storybook-web/preview.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-/** @type { import('@storybook/react').Preview } */
-const preview = {
- parameters: {
- // actions: { argTypesRegex: '^on[A-Z].*' },
- controls: {
- matchers: {
- color: /(background|color)$/i,
- date: /Date$/i,
- },
- },
- },
-};
-
-export default preview;
diff --git a/examples/expo-example/.storybook/index.tsx b/examples/expo-example/.storybook/index.tsx
deleted file mode 100644
index 465d5dabc0..0000000000
--- a/examples/expo-example/.storybook/index.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Text } from 'react-native';
-import { view } from './storybook.requires';
-import AsyncStorage from '@react-native-async-storage/async-storage';
-
-const StorybookUIRoot = view.getStorybookUI({
- shouldPersistSelection: true,
- storage: {
- getItem: AsyncStorage.getItem,
- setItem: AsyncStorage.setItem,
- },
- enableWebsockets: false,
- // host: '192.x.x.x',
- // port: 7007,
-
- // initialSelection: { kind: 'TextInput', name: 'Basic' },
- // onDeviceUI: false,
- // host: '192.168.1.69',
- /* theme: {
- brand: {
- image: {
- uri: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/512px-React-icon.svg.png',
- width: 25,
- height: 25,
- } ,
- },
- }, */
-});
-
-export default StorybookUIRoot;
diff --git a/examples/expo-example/.storybook/main.ts b/examples/expo-example/.storybook/main.ts
index 857426d64b..3ebea79f1a 100644
--- a/examples/expo-example/.storybook/main.ts
+++ b/examples/expo-example/.storybook/main.ts
@@ -1,25 +1,31 @@
-import { StorybookConfig } from '@storybook/react-native';
+import type { StorybookConfig } from '@storybook/react-native-web-vite';
+import { join, dirname } from 'path';
+
+type ServerStorybookConfig = StorybookConfig & {
+ reactNativeServerOptions: { host: string; port: number };
+};
+
+const main: ServerStorybookConfig = {
+ stories: ['../components/**/*.stories.?(ts|tsx|js|jsx)'],
-const main: StorybookConfig = {
- stories: [
- '../components/**/*.stories.?(ts|tsx|js|jsx)',
- '../other_components/**/*.stories.?(ts|tsx|js|jsx)',
- {
- directory: '../../../packages/react-native-ui',
- titlePrefix: 'react-native-ui',
- files: '**/*.stories.?(ts|tsx|js|jsx)',
- },
- ],
addons: [
- { name: '@storybook/addon-ondevice-controls' },
- '@storybook/addon-ondevice-backgrounds',
- '@storybook/addon-ondevice-actions',
- '@storybook/addon-ondevice-notes',
+ '@storybook/addon-essentials',
+ '@storybook/addon-interactions',
+ // note why does this break with get absolute?
+ '@storybook/addon-react-native-server',
'storybook-addon-deep-controls',
- './local-addon-example',
],
- reactNative: {
- playFn: false,
+
+ framework: {
+ name: '@storybook/react-native-web-vite',
+ options: {},
+ },
+
+ // logLevel: 'debug',
+
+ reactNativeServerOptions: {
+ host: 'localhost',
+ port: 7007,
},
};
diff --git a/examples/expo-example/.storybook/preview.tsx b/examples/expo-example/.storybook/preview.tsx
index 501e55a0b6..2eea01b86f 100644
--- a/examples/expo-example/.storybook/preview.tsx
+++ b/examples/expo-example/.storybook/preview.tsx
@@ -1,42 +1,13 @@
-import { View, Appearance } from 'react-native';
-import { withBackgrounds } from '@storybook/addon-ondevice-backgrounds';
-import type { Preview } from '@storybook/react';
-
-const preview: Preview = {
- decorators: [
- (Story) => (
-
-
-
- ),
- withBackgrounds,
- ],
+/** @type { import('@storybook/react').Preview } */
+const preview = {
parameters: {
- actions: { argTypesRegex: '^on[A-Z].*' },
+ // actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
- date: /Date$/,
- },
- },
- options: {
- storySort: {
- method: 'alphabetical',
- includeNames: true,
- order: ['ControlExamples', ['ControlExample'], 'InteractionExample', 'DeepControls'],
+ date: /Date$/i,
},
},
- hideFullScreenButton: false,
- noSafeArea: false,
- my_param: 'anything',
- backgrounds: {
- default: Appearance.getColorScheme() === 'dark' ? 'dark' : 'plain',
- values: [
- { name: 'plain', value: 'white' },
- { name: 'dark', value: '#333' },
- { name: 'app', value: '#eeeeee' },
- ],
- },
},
};
diff --git a/examples/expo-example/App.tsx b/examples/expo-example/App.tsx
index 30b764db0e..fbaf73f3d3 100644
--- a/examples/expo-example/App.tsx
+++ b/examples/expo-example/App.tsx
@@ -20,7 +20,7 @@ function App() {
let AppEntryPoint = App;
if (process.env.EXPO_PUBLIC_STORYBOOK_ENABLED === 'true') {
- AppEntryPoint = require('./.storybook').default;
+ AppEntryPoint = require('./.rnstorybook').default;
}
export default AppEntryPoint;
diff --git a/examples/expo-example/jest.config.js b/examples/expo-example/jest.config.js
index fc28cbde1e..ddcb426d23 100644
--- a/examples/expo-example/jest.config.js
+++ b/examples/expo-example/jest.config.js
@@ -4,6 +4,9 @@
const config = {
preset: 'jest-expo',
setupFilesAfterEnv: ['/setup-jest.ts'],
+ transformIgnorePatterns: [
+ 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@sentry/react-native|native-base|react-native-svg|storybook/.*|@storybook/.*|uuid)',
+ ],
};
module.exports = config;
diff --git a/examples/expo-example/metro.config.js b/examples/expo-example/metro.config.js
index 6e929b9698..f05ba5bfa3 100644
--- a/examples/expo-example/metro.config.js
+++ b/examples/expo-example/metro.config.js
@@ -26,7 +26,7 @@ module.exports = withStorybook(defaultConfig);
/* , {
enabled: process.env.STORYBOOK_ENABLED === 'true',
- configPath: path.resolve(__dirname, './.storybook'),
+ configPath: path.resolve(__dirname, './.rnstorybook'),
// websockets: {
// port: 7007,
// host: '192.x.x.x',
diff --git a/examples/expo-example/package.json b/examples/expo-example/package.json
index eeba0ff0b4..63b06c916b 100644
--- a/examples/expo-example/package.json
+++ b/examples/expo-example/package.json
@@ -1,6 +1,6 @@
{
"name": "expo-example",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"private": true,
"main": "index.js",
"scripts": {
@@ -8,9 +8,10 @@
"ios": "EXPO_PUBLIC_STORYBOOK_ENABLED=true expo start --ios",
"web": "EXPO_PUBLIC_STORYBOOK_ENABLED=true expo start --web",
"storybook": "EXPO_PUBLIC_STORYBOOK_ENABLED=true expo start -c",
- "storybook:web": "storybook dev -p 6006 -c ./.storybook-web",
- "build-web-storybook": "storybook build -c ./.storybook-web",
- "storybook-generate": "sb-rn-get-stories --config-path=./.storybook",
+ "storybook:test": "EXPO_PUBLIC_SCREENSHOT_TESTING=true EXPO_PUBLIC_STORYBOOK_ENABLED=true expo start -c",
+ "storybook:web": "storybook dev -p 6006",
+ "build-web-storybook": "storybook build",
+ "storybook-generate": "sb-rn-get-stories --config-path=./.rnstorybook",
"disabled-example": "expo start",
"format": "prettier --write .",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
@@ -18,7 +19,8 @@
"test": "jest",
"test:ci": "jest --runInBand",
"generate-maestro-tests": "ts-node scripts/generate-maestro-tests.ts",
- "test:maestro": "maestro run .maestro/storybook-screenshots.yaml"
+ "test:maestro": "maestro test .maestro/storybook-screenshots.yaml",
+ "test:compare": "node --no-warnings --experimental-strip-types scripts/compare-screenshots.ts "
},
"dependencies": {
"@babel/preset-env": "^7.25.4",
@@ -27,21 +29,20 @@
"@react-native-async-storage/async-storage": "1.23.1",
"@react-native-community/datetimepicker": "8.2.0",
"@react-native-community/slider": "4.5.5",
- "@storybook/addon-essentials": "^8.6.6",
- "@storybook/addon-interactions": "^8.6.6",
- "@storybook/addon-links": "^8.6.6",
- "@storybook/addon-ondevice-actions": "^8.6.2",
- "@storybook/addon-ondevice-backgrounds": "^8.6.2",
- "@storybook/addon-ondevice-controls": "^8.6.2",
- "@storybook/addon-ondevice-notes": "^8.6.2",
+ "@storybook/addon-essentials": "9.0.0-alpha.8",
+ "@storybook/addon-interactions": "9.0.0-alpha.8",
+ "@storybook/addon-links": "9.0.0-alpha.8",
+ "@storybook/addon-ondevice-actions": "^9.0.0-alpha.8",
+ "@storybook/addon-ondevice-backgrounds": "^9.0.0-alpha.8",
+ "@storybook/addon-ondevice-controls": "^9.0.0-alpha.8",
+ "@storybook/addon-ondevice-notes": "^9.0.0-alpha.8",
"@storybook/addon-react-native-server": "0.0.6",
- "@storybook/blocks": "^8.6.6",
+ "@storybook/blocks": "9.0.0-alpha.8",
"@storybook/global": "^5.0.0",
- "@storybook/react": "^8.6.6",
- "@storybook/react-native": "^8.6.2",
- "@storybook/react-native-theming": "^8.6.2",
- "@storybook/react-native-web-vite": "^8.6.6",
- "@storybook/test": "^8.6.6",
+ "@storybook/react": "9.0.0-alpha.8",
+ "@storybook/react-native": "^9.0.0-alpha.8",
+ "@storybook/react-native-theming": "^9.0.0-alpha.8",
+ "@storybook/react-native-web-vite": "9.0.0-alpha.8",
"expo": "~52.0.39",
"history": "^5.3.0",
"querystring": "^0.2.1",
@@ -54,7 +55,7 @@
"react-native-svg": "15.8.0",
"react-native-web": "~0.19.13",
"react-router": "^6.26.2",
- "storybook": "^8.6.6",
+ "storybook": "9.0.0-alpha.8",
"storybook-addon-deep-controls": "^0.9.2",
"ws": "^8.18.0"
},
@@ -63,6 +64,7 @@
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
"@react-native/babel-preset": "^0.74.0",
"@testing-library/react-native": "12.4.3",
+ "@types/looks-same": "^4.1.0",
"@types/react": "~18.3.12",
"@types/react-test-renderer": "^18.3.0",
"@types/ws": "^8.5.10",
@@ -70,6 +72,7 @@
"babel-plugin-react-docgen-typescript": "^1.5.1",
"jest": "^29.7.0",
"jest-expo": "~52.0.6",
+ "looks-same": "^9.0.1",
"typescript": "^5.3.3",
"vite": "^6.1.1"
}
diff --git a/examples/expo-example/scripts/compare-screenshots.ts b/examples/expo-example/scripts/compare-screenshots.ts
new file mode 100644
index 0000000000..2e6bc018fe
--- /dev/null
+++ b/examples/expo-example/scripts/compare-screenshots.ts
@@ -0,0 +1,52 @@
+import * as fs from 'fs';
+import * as path from 'path';
+import looksSame from 'looks-same';
+import { fileURLToPath } from 'url';
+
+// @ts-ignore
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const screenshotsDir = path.resolve(__dirname, '..', '.maestro', 'screenshots');
+const baselineDir = path.resolve(__dirname, '..', '.maestro', 'baseline');
+const diffsDir = path.resolve(__dirname, '..', '.maestro', 'diffs');
+
+// Add debug logging
+console.log('Paths:', {
+ screenshotsDir,
+ baselineDir,
+ diffsDir,
+});
+
+async function compareScreenshots() {
+ const screenshots = fs.readdirSync(screenshotsDir);
+ console.log('screenshots', screenshots);
+ for (const screenshot of screenshots) {
+ const currentPath = path.join(screenshotsDir, screenshot);
+ const baselinePath = path.join(baselineDir, screenshot);
+ const diffPath = path.join(diffsDir, `diff_${screenshot}`);
+
+ if (!fs.existsSync(baselinePath)) {
+ console.log(`Baseline not found for ${screenshot}`);
+ continue;
+ }
+
+ try {
+ const result = await looksSame(baselinePath, currentPath, {
+ strict: false,
+ tolerance: 2.5,
+ createDiffImage: true,
+ });
+
+ if (!result.equal) {
+ await result.diffImage?.save(diffPath);
+ }
+
+ console.log(`${screenshot}: ${result.equal ? 'Match' : 'Differs'}`);
+ } catch (error) {
+ console.error(`Error comparing ${screenshot}:`, error);
+ }
+ }
+}
+
+compareScreenshots().catch(console.error);
diff --git a/examples/expo-example/scripts/generate-maestro-tests.ts b/examples/expo-example/scripts/generate-maestro-tests.ts
index 7390d6f82a..81f87e59cb 100644
--- a/examples/expo-example/scripts/generate-maestro-tests.ts
+++ b/examples/expo-example/scripts/generate-maestro-tests.ts
@@ -1,24 +1,25 @@
import { readFileSync, writeFileSync, mkdirSync } from 'fs';
import { join } from 'path';
-// Read the index.json file
-const indexPath = join(__dirname, '../storybook-static/index.json');
-const indexContent = readFileSync(indexPath, 'utf-8');
-const index = JSON.parse(indexContent);
-
-// Ensure .maestro directory exists
-const maestroDir = join(__dirname, '../.maestro');
-mkdirSync(maestroDir, { recursive: true });
-
-// Generate Maestro test file content
-const stories = Object.values(index.entries)
- .filter((entry: any) => entry.type === 'story')
- .map((story: any) => ({
- id: story.id,
- name: story.title.replace(/\//g, '-') + ' - ' + story.name,
- }));
-
-const maestroContent = `appId: host.exp.Exponent
+const run = async () => {
+ const { buildIndex } = await import('storybook/internal/core-server');
+ const index = await buildIndex({
+ configDir: join(__dirname, '../.rnstorybook'),
+ });
+
+ // Ensure .maestro directory exists
+ const maestroDir = join(__dirname, '../.maestro');
+ mkdirSync(maestroDir, { recursive: true });
+
+ // Generate Maestro test file content
+ const stories = Object.values(index.entries)
+ .filter((entry: any) => entry.type === 'story')
+ .map((story: any) => ({
+ id: story.id,
+ name: story.title.replace(/\//g, '-') + ' - ' + story.name,
+ }));
+
+ const maestroContent = `appId: host.exp.Exponent
name: Take screenshots of all Storybook stories
---
- stopApp: host.exp.Exponent
@@ -35,8 +36,19 @@ ${stories
)
.join('\n')}`;
-// Write the Maestro test file
-const maestroTestPath = join(maestroDir, 'storybook-screenshots.yaml');
-writeFileSync(maestroTestPath, maestroContent);
+ // Write the Maestro test file
+ const maestroTestPath = join(maestroDir, 'storybook-screenshots.yaml');
+ writeFileSync(maestroTestPath, maestroContent);
+
+ console.log('Generated Maestro test file at:', maestroTestPath);
+};
-console.log('Generated Maestro test file at:', maestroTestPath);
+run()
+ .then(() => {
+ console.log('Done');
+ process.exit(0);
+ })
+ .catch((err) => {
+ console.error(err);
+ process.exit(1);
+ });
diff --git a/examples/expo-example/setup-jest.ts b/examples/expo-example/setup-jest.ts
index 8430893d7c..2379886ec5 100644
--- a/examples/expo-example/setup-jest.ts
+++ b/examples/expo-example/setup-jest.ts
@@ -1,2 +1,5 @@
import '@testing-library/react-native/extend-expect';
import 'react-native-gesture-handler/jestSetup';
+
+// @ts-ignore
+global.window.navigator = {};
diff --git a/examples/expo-example/tsconfig.json b/examples/expo-example/tsconfig.json
index 5d350a2a14..972c92a581 100644
--- a/examples/expo-example/tsconfig.json
+++ b/examples/expo-example/tsconfig.json
@@ -3,8 +3,9 @@
"skipLibCheck": true,
"lib": ["es6"],
"baseUrl": "./",
- "strict": true
+ "strict": true,
+ "esModuleInterop": true
},
"extends": "expo/tsconfig.base",
- "include": ["./.storybook/", "./.storybook-web/", "./*"]
+ "include": [".rnstorybook", ".storybook", "./*"]
}
diff --git a/lerna.json b/lerna.json
index 9b180c201b..246061b6cf 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
"npmClient": "yarn",
"registry": "https://registry.npmjs.org",
- "version": "8.6.2"
-}
\ No newline at end of file
+ "version": "9.0.0-alpha.8"
+}
diff --git a/packages/ondevice-actions/package.json b/packages/ondevice-actions/package.json
index 80bd0e6c96..26dd561958 100644
--- a/packages/ondevice-actions/package.json
+++ b/packages/ondevice-actions/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-actions",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "Action Logger addon for react-native storybook",
"keywords": [
"storybook"
@@ -27,8 +27,6 @@
"prepare": "tsc"
},
"dependencies": {
- "@storybook/addon-actions": "^8.6.6",
- "@storybook/core": "^8.6.6",
"@storybook/global": "^5.0.0",
"fast-deep-equal": "^2.0.1"
},
@@ -37,7 +35,8 @@
},
"peerDependencies": {
"react": "*",
- "react-native": "*"
+ "react-native": "*",
+ "storybook": "9.0.0-alpha.8"
},
"publishConfig": {
"access": "public"
diff --git a/packages/ondevice-actions/preview.js b/packages/ondevice-actions/preview.js
index 0d7d5c6c33..c8df5376f0 100644
--- a/packages/ondevice-actions/preview.js
+++ b/packages/ondevice-actions/preview.js
@@ -1 +1 @@
-export * from '@storybook/addon-actions/preview';
+export * from 'storybook/actions/preview';
diff --git a/packages/ondevice-actions/src/components/ActionLogger/index.tsx b/packages/ondevice-actions/src/components/ActionLogger/index.tsx
index 7be193fe36..41890370fd 100644
--- a/packages/ondevice-actions/src/components/ActionLogger/index.tsx
+++ b/packages/ondevice-actions/src/components/ActionLogger/index.tsx
@@ -1,5 +1,4 @@
-import { ActionDisplay } from '@storybook/addon-actions';
-import React from 'react';
+import { ActionDisplay } from 'storybook/actions';
import { Button, ScrollView, StyleSheet, Text, View } from 'react-native';
import Inspect from './Inspect';
diff --git a/packages/ondevice-actions/src/containers/ActionLogger/index.tsx b/packages/ondevice-actions/src/containers/ActionLogger/index.tsx
index 13b9f748fe..e1f08d534a 100644
--- a/packages/ondevice-actions/src/containers/ActionLogger/index.tsx
+++ b/packages/ondevice-actions/src/containers/ActionLogger/index.tsx
@@ -1,8 +1,8 @@
import React, { useState, useEffect } from 'react';
import deepEqual from 'fast-deep-equal';
-import { addons } from '@storybook/core/manager-api';
-import { SET_CURRENT_STORY } from '@storybook/core/core-events';
-import { ActionDisplay, EVENT_ID } from '@storybook/addon-actions';
+import { addons } from 'storybook/internal/manager-api';
+import { SET_CURRENT_STORY } from 'storybook/internal/core-events';
+import { ActionDisplay, EVENT_ID } from 'storybook/actions';
import { ActionLogger as ActionLoggerComponent } from '../../components/ActionLogger';
interface ActionLoggerProps {
diff --git a/packages/ondevice-actions/src/index.tsx b/packages/ondevice-actions/src/index.tsx
index 8eec2f7090..10aba38ec5 100644
--- a/packages/ondevice-actions/src/index.tsx
+++ b/packages/ondevice-actions/src/index.tsx
@@ -1,5 +1,5 @@
-import { ADDON_ID, PANEL_ID, PARAM_KEY } from '@storybook/addon-actions';
-import { addons, types } from '@storybook/core/manager-api';
+import { ADDON_ID, PANEL_ID, PARAM_KEY } from 'storybook/actions';
+import { addons, types } from 'storybook/internal/manager-api';
import ActionLogger from './containers/ActionLogger';
export function register() {
diff --git a/packages/ondevice-actions/src/preview.ts b/packages/ondevice-actions/src/preview.ts
index 0d7d5c6c33..c8df5376f0 100644
--- a/packages/ondevice-actions/src/preview.ts
+++ b/packages/ondevice-actions/src/preview.ts
@@ -1 +1 @@
-export * from '@storybook/addon-actions/preview';
+export * from 'storybook/actions/preview';
diff --git a/packages/ondevice-backgrounds/package.json b/packages/ondevice-backgrounds/package.json
index 09a779b3df..1806565f14 100644
--- a/packages/ondevice-backgrounds/package.json
+++ b/packages/ondevice-backgrounds/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-backgrounds",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "A react-native storybook addon to show different backgrounds for your preview",
"keywords": [
"addon",
@@ -32,15 +32,15 @@
"dev": "tsc --watch"
},
"dependencies": {
- "@storybook/core": "^8.6.6",
- "@storybook/react-native-theming": "^8.6.2"
+ "@storybook/react-native-theming": "^9.0.0-alpha.8"
},
"devDependencies": {
"typescript": "^5.3.3"
},
"peerDependencies": {
"react": "*",
- "react-native": "*"
+ "react-native": "*",
+ "storybook": "9.0.0-alpha.8"
},
"publishConfig": {
"access": "public"
diff --git a/packages/ondevice-backgrounds/src/BackgroundPanel.tsx b/packages/ondevice-backgrounds/src/BackgroundPanel.tsx
index 42cfa0ead9..34fd3c4ea9 100644
--- a/packages/ondevice-backgrounds/src/BackgroundPanel.tsx
+++ b/packages/ondevice-backgrounds/src/BackgroundPanel.tsx
@@ -1,4 +1,4 @@
-import { AddonStore, type API } from '@storybook/core/manager-api';
+import { AddonStore, type API } from 'storybook/internal/manager-api';
import { StyleSheet, Text, View } from 'react-native';
import Swatch from './Swatch';
diff --git a/packages/ondevice-backgrounds/src/index.tsx b/packages/ondevice-backgrounds/src/index.tsx
index 66128615ab..28c97e1643 100644
--- a/packages/ondevice-backgrounds/src/index.tsx
+++ b/packages/ondevice-backgrounds/src/index.tsx
@@ -1,6 +1,6 @@
import * as React from 'react';
-import { makeDecorator } from '@storybook/core/preview-api';
-import { addons } from '@storybook/core/manager-api';
+import { makeDecorator } from 'storybook/internal/preview-api';
+import { addons } from 'storybook/internal/manager-api';
import Events from './constants';
import Container from './container';
diff --git a/packages/ondevice-backgrounds/src/register.tsx b/packages/ondevice-backgrounds/src/register.tsx
index 1f937bc12f..58919323db 100644
--- a/packages/ondevice-backgrounds/src/register.tsx
+++ b/packages/ondevice-backgrounds/src/register.tsx
@@ -1,4 +1,4 @@
-import { addons, types } from '@storybook/core/manager-api';
+import { addons, types } from 'storybook/internal/manager-api';
import BackgroundPanel from './BackgroundPanel';
import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants';
diff --git a/packages/ondevice-controls/package.json b/packages/ondevice-controls/package.json
index a5392d5b7c..3717215edd 100644
--- a/packages/ondevice-controls/package.json
+++ b/packages/ondevice-controls/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-controls",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "Display storybook controls on your device.",
"keywords": [
"addon",
@@ -30,10 +30,9 @@
"copyimages": "cross-env-shell cp -r src/components/color-picker/resources dist/components/color-picker/resources"
},
"dependencies": {
- "@storybook/addon-controls": "^8.6.6",
- "@storybook/core": "^8.6.6",
- "@storybook/react-native-theming": "^8.6.2",
- "@storybook/react-native-ui": "^8.6.2",
+ "@storybook/addon-controls": "9.0.0-alpha.8",
+ "@storybook/react-native-theming": "^9.0.0-alpha.8",
+ "@storybook/react-native-ui": "^9.0.0-alpha.8",
"deep-equal": "^1.0.1",
"prop-types": "^15.7.2",
"react-native-modal-datetime-picker": "^18.0.0",
@@ -48,7 +47,8 @@
"@react-native-community/datetimepicker": "*",
"@react-native-community/slider": "*",
"react": "*",
- "react-native": "*"
+ "react-native": "*",
+ "storybook": "9.0.0-alpha.8"
},
"publishConfig": {
"access": "public"
diff --git a/packages/ondevice-controls/src/ControlsPanel.tsx b/packages/ondevice-controls/src/ControlsPanel.tsx
index 47eea19131..73efa66121 100644
--- a/packages/ondevice-controls/src/ControlsPanel.tsx
+++ b/packages/ondevice-controls/src/ControlsPanel.tsx
@@ -1,7 +1,7 @@
-import type { API } from '@storybook/core/manager-api';
-import { Channel } from '@storybook/core/channels';
-import type { Args, StoryContextForLoaders } from '@storybook/csf';
-import type { Renderer } from '@storybook/core/types';
+import type { API } from 'storybook/internal/manager-api';
+import { Channel } from 'storybook/internal/channels';
+import type { Args, StoryContextForLoaders } from 'storybook/internal/csf';
+import type { Renderer } from 'storybook/internal/types';
import React, { ComponentType, ReactElement, useCallback, useState } from 'react';
import NoControlsWarning from './NoControlsWarning';
import PropForm from './PropForm';
diff --git a/packages/ondevice-controls/src/hooks.ts b/packages/ondevice-controls/src/hooks.ts
index d0393144c0..00e7f83c89 100644
--- a/packages/ondevice-controls/src/hooks.ts
+++ b/packages/ondevice-controls/src/hooks.ts
@@ -1,6 +1,6 @@
-import { Args, StoryContext } from '@storybook/core/types';
+import { Args, StoryContext } from 'storybook/internal/types';
import { useState, useEffect, useCallback } from 'react';
-import Events from '@storybook/core/core-events';
+import Events from 'storybook/internal/core-events';
export const useArgs = (
storyId: string,
diff --git a/packages/ondevice-controls/src/index.tsx b/packages/ondevice-controls/src/index.tsx
index 72704afa0f..afd03be9fe 100644
--- a/packages/ondevice-controls/src/index.tsx
+++ b/packages/ondevice-controls/src/index.tsx
@@ -1,4 +1,4 @@
-import { addons, types } from '@storybook/core/manager-api';
+import { addons, types } from 'storybook/internal/manager-api';
import ControlsPanel from './ControlsPanel';
import { AddonPanel } from './Panel';
diff --git a/packages/ondevice-notes/package.json b/packages/ondevice-notes/package.json
index 9cdc55950a..cc0311dc91 100644
--- a/packages/ondevice-notes/package.json
+++ b/packages/ondevice-notes/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-notes",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "Write notes for your react-native Storybook stories.",
"keywords": [
"addon",
@@ -29,8 +29,7 @@
"dev": "tsc --watch"
},
"dependencies": {
- "@storybook/core": "^8.6.6",
- "@storybook/react-native-theming": "^8.6.2",
+ "@storybook/react-native-theming": "^9.0.0-alpha.8",
"react-native-markdown-display": "^7.0.2"
},
"devDependencies": {
@@ -38,7 +37,8 @@
},
"peerDependencies": {
"react": "*",
- "react-native": "*"
+ "react-native": "*",
+ "storybook": "9.0.0-alpha.8"
},
"publishConfig": {
"access": "public"
diff --git a/packages/ondevice-notes/src/components/Notes.tsx b/packages/ondevice-notes/src/components/Notes.tsx
index 23cb399a52..01ed376585 100644
--- a/packages/ondevice-notes/src/components/Notes.tsx
+++ b/packages/ondevice-notes/src/components/Notes.tsx
@@ -1,11 +1,11 @@
-import { SET_CURRENT_STORY } from '@storybook/core/core-events';
+import { SET_CURRENT_STORY } from 'storybook/internal/core-events';
import { useEffect, useMemo, useState } from 'react';
import { StyleSheet, View } from 'react-native';
import Markdown from 'react-native-markdown-display';
import { RNAddonApi, StoryFromId } from '../register';
import { ErrorBoundary } from '../ErrorBoundary';
-import { addons } from '@storybook/core/manager-api';
+import { addons } from 'storybook/internal/manager-api';
import { useTheme } from '@storybook/react-native-theming';
export const PARAM_KEY = 'notes';
diff --git a/packages/ondevice-notes/src/index.ts b/packages/ondevice-notes/src/index.ts
index 49e128e51f..92870775e1 100644
--- a/packages/ondevice-notes/src/index.ts
+++ b/packages/ondevice-notes/src/index.ts
@@ -1,4 +1,4 @@
-import { logger } from '@storybook/core/client-logger';
+import { logger } from 'storybook/internal/client-logger';
if (__DEV__) {
logger.log("import '@storybook/addon-ondevice-notes/register' to register the notes addon");
diff --git a/packages/ondevice-notes/src/register.tsx b/packages/ondevice-notes/src/register.tsx
index f16dfd2fe0..bf518c0fe9 100644
--- a/packages/ondevice-notes/src/register.tsx
+++ b/packages/ondevice-notes/src/register.tsx
@@ -1,10 +1,10 @@
-import { API, addons, types } from '@storybook/core/manager-api';
+import { API, addons, types } from 'storybook/internal/manager-api';
import { Notes } from './components/Notes';
import { ComponentType, ReactElement } from 'react';
-import type { Args, StoryContextForLoaders } from '@storybook/csf';
-import type { Renderer } from '@storybook/core/types';
+import type { Args, StoryContextForLoaders } from 'storybook/internal/csf';
+import type { Renderer } from 'storybook/internal/types';
export const PARAM_KEY = 'notes';
-import type { Channel } from '@storybook/core/channels';
+import type { Channel } from 'storybook/internal/channels';
export interface Selection {
storyId: string;
diff --git a/packages/react-native-theming/package.json b/packages/react-native-theming/package.json
index f68f66c608..692f6044d1 100644
--- a/packages/react-native-theming/package.json
+++ b/packages/react-native-theming/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/react-native-theming",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "A wrapper library around emotion 11 to provide theming support for react-native storybook",
"keywords": [
"react",
diff --git a/packages/react-native-ui/package.json b/packages/react-native-ui/package.json
index aeaaa329ab..89799e17a7 100644
--- a/packages/react-native-ui/package.json
+++ b/packages/react-native-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/react-native-ui",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "ui components for react native storybook",
"keywords": [
"react",
@@ -58,9 +58,8 @@
"typescript": "^5.3.3"
},
"dependencies": {
- "@storybook/core": "^8.6.6",
- "@storybook/react": "^8.6.6",
- "@storybook/react-native-theming": "^8.6.2",
+ "@storybook/react": "9.0.0-alpha.8",
+ "@storybook/react-native-theming": "^9.0.0-alpha.8",
"fuse.js": "^7.0.0",
"memoizerific": "^1.11.3",
"polished": "^4.3.1",
@@ -73,7 +72,8 @@
"react-native-gesture-handler": ">=2",
"react-native-reanimated": ">=3",
"react-native-safe-area-context": "*",
- "react-native-svg": ">=14"
+ "react-native-svg": ">=14",
+ "storybook": "9.0.0-alpha.8"
},
"engines": {
"node": ">=18.0.0"
diff --git a/packages/react-native-ui/src/Layout.tsx b/packages/react-native-ui/src/Layout.tsx
index 7fb3f4bbdd..c19cb839a2 100644
--- a/packages/react-native-ui/src/Layout.tsx
+++ b/packages/react-native-ui/src/Layout.tsx
@@ -1,6 +1,6 @@
-import { SET_CURRENT_STORY } from '@storybook/core/core-events';
-import { addons } from '@storybook/core/manager-api';
-import { type API_IndexHash, type Args, type StoryContext } from '@storybook/core/types';
+import { SET_CURRENT_STORY } from 'storybook/internal/core-events';
+import { addons } from 'storybook/internal/manager-api';
+import { type API_IndexHash, type Args, type StoryContext } from 'storybook/internal/types';
import type { ReactRenderer } from '@storybook/react';
import { styled, useTheme } from '@storybook/react-native-theming';
import { ReactNode, useRef, useState, useCallback } from 'react';
diff --git a/packages/react-native-ui/src/MobileAddonsPanel.tsx b/packages/react-native-ui/src/MobileAddonsPanel.tsx
index 75d2f46ce1..dd15d1aa2b 100644
--- a/packages/react-native-ui/src/MobileAddonsPanel.tsx
+++ b/packages/react-native-ui/src/MobileAddonsPanel.tsx
@@ -1,7 +1,7 @@
import { BottomSheetModal } from '@gorhom/bottom-sheet';
-import { addons } from '@storybook/core/manager-api';
+import { addons } from 'storybook/internal/manager-api';
import { styled } from '@storybook/react-native-theming';
-import { Addon_TypesEnum } from '@storybook/core/types';
+import { Addon_TypesEnum } from 'storybook/internal/types';
import { forwardRef, useImperativeHandle, useMemo, useRef, useState } from 'react';
import { Platform, StyleProp, Text, View, ViewStyle, useWindowDimensions } from 'react-native';
import { ScrollView } from 'react-native-gesture-handler';
diff --git a/packages/react-native-ui/src/Refs.tsx b/packages/react-native-ui/src/Refs.tsx
index 6da5af38fb..d3164d8247 100644
--- a/packages/react-native-ui/src/Refs.tsx
+++ b/packages/react-native-ui/src/Refs.tsx
@@ -1,6 +1,6 @@
import type { FC } from 'react';
import React, { useMemo, useCallback, useEffect, useState } from 'react';
-import type { State } from '@storybook/core/manager-api';
+import type { State } from 'storybook/internal/manager-api';
import { styled } from '@storybook/react-native-theming';
import { Tree } from './Tree';
import type { RefType } from './types';
diff --git a/packages/react-native-ui/src/Search.tsx b/packages/react-native-ui/src/Search.tsx
index ab7020a155..6ad6b4c4b8 100644
--- a/packages/react-native-ui/src/Search.tsx
+++ b/packages/react-native-ui/src/Search.tsx
@@ -1,8 +1,8 @@
-import { BottomSheetTextInput } from '@gorhom/bottom-sheet';
+import { BottomSheetTextInput, useBottomSheetInternal } from '@gorhom/bottom-sheet';
import { styled } from '@storybook/react-native-theming';
import type { IFuseOptions } from 'fuse.js';
import Fuse from 'fuse.js';
-import React, { useCallback, useDeferredValue, useRef, useState } from 'react';
+import React, { useCallback, useContext, useDeferredValue, useRef, useState } from 'react';
import { Platform, TextInput, View } from 'react-native';
import { CloseIcon } from './icon/CloseIcon';
import { SearchIcon } from './icon/SearchIcon';
@@ -16,7 +16,6 @@ import {
type SearchResult,
type Selection,
} from './types';
-import { getGroupStatus, getHighestStatus } from './util/status';
import { searchItem } from './util/tree';
import { useSelectedNode } from './SelectedNodeProvider';
@@ -106,6 +105,9 @@ export const Search = React.memo<{
getLastViewed: () => Selection[];
initialQuery?: string;
}>(function Search({ children, dataset, setSelection, getLastViewed, initialQuery = '' }) {
+ const context = useBottomSheetInternal(true);
+ const isBottomSheet = context !== null;
+
const inputRef = useRef(null);
const [inputValue, setInputValue] = useState(initialQuery);
const [isOpen, setIsOpen] = useState(false);
@@ -153,20 +155,11 @@ export const Search = React.memo<{
);
const makeFuse = useCallback(() => {
- const list = dataset.entries.reduce((acc, [refId, { index, status }]) => {
- const groupStatus = getGroupStatus(index || {}, status);
-
+ const list = dataset.entries.reduce((acc, [refId, { index }]) => {
if (index) {
acc.push(
...Object.values(index).map((item) => {
- const statusValue =
- status && status[item.id]
- ? getHighestStatus(Object.values(status[item.id] || {}).map((s) => s.status))
- : null;
- return {
- ...searchItem(item, dataset.hash[refId]),
- status: statusValue || groupStatus[item.id] || null,
- };
+ return searchItem(item, dataset.hash[refId]);
})
);
}
@@ -235,7 +228,7 @@ export const Search = React.memo<{
- {isMobile ? (
+ {isBottomSheet ? (
getGroupStatus(collapsedData, status), [collapsedData, status]);
-
const treeItems = useMemo(() => {
return collapsedItems.map((itemId) => {
const item = collapsedData[itemId];
@@ -330,7 +328,6 @@ export const Tree = React.memo<{
}
const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]);
- const color = groupStatus[itemId] ? statusMapping[groupStatus[itemId]][1] : null;
return (
itemId === oid || itemId.startsWith(`${oid}-`))}
isDisplayed={isDisplayed}
@@ -356,7 +353,6 @@ export const Tree = React.memo<{
docsMode,
expandableDescendants,
expanded,
- groupStatus,
onSelectStoryId,
orphanIds,
refId,
diff --git a/packages/react-native-ui/src/hooks/useExpanded.ts b/packages/react-native-ui/src/hooks/useExpanded.ts
index fb489ec228..e1b28d02ab 100644
--- a/packages/react-native-ui/src/hooks/useExpanded.ts
+++ b/packages/react-native-ui/src/hooks/useExpanded.ts
@@ -1,4 +1,4 @@
-import type { StoriesHash } from '@storybook/core/manager-api';
+import type { StoriesHash } from 'storybook/internal/manager-api';
import type { Dispatch, Reducer } from 'react';
import { useCallback, useEffect, useReducer } from 'react';
import { getAncestorIds } from '../util/tree';
diff --git a/packages/react-native-ui/src/mockdata.ts b/packages/react-native-ui/src/mockdata.ts
index e725ed7d45..6d653c29ec 100644
--- a/packages/react-native-ui/src/mockdata.ts
+++ b/packages/react-native-ui/src/mockdata.ts
@@ -1,4 +1,4 @@
-import type { API_HashEntry } from '@storybook/core/types';
+import type { API_HashEntry } from 'storybook/internal/types';
export type MockDataSet = Record>>;
diff --git a/packages/react-native-ui/src/types.ts b/packages/react-native-ui/src/types.ts
index 01496e46f4..1109a68715 100644
--- a/packages/react-native-ui/src/types.ts
+++ b/packages/react-native-ui/src/types.ts
@@ -1,10 +1,10 @@
-import type { StoriesHash, State } from '@storybook/core/manager-api';
-import type { API_StatusState, API_StatusValue } from '@storybook/core/types';
+import type { StoriesHash, State } from 'storybook/internal/manager-api';
+import type { StatusValue, StatusesByStoryIdAndTypeId } from 'storybook/internal/types';
import * as Fuse from 'fuse.js';
import { PressableProps } from 'react-native';
export type Refs = State['refs'];
-export type RefType = Refs[keyof Refs] & { status?: API_StatusState };
+export type RefType = Refs[keyof Refs] & { allStatuses?: StatusesByStoryIdAndTypeId };
export type Item = StoriesHash[keyof StoriesHash];
export type Dataset = Record;
@@ -38,7 +38,7 @@ export interface ExpandType {
export type SearchItem = Item & {
refId: string;
path: string[];
- status?: API_StatusValue;
+ status?: StatusValue;
showAll?: () => void;
};
diff --git a/packages/react-native-ui/src/util/StoryHash.ts b/packages/react-native-ui/src/util/StoryHash.ts
index 65b276854e..26703df93b 100644
--- a/packages/react-native-ui/src/util/StoryHash.ts
+++ b/packages/react-native-ui/src/util/StoryHash.ts
@@ -1,5 +1,5 @@
import { sanitize } from '@storybook/csf';
-import { type API, type State } from '@storybook/core/manager-api';
+import { type API, type State } from 'storybook/internal/manager-api';
import type {
API_ComponentEntry,
API_DocsEntry,
@@ -14,7 +14,7 @@ import type {
IndexEntry,
StoryIndexV2,
StoryIndexV3,
-} from '@storybook/core/types';
+} from 'storybook/internal/types';
import countBy from 'lodash/countBy.js';
import { dedent } from 'ts-dedent';
type ToStoriesHashOptions = {
@@ -27,7 +27,7 @@ type ToStoriesHashOptions = {
import isEqual from 'lodash/isEqual.js';
import mergeWith from 'lodash/mergeWith.js';
-import { logger } from '@storybook/core/client-logger';
+import { logger } from 'storybook/internal/client-logger';
const merge = (a: TObj, b: Partial) =>
mergeWith({}, a, b, (objValue: TObj, srcValue: Partial) => {
diff --git a/packages/react-native-ui/src/util/status.tsx b/packages/react-native-ui/src/util/status.tsx
index 430ebd32ee..b71dfa6584 100644
--- a/packages/react-native-ui/src/util/status.tsx
+++ b/packages/react-native-ui/src/util/status.tsx
@@ -1,5 +1,9 @@
import { useMemo, type ReactElement } from 'react';
-import type { API_HashEntry, API_StatusState, API_StatusValue } from '@storybook/core/types';
+import type {
+ API_HashEntry,
+ StatusValue,
+ StatusesByStoryIdAndTypeId,
+} from 'storybook/internal/types';
import { useTheme } from '@storybook/react-native-theming';
@@ -29,19 +33,33 @@ function LoadingIcons(props: SvgProps) {
return ;
}
-export const statusPriority: API_StatusValue[] = ['unknown', 'pending', 'success', 'warn', 'error'];
-export const statusMapping: Record = {
- unknown: [null, null],
- pending: [, 'currentColor'],
- success: [, 'currentColor'],
- warn: [, '#A15C20'],
- error: [, 'brown'],
+export const statusMapping: Record = {
+ ['status-value:unknown']: [null, null],
+ ['status-value:pending']: [, 'currentColor'],
+ ['status-value:success']: [, 'currentColor'],
+ ['status-value:warning']: [, '#A15C20'],
+ ['status-value:error']: [, 'brown'],
};
-export const getHighestStatus = (statuses: API_StatusValue[]): API_StatusValue => {
+// export const getHighestStatus = (statuses: API_StatusValue[]): API_StatusValue => {
+// return statusPriority.reduce(
+// (acc, status) => (statuses.includes(status) ? status : acc),
+// 'unknown'
+// );
+// };
+
+export const statusPriority: StatusValue[] = [
+ 'status-value:unknown',
+ 'status-value:pending',
+ 'status-value:success',
+ 'status-value:warning',
+ 'status-value:error',
+];
+
+export const getMostCriticalStatusValue = (statusValues: StatusValue[]): StatusValue => {
return statusPriority.reduce(
- (acc, status) => (statuses.includes(status) ? status : acc),
- 'unknown'
+ (acc, value) => (statusValues.includes(value) ? value : acc),
+ 'status-value:unknown'
);
};
@@ -49,16 +67,16 @@ export function getGroupStatus(
collapsedData: {
[x: string]: Partial;
},
- status: API_StatusState
-): Record {
- return Object.values(collapsedData).reduce>((acc, item) => {
+ allStatuses: StatusesByStoryIdAndTypeId
+): Record {
+ return Object.values(collapsedData).reduce>((acc, item) => {
if (item.type === 'group' || item.type === 'component') {
const leafs = getDescendantIds(collapsedData as any, item.id, false)
.map((id) => collapsedData[id])
.filter((i) => i.type === 'story');
- const combinedStatus = getHighestStatus(
- leafs.flatMap((story) => Object.values(status?.[story.id] || {})).map((s) => s.status)
+ const combinedStatus = getMostCriticalStatusValue(
+ leafs.flatMap((story) => Object.values(allStatuses[story.id] || {})).map((s) => s.value)
);
if (combinedStatus) {
diff --git a/packages/react-native-ui/src/util/tree.ts b/packages/react-native-ui/src/util/tree.ts
index bb6ec46851..bf04861162 100644
--- a/packages/react-native-ui/src/util/tree.ts
+++ b/packages/react-native-ui/src/util/tree.ts
@@ -1,6 +1,6 @@
import memoize from 'memoizerific';
import type { SyntheticEvent } from 'react';
-import type { IndexHash } from '@storybook/core/manager-api';
+import type { IndexHash } from 'storybook/internal/manager-api';
import { DEFAULT_REF_ID } from '../constants';
import type { Item, RefType, Dataset, SearchItem } from '../types';
diff --git a/packages/react-native/babel.config.js b/packages/react-native/babel.config.js
index 08ec9d73c6..46ee04c0b7 100644
--- a/packages/react-native/babel.config.js
+++ b/packages/react-native/babel.config.js
@@ -1,4 +1,4 @@
// note this file is used by jest to make it not shit itself
module.exports = {
- presets: ['module:@react-native/babel-preset'],
+ presets: ['babel-preset-expo'],
};
diff --git a/packages/react-native/jest.config.js b/packages/react-native/jest.config.js
index b74671f8d5..195d17acdd 100644
--- a/packages/react-native/jest.config.js
+++ b/packages/react-native/jest.config.js
@@ -1,13 +1,8 @@
/** @type {import('jest').Config} */
const config = {
- preset: 'react-native',
- modulePathIgnorePatterns: ['dist/'],
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
- transformIgnorePatterns: ['node_modules/(?!react-native|@react-native)'],
- setupFilesAfterEnv: ['/../../node_modules/react-native-gesture-handler/jestSetup.js'],
- transform: {
- '^.+\\.(js)$': ['babel-jest', { plugins: ['babel-plugin-syntax-hermes-parser'] }],
- '^.+\\.(ts|tsx)$': 'babel-jest',
- },
+ preset: 'jest-expo',
+ transformIgnorePatterns: [
+ 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@sentry/react-native|native-base|react-native-svg|storybook/.*|@storybook/.*|uuid)',
+ ],
};
module.exports = config;
diff --git a/packages/react-native/package.json b/packages/react-native/package.json
index a797551615..2fbc0ecca7 100644
--- a/packages/react-native/package.json
+++ b/packages/react-native/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/react-native",
- "version": "8.6.2",
+ "version": "9.0.0-alpha.8",
"description": "A better way to develop React Native Components for your app",
"keywords": [
"react",
@@ -25,7 +25,8 @@
".": "./dist/index.js",
"./metro/withStorybook": "./dist/metro/withStorybook.js",
"./preview": "./dist/preview.js",
- "./scripts/generate": "./scripts/generate.js"
+ "./scripts/generate": "./scripts/generate.js",
+ "./preset": "./preset.js"
},
"files": [
"bin/**/*",
@@ -45,19 +46,17 @@
"test:update": "jest --updateSnapshot"
},
"dependencies": {
- "@storybook/core": "^8.6.6",
"@storybook/csf": "^0.1.13",
"@storybook/global": "^5.0.0",
- "@storybook/react": "^8.6.6",
- "@storybook/react-native-theming": "^8.6.2",
- "@storybook/react-native-ui": "^8.6.2",
+ "@storybook/react": "9.0.0-alpha.8",
+ "@storybook/react-native-theming": "^9.0.0-alpha.8",
+ "@storybook/react-native-ui": "^9.0.0-alpha.8",
"commander": "^8.2.0",
"dedent": "^1.5.1",
"deepmerge": "^4.3.0",
"prettier": "^2.4.1",
"react-native-url-polyfill": "^2.0.0",
"setimmediate": "^1.0.5",
- "storybook": "^8.6.6",
"type-fest": "~2.19",
"util": "^0.12.4",
"ws": "^8.18.0"
@@ -66,12 +65,14 @@
"@types/jest": "^29.4.3",
"@types/react": "~18.3.12",
"babel-jest": "^29.7.0",
- "babel-plugin-syntax-hermes-parser": "^0.25.0",
+ "babel-preset-expo": "^12.0.9",
"jest": "^29.7.0",
+ "jest-expo": "~52.0.6",
"jotai": "^2.6.2",
"react": "18.3.1",
"react-native": "0.76.7",
"react-test-renderer": "^18.3.1",
+ "storybook": "9.0.0-alpha.8",
"tsup": "^7.2.0",
"typescript": "^5.3.3"
},
@@ -80,7 +81,8 @@
"react": "*",
"react-native": ">=0.72.0",
"react-native-gesture-handler": ">=2",
- "react-native-safe-area-context": "*"
+ "react-native-safe-area-context": "*",
+ "storybook": "9.0.0-alpha.8"
},
"engines": {
"node": ">=8.0.0"
diff --git a/packages/react-native/preset.js b/packages/react-native/preset.js
new file mode 100644
index 0000000000..ed3d2a0a2d
--- /dev/null
+++ b/packages/react-native/preset.js
@@ -0,0 +1,2 @@
+// just to be a valid framework
+module.exports = {};
diff --git a/packages/react-native/scripts/common.js b/packages/react-native/scripts/common.js
index 0f1f16900c..13914d8d2c 100644
--- a/packages/react-native/scripts/common.js
+++ b/packages/react-native/scripts/common.js
@@ -1,4 +1,4 @@
-const { globToRegexp, serverRequire } = require('@storybook/core/common');
+const { globToRegexp, serverRequire } = require('storybook/internal/common');
const path = require('path');
const fs = require('fs');
diff --git a/packages/react-native/scripts/generate.js b/packages/react-native/scripts/generate.js
index 8c2015ee5e..641a987fdc 100644
--- a/packages/react-native/scripts/generate.js
+++ b/packages/react-native/scripts/generate.js
@@ -6,7 +6,7 @@ const {
resolveAddonFile,
getAddonName,
} = require('./common');
-const { normalizeStories, globToRegexp } = require('@storybook/core/common');
+const { normalizeStories, globToRegexp } = require('storybook/internal/common');
const fs = require('fs');
const prettier = require('prettier');
const path = require('path');
diff --git a/packages/react-native/scripts/generate.test.js b/packages/react-native/scripts/generate.test.js
index 03747101c1..4dc4b582a4 100644
--- a/packages/react-native/scripts/generate.test.js
+++ b/packages/react-native/scripts/generate.test.js
@@ -4,6 +4,8 @@ const { generate } = require('./generate');
let pathMock;
let fileContentMock;
+global.window.navigator = {};
+
jest.mock('fs', () => ({
...jest.requireActual('fs'),
writeFileSync: (filePath, fileContent, opts) => {
diff --git a/packages/react-native/scripts/handle-args.js b/packages/react-native/scripts/handle-args.js
index c051b5ddea..8a8978daae 100644
--- a/packages/react-native/scripts/handle-args.js
+++ b/packages/react-native/scripts/handle-args.js
@@ -6,7 +6,7 @@ function getArguments() {
.option(
'-c, --config-path ',
'The path to your config folder relative to your project-dir',
- './.storybook'
+ './.rnstorybook'
)
.option('-js, --use-js', 'Use a js file for storybook.requires')
.option('-a, --absolute', 'Use absolute paths for story imports');
diff --git a/packages/react-native/src/Start.test.ts b/packages/react-native/src/Start.test.ts
index 38b3714355..e5685e4312 100644
--- a/packages/react-native/src/Start.test.ts
+++ b/packages/react-native/src/Start.test.ts
@@ -1,5 +1,8 @@
import { prepareStories } from './Start';
+// @ts-ignore
+global.window.navigator = {};
+
describe('prepareStories', () => {
test('prepares a standard CSF story file', () => {
const req = () => {
diff --git a/packages/react-native/src/Start.tsx b/packages/react-native/src/Start.tsx
index bae015da98..14a5c68b65 100644
--- a/packages/react-native/src/Start.tsx
+++ b/packages/react-native/src/Start.tsx
@@ -16,22 +16,24 @@ if (Platform.OS !== 'web') {
}
}
-import { addons as managerAddons } from '@storybook/core/manager-api';
+import { addons as managerAddons } from 'storybook/internal/manager-api';
import {
composeConfigs,
addons as previewAddons,
PreviewWithSelection,
+ View as PreviewView,
+ SelectionStore,
sortStoriesV7,
userOrAutoTitleFromSpecifier,
-} from '@storybook/core/preview-api';
+} from 'storybook/internal/preview-api';
import { isExportStory, storyNameFromExport, toId } from '@storybook/csf';
// NOTE this really should be exported from preview-api, but it's not
-import { createBrowserChannel } from '@storybook/core/channels';
+import { createBrowserChannel } from 'storybook/internal/channels';
import type {
Addon_StorySortParameterV7,
NormalizedStoriesSpecifier,
StoryIndex,
-} from '@storybook/core/types';
+} from 'storybook/internal/types';
import type { ReactRenderer } from '@storybook/react';
import { View } from './View';
@@ -109,6 +111,7 @@ export function prepareStories({
if (title) {
const nameFromExport = storyNameFromExport(key);
const id = toId(title, nameFromExport);
+
const name = exportValue?.name || exportValue?.storyName || nameFromExport;
index.entries[id] = {
@@ -211,7 +214,13 @@ export function start({
const previewView = {
prepareForStory: () => {
- return <>>;
+ return {
+ component: () => <>>,
+ canvasElement: null,
+ mount: () => Promise.resolve({}),
+ storyResult: null,
+ T: null,
+ };
},
prepareForDocs: (): any => {},
showErrorDisplay: (e) => {
@@ -224,8 +233,7 @@ export function start({
showPreparingStory: () => {},
showStory: () => {},
showStoryDuringRender: () => {},
- // TODO what happened to this type?
- } as any;
+ } satisfies PreviewView;
const selectionStore = {
selection: null,
@@ -234,7 +242,7 @@ export function start({
setSelection: (selection) => {
preview.selectionStore.selection = selection;
},
- };
+ } satisfies SelectionStore;
const getProjectAnnotationsInitial = async () =>
composeConfigs([
@@ -261,7 +269,7 @@ export function start({
async (importPath: string) => importMap[importPath],
getProjectAnnotationsInitial,
selectionStore,
- previewView
+ previewView as any
);
const view = new View(preview, channel);
diff --git a/packages/react-native/src/View.tsx b/packages/react-native/src/View.tsx
index 6bec5fc7e6..e4c06c8306 100644
--- a/packages/react-native/src/View.tsx
+++ b/packages/react-native/src/View.tsx
@@ -1,9 +1,9 @@
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
-import { Channel, WebsocketTransport } from '@storybook/core/channels';
-import Events from '@storybook/core/core-events';
-import { addons as managerAddons } from '@storybook/core/manager-api';
-import { PreviewWithSelection, addons as previewAddons } from '@storybook/core/preview-api';
-import type { API_IndexHash, PreparedStory, StoryId, StoryIndex } from '@storybook/core/types';
+import { Channel, WebsocketTransport } from 'storybook/internal/channels';
+import Events from 'storybook/internal/core-events';
+import { addons as managerAddons } from 'storybook/internal/manager-api';
+import { PreviewWithSelection, addons as previewAddons } from 'storybook/internal/preview-api';
+import type { API_IndexHash, PreparedStory, StoryId, StoryIndex } from 'storybook/internal/types';
import { StoryContext, toId } from '@storybook/csf';
import type { ReactRenderer } from '@storybook/react';
import { Theme, ThemeProvider, darkTheme, theme } from '@storybook/react-native-theming';
diff --git a/packages/react-native/src/index.ts b/packages/react-native/src/index.ts
index 91d89e2271..e07a36a512 100644
--- a/packages/react-native/src/index.ts
+++ b/packages/react-native/src/index.ts
@@ -1,4 +1,4 @@
-import type { StorybookConfig as StorybookConfigBase } from '@storybook/core/types';
+import type { StorybookConfig as StorybookConfigBase } from 'storybook/internal/types';
import type { ReactNativeOptions } from './Start';
export { darkTheme, theme, type Theme } from '@storybook/react-native-theming';
@@ -8,4 +8,5 @@ export interface StorybookConfig {
stories: StorybookConfigBase['stories'];
addons: Array }>;
reactNative?: ReactNativeOptions;
+ framework?: '@storybook/react-native';
}
diff --git a/packages/react-native/src/metro/withStorybook.ts b/packages/react-native/src/metro/withStorybook.ts
index dda511c402..1a7e8f8db2 100644
--- a/packages/react-native/src/metro/withStorybook.ts
+++ b/packages/react-native/src/metro/withStorybook.ts
@@ -23,7 +23,7 @@ interface WebsocketsOptions {
*/
interface WithStorybookOptions {
/**
- * The path to the Storybook config folder. Defaults to './.storybook'.
+ * The path to the Storybook config folder. Defaults to './.rnstorybook'.
*/
configPath?: string;
@@ -68,7 +68,7 @@ type ResolveRequestFunction = (context: any, moduleName: string, platform: strin
*
* module.exports = withStorybook(config, {
* enabled: true,
- * configPath: path.resolve(projectRoot, './.storybook'),
+ * configPath: path.resolve(projectRoot, './.rnstorybook'),
* websockets: { port: 7007, host: 'localhost' },
* useJs: false,
* onDisabledRemoveStorybook: true,
@@ -140,7 +140,7 @@ function withStorybook(
}
generate({
- configPath: configPath ?? path.resolve(process.cwd(), './.storybook'),
+ configPath: configPath ?? path.resolve(process.cwd(), './.rnstorybook'),
useJs,
});
diff --git a/packages/react-native/src/types/index.ts b/packages/react-native/src/types/index.ts
index 3f7ea6c829..5c6b6ceddb 100644
--- a/packages/react-native/src/types/index.ts
+++ b/packages/react-native/src/types/index.ts
@@ -1,4 +1,4 @@
-import type { LoaderFunction } from '@storybook/core/types';
+import type { LoaderFunction } from 'storybook/internal/types';
export interface RequireContext {
keys: () => string[];
diff --git a/packages/react-native/template/cli/stories/Button.stories.tsx b/packages/react-native/template/cli/stories/Button.stories.tsx
new file mode 100644
index 0000000000..cb852dfbe4
--- /dev/null
+++ b/packages/react-native/template/cli/stories/Button.stories.tsx
@@ -0,0 +1,53 @@
+import type { Meta, StoryObj } from '@storybook/react';
+
+import { View } from 'react-native';
+import { fn } from 'storybook/test';
+
+import { Button } from './Button';
+
+const meta = {
+ title: 'Example/Button',
+ component: Button,
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ ],
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
+ tags: ['autodocs'],
+ // Use `fn` to spy on the onPress arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
+ args: { onPress: fn() },
+} satisfies Meta;
+
+export default meta;
+
+type Story = StoryObj;
+
+export const Primary: Story = {
+ args: {
+ primary: true,
+ label: 'Button',
+ },
+};
+
+export const Secondary: Story = {
+ args: {
+ label: 'Button',
+ },
+};
+
+export const Large: Story = {
+ args: {
+ size: 'large',
+ label: 'Button',
+ },
+};
+
+export const Small: Story = {
+ args: {
+ size: 'small',
+ label: 'Button',
+ },
+};
diff --git a/packages/react-native/template/cli/stories/Button.tsx b/packages/react-native/template/cli/stories/Button.tsx
new file mode 100644
index 0000000000..ed17e64a3d
--- /dev/null
+++ b/packages/react-native/template/cli/stories/Button.tsx
@@ -0,0 +1,101 @@
+import type { StyleProp, ViewStyle } from 'react-native';
+import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
+
+export interface ButtonProps {
+ /** Is this the principal call to action on the page? */
+ primary?: boolean;
+ /** What background color to use */
+ backgroundColor?: string;
+ /** How large should the button be? */
+ size?: 'small' | 'medium' | 'large';
+ /** Button contents */
+ label: string;
+ /** Optional click handler */
+ onPress?: () => void;
+ style?: StyleProp;
+}
+
+/** Primary UI component for user interaction */
+export const Button = ({
+ primary = false,
+ size = 'medium',
+ backgroundColor,
+ label,
+ style,
+ onPress,
+}: ButtonProps) => {
+ const modeStyle = primary ? styles.primary : styles.secondary;
+ const textModeStyle = primary ? styles.primaryText : styles.secondaryText;
+
+ const sizeStyle = styles[size];
+ const textSizeStyle = textSizeStyles[size];
+
+ return (
+
+
+ {label}
+
+
+ );
+};
+
+const styles = StyleSheet.create({
+ button: {
+ borderWidth: 0,
+ borderRadius: 48,
+ },
+ buttonText: {
+ fontWeight: '700',
+ lineHeight: 1,
+ },
+ primary: {
+ backgroundColor: '#1ea7fd',
+ },
+ primaryText: {
+ color: 'white',
+ },
+ secondary: {
+ backgroundColor: 'transparent',
+ borderColor: 'rgba(0, 0, 0, 0.15)',
+ borderWidth: 1,
+ },
+ secondaryText: {
+ color: '#333',
+ },
+ small: {
+ paddingVertical: 10,
+ paddingHorizontal: 16,
+ },
+ smallText: {
+ fontSize: 12,
+ },
+ medium: {
+ paddingVertical: 11,
+ paddingHorizontal: 20,
+ },
+ mediumText: {
+ fontSize: 14,
+ },
+ large: {
+ paddingVertical: 12,
+ paddingHorizontal: 24,
+ },
+ largeText: {
+ fontSize: 16,
+ },
+});
+
+const textSizeStyles = {
+ small: styles.smallText,
+ medium: styles.mediumText,
+ large: styles.largeText,
+};
diff --git a/packages/react-native/template/cli/stories/Button/Button.stories.tsx b/packages/react-native/template/cli/stories/Button/Button.stories.tsx
deleted file mode 100644
index e6d3ff901b..0000000000
--- a/packages/react-native/template/cli/stories/Button/Button.stories.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { View } from 'react-native';
-import type { Meta, StoryObj } from '@storybook/react';
-import { MyButton } from './Button';
-
-const meta = {
- title: 'MyButton',
- component: MyButton,
- argTypes: {
- onPress: { action: 'pressed the button' },
- },
- args: {
- text: 'Hello world',
- },
- decorators: [
- (Story) => (
-
-
-
- ),
- ],
-} satisfies Meta;
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Basic: Story = {};
-
-export const AnotherExample: Story = {
- args: {
- text: 'Another example',
- },
-};
diff --git a/packages/react-native/template/cli/stories/Button/Button.tsx b/packages/react-native/template/cli/stories/Button/Button.tsx
deleted file mode 100644
index 9ebcb629f9..0000000000
--- a/packages/react-native/template/cli/stories/Button/Button.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { TouchableOpacity, Text, StyleSheet } from 'react-native';
-
-export type MyButtonProps = {
- onPress?: () => void;
- text: string;
-};
-
-export const MyButton = ({ onPress, text }: MyButtonProps) => {
- return (
-
- {text}
-
- );
-};
-
-const styles = StyleSheet.create({
- container: {
- paddingHorizontal: 16,
- paddingVertical: 8,
- backgroundColor: 'purple',
- borderRadius: 8,
- },
- text: { color: 'white' },
-});
diff --git a/packages/react-native/template/cli/stories/Header.stories.tsx b/packages/react-native/template/cli/stories/Header.stories.tsx
new file mode 100644
index 0000000000..029f040b03
--- /dev/null
+++ b/packages/react-native/template/cli/stories/Header.stories.tsx
@@ -0,0 +1,33 @@
+import type { Meta, StoryObj } from '@storybook/react';
+
+import { Header } from './Header';
+
+const meta = {
+ title: 'Example/Header',
+ component: Header,
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
+ tags: ['autodocs'],
+} satisfies Meta;
+
+export default meta;
+
+type Story = StoryObj;
+
+export const LoggedIn: Story = {
+ args: {
+ user: {
+ name: 'Jane Doe',
+ },
+ onLogin: () => {},
+ onLogout: () => {},
+ onCreateAccount: () => {},
+ },
+};
+
+export const LoggedOut: Story = {
+ args: {
+ onLogin: () => {},
+ onLogout: () => {},
+ onCreateAccount: () => {},
+ },
+};
diff --git a/packages/react-native/template/cli/stories/Header.tsx b/packages/react-native/template/cli/stories/Header.tsx
new file mode 100644
index 0000000000..b52e6efae0
--- /dev/null
+++ b/packages/react-native/template/cli/stories/Header.tsx
@@ -0,0 +1,76 @@
+import { StyleSheet, Text, View } from 'react-native';
+
+import { Button } from './Button';
+
+export type HeaderProps = {
+ user?: { name: string };
+ onLogin: () => void;
+ onLogout: () => void;
+ onCreateAccount: () => void;
+};
+
+export const Header = ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => (
+
+
+
+ Acme
+
+
+ {user ? (
+ <>
+ Welcome,
+ {user.name}!
+
+
+ >
+ ) : (
+ <>
+
+
+
+ >
+ )}
+
+
+
+);
+
+const styles = StyleSheet.create({
+ wrapper: {
+ borderBottomWidth: 1,
+ borderBottomColor: 'rgba(0, 0, 0, 0.1)',
+ paddingVertical: 15,
+ paddingHorizontal: 20,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ },
+ h1: {
+ fontWeight: '900',
+ fontSize: 20,
+ marginTop: 6,
+ marginBottom: 6,
+ marginLeft: 10,
+ color: 'black',
+ alignSelf: 'flex-start',
+ },
+ logoContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ button: {
+ marginLeft: 10,
+ },
+ buttonContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ userName: {
+ fontWeight: '700',
+ },
+});
diff --git a/packages/react-native/template/cli/stories/Page.stories.tsx b/packages/react-native/template/cli/stories/Page.stories.tsx
new file mode 100644
index 0000000000..ebb0965742
--- /dev/null
+++ b/packages/react-native/template/cli/stories/Page.stories.tsx
@@ -0,0 +1,10 @@
+import type { Meta } from '@storybook/react';
+
+import { Page } from './Page';
+
+export default {
+ title: 'Example/Page',
+ component: Page,
+} as Meta;
+
+export const Default = {};
diff --git a/packages/react-native/template/cli/stories/Page.tsx b/packages/react-native/template/cli/stories/Page.tsx
new file mode 100644
index 0000000000..4f0fa9f172
--- /dev/null
+++ b/packages/react-native/template/cli/stories/Page.tsx
@@ -0,0 +1,147 @@
+import { useState } from 'react';
+
+import { Linking, StyleSheet, Text, View } from 'react-native';
+
+import { Header } from './Header';
+
+export const Page = () => {
+ const [user, setUser] = useState<{ name: string } | undefined>();
+
+ return (
+
+ setUser({ name: 'Jane Doe' })}
+ onLogout={() => setUser(undefined)}
+ onCreateAccount={() => setUser({ name: 'Jane Doe' })}
+ />
+
+
+
+ Pages in Storybook
+
+
+ We recommend building UIs with a{' '}
+ {
+ Linking.openURL('https://componentdriven.org');
+ }}
+ >
+ component-driven
+ {' '}
+ process starting with atomic components and ending with pages.
+
+
+ Render pages with mock data. This makes it easy to build and review page states without
+ needing to navigate to them in your app. Here are some handy patterns for managing page
+ data in Storybook:
+
+
+
+ Use a higher-level connected component. Storybook helps you compose such data from the
+ "args" of child component stories
+
+
+ Assemble data in the page component from your services. You can mock these services out
+ using Storybook.
+
+
+
+ Get a guided tutorial on component-driven development at{' '}
+ {
+ Linking.openURL('https://storybook.js.org/tutorials/');
+ }}
+ >
+ Storybook tutorials
+
+ . Read more in the{' '}
+ {
+ Linking.openURL('https://storybook.js.org/docs');
+ }}
+ >
+ docs
+
+ .
+
+
+
+ );
+};
+
+const styles = StyleSheet.create({
+ section: {
+ fontFamily: "'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif",
+ fontSize: 14,
+ lineHeight: 24,
+ paddingVertical: 48,
+ paddingHorizontal: 20,
+ marginHorizontal: 'auto',
+ maxWidth: 600,
+ color: '#333',
+ },
+
+ h2: {
+ fontWeight: '900',
+ fontSize: 32,
+ lineHeight: 1,
+ marginBottom: 4,
+ },
+
+ p: {
+ marginVertical: 16,
+ marginHorizontal: 0,
+ },
+
+ a: {
+ color: '#1ea7fd',
+ },
+
+ ul: {
+ paddingLeft: 30,
+ marginVertical: 16,
+ },
+
+ li: {
+ marginBottom: 8,
+ },
+
+ tip: {
+ alignSelf: 'flex-start',
+ borderRadius: 16,
+ backgroundColor: '#e7fdd8',
+ paddingVertical: 4,
+ paddingHorizontal: 12,
+ marginRight: 10,
+ marginBottom: 4,
+ },
+ tipText: {
+ fontSize: 11,
+ lineHeight: 12,
+ fontWeight: '700',
+ color: '#66bf3c',
+ },
+
+ tipWrapper: {
+ fontSize: 13,
+ lineHeight: 20,
+ marginTop: 40,
+ marginBottom: 40,
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ },
+
+ tipWrapperSvg: {
+ height: 12,
+ width: 12,
+ marginRight: 4,
+ marginTop: 3,
+ },
+});
diff --git a/packages/react-native/template/cli/storybook.requires.ts b/packages/react-native/template/cli/storybook.requires.ts
index 4bc4319c64..3c0a1118ed 100644
--- a/packages/react-native/template/cli/storybook.requires.ts
+++ b/packages/react-native/template/cli/storybook.requires.ts
@@ -8,7 +8,7 @@ import '@storybook/addon-ondevice-actions/register';
const normalizedStories = [
{
titlePrefix: '',
- directory: './.storybook/stories',
+ directory: './.rnstorybook/stories',
files: '**/*.stories.?(ts|tsx|js|jsx)',
importPathMatcher:
/^\.(?:(?:^|\/|(?:(?:(?!(?:^|\/)\.).)*?)\/)(?!\.)(?=.)[^/]*?\.stories\.(?:ts|tsx|js|jsx)?)$/,
@@ -29,7 +29,7 @@ declare global {
const annotations = [
require('./preview'),
require('@storybook/react-native/dist/preview'),
- require('@storybook/addon-actions/preview'),
+ require('@storybook/addon-ondevice-actions/preview'),
];
global.STORIES = normalizedStories;
diff --git a/yarn.lock b/yarn.lock
index 863afd58a9..46baacc350 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5436,174 +5436,154 @@ __metadata:
languageName: node
linkType: hard
-"@storybook/addon-actions@npm:8.6.6, @storybook/addon-actions@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-actions@npm:8.6.6"
- dependencies:
- "@storybook/global": "npm:^5.0.0"
- "@types/uuid": "npm:^9.0.1"
- dequal: "npm:^2.0.2"
- polished: "npm:^4.2.2"
- uuid: "npm:^9.0.0"
- peerDependencies:
- storybook: ^8.6.6
- checksum: 10/c9d78f6c8bb4ce783fd7e3d30c641d8bb40c7aa33504ec054c0e3ad85478899397e608a041d576f68d8956811ffa48ce73450242c7f43796e9653840e75b5a02
- languageName: node
- linkType: hard
-
-"@storybook/addon-backgrounds@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-backgrounds@npm:8.6.6"
+"@storybook/addon-backgrounds@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-backgrounds@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
memoizerific: "npm:^1.11.3"
ts-dedent: "npm:^2.0.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/5f703414b31e6c0c9719b746cb01c991716a37972ee8772d0b5027773f99b9745f3b7bf736768323138fbbb0b4f5e7170018af79fabd31b5cccb4ee8b36befa7
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/baf3b1f8a81a46152d521f2d0c17166ef5c39e23ea23d471da8f2afda96ec9e7c6ffa3847714d1b80f8edd818daa928c9145fce6e661f1a8fa3645b52bead269
languageName: node
linkType: hard
-"@storybook/addon-controls@npm:8.6.6, @storybook/addon-controls@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-controls@npm:8.6.6"
+"@storybook/addon-controls@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-controls@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
dequal: "npm:^2.0.2"
ts-dedent: "npm:^2.0.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/418550e36c88ba39e6870cfaf312f6baa75e4f6b9eb9d7b188ad489e82e5d3ec1b9d462feb0a088ee27c12ae11a7f27208b97983c40690065921093567e07e6d
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/2206f98a6fdd84730567613a3445c2d2da79ed6dc1321f6522c717e38ac3dfacbbad4235b609d38f3e1f184f9a5c1b5c68d9a0ff945f55d0aeb9a5c67fff77bb
languageName: node
linkType: hard
-"@storybook/addon-docs@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-docs@npm:8.6.6"
+"@storybook/addon-docs@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-docs@npm:9.0.0-alpha.8"
dependencies:
"@mdx-js/react": "npm:^3.0.0"
- "@storybook/blocks": "npm:8.6.6"
- "@storybook/csf-plugin": "npm:8.6.6"
- "@storybook/react-dom-shim": "npm:8.6.6"
+ "@storybook/blocks": "npm:9.0.0-alpha.8"
+ "@storybook/csf-plugin": "npm:9.0.0-alpha.8"
+ "@storybook/react-dom-shim": "npm:9.0.0-alpha.8"
react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
ts-dedent: "npm:^2.0.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/7192fd9db182ad1a2044c5bb54db96a2c2050c0d6b4c455ec181e1ca91a51a21398f06df93f2fa0d80b0209ecd7ecdde80d8b5cc4fa1c78fd57506356f25d7d6
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/b043e96c0aa5de91bd983e9a3c3f804d56b85a80d30ebad6290832c84ba0644df90858f7c2439b2766a845b19630e1edd6a38d6aa0025c523316395cbf5fb35b
languageName: node
linkType: hard
-"@storybook/addon-essentials@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-essentials@npm:8.6.6"
+"@storybook/addon-essentials@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-essentials@npm:9.0.0-alpha.8"
dependencies:
- "@storybook/addon-actions": "npm:8.6.6"
- "@storybook/addon-backgrounds": "npm:8.6.6"
- "@storybook/addon-controls": "npm:8.6.6"
- "@storybook/addon-docs": "npm:8.6.6"
- "@storybook/addon-highlight": "npm:8.6.6"
- "@storybook/addon-measure": "npm:8.6.6"
- "@storybook/addon-outline": "npm:8.6.6"
- "@storybook/addon-toolbars": "npm:8.6.6"
- "@storybook/addon-viewport": "npm:8.6.6"
+ "@storybook/addon-backgrounds": "npm:9.0.0-alpha.8"
+ "@storybook/addon-controls": "npm:9.0.0-alpha.8"
+ "@storybook/addon-docs": "npm:9.0.0-alpha.8"
+ "@storybook/addon-highlight": "npm:9.0.0-alpha.8"
+ "@storybook/addon-measure": "npm:9.0.0-alpha.8"
+ "@storybook/addon-outline": "npm:9.0.0-alpha.8"
+ "@storybook/addon-toolbars": "npm:9.0.0-alpha.8"
+ "@storybook/addon-viewport": "npm:9.0.0-alpha.8"
ts-dedent: "npm:^2.0.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/f4fc7b2a08c5e3c42b1cc28b45363afaa29678f0f73696b2646e970a91d049b3c2f7698c1811602cde103f7b4e3a227f070b7b14b6e4d8ebe0b78f60aee6813c
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/b3981fc97766c727ddd4d9edcaedb202a9aef3089129660e1f1573a8eab6db44002d48d5a0cc98f7cb24c9ebec9f28ef2fcfe59820f05f0a476d6c5da8c1a396
languageName: node
linkType: hard
-"@storybook/addon-highlight@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-highlight@npm:8.6.6"
+"@storybook/addon-highlight@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-highlight@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/eb99d59dbf1a2733930398f5fc16ae85019531c988ef50524e5c2a6d2b3eeddc691fddb38471540ea0f474a588286adbab76fbe18754bc5cfc557ae1e1ea946e
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/3f6f9246ad830208811ef1afe87e6fec67417ead316f9be0239b24ab900a3d9fba49eb2f2540c764c27fe26a806a70a59515d390bfaa929a309f7385fcd6b7f3
languageName: node
linkType: hard
-"@storybook/addon-interactions@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-interactions@npm:8.6.6"
+"@storybook/addon-interactions@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-interactions@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
- "@storybook/instrumenter": "npm:8.6.6"
- "@storybook/test": "npm:8.6.6"
polished: "npm:^4.2.2"
ts-dedent: "npm:^2.2.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/9b8846a74ba25f245c577f2bc95af364d0b7cb8cc2da6118fe2a3da7ec385519ef373d7f056f1960716a851073ecf949a7883c2bed8abbc209b23369ef53ecdb
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/b53c80ea36063962d72235435ea163509b2960f3c8dfec2c37c9e4a17b667441e1c9f13bc5a3106b9e7e2a2cee6da7498b8660f1003970aae7d5095b7ae6cb5c
languageName: node
linkType: hard
-"@storybook/addon-links@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-links@npm:8.6.6"
+"@storybook/addon-links@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-links@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
ts-dedent: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.6.6
+ storybook: ^9.0.0-alpha.8
peerDependenciesMeta:
react:
optional: true
- checksum: 10/c9b6699d43d6cacfc802feef03c53edf559ed486b686296e436c642698e365a8889dadb7f2adfbd579e8f9963b033d92141f945a528a26d47f54649522b43f70
+ checksum: 10/f1df037259af1875f79fc1f47d4b914c79c95aff71e68597112c72605247655dc7d93524c4c63e495b368aa42b129d0e81f10782a61d0fe631f8148618f5a6eb
languageName: node
linkType: hard
-"@storybook/addon-measure@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-measure@npm:8.6.6"
+"@storybook/addon-measure@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-measure@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
tiny-invariant: "npm:^1.3.1"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/8fca0a05b2535024fa1b901952068322c24e0f0fecff11368c381e52fa25870e2ddb8899a8d40fce2ebfa1ab9362dd3974263f43bc08c455f72051c4eac2dfa9
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/3b5ac6777d2191b65a71207fbc042e78f126c3a300b99f7837533b548922ced7ac9cb2d497788bf2d7ccbd0af13e9a718213bdeaac3509168f0115fcbf61bf2e
languageName: node
linkType: hard
-"@storybook/addon-ondevice-actions@npm:^8.6.2, @storybook/addon-ondevice-actions@workspace:packages/ondevice-actions":
+"@storybook/addon-ondevice-actions@npm:^9.0.0-alpha.8, @storybook/addon-ondevice-actions@workspace:packages/ondevice-actions":
version: 0.0.0-use.local
resolution: "@storybook/addon-ondevice-actions@workspace:packages/ondevice-actions"
dependencies:
- "@storybook/addon-actions": "npm:^8.6.6"
- "@storybook/core": "npm:^8.6.6"
"@storybook/global": "npm:^5.0.0"
fast-deep-equal: "npm:^2.0.1"
typescript: "npm:^5.3.3"
peerDependencies:
react: "*"
react-native: "*"
+ storybook: 9.0.0-alpha.8
languageName: unknown
linkType: soft
-"@storybook/addon-ondevice-backgrounds@npm:^8.6.2, @storybook/addon-ondevice-backgrounds@workspace:packages/ondevice-backgrounds":
+"@storybook/addon-ondevice-backgrounds@npm:^9.0.0-alpha.8, @storybook/addon-ondevice-backgrounds@workspace:packages/ondevice-backgrounds":
version: 0.0.0-use.local
resolution: "@storybook/addon-ondevice-backgrounds@workspace:packages/ondevice-backgrounds"
dependencies:
- "@storybook/core": "npm:^8.6.6"
- "@storybook/react-native-theming": "npm:^8.6.2"
+ "@storybook/react-native-theming": "npm:^9.0.0-alpha.8"
typescript: "npm:^5.3.3"
peerDependencies:
react: "*"
react-native: "*"
+ storybook: 9.0.0-alpha.8
languageName: unknown
linkType: soft
-"@storybook/addon-ondevice-controls@npm:^8.6.2, @storybook/addon-ondevice-controls@workspace:packages/ondevice-controls":
+"@storybook/addon-ondevice-controls@npm:^9.0.0-alpha.8, @storybook/addon-ondevice-controls@workspace:packages/ondevice-controls":
version: 0.0.0-use.local
resolution: "@storybook/addon-ondevice-controls@workspace:packages/ondevice-controls"
dependencies:
- "@storybook/addon-controls": "npm:^8.6.6"
- "@storybook/core": "npm:^8.6.6"
- "@storybook/react-native-theming": "npm:^8.6.2"
- "@storybook/react-native-ui": "npm:^8.6.2"
+ "@storybook/addon-controls": "npm:9.0.0-alpha.8"
+ "@storybook/react-native-theming": "npm:^9.0.0-alpha.8"
+ "@storybook/react-native-ui": "npm:^9.0.0-alpha.8"
cross-env: "npm:^7.0.3"
deep-equal: "npm:^1.0.1"
prop-types: "npm:^15.7.2"
@@ -5616,32 +5596,33 @@ __metadata:
"@react-native-community/slider": "*"
react: "*"
react-native: "*"
+ storybook: 9.0.0-alpha.8
languageName: unknown
linkType: soft
-"@storybook/addon-ondevice-notes@npm:^8.6.2, @storybook/addon-ondevice-notes@workspace:packages/ondevice-notes":
+"@storybook/addon-ondevice-notes@npm:^9.0.0-alpha.8, @storybook/addon-ondevice-notes@workspace:packages/ondevice-notes":
version: 0.0.0-use.local
resolution: "@storybook/addon-ondevice-notes@workspace:packages/ondevice-notes"
dependencies:
- "@storybook/core": "npm:^8.6.6"
- "@storybook/react-native-theming": "npm:^8.6.2"
+ "@storybook/react-native-theming": "npm:^9.0.0-alpha.8"
react-native-markdown-display: "npm:^7.0.2"
typescript: "npm:^5.3.3"
peerDependencies:
react: "*"
react-native: "*"
+ storybook: 9.0.0-alpha.8
languageName: unknown
linkType: soft
-"@storybook/addon-outline@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-outline@npm:8.6.6"
+"@storybook/addon-outline@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-outline@npm:9.0.0-alpha.8"
dependencies:
"@storybook/global": "npm:^5.0.0"
ts-dedent: "npm:^2.0.0"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/f03d1f9b229fcbb9a7041c96284ff6879921c5eec1a68bb45cbcafec0f389d6d0df3c8eb6a85e23ff7af1b23e2693f0c1c1d6c2c6848b4db207f3054552d730d
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/6a978b3980e43f63b3245eb650e0d5a6007cbbe74ca572c1d46827ec27e6541656cb5e0aec723f33444279058d8931336d53f206fc91001a80e83ad5b81cd946
languageName: node
linkType: hard
@@ -5654,100 +5635,67 @@ __metadata:
languageName: node
linkType: hard
-"@storybook/addon-toolbars@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-toolbars@npm:8.6.6"
+"@storybook/addon-toolbars@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-toolbars@npm:9.0.0-alpha.8"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/2935a572ea71ac8a0f3b07d9b0119911d3e77cad483a5d3301e3562603775188fef967a1c5dd0f8c322d6805955b5e4d2a16a630b469a9780e44cf4330d2ff58
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/5d3efea176999da6d6934dc450eb699be509a1b9b3ffea18b6730f6a72ebebdbdd8bee391db10f6faa3f19233515a07bb0143f83cf381c8a9b9ae172be524975
languageName: node
linkType: hard
-"@storybook/addon-viewport@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/addon-viewport@npm:8.6.6"
+"@storybook/addon-viewport@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/addon-viewport@npm:9.0.0-alpha.8"
dependencies:
memoizerific: "npm:^1.11.3"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/b98f101231328c0e6797793c2cad361c6b04e7d0286dd72979904899797cae396dcceaa1ffea800fbe239216d3fa3d0978e2d4b013f1f9acfa2201edc480e57f
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/a64637c7d33093c07f130036e567bb0136db5d55b90734f53fdf6f38872461f2f51f493752621114ad1df4e4e8ec05560c5e00b719e45d6def4c97a3a52d30b0
languageName: node
linkType: hard
-"@storybook/blocks@npm:8.6.6, @storybook/blocks@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/blocks@npm:8.6.6"
+"@storybook/blocks@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/blocks@npm:9.0.0-alpha.8"
dependencies:
- "@storybook/icons": "npm:^1.2.12"
+ "@storybook/icons": "npm:^1.4.0"
ts-dedent: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- storybook: ^8.6.6
+ storybook: ^9.0.0-alpha.8
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
- checksum: 10/a3cad80f65401ed5c6129594e39012cf12202d1f5b17829bcbadd9ef118f8ba6ef0a84719f0a02d57feb02720e0c43b2c6e82816f6ac474f512ae3d3e9bfe4b6
+ checksum: 10/bf26683df3edb92242e71042e37445070b12dd1aa3974a12b2ccbe75fc0085af64af9149ce603294774fbfec8f75cb3e3d2680bfe372a2bb4da3b864fb3425d8
languageName: node
linkType: hard
-"@storybook/builder-vite@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/builder-vite@npm:8.6.6"
+"@storybook/builder-vite@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/builder-vite@npm:9.0.0-alpha.8"
dependencies:
- "@storybook/csf-plugin": "npm:8.6.6"
+ "@storybook/csf-plugin": "npm:9.0.0-alpha.8"
browser-assert: "npm:^1.2.1"
ts-dedent: "npm:^2.0.0"
peerDependencies:
- storybook: ^8.6.6
+ storybook: ^9.0.0-alpha.8
vite: ^4.0.0 || ^5.0.0 || ^6.0.0
- checksum: 10/a5e7d2ffe199d4c13631f53a5f0c60edc59c1e449e046e62f471d47c16b7e63831a3b9820ec3b8d5c554cbca733106c1326b7d474fa90671ecea7ee0d81267c0
- languageName: node
- linkType: hard
-
-"@storybook/components@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/components@npm:8.6.6"
- peerDependencies:
- storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- checksum: 10/19d4f783387850f3ff36c7651b08f5ef16003368e3f73ab4ea56a7e91b35dfb4bd3fa4f1d1bfc13d3856f07226e5371b6abf54432df0a23fe942656cfd317dc3
- languageName: node
- linkType: hard
-
-"@storybook/core@npm:8.6.6, @storybook/core@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/core@npm:8.6.6"
- dependencies:
- "@storybook/theming": "npm:8.6.6"
- better-opn: "npm:^3.0.2"
- browser-assert: "npm:^1.2.1"
- esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0"
- esbuild-register: "npm:^3.5.0"
- jsdoc-type-pratt-parser: "npm:^4.0.0"
- process: "npm:^0.11.10"
- recast: "npm:^0.23.5"
- semver: "npm:^7.6.2"
- util: "npm:^0.12.5"
- ws: "npm:^8.2.3"
- peerDependencies:
- prettier: ^2 || ^3
- peerDependenciesMeta:
- prettier:
- optional: true
- checksum: 10/df6139e867d49cf38eb80ec0162807b681a0126eb0fdc745a74f82825c8f22765c5367b9bd2f0a3d6788fa6347af04632bcf279a68b9a57aad2846ea95ed281a
+ checksum: 10/37a0cb8bcc01c5001c5b1c70cb17d8a1aaf70237f1658272c6bcc91a7b4b19ad367d566304388759994b580160a30dbd5eed3cad63d7396c084c0d1e7bbe24a1
languageName: node
linkType: hard
-"@storybook/csf-plugin@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/csf-plugin@npm:8.6.6"
+"@storybook/csf-plugin@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/csf-plugin@npm:9.0.0-alpha.8"
dependencies:
unplugin: "npm:^1.3.1"
peerDependencies:
- storybook: ^8.6.6
- checksum: 10/b00707797f0faf72f0aaefaeb2f3dab351f444fafea5e8312b06901d3dc973e19b50b5800e084a6762e4a585aea29d785fd2217c06f4f6b9b9246db1c8b2b392
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/f25a0c995c9295cefc8177b43d26b8312f50478bcc431fae5b532d96ffb2ddf60d9f806cea758fdee5424b767c97f1bfdc7ffb69aca1b05a7eedf224e3970e76
languageName: node
linkType: hard
@@ -5767,58 +5715,28 @@ __metadata:
languageName: node
linkType: hard
-"@storybook/icons@npm:^1.2.12":
- version: 1.2.12
- resolution: "@storybook/icons@npm:1.2.12"
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- checksum: 10/5df56f0856764ed7e4bb24ef7a08a8a9c93f8eedcb16dac062f1dfd3bd1fe6cb4a0aa5a0794083d95e31c04960d126a4d2028cfb4c53681bf05513bb38eae9d2
- languageName: node
- linkType: hard
-
-"@storybook/instrumenter@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/instrumenter@npm:8.6.6"
- dependencies:
- "@storybook/global": "npm:^5.0.0"
- "@vitest/utils": "npm:^2.1.1"
- peerDependencies:
- storybook: ^8.6.6
- checksum: 10/c949e6eaa04f940c6e2179344683f85e563ea6e8957a2760205ee315ea87f9d6d4c6882087f5bf9921cb21dafa8ae78556f6e84300bf7c260cd759ffbce8a4b2
- languageName: node
- linkType: hard
-
-"@storybook/manager-api@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/manager-api@npm:8.6.6"
- peerDependencies:
- storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- checksum: 10/137061da34af60b4538648fb575e35b3b7d7afcb2eba6a60d74442f44d06f276fa0b3c8f521a65908d20f063073211eb5d31fb60ea1a8c38c1aa0a68600e302b
- languageName: node
- linkType: hard
-
-"@storybook/preview-api@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/preview-api@npm:8.6.6"
+"@storybook/icons@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "@storybook/icons@npm:1.4.0"
peerDependencies:
- storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- checksum: 10/3bc07d7504beb1a69f94ab839eaae1dea0a5dc76cbbdb89d66eedf05ab3e7a0dbfa15862654b23123822360a75996b32d375b66a79eac7b7395a0941bd3bc861
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ checksum: 10/513d36188bb84f1f64dd982b6bd577de4c3d7bc2aa9d318a2acf8c654d16994bac0b669787a4ced6720e471251bcb0ec68b8d8dc2cc7245d11102bd617243700
languageName: node
linkType: hard
-"@storybook/react-dom-shim@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/react-dom-shim@npm:8.6.6"
+"@storybook/react-dom-shim@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/react-dom-shim@npm:9.0.0-alpha.8"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.6.6
- checksum: 10/de3d620b2024f88d8ab5d886353b7737aa08c1523d3f35c571b7b806f1515f3024c602a49d79f4d55323c19cafba6922a2b0ce6ae3afe765eaa0f2da6138de82
+ storybook: ^9.0.0-alpha.8
+ checksum: 10/1c65452b1b271a8ba7a291c34cad542216155e8a5b8e4f9a177ceb402c09f481712596ffff4e050ff736f6e77b2e5462c10668a6ca53df5c844be3953b17fc1a
languageName: node
linkType: hard
-"@storybook/react-native-theming@npm:^8.6.2, @storybook/react-native-theming@workspace:packages/react-native-theming":
+"@storybook/react-native-theming@npm:^9.0.0-alpha.8, @storybook/react-native-theming@workspace:packages/react-native-theming":
version: 0.0.0-use.local
resolution: "@storybook/react-native-theming@workspace:packages/react-native-theming"
dependencies:
@@ -5832,13 +5750,12 @@ __metadata:
languageName: unknown
linkType: soft
-"@storybook/react-native-ui@npm:^8.6.2, @storybook/react-native-ui@workspace:packages/react-native-ui":
+"@storybook/react-native-ui@npm:^9.0.0-alpha.8, @storybook/react-native-ui@workspace:packages/react-native-ui":
version: 0.0.0-use.local
resolution: "@storybook/react-native-ui@workspace:packages/react-native-ui"
dependencies:
- "@storybook/core": "npm:^8.6.6"
- "@storybook/react": "npm:^8.6.6"
- "@storybook/react-native-theming": "npm:^8.6.2"
+ "@storybook/react": "npm:9.0.0-alpha.8"
+ "@storybook/react-native-theming": "npm:^9.0.0-alpha.8"
"@types/jest": "npm:^29.4.3"
"@types/react": "npm:~18.3.12"
babel-jest: "npm:^29.7.0"
@@ -5859,20 +5776,21 @@ __metadata:
react-native-reanimated: ">=3"
react-native-safe-area-context: "*"
react-native-svg: ">=14"
+ storybook: 9.0.0-alpha.8
languageName: unknown
linkType: soft
-"@storybook/react-native-web-vite@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/react-native-web-vite@npm:8.6.6"
+"@storybook/react-native-web-vite@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/react-native-web-vite@npm:9.0.0-alpha.8"
dependencies:
"@babel/plugin-transform-modules-commonjs": "npm:^7.26.3"
"@babel/preset-react": "npm:^7.26.3"
"@bunchtogether/vite-plugin-flow": "npm:^1.0.2"
"@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.5.0"
- "@storybook/builder-vite": "npm:8.6.6"
- "@storybook/react": "npm:8.6.6"
- "@storybook/react-vite": "npm:8.6.6"
+ "@storybook/builder-vite": "npm:9.0.0-alpha.8"
+ "@storybook/react": "npm:9.0.0-alpha.8"
+ "@storybook/react-vite": "npm:9.0.0-alpha.8"
"@vitejs/plugin-react": "npm:^4.3.2"
vite-plugin-babel: "npm:^1.3.0"
vite-plugin-commonjs: "npm:^0.10.4"
@@ -5882,30 +5800,30 @@ __metadata:
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-native: ">=0.74.5"
react-native-web: ^0.19.12
- storybook: ^8.6.6
+ storybook: ^9.0.0-alpha.8
vite: ^5.0.0 || ^6.0.0
- checksum: 10/98f93483310f36967da9c431ea12719c8f75ee1cd9f5925af10ae5e4642ebdf97e9db940114bd8f71c48260f6f55e6aac4f24d24f0dcda501274f4541bad1018
+ checksum: 10/5bcd10ad851537a8dfaabde310662aa1c972afab3e3ffd3985bc74c755fede00954084310f68bd14957a4327a10cfbe1d51150833b0780efbe6e95315a532c52
languageName: node
linkType: hard
-"@storybook/react-native@npm:^8.6.2, @storybook/react-native@workspace:packages/react-native":
+"@storybook/react-native@npm:^9.0.0-alpha.8, @storybook/react-native@workspace:packages/react-native":
version: 0.0.0-use.local
resolution: "@storybook/react-native@workspace:packages/react-native"
dependencies:
- "@storybook/core": "npm:^8.6.6"
"@storybook/csf": "npm:^0.1.13"
"@storybook/global": "npm:^5.0.0"
- "@storybook/react": "npm:^8.6.6"
- "@storybook/react-native-theming": "npm:^8.6.2"
- "@storybook/react-native-ui": "npm:^8.6.2"
+ "@storybook/react": "npm:9.0.0-alpha.8"
+ "@storybook/react-native-theming": "npm:^9.0.0-alpha.8"
+ "@storybook/react-native-ui": "npm:^9.0.0-alpha.8"
"@types/jest": "npm:^29.4.3"
"@types/react": "npm:~18.3.12"
babel-jest: "npm:^29.7.0"
- babel-plugin-syntax-hermes-parser: "npm:^0.25.0"
+ babel-preset-expo: "npm:^12.0.9"
commander: "npm:^8.2.0"
dedent: "npm:^1.5.1"
deepmerge: "npm:^4.3.0"
jest: "npm:^29.7.0"
+ jest-expo: "npm:~52.0.6"
jotai: "npm:^2.6.2"
prettier: "npm:^2.4.1"
react: "npm:18.3.1"
@@ -5913,7 +5831,7 @@ __metadata:
react-native-url-polyfill: "npm:^2.0.0"
react-test-renderer: "npm:^18.3.1"
setimmediate: "npm:^1.0.5"
- storybook: "npm:^8.6.6"
+ storybook: "npm:9.0.0-alpha.8"
tsup: "npm:^7.2.0"
type-fest: "npm:~2.19"
typescript: "npm:^5.3.3"
@@ -5925,59 +5843,49 @@ __metadata:
react-native: ">=0.72.0"
react-native-gesture-handler: ">=2"
react-native-safe-area-context: "*"
+ storybook: 9.0.0-alpha.8
bin:
sb-rn-get-stories: ./bin/get-stories.js
languageName: unknown
linkType: soft
-"@storybook/react-vite@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/react-vite@npm:8.6.6"
+"@storybook/react-vite@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/react-vite@npm:9.0.0-alpha.8"
dependencies:
"@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.5.0"
"@rollup/pluginutils": "npm:^5.0.2"
- "@storybook/builder-vite": "npm:8.6.6"
- "@storybook/react": "npm:8.6.6"
+ "@storybook/builder-vite": "npm:9.0.0-alpha.8"
+ "@storybook/react": "npm:9.0.0-alpha.8"
find-up: "npm:^5.0.0"
magic-string: "npm:^0.30.0"
react-docgen: "npm:^7.0.0"
resolve: "npm:^1.22.8"
tsconfig-paths: "npm:^4.2.0"
peerDependencies:
- "@storybook/test": 8.6.6
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.6.6
+ storybook: ^9.0.0-alpha.8
vite: ^4.0.0 || ^5.0.0 || ^6.0.0
- peerDependenciesMeta:
- "@storybook/test":
- optional: true
- checksum: 10/746d1600291a7bdadc84e3b381bfdc330b71ecedd2a1e048ac6dfb8c4fd7ab7832e2c0a68b18c119fe7159e017116e348ab9d2ba10813e6c8b694ed55fc8ae3b
+ checksum: 10/b3bc7ad967b975132dc219b6b22c6adeb6e331e14208c0d7da942cf7e8eb5011416920812c6a1a79a9509048de4fe4ab08b30860540edd52fcac1789a86f159f
languageName: node
linkType: hard
-"@storybook/react@npm:8.6.6, @storybook/react@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/react@npm:8.6.6"
+"@storybook/react@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "@storybook/react@npm:9.0.0-alpha.8"
dependencies:
- "@storybook/components": "npm:8.6.6"
"@storybook/global": "npm:^5.0.0"
- "@storybook/manager-api": "npm:8.6.6"
- "@storybook/preview-api": "npm:8.6.6"
- "@storybook/react-dom-shim": "npm:8.6.6"
- "@storybook/theming": "npm:8.6.6"
+ "@storybook/react-dom-shim": "npm:9.0.0-alpha.8"
peerDependencies:
- "@storybook/test": 8.6.6
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.6.6
- typescript: ">= 4.2.x"
+ storybook: ^9.0.0-alpha.8
+ typescript: ">= 4.9.x"
peerDependenciesMeta:
- "@storybook/test":
- optional: true
typescript:
optional: true
- checksum: 10/af0d18cfd914fc1031e9afee10aab9fb7a871c2bb6877bb1aab0ed7c9c511f3674fb450788e712de81a15410d71c4478f89b149338ae400300d01fc0d7ff19f0
+ checksum: 10/fb345e362896f2290dc97b32d1c49585b065b2e03be1f489bcde90fa342b3dc70f0c442b7514aaaa28e649e463289c897ed61dc981e9c8ce4befdf97eec61bc2
languageName: node
linkType: hard
@@ -5994,32 +5902,6 @@ __metadata:
languageName: unknown
linkType: soft
-"@storybook/test@npm:8.6.6, @storybook/test@npm:^8.6.6":
- version: 8.6.6
- resolution: "@storybook/test@npm:8.6.6"
- dependencies:
- "@storybook/global": "npm:^5.0.0"
- "@storybook/instrumenter": "npm:8.6.6"
- "@testing-library/dom": "npm:10.4.0"
- "@testing-library/jest-dom": "npm:6.5.0"
- "@testing-library/user-event": "npm:14.5.2"
- "@vitest/expect": "npm:2.0.5"
- "@vitest/spy": "npm:2.0.5"
- peerDependencies:
- storybook: ^8.6.6
- checksum: 10/2245ffc7a345a54bc8f453f57bdd6e39a12bdf4282f2e45459e8249c17516c9928ce59cc113dd0c6c5b4442890b57ce57080e2f979521f81b2cbce10c3506c56
- languageName: node
- linkType: hard
-
-"@storybook/theming@npm:8.6.6":
- version: 8.6.6
- resolution: "@storybook/theming@npm:8.6.6"
- peerDependencies:
- storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- checksum: 10/fafd89ea63724c691fc901a43435760ea68247c8a4e9edc1e3b566c868304bcf2ec6c5072ae4fa3a383b56c691240c94a96b45e63775de107e6b769722bbab51
- languageName: node
- linkType: hard
-
"@testing-library/dom@npm:10.4.0":
version: 10.4.0
resolution: "@testing-library/dom@npm:10.4.0"
@@ -6036,9 +5918,9 @@ __metadata:
languageName: node
linkType: hard
-"@testing-library/jest-dom@npm:6.5.0":
- version: 6.5.0
- resolution: "@testing-library/jest-dom@npm:6.5.0"
+"@testing-library/jest-dom@npm:^6.6.3":
+ version: 6.6.3
+ resolution: "@testing-library/jest-dom@npm:6.6.3"
dependencies:
"@adobe/css-tools": "npm:^4.4.0"
aria-query: "npm:^5.0.0"
@@ -6047,7 +5929,7 @@ __metadata:
dom-accessibility-api: "npm:^0.6.3"
lodash: "npm:^4.17.21"
redent: "npm:^3.0.0"
- checksum: 10/3d2080888af5fd7306f57448beb5a23f55d965e265b5e53394fffc112dfb0678d616a5274ff0200c46c7618f293520f86fc8562eecd8bdbc0dbb3294d63ec431
+ checksum: 10/1f3427e45870eab9dcc59d6504b780d4a595062fe1687762ae6e67d06a70bf439b40ab64cf58cbace6293a99e3764d4647fdc8300a633b721764f5ce39dade18
languageName: node
linkType: hard
@@ -6070,12 +5952,12 @@ __metadata:
languageName: node
linkType: hard
-"@testing-library/user-event@npm:14.5.2":
- version: 14.5.2
- resolution: "@testing-library/user-event@npm:14.5.2"
+"@testing-library/user-event@npm:^14.6.1":
+ version: 14.6.1
+ resolution: "@testing-library/user-event@npm:14.6.1"
peerDependencies:
"@testing-library/dom": ">=7.21.4"
- checksum: 10/49821459d81c6bc435d97128d6386ca24f1e4b3ba8e46cb5a96fe3643efa6e002d88c1b02b7f2ec58da593e805c59b78d7fdf0db565c1f02ba782f63ee984040
+ checksum: 10/34b74fff56a0447731a94b40d4cf246deb8dbc1c1e3aec93acd1c3377a760bb062e979f1572bb34ec164ad28ee2a391744b42d0d6d6cc16c4ce527e5e09610e1
languageName: node
linkType: hard
@@ -6243,6 +6125,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/looks-same@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "@types/looks-same@npm:4.1.0"
+ dependencies:
+ looks-same: "npm:*"
+ checksum: 10/89a59b3811e1e3b885d44e3dc1aa95bbd2dc2faa32e9c964761b590c54b7a48aa118e551f03110fe1f60478d2c08e40334065a7d9605ef7dae1c81eaf031c45a
+ languageName: node
+ linkType: hard
+
"@types/mdx@npm:^2.0.0":
version: 2.0.13
resolution: "@types/mdx@npm:2.0.13"
@@ -6550,65 +6441,44 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/expect@npm:2.0.5":
- version: 2.0.5
- resolution: "@vitest/expect@npm:2.0.5"
- dependencies:
- "@vitest/spy": "npm:2.0.5"
- "@vitest/utils": "npm:2.0.5"
- chai: "npm:^5.1.1"
- tinyrainbow: "npm:^1.2.0"
- checksum: 10/ca9a218f50254b2259fd16166b2d8c9ccc8ee2cc068905e6b3d6281da10967b1590cc7d34b5fa9d429297f97e740450233745583b4cc12272ff11705faf70a37
- languageName: node
- linkType: hard
-
-"@vitest/pretty-format@npm:2.0.5":
- version: 2.0.5
- resolution: "@vitest/pretty-format@npm:2.0.5"
- dependencies:
- tinyrainbow: "npm:^1.2.0"
- checksum: 10/70bf452dd0b8525e658795125b3f11110bd6baadfaa38c5bb91ca763bded35ec6dc80e27964ad4e91b91be6544d35e18ea7748c1997693988f975a7283c3e9a0
- languageName: node
- linkType: hard
-
-"@vitest/pretty-format@npm:2.1.3":
- version: 2.1.3
- resolution: "@vitest/pretty-format@npm:2.1.3"
+"@vitest/expect@npm:3.0.9":
+ version: 3.0.9
+ resolution: "@vitest/expect@npm:3.0.9"
dependencies:
- tinyrainbow: "npm:^1.2.0"
- checksum: 10/d9382ee93f0f32e2ef8fe03bda818e5277f052a50ddb05b6a6cf0864b2ccb228484f12f130c05faf62dc2140292ffafc213f2941b0fa24058b3ee2943daa286c
+ "@vitest/spy": "npm:3.0.9"
+ "@vitest/utils": "npm:3.0.9"
+ chai: "npm:^5.2.0"
+ tinyrainbow: "npm:^2.0.0"
+ checksum: 10/09fc02ae3a639d5db23705a393ef571001f7f1006f7527529ec7807699b739788d5b54b71cb917c56379874b006f2de49933585694927b23c0d50787f96b9e94
languageName: node
linkType: hard
-"@vitest/spy@npm:2.0.5":
- version: 2.0.5
- resolution: "@vitest/spy@npm:2.0.5"
+"@vitest/pretty-format@npm:3.0.9":
+ version: 3.0.9
+ resolution: "@vitest/pretty-format@npm:3.0.9"
dependencies:
- tinyspy: "npm:^3.0.0"
- checksum: 10/ed19f4c3bb4d3853241e8070979615138e24403ce4c137fa48c903b3af2c8b3ada2cc26aca9c1aa323bb314a457a8130a29acbb18dafd4e42737deefb2abf1ca
+ tinyrainbow: "npm:^2.0.0"
+ checksum: 10/cfcdda2c72cf16a5e76ad2c9b014a4e36fea3988389613497cad5a2491ebc380ded4397afc95c32a2bd2734b0386996df76f6c5cbfc6be561262b8d112fb7a27
languageName: node
linkType: hard
-"@vitest/utils@npm:2.0.5":
- version: 2.0.5
- resolution: "@vitest/utils@npm:2.0.5"
+"@vitest/spy@npm:3.0.9":
+ version: 3.0.9
+ resolution: "@vitest/spy@npm:3.0.9"
dependencies:
- "@vitest/pretty-format": "npm:2.0.5"
- estree-walker: "npm:^3.0.3"
- loupe: "npm:^3.1.1"
- tinyrainbow: "npm:^1.2.0"
- checksum: 10/d631d56d29c33bc8de631166b2b6691c470187a345469dfef7048befe6027e1c6ff9552f2ee11c8a247522c325c4a64bfcc73f8f0f0c525da39cb9f190f119f8
+ tinyspy: "npm:^3.0.2"
+ checksum: 10/967b403293c9325292be4843753bf8ae516ec158df2372a14bec98c9bfb233fa6bbf76cb319cf1a9ea1b5ab795e3abff68ca66fa7523045562d7449a95ed8bf9
languageName: node
linkType: hard
-"@vitest/utils@npm:^2.1.1":
- version: 2.1.3
- resolution: "@vitest/utils@npm:2.1.3"
+"@vitest/utils@npm:3.0.9":
+ version: 3.0.9
+ resolution: "@vitest/utils@npm:3.0.9"
dependencies:
- "@vitest/pretty-format": "npm:2.1.3"
- loupe: "npm:^3.1.1"
- tinyrainbow: "npm:^1.2.0"
- checksum: 10/f064e6634cb84c925a17d8937df7441d150c3e24fa5bbd6304151d11dab6cdeb0cb3d5a95a9aacb8b416c87fb0d9aa8c6b9cc5e174191784231e8345948d6d18
+ "@vitest/pretty-format": "npm:3.0.9"
+ loupe: "npm:^3.1.3"
+ tinyrainbow: "npm:^2.0.0"
+ checksum: 10/c77e2a4a5c62dabc57c0d27536428e6b4f9a7998b59161deb82cf797e1d6cb61a7531bef19f079c4bdca7b48fd656b48e4d1bcfb4a5bdf3c177931670a287163
languageName: node
linkType: hard
@@ -7188,6 +7058,13 @@ __metadata:
languageName: node
linkType: hard
+"b4a@npm:^1.6.4":
+ version: 1.6.7
+ resolution: "b4a@npm:1.6.7"
+ checksum: 10/1ac056e3bce378d4d3e570e57319360a9d3125ab6916a1921b95bea33d9ee646698ebc75467561fd6fcc80ff697612124c89bb9b95e80db94c6dc23fcb977705
+ languageName: node
+ linkType: hard
+
"babel-core@npm:^7.0.0-bridge.0":
version: 7.0.0-bridge.0
resolution: "babel-core@npm:7.0.0-bridge.0"
@@ -7326,15 +7203,6 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-syntax-hermes-parser@npm:^0.25.0":
- version: 0.25.0
- resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.0"
- dependencies:
- hermes-parser: "npm:0.25.0"
- checksum: 10/63ce216cdeae19f2bb084116f7f091b9e7cb2bdaf99715c489aa70a6eec71fd3f03168aa7b53953b604ba07548454c9f72b0f8f2bdaf340933785fbbe6c4bbdd
- languageName: node
- linkType: hard
-
"babel-plugin-syntax-hermes-parser@npm:^0.25.1":
version: 0.25.1
resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1"
@@ -7378,7 +7246,7 @@ __metadata:
languageName: node
linkType: hard
-"babel-preset-expo@npm:~12.0.9":
+"babel-preset-expo@npm:^12.0.9, babel-preset-expo@npm:~12.0.9":
version: 12.0.9
resolution: "babel-preset-expo@npm:12.0.9"
dependencies:
@@ -7422,6 +7290,57 @@ __metadata:
languageName: node
linkType: hard
+"bare-events@npm:^2.0.0, bare-events@npm:^2.2.0":
+ version: 2.5.4
+ resolution: "bare-events@npm:2.5.4"
+ checksum: 10/135ef380b13f554ca2c6905bdbcfac8edae08fce85b7f953fa01f09a9f5b0da6a25e414111659bc9a6118216f0dd1f732016acd11ce91517f2afb26ebeb4b721
+ languageName: node
+ linkType: hard
+
+"bare-fs@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "bare-fs@npm:4.0.1"
+ dependencies:
+ bare-events: "npm:^2.0.0"
+ bare-path: "npm:^3.0.0"
+ bare-stream: "npm:^2.0.0"
+ checksum: 10/70951cf7d7522f0b6780bdfaf7969226db85370fa107b1eee71c58272573463388b40203595a8826cd55ca34e6359ca4b1ee91fd5d0b8ea64ab0d1f9979de262
+ languageName: node
+ linkType: hard
+
+"bare-os@npm:^3.0.1":
+ version: 3.6.0
+ resolution: "bare-os@npm:3.6.0"
+ checksum: 10/2d8366d74d0c9a780a83f9a3f3da9261ca68b6066eede5fbf94b13eba0dca105a78879529967c374858fffe23c53042eef292c9b8a866e6f9c6cec18b13c0ce2
+ languageName: node
+ linkType: hard
+
+"bare-path@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "bare-path@npm:3.0.0"
+ dependencies:
+ bare-os: "npm:^3.0.1"
+ checksum: 10/712d90e9cd8c3263cc11b0e0d386d1531a452706d7840c081ee586b34b00d72544e65df7a40013d47c1b177277495225deeede65cb2984db88a979cb65aaa2ff
+ languageName: node
+ linkType: hard
+
+"bare-stream@npm:^2.0.0":
+ version: 2.6.5
+ resolution: "bare-stream@npm:2.6.5"
+ dependencies:
+ streamx: "npm:^2.21.0"
+ peerDependencies:
+ bare-buffer: "*"
+ bare-events: "*"
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+ bare-events:
+ optional: true
+ checksum: 10/0f5ca2167fbbccc118157bce7c53a933e21726268e03d751461211550d72b2d01c296b767ccf96aae8ab28e106b126407c6fe0d29f915734b844ffe6057f0a08
+ languageName: node
+ linkType: hard
+
"base64-js@npm:^1.2.3, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1":
version: 1.5.1
resolution: "base64-js@npm:1.5.1"
@@ -7751,16 +7670,16 @@ __metadata:
languageName: node
linkType: hard
-"chai@npm:^5.1.1":
- version: 5.1.1
- resolution: "chai@npm:5.1.1"
+"chai@npm:^5.2.0":
+ version: 5.2.0
+ resolution: "chai@npm:5.2.0"
dependencies:
assertion-error: "npm:^2.0.1"
check-error: "npm:^2.1.1"
deep-eql: "npm:^5.0.1"
loupe: "npm:^3.1.0"
pathval: "npm:^2.0.0"
- checksum: 10/ee67279a5613bd36dc1dc13660042429ae2f1dc5a9030a6abcf381345866dfb5bce7bc10b9d74c8de86b6f656489f654bbbef3f3361e06925591e6a00c72afff
+ checksum: 10/2ce03671c159c6a567bf1912756daabdbb7c075f3c0078f1b59d61da8d276936367ee696dfe093b49e1479d9ba93a6074c8e55d49791dddd8061728cdcad249e
languageName: node
linkType: hard
@@ -7859,6 +7778,13 @@ __metadata:
languageName: node
linkType: hard
+"chownr@npm:^1.1.1":
+ version: 1.1.4
+ resolution: "chownr@npm:1.1.4"
+ checksum: 10/115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d
+ languageName: node
+ linkType: hard
+
"chownr@npm:^2.0.0":
version: 2.0.0
resolution: "chownr@npm:2.0.0"
@@ -8047,6 +7973,20 @@ __metadata:
languageName: node
linkType: hard
+"color-convert@npm:~0.5.0":
+ version: 0.5.3
+ resolution: "color-convert@npm:0.5.3"
+ checksum: 10/00dc4256c07ed8760d7bbba234ff969c139eb964fe165853696852001002695c492e327d83ddb7a8cad8d27b49fa543d001328928c12474ee8ecb335bf5f2eb4
+ languageName: node
+ linkType: hard
+
+"color-diff@npm:^1.1.0":
+ version: 1.4.0
+ resolution: "color-diff@npm:1.4.0"
+ checksum: 10/37df0a8aa74bc8c93472ea421b8a746d2303c3d9606854349a494ec259bd1855d7a00b3374ee66d6c574810403c1836b8cdc2af9a84618e59cb64e291658b17c
+ languageName: node
+ linkType: hard
+
"color-name@npm:1.1.3":
version: 1.1.3
resolution: "color-name@npm:1.1.3"
@@ -8054,13 +7994,23 @@ __metadata:
languageName: node
linkType: hard
-"color-name@npm:~1.1.4":
+"color-name@npm:^1.0.0, color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610
languageName: node
linkType: hard
+"color-string@npm:^1.9.0":
+ version: 1.9.1
+ resolution: "color-string@npm:1.9.1"
+ dependencies:
+ color-name: "npm:^1.0.0"
+ simple-swizzle: "npm:^0.2.2"
+ checksum: 10/72aa0b81ee71b3f4fb1ac9cd839cdbd7a011a7d318ef58e6cb13b3708dca75c7e45029697260488709f1b1c7ac4e35489a87e528156c1e365917d1c4ccb9b9cd
+ languageName: node
+ linkType: hard
+
"color-support@npm:1.1.3":
version: 1.1.3
resolution: "color-support@npm:1.1.3"
@@ -8070,6 +8020,16 @@ __metadata:
languageName: node
linkType: hard
+"color@npm:^4.2.3":
+ version: 4.2.3
+ resolution: "color@npm:4.2.3"
+ dependencies:
+ color-convert: "npm:^2.0.1"
+ color-string: "npm:^1.9.0"
+ checksum: 10/b23f5e500a79ea22428db43d1a70642d983405c0dd1f95ef59dbdb9ba66afbb4773b334fa0b75bb10b0552fd7534c6b28d4db0a8b528f91975976e70973c0152
+ languageName: node
+ linkType: hard
+
"columnify@npm:1.6.0":
version: 1.6.0
resolution: "columnify@npm:1.6.0"
@@ -8687,6 +8647,15 @@ __metadata:
languageName: node
linkType: hard
+"decompress-response@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "decompress-response@npm:6.0.0"
+ dependencies:
+ mimic-response: "npm:^3.1.0"
+ checksum: 10/d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812
+ languageName: node
+ linkType: hard
+
"dedent@npm:1.5.3, dedent@npm:^1.0.0, dedent@npm:^1.5.1":
version: 1.5.3
resolution: "dedent@npm:1.5.3"
@@ -8863,6 +8832,13 @@ __metadata:
languageName: node
linkType: hard
+"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.2":
+ version: 2.0.3
+ resolution: "detect-libc@npm:2.0.3"
+ checksum: 10/b4ea018d623e077bd395f168a9e81db77370dde36a5b01d067f2ad7989924a81d31cb547ff764acb2aa25d50bb7fdde0b0a93bec02212b0cb430621623246d39
+ languageName: node
+ linkType: hard
+
"detect-newline@npm:^3.0.0":
version: 3.1.0
resolution: "detect-newline@npm:3.1.0"
@@ -9896,15 +9872,6 @@ __metadata:
languageName: node
linkType: hard
-"estree-walker@npm:^3.0.3":
- version: 3.0.3
- resolution: "estree-walker@npm:3.0.3"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- checksum: 10/a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af
- languageName: node
- linkType: hard
-
"esutils@npm:^2.0.2":
version: 2.0.3
resolution: "esutils@npm:2.0.3"
@@ -9996,6 +9963,13 @@ __metadata:
languageName: node
linkType: hard
+"expand-template@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "expand-template@npm:2.0.3"
+ checksum: 10/588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099
+ languageName: node
+ linkType: hard
+
"expect@npm:^29.0.0, expect@npm:^29.7.0":
version: 29.7.0
resolution: "expect@npm:29.7.0"
@@ -10051,22 +10025,22 @@ __metadata:
"@react-native-community/datetimepicker": "npm:8.2.0"
"@react-native-community/slider": "npm:4.5.5"
"@react-native/babel-preset": "npm:^0.74.0"
- "@storybook/addon-essentials": "npm:^8.6.6"
- "@storybook/addon-interactions": "npm:^8.6.6"
- "@storybook/addon-links": "npm:^8.6.6"
- "@storybook/addon-ondevice-actions": "npm:^8.6.2"
- "@storybook/addon-ondevice-backgrounds": "npm:^8.6.2"
- "@storybook/addon-ondevice-controls": "npm:^8.6.2"
- "@storybook/addon-ondevice-notes": "npm:^8.6.2"
+ "@storybook/addon-essentials": "npm:9.0.0-alpha.8"
+ "@storybook/addon-interactions": "npm:9.0.0-alpha.8"
+ "@storybook/addon-links": "npm:9.0.0-alpha.8"
+ "@storybook/addon-ondevice-actions": "npm:^9.0.0-alpha.8"
+ "@storybook/addon-ondevice-backgrounds": "npm:^9.0.0-alpha.8"
+ "@storybook/addon-ondevice-controls": "npm:^9.0.0-alpha.8"
+ "@storybook/addon-ondevice-notes": "npm:^9.0.0-alpha.8"
"@storybook/addon-react-native-server": "npm:0.0.6"
- "@storybook/blocks": "npm:^8.6.6"
+ "@storybook/blocks": "npm:9.0.0-alpha.8"
"@storybook/global": "npm:^5.0.0"
- "@storybook/react": "npm:^8.6.6"
- "@storybook/react-native": "npm:^8.6.2"
- "@storybook/react-native-theming": "npm:^8.6.2"
- "@storybook/react-native-web-vite": "npm:^8.6.6"
- "@storybook/test": "npm:^8.6.6"
+ "@storybook/react": "npm:9.0.0-alpha.8"
+ "@storybook/react-native": "npm:^9.0.0-alpha.8"
+ "@storybook/react-native-theming": "npm:^9.0.0-alpha.8"
+ "@storybook/react-native-web-vite": "npm:9.0.0-alpha.8"
"@testing-library/react-native": "npm:12.4.3"
+ "@types/looks-same": "npm:^4.1.0"
"@types/react": "npm:~18.3.12"
"@types/react-test-renderer": "npm:^18.3.0"
"@types/ws": "npm:^8.5.10"
@@ -10076,6 +10050,7 @@ __metadata:
history: "npm:^5.3.0"
jest: "npm:^29.7.0"
jest-expo: "npm:~52.0.6"
+ looks-same: "npm:^9.0.1"
querystring: "npm:^0.2.1"
react: "npm:18.3.1"
react-dom: "npm:18.3.1"
@@ -10086,7 +10061,7 @@ __metadata:
react-native-svg: "npm:15.8.0"
react-native-web: "npm:~0.19.13"
react-router: "npm:^6.26.2"
- storybook: "npm:^8.6.6"
+ storybook: "npm:9.0.0-alpha.8"
storybook-addon-deep-controls: "npm:^0.9.2"
typescript: "npm:^5.3.3"
vite: "npm:^6.1.1"
@@ -10235,6 +10210,13 @@ __metadata:
languageName: node
linkType: hard
+"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2":
+ version: 1.3.2
+ resolution: "fast-fifo@npm:1.3.2"
+ checksum: 10/6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275
+ languageName: node
+ linkType: hard
+
"fast-glob@npm:^3.2.5, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2":
version: 3.3.2
resolution: "fast-glob@npm:3.3.2"
@@ -10625,6 +10607,17 @@ __metadata:
languageName: node
linkType: hard
+"fs-extra@npm:^8.1.0, fs-extra@npm:~8.1.0":
+ version: 8.1.0
+ resolution: "fs-extra@npm:8.1.0"
+ dependencies:
+ graceful-fs: "npm:^4.2.0"
+ jsonfile: "npm:^4.0.0"
+ universalify: "npm:^0.1.0"
+ checksum: 10/6fb12449f5349be724a138b4a7b45fe6a317d2972054517f5971959c26fbd17c0e145731a11c7324460262baa33e0a799b183ceace98f7a372c95fbb6f20f5de
+ languageName: node
+ linkType: hard
+
"fs-extra@npm:^9.0.0, fs-extra@npm:^9.1.0":
version: 9.1.0
resolution: "fs-extra@npm:9.1.0"
@@ -10637,17 +10630,6 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:~8.1.0":
- version: 8.1.0
- resolution: "fs-extra@npm:8.1.0"
- dependencies:
- graceful-fs: "npm:^4.2.0"
- jsonfile: "npm:^4.0.0"
- universalify: "npm:^0.1.0"
- checksum: 10/6fb12449f5349be724a138b4a7b45fe6a317d2972054517f5971959c26fbd17c0e145731a11c7324460262baa33e0a799b183ceace98f7a372c95fbb6f20f5de
- languageName: node
- linkType: hard
-
"fs-minipass@npm:^2.0.0":
version: 2.1.0
resolution: "fs-minipass@npm:2.1.0"
@@ -10898,6 +10880,13 @@ __metadata:
languageName: node
linkType: hard
+"github-from-package@npm:0.0.0":
+ version: 0.0.0
+ resolution: "github-from-package@npm:0.0.0"
+ checksum: 10/2a091ba07fbce22205642543b4ea8aaf068397e1433c00ae0f9de36a3607baf5bcc14da97fbb798cfca6393b3c402031fca06d8b491a44206d6efef391c58537
+ languageName: node
+ linkType: hard
+
"glob-parent@npm:6.0.2, glob-parent@npm:^6.0.1":
version: 6.0.2
resolution: "glob-parent@npm:6.0.2"
@@ -11150,13 +11139,6 @@ __metadata:
languageName: node
linkType: hard
-"hermes-estree@npm:0.25.0":
- version: 0.25.0
- resolution: "hermes-estree@npm:0.25.0"
- checksum: 10/970abf15964ac8742071f47302d42c56ed5c6657c01ea5c59dd306f3e39814ba3ee5e860ce59f4b547a7f6ee6360ae5f6643fcae3fd374b32b1fab6dbc72e347
- languageName: node
- linkType: hard
-
"hermes-estree@npm:0.25.1":
version: 0.25.1
resolution: "hermes-estree@npm:0.25.1"
@@ -11191,15 +11173,6 @@ __metadata:
languageName: node
linkType: hard
-"hermes-parser@npm:0.25.0":
- version: 0.25.0
- resolution: "hermes-parser@npm:0.25.0"
- dependencies:
- hermes-estree: "npm:0.25.0"
- checksum: 10/752838dd0758af339dd4e0a36487a4dd12d5e1a7f8629c56446d5dd98010a43095c73fa3236bbd267cd1f3702bcbe58780287ea9f39275cd3c47bc2c2bc68625
- languageName: node
- linkType: hard
-
"hermes-parser@npm:0.25.1":
version: 0.25.1
resolution: "hermes-parser@npm:0.25.1"
@@ -11613,6 +11586,13 @@ __metadata:
languageName: node
linkType: hard
+"is-arrayish@npm:^0.3.1":
+ version: 0.3.2
+ resolution: "is-arrayish@npm:0.3.2"
+ checksum: 10/81a78d518ebd8b834523e25d102684ee0f7e98637136d3bdc93fd09636350fa06f1d8ca997ea28143d4d13cb1b69c0824f082db0ac13e1ab3311c10ffea60ade
+ languageName: node
+ linkType: hard
+
"is-async-function@npm:^2.0.0":
version: 2.0.0
resolution: "is-async-function@npm:2.0.0"
@@ -12711,6 +12691,15 @@ __metadata:
languageName: node
linkType: hard
+"js-graph-algorithms@npm:1.0.18":
+ version: 1.0.18
+ resolution: "js-graph-algorithms@npm:1.0.18"
+ bin:
+ js-graphs: ./src/jsgraphs.js
+ checksum: 10/84914d2dc3caacee043f42cf22e156ea9c4c98ce52588a576e33267433853f744894c4ca4b87085a613d6e197898a4eba6e9de7127e277ca1abeba96cc384b81
+ languageName: node
+ linkType: hard
+
"js-sdsl@npm:^4.1.4":
version: 4.4.2
resolution: "js-sdsl@npm:4.4.2"
@@ -13412,7 +13401,7 @@ __metadata:
languageName: node
linkType: hard
-"lodash@npm:^4.17.19, lodash@npm:^4.17.21":
+"lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.17.3":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
@@ -13438,6 +13427,21 @@ __metadata:
languageName: node
linkType: hard
+"looks-same@npm:*, looks-same@npm:^9.0.1":
+ version: 9.0.1
+ resolution: "looks-same@npm:9.0.1"
+ dependencies:
+ color-diff: "npm:^1.1.0"
+ fs-extra: "npm:^8.1.0"
+ js-graph-algorithms: "npm:1.0.18"
+ lodash: "npm:^4.17.3"
+ nested-error-stacks: "npm:^2.1.0"
+ parse-color: "npm:^1.0.0"
+ sharp: "npm:0.32.6"
+ checksum: 10/52d100926ab5f5696897cddbd8f3deff09294cdfce033a58a1c8e352a8eb9a1e3ca4229f273d9fde59964229eb52e514b3d9f23c474a6f5a5b13c6cd1d728fd2
+ languageName: node
+ linkType: hard
+
"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0":
version: 1.4.0
resolution: "loose-envify@npm:1.4.0"
@@ -13449,7 +13453,7 @@ __metadata:
languageName: node
linkType: hard
-"loupe@npm:^3.1.0, loupe@npm:^3.1.1":
+"loupe@npm:^3.1.0":
version: 3.1.1
resolution: "loupe@npm:3.1.1"
dependencies:
@@ -13458,6 +13462,13 @@ __metadata:
languageName: node
linkType: hard
+"loupe@npm:^3.1.3":
+ version: 3.1.3
+ resolution: "loupe@npm:3.1.3"
+ checksum: 10/9e98c34daf0eba48ccc603595e51f2ae002110982d84879cf78c51de2c632f0c571dfe82ce4210af60c32203d06b443465c269bda925076fe6d9b612cc65c321
+ languageName: node
+ linkType: hard
+
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.2.2":
version: 10.4.3
resolution: "lru-cache@npm:10.4.3"
@@ -13991,6 +14002,13 @@ __metadata:
languageName: node
linkType: hard
+"mimic-response@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "mimic-response@npm:3.1.0"
+ checksum: 10/7e719047612411fe071332a7498cf0448bbe43c485c0d780046c76633a771b223ff49bd00267be122cedebb897037fdb527df72335d0d0f74724604ca70b37ad
+ languageName: node
+ linkType: hard
+
"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1":
version: 1.0.1
resolution: "min-indent@npm:1.0.1"
@@ -14063,7 +14081,7 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
+"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f
@@ -14161,6 +14179,13 @@ __metadata:
languageName: node
linkType: hard
+"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3":
+ version: 0.5.3
+ resolution: "mkdirp-classic@npm:0.5.3"
+ checksum: 10/3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac
+ languageName: node
+ linkType: hard
+
"mkdirp@npm:^0.5.1":
version: 0.5.6
resolution: "mkdirp@npm:0.5.6"
@@ -14249,6 +14274,13 @@ __metadata:
languageName: node
linkType: hard
+"napi-build-utils@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "napi-build-utils@npm:2.0.0"
+ checksum: 10/69adcdb828481737f1ec64440286013f6479d5b264e24d5439ba795f65293d0bb6d962035de07c65fae525ed7d2fcd0baab6891d8e3734ea792fec43918acf83
+ languageName: node
+ linkType: hard
+
"natural-compare-lite@npm:^1.4.0":
version: 1.4.0
resolution: "natural-compare-lite@npm:1.4.0"
@@ -14277,6 +14309,13 @@ __metadata:
languageName: node
linkType: hard
+"nested-error-stacks@npm:^2.1.0":
+ version: 2.1.1
+ resolution: "nested-error-stacks@npm:2.1.1"
+ checksum: 10/5f452fad75db8480b4db584e1602894ff5977f8bf3d2822f7ba5cb7be80e89adf1fffa34dada3347ef313a4288850b4486eb0635b315c32bdfb505577e8880e3
+ languageName: node
+ linkType: hard
+
"nested-error-stacks@npm:~2.0.1":
version: 2.0.1
resolution: "nested-error-stacks@npm:2.0.1"
@@ -14291,6 +14330,15 @@ __metadata:
languageName: node
linkType: hard
+"node-abi@npm:^3.3.0":
+ version: 3.74.0
+ resolution: "node-abi@npm:3.74.0"
+ dependencies:
+ semver: "npm:^7.3.5"
+ checksum: 10/314ba5f773690e12a3d87b967d509e9badf16bf2a8ba7619104794f9594545dd268a42f34817d3c81402bf1dc6308545456e2fa9c0200bb6e648cfb75addbe66
+ languageName: node
+ linkType: hard
+
"node-abort-controller@npm:^3.1.1":
version: 3.1.1
resolution: "node-abort-controller@npm:3.1.1"
@@ -14298,6 +14346,15 @@ __metadata:
languageName: node
linkType: hard
+"node-addon-api@npm:^6.1.0":
+ version: 6.1.0
+ resolution: "node-addon-api@npm:6.1.0"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: 10/8eea1d4d965930a177a0508695beb0d89b4c1d80bf330646a035357a1e8fc31e0d09686e2374996e96e757b947a7ece319f98ede3146683f162597c0bcb4df90
+ languageName: node
+ linkType: hard
+
"node-dir@npm:^0.1.17":
version: 0.1.17
resolution: "node-dir@npm:0.1.17"
@@ -15084,6 +15141,15 @@ __metadata:
languageName: node
linkType: hard
+"parse-color@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "parse-color@npm:1.0.0"
+ dependencies:
+ color-convert: "npm:~0.5.0"
+ checksum: 10/9f988462af30929acbbce135286ce20dc2fb8efe48fd0693ed8bfd7da3a60e2465cffff6d35047fe94fd7863b43159bf41b377a9982939b7c65fdba1e30af24a
+ languageName: node
+ linkType: hard
+
"parse-conflict-json@npm:^3.0.0":
version: 3.0.1
resolution: "parse-conflict-json@npm:3.0.1"
@@ -15449,6 +15515,28 @@ __metadata:
languageName: node
linkType: hard
+"prebuild-install@npm:^7.1.1":
+ version: 7.1.3
+ resolution: "prebuild-install@npm:7.1.3"
+ dependencies:
+ detect-libc: "npm:^2.0.0"
+ expand-template: "npm:^2.0.3"
+ github-from-package: "npm:0.0.0"
+ minimist: "npm:^1.2.3"
+ mkdirp-classic: "npm:^0.5.3"
+ napi-build-utils: "npm:^2.0.0"
+ node-abi: "npm:^3.3.0"
+ pump: "npm:^3.0.0"
+ rc: "npm:^1.2.7"
+ simple-get: "npm:^4.0.0"
+ tar-fs: "npm:^2.0.0"
+ tunnel-agent: "npm:^0.6.0"
+ bin:
+ prebuild-install: bin.js
+ checksum: 10/1b7e4c00d2750b532a4fc2a83ffb0c5fefa1b6f2ad071896ead15eeadc3255f5babd816949991af083cf7429e375ae8c7d1c51f73658559da36f948a020a3a11
+ languageName: node
+ linkType: hard
+
"prelude-ls@npm:^1.2.1":
version: 1.2.1
resolution: "prelude-ls@npm:1.2.1"
@@ -15517,13 +15605,6 @@ __metadata:
languageName: node
linkType: hard
-"process@npm:^0.11.10":
- version: 0.11.10
- resolution: "process@npm:0.11.10"
- checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b
- languageName: node
- linkType: hard
-
"proggy@npm:^2.0.0":
version: 2.0.0
resolution: "proggy@npm:2.0.0"
@@ -15715,7 +15796,7 @@ __metadata:
languageName: node
linkType: hard
-"rc@npm:~1.2.7":
+"rc@npm:^1.2.7, rc@npm:~1.2.7":
version: 1.2.8
resolution: "rc@npm:1.2.8"
dependencies:
@@ -16683,7 +16764,7 @@ __metadata:
languageName: node
linkType: hard
-"safe-buffer@npm:~5.2.0":
+"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451
@@ -16922,6 +17003,23 @@ __metadata:
languageName: node
linkType: hard
+"sharp@npm:0.32.6":
+ version: 0.32.6
+ resolution: "sharp@npm:0.32.6"
+ dependencies:
+ color: "npm:^4.2.3"
+ detect-libc: "npm:^2.0.2"
+ node-addon-api: "npm:^6.1.0"
+ node-gyp: "npm:latest"
+ prebuild-install: "npm:^7.1.1"
+ semver: "npm:^7.5.4"
+ simple-get: "npm:^4.0.1"
+ tar-fs: "npm:^3.0.4"
+ tunnel-agent: "npm:^0.6.0"
+ checksum: 10/f0e4a86881e590f86b05ea463229f62cd29afc2dca08b3f597889f872f118c2c456f382bf2c3e90e934b7a1d30f109cf5ed584cf5a23e79d6b6403a8dc0ebe32
+ languageName: node
+ linkType: hard
+
"shebang-command@npm:^1.2.0":
version: 1.2.0
resolution: "shebang-command@npm:1.2.0"
@@ -17072,6 +17170,24 @@ __metadata:
languageName: node
linkType: hard
+"simple-concat@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "simple-concat@npm:1.0.1"
+ checksum: 10/4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a
+ languageName: node
+ linkType: hard
+
+"simple-get@npm:^4.0.0, simple-get@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "simple-get@npm:4.0.1"
+ dependencies:
+ decompress-response: "npm:^6.0.0"
+ once: "npm:^1.3.1"
+ simple-concat: "npm:^1.0.0"
+ checksum: 10/93f1b32319782f78f2f2234e9ce34891b7ab6b990d19d8afefaa44423f5235ce2676aae42d6743fecac6c8dfff4b808d4c24fe5265be813d04769917a9a44f36
+ languageName: node
+ linkType: hard
+
"simple-plist@npm:^1.1.0":
version: 1.4.0
resolution: "simple-plist@npm:1.4.0"
@@ -17083,6 +17199,15 @@ __metadata:
languageName: node
linkType: hard
+"simple-swizzle@npm:^0.2.2":
+ version: 0.2.2
+ resolution: "simple-swizzle@npm:0.2.2"
+ dependencies:
+ is-arrayish: "npm:^0.3.1"
+ checksum: 10/c6dffff17aaa383dae7e5c056fbf10cf9855a9f79949f20ee225c04f06ddde56323600e0f3d6797e82d08d006e93761122527438ee9531620031c08c9e0d73cc
+ languageName: node
+ linkType: hard
+
"sisteransi@npm:^1.0.5":
version: 1.0.5
resolution: "sisteransi@npm:1.0.5"
@@ -17367,21 +17492,34 @@ __metadata:
languageName: node
linkType: hard
-"storybook@npm:^8.6.6":
- version: 8.6.6
- resolution: "storybook@npm:8.6.6"
+"storybook@npm:9.0.0-alpha.8":
+ version: 9.0.0-alpha.8
+ resolution: "storybook@npm:9.0.0-alpha.8"
dependencies:
- "@storybook/core": "npm:8.6.6"
+ "@storybook/global": "npm:^5.0.0"
+ "@testing-library/dom": "npm:10.4.0"
+ "@testing-library/jest-dom": "npm:^6.6.3"
+ "@testing-library/user-event": "npm:^14.6.1"
+ "@types/uuid": "npm:^9.0.1"
+ "@vitest/expect": "npm:3.0.9"
+ "@vitest/spy": "npm:3.0.9"
+ better-opn: "npm:^3.0.2"
+ esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0"
+ esbuild-register: "npm:^3.5.0"
+ jsdoc-type-pratt-parser: "npm:^4.0.0"
+ polished: "npm:^4.2.2"
+ recast: "npm:^0.23.5"
+ semver: "npm:^7.6.2"
+ uuid: "npm:^9.0.0"
+ ws: "npm:^8.18.0"
peerDependencies:
prettier: ^2 || ^3
peerDependenciesMeta:
prettier:
optional: true
bin:
- getstorybook: ./bin/index.cjs
- sb: ./bin/index.cjs
storybook: ./bin/index.cjs
- checksum: 10/be32c971a48189ae26e768009084aa521275de29c626dd6a21e697199bcc47b69a16ff33771a422e33b3f943912fe8142a6e978698f610f0dcc5f63dd372d0ed
+ checksum: 10/bb3e0a6ca1892f82dbc96b498874f1a957d9d0f429e5a071c6d19c382a1ba7a849651d0ac14f353cea8c6fa13c5c64b3f85639edd195be51f24d1a1fe0ed4c04
languageName: node
linkType: hard
@@ -17392,6 +17530,20 @@ __metadata:
languageName: node
linkType: hard
+"streamx@npm:^2.15.0, streamx@npm:^2.21.0":
+ version: 2.22.0
+ resolution: "streamx@npm:2.22.0"
+ dependencies:
+ bare-events: "npm:^2.2.0"
+ fast-fifo: "npm:^1.3.2"
+ text-decoder: "npm:^1.1.0"
+ dependenciesMeta:
+ bare-events:
+ optional: true
+ checksum: 10/9c329bb316e2085e207e471ecd0da18b4ed5b1cfe5cf10e9e7fad3f8f50c6ca1a6a844bdfd9bc7521560b97f229890de82ca162a0e66115300b91a489b1cbefd
+ languageName: node
+ linkType: hard
+
"string-length@npm:^4.0.1":
version: 4.0.2
resolution: "string-length@npm:4.0.2"
@@ -17727,7 +17879,36 @@ __metadata:
languageName: node
linkType: hard
-"tar-stream@npm:~2.2.0":
+"tar-fs@npm:^2.0.0":
+ version: 2.1.2
+ resolution: "tar-fs@npm:2.1.2"
+ dependencies:
+ chownr: "npm:^1.1.1"
+ mkdirp-classic: "npm:^0.5.2"
+ pump: "npm:^3.0.0"
+ tar-stream: "npm:^2.1.4"
+ checksum: 10/623f7e8e58a43578ba7368002c3cc7e321f6d170053ac0691d95172dbc7daf5dcf4347eb061277627340870ce6cfda89f5a5d633cc274c41ae6d69f54a2374e7
+ languageName: node
+ linkType: hard
+
+"tar-fs@npm:^3.0.4":
+ version: 3.0.8
+ resolution: "tar-fs@npm:3.0.8"
+ dependencies:
+ bare-fs: "npm:^4.0.1"
+ bare-path: "npm:^3.0.0"
+ pump: "npm:^3.0.0"
+ tar-stream: "npm:^3.1.5"
+ dependenciesMeta:
+ bare-fs:
+ optional: true
+ bare-path:
+ optional: true
+ checksum: 10/fdcd1c66dc5e2cad5544ffe7eab9a470b419290b22300c344688df51bf06127963da07a1e3ae23cae80851cd9f60149e80b38e56485dd7a14aea701241ac2f81
+ languageName: node
+ linkType: hard
+
+"tar-stream@npm:^2.1.4, tar-stream@npm:~2.2.0":
version: 2.2.0
resolution: "tar-stream@npm:2.2.0"
dependencies:
@@ -17740,6 +17921,17 @@ __metadata:
languageName: node
linkType: hard
+"tar-stream@npm:^3.1.5":
+ version: 3.1.7
+ resolution: "tar-stream@npm:3.1.7"
+ dependencies:
+ b4a: "npm:^1.6.4"
+ fast-fifo: "npm:^1.2.0"
+ streamx: "npm:^2.15.0"
+ checksum: 10/b21a82705a72792544697c410451a4846af1f744176feb0ff11a7c3dd0896961552e3def5e1c9a6bbee4f0ae298b8252a1f4c9381e9f991553b9e4847976f05c
+ languageName: node
+ linkType: hard
+
"tar@npm:6.2.1, tar@npm:^6.1.11, tar@npm:^6.2.1":
version: 6.2.1
resolution: "tar@npm:6.2.1"
@@ -17825,6 +18017,15 @@ __metadata:
languageName: node
linkType: hard
+"text-decoder@npm:^1.1.0":
+ version: 1.2.3
+ resolution: "text-decoder@npm:1.2.3"
+ dependencies:
+ b4a: "npm:^1.6.4"
+ checksum: 10/bcdec33c0f070aeac38e46e4cafdcd567a58473ed308bdf75260bfbd8f7dc76acbc0b13226afaec4a169d0cb44cec2ab89c57b6395ccf02e941eaebbe19e124a
+ languageName: node
+ linkType: hard
+
"text-extensions@npm:^1.0.0":
version: 1.9.0
resolution: "text-extensions@npm:1.9.0"
@@ -17895,14 +18096,14 @@ __metadata:
languageName: node
linkType: hard
-"tinyrainbow@npm:^1.2.0":
- version: 1.2.0
- resolution: "tinyrainbow@npm:1.2.0"
- checksum: 10/2924444db6804355e5ba2b6e586c7f77329d93abdd7257a069a0f4530dff9f16de484e80479094e3f39273462541b003a65ee3a6afc2d12555aa745132deba5d
+"tinyrainbow@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "tinyrainbow@npm:2.0.0"
+ checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5
languageName: node
linkType: hard
-"tinyspy@npm:^3.0.0":
+"tinyspy@npm:^3.0.2":
version: 3.0.2
resolution: "tinyspy@npm:3.0.2"
checksum: 10/5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337
@@ -18126,6 +18327,15 @@ __metadata:
languageName: node
linkType: hard
+"tunnel-agent@npm:^0.6.0":
+ version: 0.6.0
+ resolution: "tunnel-agent@npm:0.6.0"
+ dependencies:
+ safe-buffer: "npm:^5.0.1"
+ checksum: 10/7f0d9ed5c22404072b2ae8edc45c071772affd2ed14a74f03b4e71b4dd1a14c3714d85aed64abcaaee5fec2efc79002ba81155c708f4df65821b444abb0cfade
+ languageName: node
+ linkType: hard
+
"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"
@@ -18497,7 +18707,7 @@ __metadata:
languageName: node
linkType: hard
-"util@npm:^0.12.4, util@npm:^0.12.5":
+"util@npm:^0.12.4":
version: 0.12.5
resolution: "util@npm:0.12.5"
dependencies:
@@ -19092,7 +19302,7 @@ __metadata:
languageName: node
linkType: hard
-"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.16.0, ws@npm:^8.18.0, ws@npm:^8.2.3":
+"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.16.0, ws@npm:^8.18.0":
version: 8.18.0
resolution: "ws@npm:8.18.0"
peerDependencies: