@mr.dj2u/library-registry 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/THIRD_PARTY_NOTICES.md +90 -0
  4. package/assets/create-expo-app/sdk-56/assets/images/expo-badge-white.png +0 -0
  5. package/assets/create-expo-app/sdk-56/assets/images/expo-badge.png +0 -0
  6. package/assets/create-expo-app/sdk-56/assets/images/expo-logo.png +0 -0
  7. package/assets/create-expo-app/sdk-56/assets/images/logo-glow.png +0 -0
  8. package/assets/create-expo-app/sdk-56/assets/images/react-logo.png +0 -0
  9. package/assets/create-expo-app/sdk-56/assets/images/react-logo@2x.png +0 -0
  10. package/assets/create-expo-app/sdk-56/assets/images/react-logo@3x.png +0 -0
  11. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/explore.png +0 -0
  12. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/explore@2x.png +0 -0
  13. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/explore@3x.png +0 -0
  14. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/home.png +0 -0
  15. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/home@2x.png +0 -0
  16. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/home@3x.png +0 -0
  17. package/assets/create-expo-app/sdk-56/assets/images/tutorial-web.png +0 -0
  18. package/assets/create-expo-app/sdk-56/src/app/_layout.tsx +15 -0
  19. package/assets/create-expo-app/sdk-56/src/app/explore.tsx +180 -0
  20. package/assets/create-expo-app/sdk-56/src/app/index.tsx +98 -0
  21. package/assets/create-expo-app/sdk-56/src/components/animated-icon.module.css +6 -0
  22. package/assets/create-expo-app/sdk-56/src/components/animated-icon.tsx +132 -0
  23. package/assets/create-expo-app/sdk-56/src/components/animated-icon.web.tsx +108 -0
  24. package/assets/create-expo-app/sdk-56/src/components/app-tabs.tsx +32 -0
  25. package/assets/create-expo-app/sdk-56/src/components/app-tabs.web.tsx +115 -0
  26. package/assets/create-expo-app/sdk-56/src/components/external-link.tsx +25 -0
  27. package/assets/create-expo-app/sdk-56/src/components/hint-row.tsx +35 -0
  28. package/assets/create-expo-app/sdk-56/src/components/themed-text.tsx +73 -0
  29. package/assets/create-expo-app/sdk-56/src/components/themed-view.tsx +16 -0
  30. package/assets/create-expo-app/sdk-56/src/components/ui/collapsible.tsx +65 -0
  31. package/assets/create-expo-app/sdk-56/src/components/web-badge.tsx +43 -0
  32. package/assets/create-expo-app/sdk-56/src/constants/theme.ts +65 -0
  33. package/assets/create-expo-app/sdk-56/src/global.css +9 -0
  34. package/assets/create-expo-app/sdk-56/src/hooks/use-color-scheme.ts +1 -0
  35. package/assets/create-expo-app/sdk-56/src/hooks/use-color-scheme.web.ts +21 -0
  36. package/assets/create-expo-app/sdk-56/src/hooks/use-theme.ts +14 -0
  37. package/assets/create-expo-stack/2.21.3/base/components/BackButton.tsx +23 -0
  38. package/assets/create-expo-stack/2.21.3/base/components/Button.tsx +42 -0
  39. package/assets/create-expo-stack/2.21.3/base/components/Container.tsx +14 -0
  40. package/assets/create-expo-stack/2.21.3/base/components/EditScreenInfo.tsx +36 -0
  41. package/assets/create-expo-stack/2.21.3/base/components/HeaderButton.tsx +31 -0
  42. package/assets/create-expo-stack/2.21.3/base/components/ScreenContent.tsx +40 -0
  43. package/assets/create-expo-stack/2.21.3/base/components/TabBarIcon.tsx +15 -0
  44. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/ActivityIndicator.tsx +10 -0
  45. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Avatar.tsx +32 -0
  46. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Button.tsx +141 -0
  47. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/DatePicker/DatePicker.android.tsx +77 -0
  48. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/DatePicker/DatePicker.tsx +23 -0
  49. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/DatePicker/index.ts +1 -0
  50. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/Icon.ios.tsx +55 -0
  51. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/Icon.tsx +58 -0
  52. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/index.ts +16 -0
  53. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/types.ts +19 -0
  54. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Picker.tsx +42 -0
  55. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/ProgressIndicator.tsx +68 -0
  56. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Slider.tsx +28 -0
  57. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Text.tsx +55 -0
  58. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/ThemeToggle.tsx +33 -0
  59. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Toggle.tsx +20 -0
  60. package/assets/create-expo-stack/2.21.3-mrdj.2/src/lib/cn.ts +6 -0
  61. package/assets/create-expo-stack/2.21.3-mrdj.2/src/lib/useColorScheme.tsx +21 -0
  62. package/assets/create-expo-stack/2.21.3-mrdj.2/src/lib/useHeaderSearchBar.tsx +33 -0
  63. package/assets/create-expo-stack/2.21.3-mrdj.2/src/theme/colors.ts +123 -0
  64. package/assets/create-expo-stack/2.21.3-mrdj.2/src/theme/index.ts +32 -0
  65. package/assets/create-expo-stack/2.21.3-mrdj.2/src/theme/with-opacity.ts +155 -0
  66. package/assets/mds/routes/drawer-tabs/data.tsx +1 -0
  67. package/assets/mds/routes/drawer-tabs/index.tsx +1 -0
  68. package/assets/mds/routes/drawer-tabs/nativewindui.tsx +1 -0
  69. package/assets/mds/routes/drawer-tabs/sdk-56.tsx +1 -0
  70. package/assets/mds/routes/drawer-tabs/stylist.tsx +1 -0
  71. package/assets/mds/scripts/stylist-sync-android.mjs +39 -0
  72. package/assets/mds/src/app/exposition/data.tsx +1 -0
  73. package/assets/mds/src/app/exposition/index.tsx +1 -0
  74. package/assets/mds/src/app/exposition/nativewindui.tsx +1 -0
  75. package/assets/mds/src/app/exposition/sdk-56.tsx +1 -0
  76. package/assets/mds/src/app/exposition/stylist-sync+api.ts +241 -0
  77. package/assets/mds/src/app/exposition/stylist.tsx +1 -0
  78. package/assets/mds/src/app/onboarding/account-setup.tsx +1 -0
  79. package/assets/mds/src/app/onboarding/agreement.tsx +1 -0
  80. package/assets/mds/src/app/onboarding/terms.tsx +1 -0
  81. package/assets/mds/src/app/onboarding.tsx +1 -0
  82. package/assets/mds/src/app/settings.tsx +1 -0
  83. package/assets/mds/src/components/exposition/index.ts +8 -0
  84. package/assets/mds/src/components/exposition/notice.tsx +3 -0
  85. package/assets/mds/src/components/exposition/package-card.tsx +76 -0
  86. package/assets/mds/src/components/swmansion/animated-pressable.tsx +54 -0
  87. package/assets/mds/src/components/swmansion/gesture-card.tsx +54 -0
  88. package/assets/mds/src/components/swmansion/keyboard-form.tsx +73 -0
  89. package/assets/mds/src/components/swmansion/screens-card.tsx +40 -0
  90. package/assets/mds/src/components/swmansion/software-mansion-logo.tsx +15 -0
  91. package/assets/mds/src/components/swmansion/svg-mark.tsx +16 -0
  92. package/assets/mds/src/data/mock-app.ts +21 -0
  93. package/assets/mds/src/features/exposition/data-screen.tsx +152 -0
  94. package/assets/mds/src/features/exposition/embedded-fonts.ts +72 -0
  95. package/assets/mds/src/features/exposition/expo-sdk-56-screen.tsx +709 -0
  96. package/assets/mds/src/features/exposition/exposition-screen.tsx +191 -0
  97. package/assets/mds/src/features/exposition/nativewindui-screen.tsx +125 -0
  98. package/assets/mds/src/features/exposition/stylist-screen.tsx +3456 -0
  99. package/assets/mds/src/features/onboarding/account-setup-screen.tsx +54 -0
  100. package/assets/mds/src/features/onboarding/agreement-screen.tsx +6 -0
  101. package/assets/mds/src/features/onboarding/components/legal-document-view.tsx +103 -0
  102. package/assets/mds/src/features/onboarding/legal-documents.ts +80 -0
  103. package/assets/mds/src/features/onboarding/onboarding-screen.tsx +167 -0
  104. package/assets/mds/src/features/onboarding/terms-screen.tsx +6 -0
  105. package/assets/mds/src/features/settings/settings-screen.tsx +57 -0
  106. package/assets/mds/src/services/local-data.native.ts +103 -0
  107. package/assets/mds/src/services/local-data.ts +38 -0
  108. package/assets/mds/src/theme/font-assets.ts +3 -0
  109. package/assets/mds/src/theme/provider.tsx +59 -0
  110. package/assets/mds/src/theme/tokens.ts +180 -0
  111. package/dist/catalog.d.ts +3 -0
  112. package/dist/catalog.d.ts.map +1 -0
  113. package/dist/catalog.js +1110 -0
  114. package/dist/catalog.js.map +1 -0
  115. package/dist/index.d.ts +5 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +4 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/registry.d.ts +7 -0
  120. package/dist/registry.d.ts.map +1 -0
  121. package/dist/registry.js +479 -0
  122. package/dist/registry.js.map +1 -0
  123. package/dist/types.d.ts +169 -0
  124. package/dist/types.d.ts.map +1 -0
  125. package/dist/types.js +2 -0
  126. package/dist/types.js.map +1 -0
  127. package/dist/validation.d.ts +6 -0
  128. package/dist/validation.d.ts.map +1 -0
  129. package/dist/validation.js +209 -0
  130. package/dist/validation.js.map +1 -0
  131. package/package.json +51 -0
@@ -0,0 +1,1110 @@
1
+ const ALL_PLATFORMS = ["android", "ios", "web"];
2
+ const SDK_56 = { expoSdk: { min: 56, max: 56 } };
3
+ const SDK_56_ROUTER = {
4
+ ...SDK_56,
5
+ navigation: ["expo-router"],
6
+ platforms: ALL_PLATFORMS,
7
+ aliases: ["@"],
8
+ };
9
+ const SDK_56_ALIAS = {
10
+ ...SDK_56,
11
+ aliases: ["@"],
12
+ platforms: ALL_PLATFORMS,
13
+ };
14
+ const SDK_56_CEA_ASSETS = {
15
+ ...SDK_56_ALIAS,
16
+ aliases: ["@", "@/assets"],
17
+ };
18
+ const SDK_56_NATIVEWIND_UI = {
19
+ ...SDK_56_ALIAS,
20
+ styling: ["nativewindui"],
21
+ };
22
+ const MDS_SOURCE = {
23
+ name: "mds",
24
+ displayName: "Mr. DJ's Dev Suite",
25
+ version: "0.1.26",
26
+ license: "MIT",
27
+ repository: "https://github.com/DavidJGrimsley/mrdj-dev-suite",
28
+ sourcePath: "packages/cli",
29
+ };
30
+ const CEA_SOURCE = {
31
+ name: "create-expo-app",
32
+ displayName: "Expo create-expo-app default template",
33
+ version: "56.0.4",
34
+ license: "MIT",
35
+ repository: "https://github.com/expo/expo/tree/main/templates/expo-template-default",
36
+ sourcePath: "test-apps/create-expo-app-test1",
37
+ };
38
+ const CES_SOURCE = {
39
+ name: "create-expo-stack",
40
+ displayName: "create-expo-stack",
41
+ version: "2.21.3",
42
+ license: "MIT",
43
+ repository: "https://github.com/roninoss/create-expo-stack",
44
+ sourcePath: "build/templates/base/components",
45
+ };
46
+ const CES_MDS_SOURCE = {
47
+ name: "nativewindui",
48
+ displayName: "NativeWindUI via create-expo-stack",
49
+ version: "2.21.3-mrdj.2",
50
+ license: "MIT",
51
+ repository: "https://github.com/roninoss/create-expo-stack",
52
+ sourcePath: "test-apps/56test-agentic/src/components/nativewindui",
53
+ };
54
+ const SOFTWARE_MANSION_DEMO_SOURCE = {
55
+ name: "swmansion",
56
+ displayName: "Software Mansion package demos",
57
+ version: "0.1.26",
58
+ license: "MIT",
59
+ repository: "https://github.com/DavidJGrimsley/mrdj-dev-suite",
60
+ sourcePath: "packages/cli",
61
+ };
62
+ function defineItem(input) {
63
+ return {
64
+ id: input.id,
65
+ name: input.name,
66
+ description: input.description,
67
+ kind: input.kind,
68
+ source: input.source ?? MDS_SOURCE,
69
+ tags: input.tags ?? [],
70
+ categories: input.categories ?? [],
71
+ delivery: "source-copy",
72
+ compatibility: input.compatibility ?? SDK_56,
73
+ dependencies: input.dependencies ?? [],
74
+ composedItems: input.composedItems ?? [],
75
+ relatedItems: input.relatedItems ?? [],
76
+ variants: input.variants ?? [],
77
+ assets: input.assets ?? [],
78
+ integration: input.integration ??
79
+ {
80
+ summary: "Copy the editable source into the detected project structure.",
81
+ instructions: [],
82
+ },
83
+ ...(input.preview ? { preview: input.preview } : {}),
84
+ };
85
+ }
86
+ function asset(path, destination, role = "source", encoding = "utf8", contentTokens) {
87
+ return {
88
+ path,
89
+ destination,
90
+ role,
91
+ encoding,
92
+ ...(contentTokens ? { contentTokens } : {}),
93
+ };
94
+ }
95
+ function mdsAsset(relativePath, destination, role = "source", contentTokens) {
96
+ return asset(`assets/mds/${relativePath}`, destination, role, "utf8", contentTokens);
97
+ }
98
+ function ceaAsset(relativePath, destination, role = "source", encoding = "utf8") {
99
+ return asset(`assets/create-expo-app/sdk-56/${relativePath}`, destination, role, encoding);
100
+ }
101
+ function cesAsset(relativePath, destination, role = "source") {
102
+ return asset(`assets/create-expo-stack/2.21.3/${relativePath}`, destination, role);
103
+ }
104
+ function nativeWindUiAsset(relativePath, destination) {
105
+ return asset(`assets/create-expo-stack/2.21.3-mrdj.2/${relativePath}`, destination, "source");
106
+ }
107
+ function runtime(name, version, installer = "package-manager") {
108
+ return { name, version, kind: "runtime", installer };
109
+ }
110
+ function development(name, version) {
111
+ return { name, version, kind: "development", installer: "package-manager" };
112
+ }
113
+ function routeVariants(sourcePath, routeName) {
114
+ const tabsRouteName = routeName === "index" ? "exposition" : routeName;
115
+ return [
116
+ {
117
+ id: "stack",
118
+ name: "Stack route",
119
+ compatibility: {
120
+ navigation: ["expo-router"],
121
+ navigationLayout: ["stack"],
122
+ aliases: ["@"],
123
+ },
124
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
125
+ assets: [
126
+ mdsAsset(sourcePath, `{{appDir}}/exposition/${routeName}.tsx`, "route"),
127
+ ],
128
+ },
129
+ {
130
+ id: "tabs",
131
+ name: "Tabs route",
132
+ compatibility: {
133
+ navigation: ["expo-router"],
134
+ navigationLayout: ["tabs"],
135
+ aliases: ["@"],
136
+ },
137
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
138
+ assets: [
139
+ mdsAsset(sourcePath, `{{appDir}}/(tabs)/${tabsRouteName}.tsx`, "route"),
140
+ ],
141
+ },
142
+ {
143
+ id: "drawer-tabs",
144
+ name: "Drawer and tabs route",
145
+ compatibility: {
146
+ navigation: ["expo-router"],
147
+ navigationLayout: ["drawer+tabs"],
148
+ aliases: ["@"],
149
+ },
150
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
151
+ assets: [
152
+ mdsAsset(`routes/drawer-tabs/${routeName}.tsx`, `{{appDir}}/(drawer)/(tabs)/${routeName}.tsx`, "route"),
153
+ ],
154
+ },
155
+ ];
156
+ }
157
+ const mdsItems = [
158
+ defineItem({
159
+ id: "mds/theme-support",
160
+ name: "MDS theme support",
161
+ description: "Typed theme tokens, runtime provider, and generated font asset map.",
162
+ kind: "integration",
163
+ tags: ["theme", "tokens"],
164
+ categories: ["theming", "support"],
165
+ assets: [
166
+ mdsAsset("src/theme/tokens.ts", "src/theme/tokens.ts", "support"),
167
+ mdsAsset("src/theme/provider.tsx", "src/theme/provider.tsx", "support"),
168
+ mdsAsset("src/theme/font-assets.ts", "src/theme/font-assets.ts", "support"),
169
+ ],
170
+ integration: {
171
+ summary: "Install the theme provider near the root of the React tree.",
172
+ instructions: [
173
+ "Wrap application routes in AppThemeProvider before using MDS themed screens.",
174
+ ],
175
+ },
176
+ }),
177
+ defineItem({
178
+ id: "swmansion/animated-pressable",
179
+ name: "Animated pressable",
180
+ description: "A spring-free timing animation example for tactile press feedback.",
181
+ kind: "animation",
182
+ source: SOFTWARE_MANSION_DEMO_SOURCE,
183
+ tags: ["pressable", "reanimated", "eject:shared", "eject:exposition"],
184
+ categories: ["motion", "controls"],
185
+ dependencies: [runtime("react-native-reanimated", "4.3.1", "expo")],
186
+ assets: [
187
+ mdsAsset("src/components/swmansion/animated-pressable.tsx", "{{componentsDir}}/swmansion/animated-pressable.tsx"),
188
+ ],
189
+ }),
190
+ defineItem({
191
+ id: "swmansion/gesture-card",
192
+ name: "Gesture card",
193
+ description: "A draggable card demonstrating Gesture Handler and Reanimated composition.",
194
+ kind: "animation",
195
+ source: SOFTWARE_MANSION_DEMO_SOURCE,
196
+ tags: ["gesture", "reanimated", "eject:shared", "eject:exposition"],
197
+ categories: ["motion", "gestures"],
198
+ dependencies: [
199
+ runtime("react-native-gesture-handler", "~2.31.1", "expo"),
200
+ runtime("react-native-reanimated", "4.3.1", "expo"),
201
+ ],
202
+ assets: [
203
+ mdsAsset("src/components/swmansion/gesture-card.tsx", "{{componentsDir}}/swmansion/gesture-card.tsx"),
204
+ ],
205
+ }),
206
+ defineItem({
207
+ id: "swmansion/keyboard-form",
208
+ name: "Keyboard-aware form",
209
+ description: "A keyboard-aware form with native toolbar behavior and safe platform fallback.",
210
+ kind: "component",
211
+ source: SOFTWARE_MANSION_DEMO_SOURCE,
212
+ tags: ["form", "keyboard", "eject:shared", "eject:exposition"],
213
+ categories: ["forms", "input"],
214
+ dependencies: [
215
+ runtime("react-native-keyboard-controller", "1.21.6", "expo"),
216
+ ],
217
+ assets: [
218
+ mdsAsset("src/components/swmansion/keyboard-form.tsx", "{{componentsDir}}/swmansion/keyboard-form.tsx"),
219
+ ],
220
+ }),
221
+ defineItem({
222
+ id: "swmansion/svg-mark",
223
+ name: "SVG mark",
224
+ description: "A compact reusable SVG mark with no project-specific state.",
225
+ kind: "component",
226
+ source: SOFTWARE_MANSION_DEMO_SOURCE,
227
+ tags: ["svg", "brand", "eject:shared", "eject:exposition"],
228
+ categories: ["graphics"],
229
+ dependencies: [runtime("react-native-svg", "15.15.4", "expo")],
230
+ assets: [
231
+ mdsAsset("src/components/swmansion/svg-mark.tsx", "{{componentsDir}}/swmansion/svg-mark.tsx"),
232
+ ],
233
+ }),
234
+ defineItem({
235
+ id: "swmansion/software-mansion-logo",
236
+ name: "Software Mansion logo",
237
+ description: "The SVG logo used by the generated package exposition.",
238
+ kind: "component",
239
+ source: SOFTWARE_MANSION_DEMO_SOURCE,
240
+ tags: ["svg", "logo", "eject:shared", "eject:exposition"],
241
+ categories: ["graphics", "exposition"],
242
+ dependencies: [runtime("react-native-svg", "15.15.4", "expo")],
243
+ assets: [
244
+ mdsAsset("src/components/swmansion/software-mansion-logo.tsx", "{{componentsDir}}/swmansion/software-mansion-logo.tsx"),
245
+ ],
246
+ }),
247
+ defineItem({
248
+ id: "swmansion/screens-card",
249
+ name: "Screens status card",
250
+ description: "A small React Native Screens capability and status example.",
251
+ kind: "component",
252
+ source: SOFTWARE_MANSION_DEMO_SOURCE,
253
+ tags: ["navigation", "screens", "eject:shared", "eject:exposition"],
254
+ categories: ["exposition", "navigation"],
255
+ dependencies: [runtime("react-native-screens", "4.25.2", "expo")],
256
+ assets: [
257
+ mdsAsset("src/components/swmansion/screens-card.tsx", "{{componentsDir}}/swmansion/screens-card.tsx"),
258
+ ],
259
+ }),
260
+ defineItem({
261
+ id: "mds/package-card",
262
+ name: "Package card",
263
+ description: "A themed card for documenting an included package and its purpose.",
264
+ kind: "component",
265
+ tags: ["card", "package", "eject:shared", "eject:exposition"],
266
+ categories: ["exposition", "content"],
267
+ composedItems: ["mds/theme-support"],
268
+ assets: [
269
+ mdsAsset("src/components/exposition/package-card.tsx", "{{componentsDir}}/exposition/package-card.tsx"),
270
+ ],
271
+ }),
272
+ defineItem({
273
+ id: "mds/exposition-components",
274
+ name: "Exposition component set",
275
+ description: "The complete barrel-exported component set used by MDS exposition screens.",
276
+ kind: "integration",
277
+ tags: ["components", "eject:shared", "eject:exposition"],
278
+ categories: ["exposition", "support"],
279
+ composedItems: [
280
+ "swmansion/animated-pressable",
281
+ "swmansion/gesture-card",
282
+ "swmansion/keyboard-form",
283
+ "swmansion/svg-mark",
284
+ "swmansion/software-mansion-logo",
285
+ "swmansion/screens-card",
286
+ "mds/package-card",
287
+ ],
288
+ assets: [
289
+ mdsAsset("src/components/exposition/notice.tsx", "{{componentsDir}}/exposition/notice.tsx", "support"),
290
+ mdsAsset("src/components/exposition/index.ts", "{{componentsDir}}/exposition/index.ts", "support"),
291
+ ],
292
+ }),
293
+ defineItem({
294
+ id: "mds/onboarding-preview",
295
+ name: "Onboarding preview flow",
296
+ description: "The current MDS legal-consent onboarding preview and explicit handoff to a future real account flow.",
297
+ kind: "flow",
298
+ tags: ["onboarding", "legal", "preview", "eject:onboarding"],
299
+ categories: ["onboarding", "flows"],
300
+ compatibility: SDK_56_ROUTER,
301
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
302
+ relatedItems: ["mds/settings"],
303
+ assets: [
304
+ mdsAsset("src/features/onboarding/onboarding-screen.tsx", "{{featuresDir}}/onboarding/onboarding-screen.tsx"),
305
+ mdsAsset("src/features/onboarding/agreement-screen.tsx", "{{featuresDir}}/onboarding/agreement-screen.tsx"),
306
+ mdsAsset("src/features/onboarding/terms-screen.tsx", "{{featuresDir}}/onboarding/terms-screen.tsx"),
307
+ mdsAsset("src/features/onboarding/account-setup-screen.tsx", "{{featuresDir}}/onboarding/account-setup-screen.tsx"),
308
+ mdsAsset("src/features/onboarding/legal-documents.ts", "{{featuresDir}}/onboarding/legal-documents.ts", "support"),
309
+ mdsAsset("src/features/onboarding/components/legal-document-view.tsx", "{{featuresDir}}/onboarding/components/legal-document-view.tsx", "support"),
310
+ mdsAsset("src/app/onboarding.tsx", "{{appDir}}/onboarding.tsx", "route"),
311
+ mdsAsset("src/app/onboarding/agreement.tsx", "{{appDir}}/onboarding/agreement.tsx", "route"),
312
+ mdsAsset("src/app/onboarding/terms.tsx", "{{appDir}}/onboarding/terms.tsx", "route"),
313
+ mdsAsset("src/app/onboarding/account-setup.tsx", "{{appDir}}/onboarding/account-setup.tsx", "route"),
314
+ ],
315
+ integration: {
316
+ summary: "Add the generated onboarding routes to an Expo Router stack.",
317
+ instructions: [
318
+ "Review and replace every bracketed legal placeholder with counsel before production.",
319
+ "Replace the account-setup handoff with the application’s separately implemented auth flow.",
320
+ ],
321
+ notes: [
322
+ "This item is a preview flow and does not implement authentication.",
323
+ ],
324
+ },
325
+ preview: {
326
+ description: "Legal consent, terms review, and account-flow handoff.",
327
+ },
328
+ }),
329
+ defineItem({
330
+ id: "mds/settings",
331
+ name: "Settings screen",
332
+ description: "The generated MDS settings modal with a keyboard-controller form example.",
333
+ kind: "screen",
334
+ tags: ["settings", "form", "eject:settings"],
335
+ categories: ["settings", "screens"],
336
+ compatibility: { ...SDK_56, platforms: ALL_PLATFORMS },
337
+ variants: [
338
+ {
339
+ id: "expo-router",
340
+ name: "Expo Router route",
341
+ compatibility: { navigation: ["expo-router"], aliases: ["@"] },
342
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
343
+ assets: [
344
+ mdsAsset("src/app/settings.tsx", "{{appDir}}/settings.tsx", "route"),
345
+ ],
346
+ },
347
+ {
348
+ id: "react-navigation",
349
+ name: "React Navigation screen",
350
+ compatibility: { navigation: ["react-navigation"] },
351
+ integration: [
352
+ "Register SettingsScreen in the application-owned React Navigation tree.",
353
+ ],
354
+ },
355
+ ],
356
+ composedItems: ["swmansion/keyboard-form", "mds/theme-support"],
357
+ relatedItems: ["mds/onboarding-preview"],
358
+ assets: [
359
+ mdsAsset("src/features/settings/settings-screen.tsx", "{{featuresDir}}/settings/settings-screen.tsx"),
360
+ ],
361
+ integration: {
362
+ summary: "Register the settings route as a modal in the root Expo Router stack.",
363
+ instructions: [
364
+ "Add a settings route link from an application-owned screen or menu.",
365
+ ],
366
+ },
367
+ }),
368
+ defineItem({
369
+ id: "mds/stylist-sync-support",
370
+ name: "Stylist sync support",
371
+ description: "The local Android sync helper used by the generated Stylist API route.",
372
+ kind: "integration",
373
+ tags: ["stylist", "sync", "developer-tools", "eject:stylist"],
374
+ categories: ["theming", "developer-tools", "support"],
375
+ compatibility: { ...SDK_56, platforms: ALL_PLATFORMS },
376
+ dependencies: [development("@mr.dj2u/cli", "^0.1.26")],
377
+ assets: [
378
+ mdsAsset("scripts/stylist-sync-android.mjs", "scripts/stylist-sync-android.mjs", "support"),
379
+ ],
380
+ integration: {
381
+ summary: "Keep the Stylist sync helper local to the project and install the matching MDS CLI development dependency.",
382
+ instructions: [
383
+ "Do not expose the Stylist sync endpoint in a production deployment.",
384
+ ],
385
+ },
386
+ }),
387
+ defineItem({
388
+ id: "mds/stylist",
389
+ name: "Stylist flow",
390
+ description: "The generated local theme editor, embedded-font list, and protected sync API route.",
391
+ kind: "flow",
392
+ tags: ["stylist", "theme", "eject:stylist"],
393
+ categories: ["theming", "developer-tools"],
394
+ compatibility: SDK_56_ROUTER,
395
+ dependencies: [
396
+ runtime("@react-native-async-storage/async-storage", "2.2.0", "expo"),
397
+ runtime("react-native-safe-area-context", "~5.7.0", "expo"),
398
+ runtime("reanimated-color-picker", "^4.2.0"),
399
+ development("tailwindcss", "^4.2.4"),
400
+ development("@types/node", "^25.9.1"),
401
+ ],
402
+ composedItems: [
403
+ "swmansion/animated-pressable",
404
+ "mds/theme-support",
405
+ "mds/stylist-sync-support",
406
+ ],
407
+ variants: routeVariants("src/app/exposition/stylist.tsx", "stylist"),
408
+ assets: [
409
+ mdsAsset("src/features/exposition/stylist-screen.tsx", "{{featuresDir}}/exposition/stylist-screen.tsx", "source", ["__MDS_APP_NAME__"]),
410
+ mdsAsset("src/features/exposition/embedded-fonts.ts", "{{featuresDir}}/exposition/embedded-fonts.ts", "support"),
411
+ mdsAsset("src/app/exposition/stylist-sync+api.ts", "{{appDir}}/exposition/stylist-sync+api.ts", "route"),
412
+ ],
413
+ integration: {
414
+ summary: "Expose the Stylist route only in local development and keep the sync endpoint local.",
415
+ instructions: [
416
+ "Run Stylist through the MDS development command so its file sync endpoint targets the correct project.",
417
+ "Eject or remove the developer-only route before a production release.",
418
+ ],
419
+ },
420
+ }),
421
+ defineItem({
422
+ id: "mds/data-local",
423
+ name: "Local data example",
424
+ description: "A platform-aware local data boundary backed by Expo SQLite on native.",
425
+ kind: "flow",
426
+ tags: ["data", "sqlite", "adapter", "eject:data"],
427
+ categories: ["data", "exposition"],
428
+ compatibility: { ...SDK_56, platforms: ALL_PLATFORMS },
429
+ dependencies: [runtime("expo-sqlite", "~56.0.4", "expo")],
430
+ composedItems: ["mds/exposition-components", "mds/theme-support"],
431
+ variants: routeVariants("src/app/exposition/data.tsx", "data"),
432
+ assets: [
433
+ mdsAsset("src/features/exposition/data-screen.tsx", "{{featuresDir}}/exposition/data-screen.tsx"),
434
+ mdsAsset("src/data/mock-app.ts", "src/data/mock-app.ts", "support"),
435
+ mdsAsset("src/services/local-data.ts", "src/services/local-data.ts", "support"),
436
+ mdsAsset("src/services/local-data.native.ts", "src/services/local-data.native.ts", "support"),
437
+ ],
438
+ integration: {
439
+ summary: "Use the service boundary from screens instead of importing SQLite directly.",
440
+ instructions: [
441
+ "Replace the fixture app snapshot before treating this example as product data.",
442
+ ],
443
+ },
444
+ }),
445
+ defineItem({
446
+ id: "mds/expo-sdk-56",
447
+ name: "Expo SDK 56 exposition",
448
+ description: "A generated screen demonstrating Expo UI universal controls and SDK 56 capabilities.",
449
+ kind: "screen",
450
+ tags: ["expo", "sdk-56", "expo-ui", "eject:exposition"],
451
+ categories: ["exposition", "sdk"],
452
+ compatibility: { ...SDK_56, platforms: ALL_PLATFORMS },
453
+ dependencies: [
454
+ runtime("@expo/ui", "~56.0.14", "expo"),
455
+ runtime("react-native-svg", "15.15.4", "expo"),
456
+ ],
457
+ composedItems: ["mds/exposition-components", "mds/theme-support"],
458
+ variants: routeVariants("src/app/exposition/sdk-56.tsx", "sdk-56"),
459
+ assets: [
460
+ mdsAsset("src/features/exposition/expo-sdk-56-screen.tsx", "{{featuresDir}}/exposition/expo-sdk-56-screen.tsx"),
461
+ ],
462
+ }),
463
+ defineItem({
464
+ id: "mds/exposition",
465
+ name: "MDS package exposition",
466
+ description: "The complete temporary MDS package exposition, Stylist, local data, and SDK examples.",
467
+ kind: "flow",
468
+ tags: ["exposition", "packages", "eject:exposition"],
469
+ categories: ["developer-tools", "flows"],
470
+ compatibility: SDK_56_ROUTER,
471
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
472
+ composedItems: [
473
+ "mds/exposition-components",
474
+ "mds/stylist",
475
+ "mds/data-local",
476
+ "mds/expo-sdk-56",
477
+ ],
478
+ relatedItems: ["nativewindui/components"],
479
+ variants: routeVariants("src/app/exposition/index.tsx", "index"),
480
+ assets: [
481
+ mdsAsset("src/features/exposition/exposition-screen.tsx", "{{featuresDir}}/exposition/exposition-screen.tsx"),
482
+ ],
483
+ integration: {
484
+ summary: "Install as a temporary learning surface and eject it before production.",
485
+ instructions: [
486
+ "Add links from a development-only home screen.",
487
+ "Run `mds eject exposition` after deciding which examples to retain.",
488
+ ],
489
+ },
490
+ }),
491
+ ];
492
+ const nativeWindUiItems = [
493
+ defineItem({
494
+ id: "nativewindui/support",
495
+ name: "NativeWindUI support",
496
+ description: "Class merging, color-scheme, navigation theme, color, and opacity helpers.",
497
+ kind: "integration",
498
+ source: CES_MDS_SOURCE,
499
+ tags: ["nativewindui", "support"],
500
+ categories: ["styling", "support"],
501
+ compatibility: SDK_56_NATIVEWIND_UI,
502
+ dependencies: [
503
+ runtime("clsx", "^2.1.0"),
504
+ runtime("tailwind-merge", "^2.2.1"),
505
+ runtime("nativewind", "latest"),
506
+ runtime("expo-router", "~56.2.6", "expo"),
507
+ runtime("react-native-screens", "4.25.2", "expo"),
508
+ ],
509
+ assets: [
510
+ nativeWindUiAsset("src/lib/cn.ts", "src/lib/cn.ts"),
511
+ nativeWindUiAsset("src/lib/useColorScheme.tsx", "src/lib/useColorScheme.tsx"),
512
+ nativeWindUiAsset("src/lib/useHeaderSearchBar.tsx", "src/lib/useHeaderSearchBar.tsx"),
513
+ nativeWindUiAsset("src/theme/colors.ts", "src/theme/colors.ts"),
514
+ nativeWindUiAsset("src/theme/with-opacity.ts", "src/theme/with-opacity.ts"),
515
+ nativeWindUiAsset("src/theme/index.ts", "src/theme/index.ts"),
516
+ ],
517
+ }),
518
+ defineItem({
519
+ id: "nativewindui/activity-indicator",
520
+ name: "NativeWindUI activity indicator",
521
+ description: "A theme-aware activity indicator.",
522
+ kind: "component",
523
+ source: CES_MDS_SOURCE,
524
+ tags: ["nativewindui", "loading"],
525
+ categories: ["feedback"],
526
+ compatibility: SDK_56_NATIVEWIND_UI,
527
+ composedItems: ["nativewindui/support"],
528
+ assets: [
529
+ nativeWindUiAsset("src/components/nativewindui/ActivityIndicator.tsx", "{{componentsDir}}/nativewindui/ActivityIndicator.tsx"),
530
+ ],
531
+ }),
532
+ defineItem({
533
+ id: "nativewindui/avatar",
534
+ name: "NativeWindUI avatar",
535
+ description: "Avatar image and fallback primitives with NativeWind class composition.",
536
+ kind: "component",
537
+ source: CES_MDS_SOURCE,
538
+ tags: ["nativewindui", "avatar"],
539
+ categories: ["identity"],
540
+ compatibility: SDK_56_NATIVEWIND_UI,
541
+ dependencies: [runtime("@rn-primitives/avatar", "^1.4.0")],
542
+ composedItems: ["nativewindui/support"],
543
+ assets: [
544
+ nativeWindUiAsset("src/components/nativewindui/Avatar.tsx", "{{componentsDir}}/nativewindui/Avatar.tsx"),
545
+ ],
546
+ }),
547
+ defineItem({
548
+ id: "nativewindui/text",
549
+ name: "NativeWindUI text",
550
+ description: "Variant-driven cross-platform text backed by UITextView.",
551
+ kind: "component",
552
+ source: CES_MDS_SOURCE,
553
+ tags: ["nativewindui", "text", "typography"],
554
+ categories: ["typography"],
555
+ compatibility: SDK_56_NATIVEWIND_UI,
556
+ dependencies: [
557
+ runtime("class-variance-authority", "^0.7.0"),
558
+ runtime("react-native-uitextview", "^1.1.4", "expo"),
559
+ ],
560
+ composedItems: ["nativewindui/support"],
561
+ assets: [
562
+ nativeWindUiAsset("src/components/nativewindui/Text.tsx", "{{componentsDir}}/nativewindui/Text.tsx"),
563
+ ],
564
+ }),
565
+ defineItem({
566
+ id: "nativewindui/button",
567
+ name: "NativeWindUI button",
568
+ description: "A CVA-powered pressable with primary, secondary, destructive, and plain variants.",
569
+ kind: "component",
570
+ source: CES_MDS_SOURCE,
571
+ tags: ["nativewindui", "button", "variants"],
572
+ categories: ["controls"],
573
+ compatibility: SDK_56_NATIVEWIND_UI,
574
+ dependencies: [
575
+ runtime("@rn-primitives/slot", "^1.4.0"),
576
+ runtime("class-variance-authority", "^0.7.0"),
577
+ ],
578
+ composedItems: ["nativewindui/support", "nativewindui/text"],
579
+ assets: [
580
+ nativeWindUiAsset("src/components/nativewindui/Button.tsx", "{{componentsDir}}/nativewindui/Button.tsx"),
581
+ ],
582
+ }),
583
+ defineItem({
584
+ id: "nativewindui/icon",
585
+ name: "NativeWindUI icon",
586
+ description: "Platform-specific SF Symbols and Material icon adapter.",
587
+ kind: "component",
588
+ source: CES_MDS_SOURCE,
589
+ tags: ["nativewindui", "icon"],
590
+ categories: ["graphics", "controls"],
591
+ compatibility: SDK_56_NATIVEWIND_UI,
592
+ dependencies: [
593
+ runtime("@expo/vector-icons", "^15.0.2", "expo"),
594
+ runtime("expo-symbols", "~56.0.5", "expo"),
595
+ runtime("rn-icon-mapper", "^0.0.1"),
596
+ ],
597
+ composedItems: ["nativewindui/support"],
598
+ assets: [
599
+ nativeWindUiAsset("src/components/nativewindui/Icon/Icon.tsx", "{{componentsDir}}/nativewindui/Icon/Icon.tsx"),
600
+ nativeWindUiAsset("src/components/nativewindui/Icon/Icon.ios.tsx", "{{componentsDir}}/nativewindui/Icon/Icon.ios.tsx"),
601
+ nativeWindUiAsset("src/components/nativewindui/Icon/index.ts", "{{componentsDir}}/nativewindui/Icon/index.ts"),
602
+ nativeWindUiAsset("src/components/nativewindui/Icon/types.ts", "{{componentsDir}}/nativewindui/Icon/types.ts"),
603
+ ],
604
+ }),
605
+ defineItem({
606
+ id: "nativewindui/date-picker",
607
+ name: "NativeWindUI date picker",
608
+ description: "Platform-aware date picker with an Android trigger implementation.",
609
+ kind: "component",
610
+ source: CES_MDS_SOURCE,
611
+ tags: ["nativewindui", "date", "picker"],
612
+ categories: ["forms", "input"],
613
+ compatibility: SDK_56_NATIVEWIND_UI,
614
+ dependencies: [
615
+ runtime("@react-native-community/datetimepicker", "9.1.0", "expo"),
616
+ ],
617
+ composedItems: [
618
+ "nativewindui/support",
619
+ "nativewindui/button",
620
+ "nativewindui/text",
621
+ ],
622
+ assets: [
623
+ nativeWindUiAsset("src/components/nativewindui/DatePicker/DatePicker.tsx", "{{componentsDir}}/nativewindui/DatePicker/DatePicker.tsx"),
624
+ nativeWindUiAsset("src/components/nativewindui/DatePicker/DatePicker.android.tsx", "{{componentsDir}}/nativewindui/DatePicker/DatePicker.android.tsx"),
625
+ nativeWindUiAsset("src/components/nativewindui/DatePicker/index.ts", "{{componentsDir}}/nativewindui/DatePicker/index.ts"),
626
+ ],
627
+ }),
628
+ defineItem({
629
+ id: "nativewindui/picker",
630
+ name: "NativeWindUI picker",
631
+ description: "A theme-aware native picker wrapper.",
632
+ kind: "component",
633
+ source: CES_MDS_SOURCE,
634
+ tags: ["nativewindui", "picker"],
635
+ categories: ["forms", "input"],
636
+ compatibility: SDK_56_NATIVEWIND_UI,
637
+ dependencies: [runtime("@react-native-picker/picker", "2.11.4", "expo")],
638
+ composedItems: ["nativewindui/support"],
639
+ assets: [
640
+ nativeWindUiAsset("src/components/nativewindui/Picker.tsx", "{{componentsDir}}/nativewindui/Picker.tsx"),
641
+ ],
642
+ }),
643
+ defineItem({
644
+ id: "nativewindui/progress-indicator",
645
+ name: "NativeWindUI progress indicator",
646
+ description: "An animated horizontal progress indicator.",
647
+ kind: "animation",
648
+ source: CES_MDS_SOURCE,
649
+ tags: ["nativewindui", "progress", "reanimated"],
650
+ categories: ["feedback", "motion"],
651
+ compatibility: SDK_56_NATIVEWIND_UI,
652
+ dependencies: [runtime("react-native-reanimated", "4.3.1", "expo")],
653
+ composedItems: ["nativewindui/support"],
654
+ assets: [
655
+ nativeWindUiAsset("src/components/nativewindui/ProgressIndicator.tsx", "{{componentsDir}}/nativewindui/ProgressIndicator.tsx"),
656
+ ],
657
+ }),
658
+ defineItem({
659
+ id: "nativewindui/slider",
660
+ name: "NativeWindUI slider",
661
+ description: "A themed native slider wrapper.",
662
+ kind: "component",
663
+ source: CES_MDS_SOURCE,
664
+ tags: ["nativewindui", "slider"],
665
+ categories: ["forms", "input"],
666
+ compatibility: SDK_56_NATIVEWIND_UI,
667
+ dependencies: [runtime("@react-native-community/slider", "5.2.0", "expo")],
668
+ composedItems: ["nativewindui/support"],
669
+ assets: [
670
+ nativeWindUiAsset("src/components/nativewindui/Slider.tsx", "{{componentsDir}}/nativewindui/Slider.tsx"),
671
+ ],
672
+ }),
673
+ defineItem({
674
+ id: "nativewindui/toggle",
675
+ name: "NativeWindUI toggle",
676
+ description: "A color-scheme-aware Switch wrapper.",
677
+ kind: "component",
678
+ source: CES_MDS_SOURCE,
679
+ tags: ["nativewindui", "toggle"],
680
+ categories: ["forms", "controls"],
681
+ compatibility: SDK_56_NATIVEWIND_UI,
682
+ composedItems: ["nativewindui/support"],
683
+ assets: [
684
+ nativeWindUiAsset("src/components/nativewindui/Toggle.tsx", "{{componentsDir}}/nativewindui/Toggle.tsx"),
685
+ ],
686
+ }),
687
+ defineItem({
688
+ id: "nativewindui/theme-toggle",
689
+ name: "NativeWindUI theme toggle",
690
+ description: "An animated light and dark theme toggle using the shared icon adapter.",
691
+ kind: "animation",
692
+ source: CES_MDS_SOURCE,
693
+ tags: ["nativewindui", "theme", "toggle", "reanimated"],
694
+ categories: ["theming", "controls", "motion"],
695
+ compatibility: SDK_56_NATIVEWIND_UI,
696
+ dependencies: [runtime("react-native-reanimated", "4.3.1", "expo")],
697
+ composedItems: ["nativewindui/support", "nativewindui/icon"],
698
+ assets: [
699
+ nativeWindUiAsset("src/components/nativewindui/ThemeToggle.tsx", "{{componentsDir}}/nativewindui/ThemeToggle.tsx"),
700
+ ],
701
+ }),
702
+ defineItem({
703
+ id: "nativewindui/components",
704
+ name: "NativeWindUI component set",
705
+ description: "All completed NativeWindUI components emitted by the supported Super Stack fixture.",
706
+ kind: "integration",
707
+ source: CES_MDS_SOURCE,
708
+ tags: ["nativewindui", "components"],
709
+ categories: ["component-library", "styling"],
710
+ compatibility: SDK_56_NATIVEWIND_UI,
711
+ composedItems: [
712
+ "nativewindui/activity-indicator",
713
+ "nativewindui/avatar",
714
+ "nativewindui/button",
715
+ "nativewindui/date-picker",
716
+ "nativewindui/icon",
717
+ "nativewindui/picker",
718
+ "nativewindui/progress-indicator",
719
+ "nativewindui/slider",
720
+ "nativewindui/text",
721
+ "nativewindui/theme-toggle",
722
+ "nativewindui/toggle",
723
+ ],
724
+ relatedItems: ["mds/exposition", "nativewindui/exposition"],
725
+ }),
726
+ defineItem({
727
+ id: "nativewindui/exposition",
728
+ name: "NativeWindUI exposition",
729
+ description: "An interactive screen exercising every completed bundled NativeWindUI primitive.",
730
+ kind: "screen",
731
+ tags: ["nativewindui", "exposition", "eject:exposition"],
732
+ categories: ["exposition", "screens", "component-library"],
733
+ compatibility: {
734
+ ...SDK_56_NATIVEWIND_UI,
735
+ navigation: ["expo-router"],
736
+ },
737
+ composedItems: [
738
+ "nativewindui/components",
739
+ "mds/exposition-components",
740
+ "mds/theme-support",
741
+ ],
742
+ relatedItems: ["mds/exposition"],
743
+ variants: routeVariants("src/app/exposition/nativewindui.tsx", "nativewindui"),
744
+ assets: [
745
+ mdsAsset("src/features/exposition/nativewindui-screen.tsx", "{{featuresDir}}/exposition/nativewindui-screen.tsx"),
746
+ ],
747
+ integration: {
748
+ summary: "Add the development-only exposition route alongside the NativeWindUI component set.",
749
+ instructions: [
750
+ "Remove or eject this demonstration screen before production.",
751
+ ],
752
+ },
753
+ }),
754
+ ];
755
+ const ceaItems = [
756
+ defineItem({
757
+ id: "expo/theme-support",
758
+ name: "Expo starter theme support",
759
+ description: "The SDK 56 starter theme constants, color-scheme hooks, theme hook, and global CSS.",
760
+ kind: "integration",
761
+ source: CEA_SOURCE,
762
+ tags: ["expo", "theme", "starter"],
763
+ categories: ["theming", "support"],
764
+ compatibility: {
765
+ ...SDK_56_ALIAS,
766
+ styling: ["stylesheet"],
767
+ },
768
+ assets: [
769
+ ceaAsset("src/global.css", "src/global.css", "support"),
770
+ ceaAsset("src/constants/theme.ts", "src/constants/theme.ts", "support"),
771
+ ceaAsset("src/hooks/use-color-scheme.ts", "src/hooks/use-color-scheme.ts", "support"),
772
+ ceaAsset("src/hooks/use-color-scheme.web.ts", "src/hooks/use-color-scheme.web.ts", "support"),
773
+ ceaAsset("src/hooks/use-theme.ts", "src/hooks/use-theme.ts", "support"),
774
+ ],
775
+ integration: {
776
+ summary: "Use the generated @ alias and load the global CSS from the theme constants module.",
777
+ instructions: ["Keep the @ alias mapped to the project src directory."],
778
+ },
779
+ }),
780
+ defineItem({
781
+ id: "expo/themed-text",
782
+ name: "Themed text",
783
+ description: "Expo starter text with semantic color and typography variants.",
784
+ kind: "component",
785
+ source: CEA_SOURCE,
786
+ tags: ["expo", "text", "theme"],
787
+ categories: ["typography"],
788
+ compatibility: SDK_56_ALIAS,
789
+ composedItems: ["expo/theme-support"],
790
+ assets: [
791
+ ceaAsset("src/components/themed-text.tsx", "{{componentsDir}}/themed-text.tsx"),
792
+ ],
793
+ }),
794
+ defineItem({
795
+ id: "expo/themed-view",
796
+ name: "Themed view",
797
+ description: "Expo starter view with semantic background variants.",
798
+ kind: "component",
799
+ source: CEA_SOURCE,
800
+ tags: ["expo", "view", "theme"],
801
+ categories: ["layout"],
802
+ compatibility: SDK_56_ALIAS,
803
+ composedItems: ["expo/theme-support"],
804
+ assets: [
805
+ ceaAsset("src/components/themed-view.tsx", "{{componentsDir}}/themed-view.tsx"),
806
+ ],
807
+ }),
808
+ defineItem({
809
+ id: "expo/external-link",
810
+ name: "External link",
811
+ description: "Expo Router link wrapper that opens an in-app browser on native.",
812
+ kind: "component",
813
+ source: CEA_SOURCE,
814
+ tags: ["expo", "link", "browser"],
815
+ categories: ["navigation", "controls"],
816
+ compatibility: { ...SDK_56_ALIAS, navigation: ["expo-router"] },
817
+ dependencies: [
818
+ runtime("expo-router", "~56.2.6", "expo"),
819
+ runtime("expo-web-browser", "~56.0.5", "expo"),
820
+ ],
821
+ assets: [
822
+ ceaAsset("src/components/external-link.tsx", "{{componentsDir}}/external-link.tsx"),
823
+ ],
824
+ }),
825
+ defineItem({
826
+ id: "expo/hint-row",
827
+ name: "Hint row",
828
+ description: "A two-column instructional row from the Expo starter home screen.",
829
+ kind: "component",
830
+ source: CEA_SOURCE,
831
+ tags: ["expo", "hint", "starter"],
832
+ categories: ["content", "layout"],
833
+ compatibility: SDK_56_ALIAS,
834
+ composedItems: ["expo/themed-text", "expo/themed-view"],
835
+ assets: [
836
+ ceaAsset("src/components/hint-row.tsx", "{{componentsDir}}/hint-row.tsx"),
837
+ ],
838
+ }),
839
+ defineItem({
840
+ id: "expo/collapsible",
841
+ name: "Collapsible",
842
+ description: "An animated, themed disclosure component from the Expo explore screen.",
843
+ kind: "animation",
844
+ source: CEA_SOURCE,
845
+ tags: ["expo", "collapsible", "reanimated"],
846
+ categories: ["disclosure", "motion"],
847
+ compatibility: SDK_56_ALIAS,
848
+ dependencies: [
849
+ runtime("expo-symbols", "~56.0.5", "expo"),
850
+ runtime("react-native-reanimated", "4.3.1", "expo"),
851
+ ],
852
+ composedItems: ["expo/themed-text", "expo/themed-view"],
853
+ assets: [
854
+ ceaAsset("src/components/ui/collapsible.tsx", "{{componentsDir}}/ui/collapsible.tsx"),
855
+ ],
856
+ }),
857
+ defineItem({
858
+ id: "expo/animated-icon",
859
+ name: "Animated Expo icon",
860
+ description: "The SDK 56 starter splash overlay and animated Expo icon for native and web.",
861
+ kind: "animation",
862
+ source: CEA_SOURCE,
863
+ tags: ["expo", "icon", "splash", "reanimated"],
864
+ categories: ["motion", "graphics"],
865
+ compatibility: SDK_56_CEA_ASSETS,
866
+ dependencies: [
867
+ runtime("expo-image", "~56.0.9", "expo"),
868
+ runtime("react-native-reanimated", "4.3.1", "expo"),
869
+ runtime("react-native-worklets", "0.8.3", "expo"),
870
+ ],
871
+ assets: [
872
+ ceaAsset("src/components/animated-icon.tsx", "{{componentsDir}}/animated-icon.tsx"),
873
+ ceaAsset("src/components/animated-icon.web.tsx", "{{componentsDir}}/animated-icon.web.tsx"),
874
+ ceaAsset("src/components/animated-icon.module.css", "{{componentsDir}}/animated-icon.module.css", "support"),
875
+ ceaAsset("assets/images/logo-glow.png", "assets/images/logo-glow.png", "static", "binary"),
876
+ ceaAsset("assets/images/expo-logo.png", "assets/images/expo-logo.png", "static", "binary"),
877
+ ],
878
+ }),
879
+ defineItem({
880
+ id: "expo/web-badge",
881
+ name: "Expo web badge",
882
+ description: "A themed Expo version badge for web layouts.",
883
+ kind: "component",
884
+ source: CEA_SOURCE,
885
+ tags: ["expo", "badge", "web"],
886
+ categories: ["feedback", "graphics"],
887
+ compatibility: SDK_56_CEA_ASSETS,
888
+ dependencies: [runtime("expo-image", "~56.0.9", "expo")],
889
+ composedItems: ["expo/themed-text", "expo/themed-view"],
890
+ assets: [
891
+ ceaAsset("src/components/web-badge.tsx", "{{componentsDir}}/web-badge.tsx"),
892
+ ceaAsset("assets/images/expo-badge.png", "assets/images/expo-badge.png", "static", "binary"),
893
+ ceaAsset("assets/images/expo-badge-white.png", "assets/images/expo-badge-white.png", "static", "binary"),
894
+ ],
895
+ }),
896
+ defineItem({
897
+ id: "expo/app-tabs",
898
+ name: "Expo starter app tabs",
899
+ description: "Native Tabs on device and a responsive web tab bar from the SDK 56 starter.",
900
+ kind: "integration",
901
+ source: CEA_SOURCE,
902
+ tags: ["expo", "tabs", "native-tabs", "web"],
903
+ categories: ["navigation"],
904
+ compatibility: {
905
+ ...SDK_56_CEA_ASSETS,
906
+ navigation: ["expo-router"],
907
+ navigationLayout: ["tabs"],
908
+ },
909
+ dependencies: [
910
+ runtime("expo-router", "~56.2.6", "expo"),
911
+ runtime("expo-symbols", "~56.0.5", "expo"),
912
+ ],
913
+ composedItems: [
914
+ "expo/external-link",
915
+ "expo/themed-text",
916
+ "expo/themed-view",
917
+ ],
918
+ assets: [
919
+ ceaAsset("src/components/app-tabs.tsx", "{{componentsDir}}/app-tabs.tsx"),
920
+ ceaAsset("src/components/app-tabs.web.tsx", "{{componentsDir}}/app-tabs.web.tsx"),
921
+ ceaAsset("assets/images/tabIcons/home.png", "assets/images/tabIcons/home.png", "static", "binary"),
922
+ ceaAsset("assets/images/tabIcons/home@2x.png", "assets/images/tabIcons/home@2x.png", "static", "binary"),
923
+ ceaAsset("assets/images/tabIcons/home@3x.png", "assets/images/tabIcons/home@3x.png", "static", "binary"),
924
+ ceaAsset("assets/images/tabIcons/explore.png", "assets/images/tabIcons/explore.png", "static", "binary"),
925
+ ceaAsset("assets/images/tabIcons/explore@2x.png", "assets/images/tabIcons/explore@2x.png", "static", "binary"),
926
+ ceaAsset("assets/images/tabIcons/explore@3x.png", "assets/images/tabIcons/explore@3x.png", "static", "binary"),
927
+ ],
928
+ }),
929
+ defineItem({
930
+ id: "expo/home-screen",
931
+ name: "Expo starter home screen",
932
+ description: "The SDK 56 default welcome screen with device hints and animated branding.",
933
+ kind: "screen",
934
+ source: CEA_SOURCE,
935
+ tags: ["expo", "home", "starter"],
936
+ categories: ["screens", "starter"],
937
+ compatibility: { ...SDK_56_CEA_ASSETS, navigation: ["expo-router"] },
938
+ dependencies: [
939
+ runtime("expo-device", "~56.0.4", "expo"),
940
+ runtime("react-native-safe-area-context", "~5.7.0", "expo"),
941
+ ],
942
+ composedItems: [
943
+ "expo/animated-icon",
944
+ "expo/hint-row",
945
+ "expo/themed-text",
946
+ "expo/themed-view",
947
+ "expo/web-badge",
948
+ ],
949
+ assets: [ceaAsset("src/app/index.tsx", "{{appDir}}/index.tsx", "route")],
950
+ }),
951
+ defineItem({
952
+ id: "expo/explore-screen",
953
+ name: "Expo starter explore screen",
954
+ description: "The SDK 56 default educational screen covering routes, platforms, images, and motion.",
955
+ kind: "screen",
956
+ source: CEA_SOURCE,
957
+ tags: ["expo", "explore", "starter"],
958
+ categories: ["screens", "starter"],
959
+ compatibility: { ...SDK_56_CEA_ASSETS, navigation: ["expo-router"] },
960
+ dependencies: [
961
+ runtime("expo-image", "~56.0.9", "expo"),
962
+ runtime("expo-symbols", "~56.0.5", "expo"),
963
+ runtime("react-native-safe-area-context", "~5.7.0", "expo"),
964
+ ],
965
+ composedItems: [
966
+ "expo/collapsible",
967
+ "expo/external-link",
968
+ "expo/themed-text",
969
+ "expo/themed-view",
970
+ "expo/web-badge",
971
+ ],
972
+ assets: [
973
+ ceaAsset("src/app/explore.tsx", "{{appDir}}/explore.tsx", "route"),
974
+ ceaAsset("assets/images/tutorial-web.png", "assets/images/tutorial-web.png", "static", "binary"),
975
+ ceaAsset("assets/images/react-logo.png", "assets/images/react-logo.png", "static", "binary"),
976
+ ceaAsset("assets/images/react-logo@2x.png", "assets/images/react-logo@2x.png", "static", "binary"),
977
+ ceaAsset("assets/images/react-logo@3x.png", "assets/images/react-logo@3x.png", "static", "binary"),
978
+ ],
979
+ }),
980
+ defineItem({
981
+ id: "expo/default-starter",
982
+ name: "Expo SDK 56 default starter",
983
+ description: "The complete default SDK 56 two-screen Expo Router starter source set.",
984
+ kind: "flow",
985
+ source: CEA_SOURCE,
986
+ tags: ["expo", "starter", "flow"],
987
+ categories: ["starter", "flows"],
988
+ compatibility: {
989
+ ...SDK_56_CEA_ASSETS,
990
+ styling: ["stylesheet"],
991
+ navigation: ["expo-router"],
992
+ navigationLayout: ["tabs"],
993
+ },
994
+ dependencies: [runtime("expo-router", "~56.2.6", "expo")],
995
+ composedItems: ["expo/app-tabs", "expo/home-screen", "expo/explore-screen"],
996
+ assets: [
997
+ ceaAsset("src/app/_layout.tsx", "{{appDir}}/_layout.tsx", "route"),
998
+ ],
999
+ integration: {
1000
+ summary: "Restore the full editable create-expo-app default starter into an empty SDK 56 app.",
1001
+ instructions: [
1002
+ "Use only when replacing an empty or identical route tree; customized route files intentionally conflict.",
1003
+ ],
1004
+ },
1005
+ }),
1006
+ ];
1007
+ const cesBaseItems = [
1008
+ defineItem({
1009
+ id: "ces/button",
1010
+ name: "create-expo-stack button",
1011
+ description: "The base create-expo-stack rounded pressable button.",
1012
+ kind: "component",
1013
+ source: CES_SOURCE,
1014
+ tags: ["create-expo-stack", "button"],
1015
+ categories: ["controls"],
1016
+ compatibility: SDK_56,
1017
+ assets: [
1018
+ cesAsset("base/components/Button.tsx", "{{componentsDir}}/Button.tsx"),
1019
+ ],
1020
+ }),
1021
+ defineItem({
1022
+ id: "ces/container",
1023
+ name: "create-expo-stack container",
1024
+ description: "The base create-expo-stack safe-area screen container.",
1025
+ kind: "component",
1026
+ source: CES_SOURCE,
1027
+ tags: ["create-expo-stack", "container"],
1028
+ categories: ["layout"],
1029
+ compatibility: SDK_56,
1030
+ assets: [
1031
+ cesAsset("base/components/Container.tsx", "{{componentsDir}}/Container.tsx"),
1032
+ ],
1033
+ }),
1034
+ defineItem({
1035
+ id: "ces/edit-screen-info",
1036
+ name: "create-expo-stack edit screen info",
1037
+ description: "The default non-localized starter edit instructions.",
1038
+ kind: "component",
1039
+ source: CES_SOURCE,
1040
+ tags: ["create-expo-stack", "starter", "instructions"],
1041
+ categories: ["content"],
1042
+ compatibility: SDK_56,
1043
+ assets: [
1044
+ cesAsset("base/components/EditScreenInfo.tsx", "{{componentsDir}}/EditScreenInfo.tsx"),
1045
+ ],
1046
+ }),
1047
+ defineItem({
1048
+ id: "ces/screen-content",
1049
+ name: "create-expo-stack screen content",
1050
+ description: "The base starter screen layout composed with edit instructions.",
1051
+ kind: "component",
1052
+ source: CES_SOURCE,
1053
+ tags: ["create-expo-stack", "screen"],
1054
+ categories: ["layout", "starter"],
1055
+ compatibility: SDK_56,
1056
+ composedItems: ["ces/edit-screen-info"],
1057
+ assets: [
1058
+ cesAsset("base/components/ScreenContent.tsx", "{{componentsDir}}/ScreenContent.tsx"),
1059
+ ],
1060
+ }),
1061
+ defineItem({
1062
+ id: "ces/back-button",
1063
+ name: "create-expo-stack back button",
1064
+ description: "A compact Feather-icon back action.",
1065
+ kind: "component",
1066
+ source: CES_SOURCE,
1067
+ tags: ["create-expo-stack", "back", "icon"],
1068
+ categories: ["navigation", "controls"],
1069
+ compatibility: SDK_56,
1070
+ dependencies: [runtime("@expo/vector-icons", "^15.0.2", "expo")],
1071
+ assets: [
1072
+ cesAsset("base/components/BackButton.tsx", "{{componentsDir}}/BackButton.tsx"),
1073
+ ],
1074
+ }),
1075
+ defineItem({
1076
+ id: "ces/header-button",
1077
+ name: "create-expo-stack header button",
1078
+ description: "A pressable header info icon.",
1079
+ kind: "component",
1080
+ source: CES_SOURCE,
1081
+ tags: ["create-expo-stack", "header", "icon"],
1082
+ categories: ["navigation", "controls"],
1083
+ compatibility: SDK_56,
1084
+ dependencies: [runtime("@expo/vector-icons", "^15.0.2", "expo")],
1085
+ assets: [
1086
+ cesAsset("base/components/HeaderButton.tsx", "{{componentsDir}}/HeaderButton.tsx"),
1087
+ ],
1088
+ }),
1089
+ defineItem({
1090
+ id: "ces/tab-bar-icon",
1091
+ name: "create-expo-stack tab bar icon",
1092
+ description: "A typed FontAwesome tab bar icon wrapper.",
1093
+ kind: "component",
1094
+ source: CES_SOURCE,
1095
+ tags: ["create-expo-stack", "tabs", "icon"],
1096
+ categories: ["navigation", "graphics"],
1097
+ compatibility: { ...SDK_56, navigationLayout: ["tabs", "drawer+tabs"] },
1098
+ dependencies: [runtime("@expo/vector-icons", "^15.0.2", "expo")],
1099
+ assets: [
1100
+ cesAsset("base/components/TabBarIcon.tsx", "{{componentsDir}}/TabBarIcon.tsx"),
1101
+ ],
1102
+ }),
1103
+ ];
1104
+ export const libraryCatalog = [
1105
+ ...mdsItems,
1106
+ ...nativeWindUiItems,
1107
+ ...ceaItems,
1108
+ ...cesBaseItems,
1109
+ ];
1110
+ //# sourceMappingURL=catalog.js.map