@hanzogui/kitchen-sink 3.0.5

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 (431) hide show
  1. package/.detoxrc.js +130 -0
  2. package/.env.production +2 -0
  3. package/.maestro/config.yaml +4 -0
  4. package/.maestro/flows/shorthand-variables.yaml +23 -0
  5. package/.watchmanconfig +1 -0
  6. package/LICENSE +21 -0
  7. package/README.md +11 -0
  8. package/app.json +43 -0
  9. package/assets/adaptive-icon.png +0 -0
  10. package/assets/favicon.png +0 -0
  11. package/assets/icon.png +0 -0
  12. package/assets/splash.png +0 -0
  13. package/babel.config.js +25 -0
  14. package/e2e/CompilerExtraction.test.ts +147 -0
  15. package/e2e/GroupPressNative.test.ts +167 -0
  16. package/e2e/MediaQueryGtMd.test.ts +71 -0
  17. package/e2e/NativePortal.test.ts +113 -0
  18. package/e2e/PointerEvents.test.ts +116 -0
  19. package/e2e/PressStyleNative.noRngh.test.ts +191 -0
  20. package/e2e/PressStyleNative.test.ts +231 -0
  21. package/e2e/SafeArea.test.ts +57 -0
  22. package/e2e/SelectAndroidOnPress.test.ts +181 -0
  23. package/e2e/SelectRemount.test.ts +137 -0
  24. package/e2e/SheetDragResist.test.ts +370 -0
  25. package/e2e/SheetKeyboardDrag.test.ts +249 -0
  26. package/e2e/SheetScrollableDrag.test.ts +560 -0
  27. package/e2e/ShorthandVariables.test.ts +53 -0
  28. package/e2e/ThemeChangeBasic.test.ts +123 -0
  29. package/e2e/ThemeMutation.test.ts +80 -0
  30. package/e2e/check-rngh-status.test.ts +31 -0
  31. package/e2e/jest.config.js +19 -0
  32. package/e2e/utils/colors.ts +75 -0
  33. package/e2e/utils/navigation.ts +53 -0
  34. package/eas.json +22 -0
  35. package/flows/AlertDialog.yaml +17 -0
  36. package/flows/OpenApp.yaml +25 -0
  37. package/flows/Select.yaml +13 -0
  38. package/flows/Sheet.yaml +12 -0
  39. package/flows/Tabs.yaml +13 -0
  40. package/flows/Toast.yaml +14 -0
  41. package/flows/WarmUp.yaml +24 -0
  42. package/index.html +21 -0
  43. package/index.js +17 -0
  44. package/metro.config.js +64 -0
  45. package/next-router-shim.ts +9 -0
  46. package/package.json +118 -0
  47. package/plans/toast-2.md +471 -0
  48. package/playwright.config.ts +71 -0
  49. package/plugins/expo-modules-core-swift6.js +76 -0
  50. package/pod-install.sh +7 -0
  51. package/public/favicon.svg +70 -0
  52. package/public/fonts/inter.css +15 -0
  53. package/public/fonts/noto-cn.otf +0 -0
  54. package/public/gui-icon.svg +68 -0
  55. package/run-detox.sh +230 -0
  56. package/run-native-tests.sh +4 -0
  57. package/run-tests-parallel.ts +195 -0
  58. package/screenshots/Screenshotter.test.tsx +48 -0
  59. package/src/AnimationDemos.tsx +131 -0
  60. package/src/App.native.tsx +121 -0
  61. package/src/App.tsx +121 -0
  62. package/src/Navigation.tsx +98 -0
  63. package/src/Sandbox.tsx +87 -0
  64. package/src/TestDynamicEval.tsx +33 -0
  65. package/src/TestNativeSheet.tsx +100 -0
  66. package/src/components/TimedRender.tsx +18 -0
  67. package/src/constants/test-ids.ts +52 -0
  68. package/src/features/demos/demo-screen.tsx +72 -0
  69. package/src/features/home/ColorSchemeListItem.tsx +41 -0
  70. package/src/features/home/TestBuildAButton.tsx +102 -0
  71. package/src/features/home/TestSeparator.tsx +0 -0
  72. package/src/features/home/screen.tsx +285 -0
  73. package/src/features/testcases/screen.tsx +59 -0
  74. package/src/features/testcases/test-screen.tsx +50 -0
  75. package/src/generatedV5Theme.ts +112 -0
  76. package/src/gui.config.ts +411 -0
  77. package/src/guy.png +0 -0
  78. package/src/index.tsx +6 -0
  79. package/src/provider/index.tsx +18 -0
  80. package/src/test-gui-stack.tsx +11 -0
  81. package/src/test.tsx +3 -0
  82. package/src/useKitchenSinkTheme.tsx +15 -0
  83. package/src/usecases/ActionsSheetComparison.tsx +194 -0
  84. package/src/usecases/AnimatePresenceEnterExitCase.tsx +255 -0
  85. package/src/usecases/AnimatePresenceExitTest.tsx +69 -0
  86. package/src/usecases/AnimatedByProp.tsx +39 -0
  87. package/src/usecases/AnimationComprehensiveCase.tsx +2515 -0
  88. package/src/usecases/AnimationValueLoggingCase.tsx +526 -0
  89. package/src/usecases/AnimationsWithMediaQueriesCase.tsx +110 -0
  90. package/src/usecases/Benchmark.tsx +148 -0
  91. package/src/usecases/BenchmarkSelect.tsx +34 -0
  92. package/src/usecases/ButtonCircular.tsx +3 -0
  93. package/src/usecases/ButtonCustom.tsx +33 -0
  94. package/src/usecases/ButtonIconColor.tsx +18 -0
  95. package/src/usecases/ButtonInverse.tsx +30 -0
  96. package/src/usecases/ButtonUnstyled.tsx +31 -0
  97. package/src/usecases/CheckboxDisabledOnPress.tsx +62 -0
  98. package/src/usecases/ClickDuringEnterCase.tsx +59 -0
  99. package/src/usecases/CodeExamplesInput.tsx +9 -0
  100. package/src/usecases/ColorTokenFallback.tsx +52 -0
  101. package/src/usecases/CompilerExtraction.tsx +380 -0
  102. package/src/usecases/ComplexVariants.tsx +164 -0
  103. package/src/usecases/CrashAdaptSheet.tsx +98 -0
  104. package/src/usecases/CustomStyledAnimatedPopover.tsx +42 -0
  105. package/src/usecases/CustomStyledAnimatedTooltip.tsx +72 -0
  106. package/src/usecases/DOMNodeAPIs.tsx +154 -0
  107. package/src/usecases/DialogFocusScopeCase.tsx +277 -0
  108. package/src/usecases/DialogFocusScopeDebug.tsx +85 -0
  109. package/src/usecases/DialogNestedCase.tsx +121 -0
  110. package/src/usecases/DialogOpenControlled.tsx +49 -0
  111. package/src/usecases/DialogPointerEventsCase.tsx +58 -0
  112. package/src/usecases/DialogScopedCase.tsx +106 -0
  113. package/src/usecases/DialogSheetAdaptCase.tsx +178 -0
  114. package/src/usecases/DialogSheetAdaptResizeCase.tsx +98 -0
  115. package/src/usecases/DismissLayerStackingCase.tsx +223 -0
  116. package/src/usecases/DriverDisableAnimationPropsCase.tsx +44 -0
  117. package/src/usecases/Example.tsx +10 -0
  118. package/src/usecases/ExitCompletionCase.tsx +713 -0
  119. package/src/usecases/FocusVisibleButton.tsx +14 -0
  120. package/src/usecases/FocusVisibleButtonPointer.tsx +13 -0
  121. package/src/usecases/FocusVisibleButtonWithFocusStyle.tsx +16 -0
  122. package/src/usecases/FocusWithinCase.tsx +55 -0
  123. package/src/usecases/FontTokensInVariants.tsx +14 -0
  124. package/src/usecases/FormButtonTypeCase.tsx +34 -0
  125. package/src/usecases/GlobalScopedTriggerIsolationCase.tsx +178 -0
  126. package/src/usecases/GroupHoverMobile.tsx +39 -0
  127. package/src/usecases/GroupPressInVariant.tsx +92 -0
  128. package/src/usecases/GroupPressNative.tsx +200 -0
  129. package/src/usecases/GroupProp.tsx +96 -0
  130. package/src/usecases/GroupPseudoVariantOverride.tsx +56 -0
  131. package/src/usecases/GroupUseCases.tsx +94 -0
  132. package/src/usecases/HeightMediaQueryOverrideCase.tsx +183 -0
  133. package/src/usecases/InputAutoFocusAfterMenuCase.tsx +105 -0
  134. package/src/usecases/InputAutoFocusStyledCase.tsx +39 -0
  135. package/src/usecases/KeyboardControllerTest.tsx +146 -0
  136. package/src/usecases/ListItem.tsx +123 -0
  137. package/src/usecases/MediaQueriesV5.tsx +137 -0
  138. package/src/usecases/MediaQueryGtMd.tsx +73 -0
  139. package/src/usecases/MenuAboveDialogCase.tsx +75 -0
  140. package/src/usecases/MenuAccessibilityCase.tsx +133 -0
  141. package/src/usecases/MenuAnimatePositionCase.tsx +41 -0
  142. package/src/usecases/MenuArrowAnimatePresenceCase.tsx +98 -0
  143. package/src/usecases/MenuAsChildPositionCase.tsx +24 -0
  144. package/src/usecases/MenuAutoResizeCase.tsx +57 -0
  145. package/src/usecases/MenuBottomCase.tsx +55 -0
  146. package/src/usecases/MenuFocusLeaveCase.tsx +135 -0
  147. package/src/usecases/MenuHighlightCase.tsx +44 -0
  148. package/src/usecases/MenuItemFocusCase.tsx +79 -0
  149. package/src/usecases/MenuItemPseudoOverrideCase.tsx +270 -0
  150. package/src/usecases/MenuMultiTriggerCase.tsx +47 -0
  151. package/src/usecases/MenuOverflowCase.tsx +60 -0
  152. package/src/usecases/MenuSubCase.tsx +223 -0
  153. package/src/usecases/MenuSubLeftCase.tsx +178 -0
  154. package/src/usecases/MenuSubNestedPositionCase.tsx +171 -0
  155. package/src/usecases/MenuSubStyledCase.tsx +145 -0
  156. package/src/usecases/MenuThemeCase.tsx +50 -0
  157. package/src/usecases/MenuUnstyledCase.tsx +52 -0
  158. package/src/usecases/MultiDriverAnimation.tsx +118 -0
  159. package/src/usecases/NativePortalTest.tsx +179 -0
  160. package/src/usecases/NewInputBasic.tsx +16 -0
  161. package/src/usecases/NewInputEvents.tsx +29 -0
  162. package/src/usecases/NonGuiTextStyledType.tsx +23 -0
  163. package/src/usecases/OnLayoutCase.tsx +134 -0
  164. package/src/usecases/OnLayoutScaleCase.tsx +88 -0
  165. package/src/usecases/OnLayoutStressCase.tsx +353 -0
  166. package/src/usecases/OpacityModifierCase.tsx +113 -0
  167. package/src/usecases/OverlayStyled.tsx +66 -0
  168. package/src/usecases/ParagraphSpanFontInheritance.tsx +53 -0
  169. package/src/usecases/PlaceholderTextColor.tsx +20 -0
  170. package/src/usecases/PointerEventsCase.tsx +100 -0
  171. package/src/usecases/PopoverAndMenuMultiTriggerCase.tsx +138 -0
  172. package/src/usecases/PopoverCase.tsx +222 -0
  173. package/src/usecases/PopoverContentStyledPlusAnimations.tsx +44 -0
  174. package/src/usecases/PopoverFocusScopeCase.tsx +171 -0
  175. package/src/usecases/PopoverHoverableCase.tsx +167 -0
  176. package/src/usecases/PopoverHoverableDisableClickCase.tsx +118 -0
  177. package/src/usecases/PopoverHoverableRapidCase.tsx +103 -0
  178. package/src/usecases/PopoverHoverableScopedCase.tsx +135 -0
  179. package/src/usecases/PopoverScopedCase.tsx +76 -0
  180. package/src/usecases/PopoverTriggerIsolationCase.tsx +80 -0
  181. package/src/usecases/PressStyleNative.tsx +143 -0
  182. package/src/usecases/PseudoStyleMerge.tsx +25 -0
  183. package/src/usecases/PseudoTransitionCase.tsx +174 -0
  184. package/src/usecases/RawAnimatedValueCase.tsx +231 -0
  185. package/src/usecases/RemoveScrollCase.tsx +66 -0
  186. package/src/usecases/RenderPropCase.tsx +263 -0
  187. package/src/usecases/SafeAreaCase.tsx +236 -0
  188. package/src/usecases/ScrollViewRefCase.tsx +88 -0
  189. package/src/usecases/SecondPage.tsx +5 -0
  190. package/src/usecases/SelectAndroidOnPress.tsx +129 -0
  191. package/src/usecases/SelectFocusScopeCase.tsx +270 -0
  192. package/src/usecases/SelectRemount.tsx +136 -0
  193. package/src/usecases/Shadows.tsx +5 -0
  194. package/src/usecases/SheetAnimationCase.tsx +155 -0
  195. package/src/usecases/SheetDragCase.tsx +183 -0
  196. package/src/usecases/SheetDragResistCase.tsx +433 -0
  197. package/src/usecases/SheetDragResistCase.web.tsx +359 -0
  198. package/src/usecases/SheetKeyboardDragCase.tsx +328 -0
  199. package/src/usecases/SheetKeyboardFitContentCase.tsx +165 -0
  200. package/src/usecases/SheetOnAnimationCompleteCase.tsx +54 -0
  201. package/src/usecases/SheetScrollLockCase.tsx +166 -0
  202. package/src/usecases/SheetScrollableDrag.tsx +249 -0
  203. package/src/usecases/SheetSnapPointsFitCase.tsx +393 -0
  204. package/src/usecases/ShorthandVariables.tsx +49 -0
  205. package/src/usecases/SlowThemeReRender.tsx +48 -0
  206. package/src/usecases/SpinnerCustomColors.tsx +34 -0
  207. package/src/usecases/StackZIndex.tsx +82 -0
  208. package/src/usecases/StressPage.tsx +301 -0
  209. package/src/usecases/StylePlatform.tsx +30 -0
  210. package/src/usecases/StyleProp.tsx +29 -0
  211. package/src/usecases/StyledAnchor.tsx +27 -0
  212. package/src/usecases/StyledButtonAnimationAuto.tsx +99 -0
  213. package/src/usecases/StyledButtonTheme.tsx +63 -0
  214. package/src/usecases/StyledButtonVariantPseudo.tsx +25 -0
  215. package/src/usecases/StyledButtonVariantPseudoMerge.tsx +77 -0
  216. package/src/usecases/StyledCheckboxTheme.tsx +23 -0
  217. package/src/usecases/StyledContextColor.tsx +246 -0
  218. package/src/usecases/StyledContextTokens.tsx +147 -0
  219. package/src/usecases/StyledHOCNamed.tsx +20 -0
  220. package/src/usecases/StyledHtmlCase.tsx +144 -0
  221. package/src/usecases/StyledIconColor.tsx +19 -0
  222. package/src/usecases/StyledInputFocusStyle.tsx +21 -0
  223. package/src/usecases/StyledInputOnFocus.tsx +30 -0
  224. package/src/usecases/StyledMediaQueryMerge.tsx +95 -0
  225. package/src/usecases/StyledOverridePsuedo.tsx +26 -0
  226. package/src/usecases/StyledRNW.tsx +61 -0
  227. package/src/usecases/StyledStyleableInputOnFocus.tsx +34 -0
  228. package/src/usecases/StyledStyleableInputVariant.tsx +48 -0
  229. package/src/usecases/StyledStyledStyleableInputOnFocus.tsx +36 -0
  230. package/src/usecases/StyledVariantTextColor.tsx +25 -0
  231. package/src/usecases/StyledViewOnFocus.tsx +32 -0
  232. package/src/usecases/TabHoverAnimationCase.tsx +212 -0
  233. package/src/usecases/TextNestedInheritance.tsx +80 -0
  234. package/src/usecases/ThemeChange.tsx +100 -0
  235. package/src/usecases/ThemeChangeBasic.tsx +52 -0
  236. package/src/usecases/ThemeComponentResolution.tsx +119 -0
  237. package/src/usecases/ThemeConditionalName.tsx +31 -0
  238. package/src/usecases/ThemeMediaAnimationCase.tsx +39 -0
  239. package/src/usecases/ThemeMutation.tsx +86 -0
  240. package/src/usecases/ThemeNested.tsx +103 -0
  241. package/src/usecases/ThemeReset.tsx +62 -0
  242. package/src/usecases/ThemeShallowCase.tsx +83 -0
  243. package/src/usecases/ToastCase.tsx +46 -0
  244. package/src/usecases/ToggleGroupActiveProps.tsx +40 -0
  245. package/src/usecases/ToggleGroupXGroupCase.tsx +104 -0
  246. package/src/usecases/TooltipAnimationCase.tsx +99 -0
  247. package/src/usecases/TooltipCase.tsx +32 -0
  248. package/src/usecases/TooltipGlobalPatternCase.tsx +83 -0
  249. package/src/usecases/TooltipGroupCase.tsx +102 -0
  250. package/src/usecases/TooltipMultiTriggerCase.tsx +88 -0
  251. package/src/usecases/TooltipPositionJumpCase.tsx +91 -0
  252. package/src/usecases/TooltipTriggerInlineCase.tsx +60 -0
  253. package/src/usecases/TransformMediaQueryMerge.tsx +98 -0
  254. package/src/usecases/UseCases.tsx +409 -0
  255. package/src/usecases/UseTheme.tsx +41 -0
  256. package/src/usecases/V5ThemeBuilderOutput.tsx +231 -0
  257. package/src/usecases/VariantFontFamily.tsx +25 -0
  258. package/src/usecases/VariantsOrder.tsx +117 -0
  259. package/src/usecases/ZIndex.tsx +155 -0
  260. package/src/usecases/helpers.tsx +44 -0
  261. package/src/usecases/index.native.ts +122 -0
  262. package/src/usecases/index.ts +3 -0
  263. package/src/usecases/index.web.ts +177 -0
  264. package/tests/AnimatePresenceEnterExit.animated.test.tsx +176 -0
  265. package/tests/AnimatedByProp.animated.test.tsx +138 -0
  266. package/tests/AnimationBehavior.animated.test.tsx +543 -0
  267. package/tests/AnimationTiming.animated.test.tsx +195 -0
  268. package/tests/AnimationsWithMediaQueries.animated.test.tsx +154 -0
  269. package/tests/BuildAButton.test.tsx +87 -0
  270. package/tests/ButtonCircular.test.tsx +17 -0
  271. package/tests/ButtonCustom.test.tsx +17 -0
  272. package/tests/ButtonIconColor.test.tsx +23 -0
  273. package/tests/ButtonUnstyled.test.tsx +56 -0
  274. package/tests/ClickDuringEnter.animated.test.tsx +174 -0
  275. package/tests/ColorTokenFallback.test.tsx +45 -0
  276. package/tests/DOMNodeAPIs.test.tsx +161 -0
  277. package/tests/DialogFocusScope.animated.test.tsx +309 -0
  278. package/tests/DialogNested.test.tsx +128 -0
  279. package/tests/DialogOpenControlled.test.tsx +42 -0
  280. package/tests/DialogPointerEvents.animated.test.tsx +108 -0
  281. package/tests/DialogScoped.test.tsx +137 -0
  282. package/tests/DialogSheetAdapt.test.tsx +68 -0
  283. package/tests/DialogSheetAdaptResize.test.tsx +161 -0
  284. package/tests/DismissLayerStacking.test.tsx +292 -0
  285. package/tests/DriverDisableAnimationProps.animated.test.tsx +157 -0
  286. package/tests/ExitCompletion.animated.test.tsx +425 -0
  287. package/tests/ExitTimingCheck.animated.test.ts +34 -0
  288. package/tests/FocusVisibleButton.test.tsx +41 -0
  289. package/tests/FocusVisibleButtonPointerFocus.test.tsx +23 -0
  290. package/tests/FocusVisibleButtonPointerFocusWithFocusStyle.test.tsx +40 -0
  291. package/tests/FocusWithinStyle.animated.test.tsx +66 -0
  292. package/tests/FocusWithinStyle.test.tsx +60 -0
  293. package/tests/FormButtonType.test.tsx +42 -0
  294. package/tests/GlobalScopedTriggerIsolation.test.tsx +89 -0
  295. package/tests/GroupHoverMobile.test.tsx +52 -0
  296. package/tests/GroupPressInVariant.test.tsx +82 -0
  297. package/tests/GroupProp.test.tsx +30 -0
  298. package/tests/GroupPseudoVariantOverride.test.tsx +57 -0
  299. package/tests/GroupUseCases.test.tsx +111 -0
  300. package/tests/GuiSiteMotion.test.ts +481 -0
  301. package/tests/HeightMediaQueryOverride.test.tsx +112 -0
  302. package/tests/InputAutoFocusAfterMenu.test.tsx +55 -0
  303. package/tests/InputAutoFocusStyled.test.tsx +22 -0
  304. package/tests/ListItem.test.tsx +129 -0
  305. package/tests/MediaQueriesV5.test.tsx +113 -0
  306. package/tests/MediaQueryGtMd.test.tsx +84 -0
  307. package/tests/MenuAboveDialog.test.tsx +108 -0
  308. package/tests/MenuAccessibility.test.tsx +346 -0
  309. package/tests/MenuAnimatePosition.animated.test.tsx +57 -0
  310. package/tests/MenuArrowAnimatePresence.animated.test.tsx +71 -0
  311. package/tests/MenuAsChildPosition.test.tsx +16 -0
  312. package/tests/MenuAutoResize.test.tsx +54 -0
  313. package/tests/MenuFocusLeave.test.tsx +181 -0
  314. package/tests/MenuHighlight.test.tsx +165 -0
  315. package/tests/MenuHoverKeyboardBugs.test.tsx +252 -0
  316. package/tests/MenuItemFocus.test.tsx +59 -0
  317. package/tests/MenuItemPseudoOverride.test.tsx +231 -0
  318. package/tests/MenuMultiTrigger.test.tsx +101 -0
  319. package/tests/MenuOverflow.test.tsx +93 -0
  320. package/tests/MenuStayInFrame.test.tsx +102 -0
  321. package/tests/MenuSubKeyboardFocus.test.tsx +220 -0
  322. package/tests/MenuSubLeftSafePolygon.test.tsx +88 -0
  323. package/tests/MenuSubNestedPosition.test.tsx +48 -0
  324. package/tests/MenuSubSafePolygon.test.tsx +97 -0
  325. package/tests/MenuSubStyled.test.tsx +40 -0
  326. package/tests/MenuTheme.test.tsx +34 -0
  327. package/tests/MenuUnstyled.test.tsx +56 -0
  328. package/tests/MultiDriverAnimation.test.tsx +207 -0
  329. package/tests/NewInputBasic.test.tsx +50 -0
  330. package/tests/NewInputEvents.test.tsx +55 -0
  331. package/tests/OnLayout.test.tsx +163 -0
  332. package/tests/OnLayoutScale.test.tsx +100 -0
  333. package/tests/OnLayoutStress.test.tsx +304 -0
  334. package/tests/ParagraphSpanFontInheritance.test.tsx +73 -0
  335. package/tests/PointerEvents.test.tsx +123 -0
  336. package/tests/Popover.animated.test.tsx +234 -0
  337. package/tests/PopoverAndMenuMultiTrigger.test.tsx +184 -0
  338. package/tests/PopoverAnimatePosition.animated.test.tsx +51 -0
  339. package/tests/PopoverClickDuringEnter.animated.test.tsx +197 -0
  340. package/tests/PopoverFocusScope.test.tsx +242 -0
  341. package/tests/PopoverHoverable.test.tsx +383 -0
  342. package/tests/PopoverHoverableDisableClick.test.tsx +106 -0
  343. package/tests/PopoverHoverableRapid.test.tsx +129 -0
  344. package/tests/PopoverHoverableReposition.test.tsx +111 -0
  345. package/tests/PopoverHoverableScoped.animated.test.tsx +103 -0
  346. package/tests/PopoverHoverableStress.test.tsx +169 -0
  347. package/tests/PopoverInitialPosition.animated.test.tsx +82 -0
  348. package/tests/PopoverMiddlewareSkipRegression.animated.test.tsx +221 -0
  349. package/tests/PopoverScoped.test.tsx +128 -0
  350. package/tests/PopoverScopedPositionGlitch.animated.test.tsx +184 -0
  351. package/tests/PopoverTriggerIsolation.test.tsx +62 -0
  352. package/tests/PseudoTransition.animated.test.tsx +319 -0
  353. package/tests/RawAnimatedValue.test.tsx +147 -0
  354. package/tests/RemoveScroll.test.tsx +223 -0
  355. package/tests/RenderProp.test.tsx +293 -0
  356. package/tests/ScrollViewRef.test.tsx +39 -0
  357. package/tests/SelectClickHold.test.tsx +147 -0
  358. package/tests/SelectFocusScope.test.tsx +176 -0
  359. package/tests/SelectInnerPositioning.test.tsx +82 -0
  360. package/tests/SelectKeyboardNav.test.tsx +173 -0
  361. package/tests/SelectPositioning.test.tsx +56 -0
  362. package/tests/SelectTypeahead.test.tsx +63 -0
  363. package/tests/Shadows.test.tsx +14 -0
  364. package/tests/SheetAnimation.animated.test.tsx +413 -0
  365. package/tests/SheetDrag.animated.test.tsx +223 -0
  366. package/tests/SheetDragResist.animated.test.tsx +393 -0
  367. package/tests/SheetOnAnimationComplete.animated.test.tsx +62 -0
  368. package/tests/SheetScrollLock.animated.test.tsx +287 -0
  369. package/tests/SheetScrollableDrag.animated.test.tsx +1264 -0
  370. package/tests/SheetSnapPointsFit.animated.test.tsx +259 -0
  371. package/tests/ShorthandVariables.test.tsx +44 -0
  372. package/tests/SpinnerCustomColors.test.tsx +67 -0
  373. package/tests/StackZIndex.test.tsx +51 -0
  374. package/tests/StressPagePerf.test.tsx +76 -0
  375. package/tests/StylePlatform.test.tsx +38 -0
  376. package/tests/StyleProp.test.tsx +20 -0
  377. package/tests/StyledAnchor.test.tsx +17 -0
  378. package/tests/StyledButtonTheme.test.tsx +22 -0
  379. package/tests/StyledButtonVariantPseudo.test.tsx +20 -0
  380. package/tests/StyledButtonVariantPseudoMerge.animated.test.tsx +33 -0
  381. package/tests/StyledCheckboxTheme.test.tsx +16 -0
  382. package/tests/StyledContextColor.test.tsx +119 -0
  383. package/tests/StyledContextTokens.test.tsx +56 -0
  384. package/tests/StyledHOCNamed.test.tsx +16 -0
  385. package/tests/StyledHtml.test.tsx +161 -0
  386. package/tests/StyledIconColor.test.tsx +32 -0
  387. package/tests/StyledInputFocusStyle.test.tsx +19 -0
  388. package/tests/StyledInputOnFocus.test.tsx +27 -0
  389. package/tests/StyledMediaQueryMerge.test.tsx +66 -0
  390. package/tests/StyledRNW.test.tsx +17 -0
  391. package/tests/StyledStyleableInputOnFocus.test.tsx +27 -0
  392. package/tests/StyledStyleableInputVariant.test.tsx +22 -0
  393. package/tests/StyledStyledStyleableInputOnFocus.test.tsx +27 -0
  394. package/tests/StyledVariantTextColor.test.tsx +24 -0
  395. package/tests/StyledViewOnFocus.test.tsx +27 -0
  396. package/tests/TabHoverAnimation.animated.test.tsx +468 -0
  397. package/tests/TabHoverPositionSmooth.animated.test.tsx +129 -0
  398. package/tests/TextNestedInheritance.test.tsx +93 -0
  399. package/tests/ThemeChange.test.tsx +70 -0
  400. package/tests/ThemeComponentResolution.test.tsx +82 -0
  401. package/tests/ThemeConditionalName.test.tsx +34 -0
  402. package/tests/ThemeMediaAnimation.test.tsx +65 -0
  403. package/tests/ThemeNested.test.tsx +141 -0
  404. package/tests/ThemeReset.test.tsx +63 -0
  405. package/tests/ThemeShallow.test.tsx +95 -0
  406. package/tests/Toast.test.tsx +106 -0
  407. package/tests/ToggleGroup.test.tsx +61 -0
  408. package/tests/ToggleGroupActiveProps.test.tsx +38 -0
  409. package/tests/ToggleGroupXGroup.test.tsx +172 -0
  410. package/tests/TooltipAnimation.animated.test.tsx +260 -0
  411. package/tests/TooltipEnterInterrupt.animated.test.tsx +76 -0
  412. package/tests/TooltipGlobalPattern.animated.test.tsx +208 -0
  413. package/tests/TooltipGroup.animated.test.tsx +79 -0
  414. package/tests/TooltipMultiTrigger.test.tsx +116 -0
  415. package/tests/TooltipPositionJump.animated.test.tsx +229 -0
  416. package/tests/TooltipPositionJumpNotes.md +219 -0
  417. package/tests/TooltipRapidSwitch.animated.test.tsx +399 -0
  418. package/tests/TooltipTriggerInline.test.tsx +65 -0
  419. package/tests/TransformMediaQueryMerge.test.tsx +104 -0
  420. package/tests/TransitionEnterExit.animated.test.tsx +311 -0
  421. package/tests/UseTheme.test.tsx +16 -0
  422. package/tests/V5ThemeBuilderOutput.test.tsx +164 -0
  423. package/tests/VariantFontFamily.test.tsx +11 -0
  424. package/tests/VariantsOrder.test.tsx +53 -0
  425. package/tests/_debug_position.mjs +52 -0
  426. package/tests/test-utils.ts +106 -0
  427. package/tests/utils.tsx +54 -0
  428. package/tsconfig.json +45 -0
  429. package/vite-env.d.ts +1 -0
  430. package/vite.config.ts +14 -0
  431. package/webpack.config.js +139 -0
@@ -0,0 +1,42 @@
1
+ import { expect, test } from '@playwright/test'
2
+ import { setupPage } from './test-utils'
3
+
4
+ test.beforeEach(async ({ page }) => {
5
+ await setupPage(page, { type: 'useCase', name: 'FormButtonTypeCase' })
6
+ })
7
+
8
+ test('Button renders with type="button" by default', async ({ page }) => {
9
+ const button = page.getByTestId('regular-button')
10
+ await expect(button).toBeVisible()
11
+
12
+ const type = await button.getAttribute('type')
13
+ expect(type).toBe('button')
14
+ })
15
+
16
+ test('Form.Trigger submits the form when clicked', async ({ page }) => {
17
+ const submitButton = page.getByTestId('submit-button')
18
+ const submitStatus = page.getByTestId('submit-status')
19
+
20
+ await expect(submitButton).toBeVisible()
21
+ await expect(submitStatus).toHaveText('not-submitted')
22
+
23
+ await submitButton.click()
24
+
25
+ await expect(submitStatus).toHaveText('submitted')
26
+ })
27
+
28
+ test('pressing Enter in input submits form, not regular button click', async ({
29
+ page,
30
+ }) => {
31
+ const input = page.getByTestId('form-input')
32
+ const submitStatus = page.getByTestId('submit-status')
33
+ const buttonStatus = page.getByTestId('button-status')
34
+
35
+ await input.focus()
36
+ await input.press('Enter')
37
+
38
+ // form should be submitted
39
+ await expect(submitStatus).toHaveText('submitted')
40
+ // regular button should NOT have been clicked
41
+ await expect(buttonStatus).toHaveText('button-not-clicked')
42
+ })
@@ -0,0 +1,89 @@
1
+ import { expect, test } from '@playwright/test'
2
+ import { setupPage } from './test-utils'
3
+
4
+ function parseRenderCount(text: string | null): number {
5
+ const match = text?.match(/(\d+)/)
6
+ if (!match) {
7
+ throw new Error(`Unable to parse render count from: ${text}`)
8
+ }
9
+ return Number(match[1])
10
+ }
11
+
12
+ async function getRenderCount(page: Parameters<typeof setupPage>[0], testId: string) {
13
+ const text = await page.getByTestId(testId).textContent()
14
+ return parseRenderCount(text)
15
+ }
16
+
17
+ test.describe('Global Scoped Trigger Isolation', () => {
18
+ test.beforeEach(async ({ page }) => {
19
+ await setupPage(page, {
20
+ name: 'GlobalScopedTriggerIsolationCase',
21
+ type: 'useCase',
22
+ waitExtra: true,
23
+ })
24
+ })
25
+
26
+ test('memoized shared popover and menu triggers keep unrelated render counts stable', async ({
27
+ page,
28
+ }) => {
29
+ const popInitial = {
30
+ one: await getRenderCount(page, 'global-popover-trigger-1-renders'),
31
+ two: await getRenderCount(page, 'global-popover-trigger-2-renders'),
32
+ three: await getRenderCount(page, 'global-popover-trigger-3-renders'),
33
+ }
34
+
35
+ await page.getByTestId('global-popover-trigger-1').hover()
36
+ await expect(page.getByTestId('global-popover-content')).toBeVisible()
37
+
38
+ const popAfterOpen = {
39
+ one: await getRenderCount(page, 'global-popover-trigger-1-renders'),
40
+ two: await getRenderCount(page, 'global-popover-trigger-2-renders'),
41
+ three: await getRenderCount(page, 'global-popover-trigger-3-renders'),
42
+ }
43
+
44
+ expect
45
+ .soft(popAfterOpen.two, 'popover trigger 2 should stay stable on trigger 1 open')
46
+ .toBe(popInitial.two)
47
+ expect
48
+ .soft(popAfterOpen.three, 'popover trigger 3 should stay stable on trigger 1 open')
49
+ .toBe(popInitial.three)
50
+
51
+ await page.getByTestId('global-popover-trigger-2').hover()
52
+ await expect(page.getByTestId('global-popover-content')).toBeVisible()
53
+
54
+ const popAfterSwitch = {
55
+ one: await getRenderCount(page, 'global-popover-trigger-1-renders'),
56
+ two: await getRenderCount(page, 'global-popover-trigger-2-renders'),
57
+ three: await getRenderCount(page, 'global-popover-trigger-3-renders'),
58
+ }
59
+
60
+ expect
61
+ .soft(
62
+ popAfterSwitch.three,
63
+ 'popover trigger 3 should stay stable while switching 1 -> 2'
64
+ )
65
+ .toBe(popInitial.three)
66
+
67
+ const menuInitial = {
68
+ one: await getRenderCount(page, 'global-menu-trigger-1-renders'),
69
+ two: await getRenderCount(page, 'global-menu-trigger-2-renders'),
70
+ three: await getRenderCount(page, 'global-menu-trigger-3-renders'),
71
+ }
72
+
73
+ await page.getByTestId('global-menu-trigger-1').click()
74
+ await expect(page.getByTestId('global-menu-content')).toBeVisible()
75
+
76
+ const menuAfterOpen = {
77
+ one: await getRenderCount(page, 'global-menu-trigger-1-renders'),
78
+ two: await getRenderCount(page, 'global-menu-trigger-2-renders'),
79
+ three: await getRenderCount(page, 'global-menu-trigger-3-renders'),
80
+ }
81
+
82
+ expect
83
+ .soft(menuAfterOpen.two, 'menu trigger 2 should stay stable on trigger 1 open')
84
+ .toBe(menuInitial.two)
85
+ expect
86
+ .soft(menuAfterOpen.three, 'menu trigger 3 should stay stable on trigger 1 open')
87
+ .toBe(menuInitial.three)
88
+ })
89
+ })
@@ -0,0 +1,52 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ import { setupPage } from './test-utils'
4
+
5
+ // Use mobile viewport with touch support (chromium-based to avoid webkit deps in CI)
6
+ test.use({
7
+ viewport: { width: 390, height: 844 },
8
+ hasTouch: true,
9
+ isMobile: true,
10
+ })
11
+
12
+ test.beforeEach(async ({ page }) => {
13
+ await setupPage(page, { name: 'GroupHoverMobile', type: 'useCase' })
14
+ })
15
+
16
+ test(`group hover styles should not stick after touch on icon`, async ({ page }) => {
17
+ const container = page.locator('#group-hover-container')
18
+ const text = page.locator('#group-hover-text')
19
+
20
+ await expect(container).toBeVisible()
21
+ await expect(text).toBeVisible()
22
+
23
+ const iconSvg = container.locator('svg').first()
24
+ await expect(iconSvg).toBeVisible()
25
+
26
+ // Get initial colors
27
+ const initialTextColor = await text.evaluate((el) => {
28
+ return window.getComputedStyle(el).color
29
+ })
30
+ const initialIconColor = await iconSvg.evaluate((el) => {
31
+ return window.getComputedStyle(el).color
32
+ })
33
+
34
+ // Tap on the container using touchscreen
35
+ const box = await container.boundingBox()
36
+ if (box) {
37
+ await page.touchscreen.tap(box.x + box.width / 2, box.y + box.height / 2)
38
+ }
39
+
40
+ await page.waitForTimeout(300)
41
+
42
+ // After touch release, both should return to initial color
43
+ const afterTouchTextColor = await text.evaluate((el) => {
44
+ return window.getComputedStyle(el).color
45
+ })
46
+ const afterTouchIconColor = await iconSvg.evaluate((el) => {
47
+ return window.getComputedStyle(el).color
48
+ })
49
+
50
+ expect(afterTouchTextColor).toBe(initialTextColor)
51
+ expect(afterTouchIconColor).toBe(initialIconColor)
52
+ })
@@ -0,0 +1,82 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ import { setupPage } from './test-utils'
4
+ import { getStyles, whilePressed } from './utils'
5
+
6
+ // Issue #3613: $group-press not applied when in variant
7
+
8
+ test.beforeEach(async ({ page }) => {
9
+ await setupPage(page, { name: 'GroupPressInVariant', type: 'useCase' })
10
+ })
11
+
12
+ test(`$group-press in variant with unnamed group - initial state`, async ({ page }) => {
13
+ const text = page.locator('#test-variant-primary')
14
+ const styles = await getStyles(text)
15
+ // Should have the variant's base color (blue)
16
+ expect(styles.color).toBe('rgb(0, 0, 255)')
17
+ })
18
+
19
+ test(`$group-press in variant with unnamed group - pressed state`, async ({ page }) => {
20
+ const group = page.locator('#test-unnamed-group')
21
+ const text = page.locator('#test-variant-primary')
22
+
23
+ // Get text styles while the group is pressed
24
+ const textStyles = await whilePressed(
25
+ group,
26
+ async () => {
27
+ return await getStyles(text)
28
+ },
29
+ { delay: 1000 }
30
+ )
31
+
32
+ // The text should turn red when the group is pressed
33
+ expect(textStyles.color).toBe('rgb(255, 0, 0)')
34
+ })
35
+
36
+ test(`$group-press at root level - initial state`, async ({ page }) => {
37
+ const text = page.locator('#test-root-press')
38
+ const styles = await getStyles(text)
39
+ // Should have the root level base color (blue)
40
+ expect(styles.color).toBe('rgb(0, 0, 255)')
41
+ })
42
+
43
+ test(`$group-press at root level - pressed state`, async ({ page }) => {
44
+ const group = page.locator('#test-root-group')
45
+ const text = page.locator('#test-root-press')
46
+
47
+ // Get text styles while the group is pressed
48
+ const textStyles = await whilePressed(
49
+ group,
50
+ async () => {
51
+ return await getStyles(text)
52
+ },
53
+ { delay: 1000 }
54
+ )
55
+
56
+ // The text should turn red when the group is pressed (this should already work)
57
+ expect(textStyles.color).toBe('rgb(255, 0, 0)')
58
+ })
59
+
60
+ test(`$group-press in secondary variant - initial state`, async ({ page }) => {
61
+ const text = page.locator('#test-variant-secondary')
62
+ const styles = await getStyles(text)
63
+ // Should have the secondary variant's base color (green)
64
+ expect(styles.color).toBe('rgb(0, 128, 0)')
65
+ })
66
+
67
+ test(`$group-press in secondary variant - pressed state`, async ({ page }) => {
68
+ const group = page.locator('#test-secondary-group')
69
+ const text = page.locator('#test-variant-secondary')
70
+
71
+ // Get text styles while the group is pressed
72
+ const textStyles = await whilePressed(
73
+ group,
74
+ async () => {
75
+ return await getStyles(text)
76
+ },
77
+ { delay: 1000 }
78
+ )
79
+
80
+ // The text should turn yellow when the group is pressed
81
+ expect(textStyles.color).toBe('rgb(255, 255, 0)')
82
+ })
@@ -0,0 +1,30 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ import { setupPage } from './test-utils'
4
+ import { getStyles } from './utils'
5
+
6
+ test.beforeEach(async ({ page }) => {
7
+ await setupPage(page, { name: 'GroupProp', type: 'useCase' })
8
+ // In some instances the mouses hovers the style breaking the test
9
+ await page.mouse.move(0, 0)
10
+ })
11
+
12
+ test(`group prop - styled()`, async ({ page }) => {
13
+ const styles = await getStyles(page.locator('#styled').first())
14
+ expect(styles.backgroundColor).toBe(`rgb(255, 0, 0)`)
15
+ })
16
+
17
+ test(`group prop - styled() + media unmatched`, async ({ page }) => {
18
+ const styles = await getStyles(page.locator('#styled-media-unmatched').first())
19
+ expect(styles.backgroundColor).toBe(`rgb(255, 0, 0)`)
20
+ })
21
+
22
+ test(`group prop - styled() + media matched`, async ({ page }) => {
23
+ const styles = await getStyles(page.locator('#styled-media-matched').first())
24
+ expect(styles.backgroundColor).toBe(`rgb(0, 255, 0)`)
25
+ })
26
+
27
+ test(`group prop - inline`, async ({ page }) => {
28
+ const styles = await getStyles(page.locator('#inline').first())
29
+ expect(styles.backgroundColor).toBe(`rgb(0, 0, 255)`)
30
+ })
@@ -0,0 +1,57 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ import { setupPage } from './test-utils'
4
+ import { getStyles, whileHovered, whilePressed } from './utils'
5
+
6
+ test.beforeEach(async ({ page }) => {
7
+ await setupPage(page, { name: 'GroupPseudoVariantOverride', type: 'useCase' })
8
+ })
9
+
10
+ test(`base $group-press opacity applies without variant`, async ({ page }) => {
11
+ const group = page.locator('#base-group')
12
+ const overlay = page.locator('#base-overlay')
13
+
14
+ const styles = await whilePressed(group, async () => {
15
+ return await getStyles(overlay)
16
+ })
17
+
18
+ expect(styles.opacity).toBe('0.6')
19
+ expect(styles.backgroundColor).toBe('rgb(0, 0, 255)')
20
+ })
21
+
22
+ test(`base $group-hover opacity applies without variant`, async ({ page }) => {
23
+ const group = page.locator('#base-group')
24
+ const overlay = page.locator('#base-overlay')
25
+
26
+ const styles = await whileHovered(group, async () => {
27
+ return await getStyles(overlay)
28
+ })
29
+
30
+ expect(styles.opacity).toBe('0.4')
31
+ })
32
+
33
+ test(`action variant $group-press opacity overrides base`, async ({ page }) => {
34
+ const group = page.locator('#action-group')
35
+ const overlay = page.locator('#action-overlay')
36
+
37
+ const styles = await whilePressed(group, async () => {
38
+ return await getStyles(overlay)
39
+ })
40
+
41
+ // variant's $group-button-press should override base opacity
42
+ expect(styles.opacity).toBe('1')
43
+ expect(styles.backgroundColor).toBe('rgb(255, 0, 0)')
44
+ })
45
+
46
+ test(`action variant $group-hover opacity overrides base`, async ({ page }) => {
47
+ const group = page.locator('#action-group')
48
+ const overlay = page.locator('#action-overlay')
49
+
50
+ const styles = await whileHovered(group, async () => {
51
+ return await getStyles(overlay)
52
+ })
53
+
54
+ // variant's $group-button-hover should override base opacity
55
+ expect(styles.opacity).toBe('1')
56
+ expect(styles.backgroundColor).toBe('rgb(255, 255, 0)')
57
+ })
@@ -0,0 +1,111 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ import { setupPage } from './test-utils'
4
+
5
+ test.beforeEach(async ({ page }) => {
6
+ await setupPage(page, { name: 'GroupUseCases', type: 'useCase' })
7
+ })
8
+
9
+ test(`composite api passes border radius`, async ({ page }) => {
10
+ const buttons = await page.getByTestId('composite-api-group').locator('button').all()
11
+ const buttonFirstStyles = await buttons[0].evaluate((el) => {
12
+ return window.getComputedStyle(el)
13
+ })
14
+ expect(buttonFirstStyles.borderTopLeftRadius).not.toBe('0px')
15
+ expect(buttonFirstStyles.borderBottomLeftRadius).not.toBe('0px')
16
+ expect(buttonFirstStyles.borderTopRightRadius).toBe('0px')
17
+ expect(buttonFirstStyles.borderBottomRightRadius).toBe('0px')
18
+
19
+ const buttonMidStyles = await buttons[1].evaluate((el) => {
20
+ return window.getComputedStyle(el)
21
+ })
22
+ expect(buttonMidStyles.borderTopLeftRadius).toBe('0px')
23
+ expect(buttonMidStyles.borderBottomLeftRadius).toBe('0px')
24
+ expect(buttonMidStyles.borderTopRightRadius).toBe('0px')
25
+ expect(buttonMidStyles.borderBottomRightRadius).toBe('0px')
26
+
27
+ const buttonLastStyles = await buttons[buttons.length - 1].evaluate((el) => {
28
+ return window.getComputedStyle(el)
29
+ })
30
+ expect(buttonLastStyles.borderTopLeftRadius).toBe('0px')
31
+ expect(buttonLastStyles.borderBottomLeftRadius).toBe('0px')
32
+ expect(buttonLastStyles.borderTopRightRadius).not.toBe('0px')
33
+ expect(buttonLastStyles.borderBottomRightRadius).not.toBe('0px')
34
+ })
35
+
36
+ test(`composite api group item not using Group.Item will break`, async ({ page }) => {
37
+ const brokenButtonStyles = await page
38
+ .getByTestId('composite-api-group')
39
+ .getByTestId('not-using-item')
40
+ .first()
41
+ .evaluate((el) => {
42
+ return window.getComputedStyle(el)
43
+ })
44
+ expect(brokenButtonStyles.borderTopLeftRadius).not.toBe('0px')
45
+ expect(brokenButtonStyles.borderBottomLeftRadius).not.toBe('0px')
46
+ expect(brokenButtonStyles.borderTopRightRadius).not.toBe('0px')
47
+ expect(brokenButtonStyles.borderBottomRightRadius).not.toBe('0px')
48
+ })
49
+
50
+ test(`composite api items work with forcePlacement="first"`, async ({ page }) => {
51
+ const brokenButtonStyles = await page
52
+ .getByTestId('composite-api-group')
53
+ .getByTestId('composite-api-force-placement-first')
54
+ .first()
55
+ .evaluate((el) => {
56
+ return window.getComputedStyle(el)
57
+ })
58
+ expect(brokenButtonStyles.borderTopLeftRadius).not.toBe('0px')
59
+ expect(brokenButtonStyles.borderBottomLeftRadius).not.toBe('0px')
60
+ expect(brokenButtonStyles.borderTopRightRadius).toBe('0px')
61
+ expect(brokenButtonStyles.borderBottomRightRadius).toBe('0px')
62
+ })
63
+
64
+ test(`composite api items work with forcePlacement="center"`, async ({ page }) => {
65
+ const brokenButtonStyles = await page
66
+ .getByTestId('composite-api-group')
67
+ .getByTestId('composite-api-force-placement-center')
68
+ .first()
69
+ .evaluate((el) => {
70
+ return window.getComputedStyle(el)
71
+ })
72
+ expect(brokenButtonStyles.borderTopLeftRadius).toBe('0px')
73
+ expect(brokenButtonStyles.borderBottomLeftRadius).toBe('0px')
74
+ expect(brokenButtonStyles.borderTopRightRadius).toBe('0px')
75
+ expect(brokenButtonStyles.borderBottomRightRadius).toBe('0px')
76
+ })
77
+
78
+ test(`composite api items work with forcePlacement="last"`, async ({ page }) => {
79
+ const brokenButtonStyles = await page
80
+ .getByTestId('composite-api-group')
81
+ .getByTestId('composite-api-force-placement-last')
82
+ .first()
83
+ .evaluate((el) => {
84
+ return window.getComputedStyle(el)
85
+ })
86
+ expect(brokenButtonStyles.borderTopLeftRadius).toBe('0px')
87
+ expect(brokenButtonStyles.borderBottomLeftRadius).toBe('0px')
88
+ expect(brokenButtonStyles.borderTopRightRadius).not.toBe('0px')
89
+ expect(brokenButtonStyles.borderBottomRightRadius).not.toBe('0px')
90
+ })
91
+
92
+ test(`composite api with disabled, disables the children`, async ({ page }) => {
93
+ const buttons = await page
94
+ .getByTestId('composite-api-disabled-group')
95
+ .locator('button')
96
+ .all()
97
+ const buttonFirst = buttons[0]
98
+ expect(await buttonFirst.isDisabled()).toBe(true)
99
+
100
+ const buttonMid = buttons[1]
101
+ expect(await buttonMid.isDisabled()).toBe(true)
102
+
103
+ const buttonLast = buttons[buttons.length - 1]
104
+ expect(await buttonLast.isDisabled()).toBe(true)
105
+
106
+ const buttonActive = page
107
+ .getByTestId('composite-api-disabled-group')
108
+ .getByTestId('not-disabled')
109
+ .first()
110
+ expect(await buttonActive.isDisabled()).toBe(false)
111
+ })