@faststore/ui 2.0.2-alpha.0 → 2.0.4-alpha.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 (317) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/assets/ShoppingCart.d.ts +2 -2
  3. package/dist/assets/ShoppingCart.js.map +1 -1
  4. package/dist/assets/X.d.ts +2 -2
  5. package/dist/assets/X.js.map +1 -1
  6. package/package.json +30 -37
  7. package/src/assets/ShoppingCart.tsx +50 -0
  8. package/src/assets/X.tsx +38 -0
  9. package/src/base/layout.scss +78 -0
  10. package/src/base/tokens.scss +274 -0
  11. package/src/base/typography.scss +64 -0
  12. package/src/components/atoms/Badge/Badge.stories.mdx +156 -0
  13. package/src/components/atoms/Badge/styles.scss +209 -0
  14. package/src/components/atoms/Button/Button.stories.mdx +110 -0
  15. package/src/components/atoms/Button/styles.scss +316 -0
  16. package/src/components/atoms/Checkbox/styles.scss +155 -0
  17. package/src/{atoms → components/atoms}/Incentive/Incentive.tsx +0 -0
  18. package/src/{atoms → components/atoms}/Incentive/index.tsx +0 -0
  19. package/src/{atoms → components/atoms}/Incentive/stories/Incentive.mdx +0 -0
  20. package/src/{atoms → components/atoms}/Incentive/stories/Incentive.stories.tsx +0 -0
  21. package/src/{atoms → components/atoms}/Incentive/stories/assets/Icons.tsx +0 -0
  22. package/src/{atoms → components/atoms}/Input/Input.tsx +0 -0
  23. package/src/{atoms → components/atoms}/Input/index.ts +0 -0
  24. package/src/{atoms → components/atoms}/Input/stories/Input.mdx +0 -0
  25. package/src/{atoms → components/atoms}/Input/stories/Input.stories.tsx +1 -1
  26. package/src/components/atoms/Label/Label.stories.mdx +65 -0
  27. package/src/{atoms → components/atoms}/Link/Link.tsx +1 -1
  28. package/src/{atoms → components/atoms}/Link/index.tsx +0 -0
  29. package/src/{atoms → components/atoms}/Link/stories/Link.mdx +0 -0
  30. package/src/{atoms → components/atoms}/Link/stories/Link.stories.tsx +0 -0
  31. package/src/{atoms → components/atoms}/List/List.tsx +0 -0
  32. package/src/{atoms → components/atoms}/List/index.ts +0 -0
  33. package/src/{atoms → components/atoms}/List/stories/List.mdx +0 -0
  34. package/src/{atoms → components/atoms}/List/stories/List.stories.tsx +1 -1
  35. package/src/{atoms → components/atoms}/Overlay/Overlay.tsx +0 -0
  36. package/src/{atoms → components/atoms}/Overlay/index.ts +0 -0
  37. package/src/{atoms → components/atoms}/Overlay/stories/Overlay.mdx +0 -0
  38. package/src/{atoms → components/atoms}/Overlay/stories/Overlay.stories.tsx +1 -1
  39. package/src/{atoms → components/atoms}/Popover/Popover.tsx +0 -0
  40. package/src/{atoms → components/atoms}/Popover/index.ts +0 -0
  41. package/src/{atoms → components/atoms}/Popover/stories/Popover.mdx +0 -0
  42. package/src/{atoms → components/atoms}/Popover/stories/Popover.stories.tsx +1 -1
  43. package/src/{atoms → components/atoms}/Price/Price.tsx +0 -0
  44. package/src/{atoms → components/atoms}/Price/index.ts +0 -0
  45. package/src/{atoms → components/atoms}/Price/stories/Price.mdx +0 -0
  46. package/src/{atoms → components/atoms}/Price/stories/Price.stories.tsx +1 -1
  47. package/src/components/atoms/Radio/Radio.stories.mdx +101 -0
  48. package/src/components/atoms/Radio/styles.scss +108 -0
  49. package/src/{atoms → components/atoms}/Select/Select.tsx +0 -0
  50. package/src/{atoms → components/atoms}/Select/index.ts +0 -0
  51. package/src/{atoms → components/atoms}/Select/stories/Select.mdx +0 -0
  52. package/src/{atoms → components/atoms}/Select/stories/Select.stories.tsx +1 -1
  53. package/src/{atoms → components/atoms}/Skeleton/Skeleton.tsx +0 -0
  54. package/src/{atoms → components/atoms}/Skeleton/index.ts +0 -0
  55. package/src/{atoms → components/atoms}/Skeleton/stories/Skeleton.mdx +0 -0
  56. package/src/{atoms → components/atoms}/Skeleton/stories/Skeleton.stories.tsx +0 -0
  57. package/src/{atoms → components/atoms}/Slider/Slider.tsx +0 -0
  58. package/src/{atoms → components/atoms}/Slider/index.ts +0 -0
  59. package/src/{atoms → components/atoms}/Slider/stories/Slider.mdx +0 -0
  60. package/src/{atoms → components/atoms}/Slider/stories/Slider.stories.tsx +1 -1
  61. package/src/{atoms → components/atoms}/Spinner/Spinner.tsx +0 -0
  62. package/src/{atoms → components/atoms}/Spinner/index.tsx +0 -0
  63. package/src/{atoms → components/atoms}/Spinner/stories/Spinner.mdx +0 -0
  64. package/src/{atoms → components/atoms}/Spinner/stories/Spinner.stories.tsx +0 -0
  65. package/src/{atoms → components/atoms}/TextArea/TextArea.tsx +0 -0
  66. package/src/{atoms → components/atoms}/TextArea/index.ts +0 -0
  67. package/src/{atoms → components/atoms}/TextArea/stories/TextArea.mdx +0 -0
  68. package/src/{atoms → components/atoms}/TextArea/stories/TextArea.stories.tsx +1 -1
  69. package/src/{molecules → components/molecules}/Accordion/Accordion.tsx +0 -0
  70. package/src/{molecules → components/molecules}/Accordion/AccordionButton.tsx +4 -4
  71. package/src/{molecules → components/molecules}/Accordion/AccordionItem.tsx +1 -1
  72. package/src/{molecules → components/molecules}/Accordion/AccordionPanel.tsx +0 -0
  73. package/src/{molecules → components/molecules}/Accordion/index.ts +0 -0
  74. package/src/{molecules → components/molecules}/Accordion/stories/Accordion.mdx +0 -0
  75. package/src/{molecules → components/molecules}/Accordion/stories/Accordion.stories.tsx +1 -1
  76. package/src/{molecules → components/molecules}/AggregateRating/AggregateRating.tsx +0 -0
  77. package/src/{molecules → components/molecules}/AggregateRating/index.ts +0 -0
  78. package/src/{molecules → components/molecules}/AggregateRating/stories/AggregateRating.mdx +0 -0
  79. package/src/{molecules → components/molecules}/AggregateRating/stories/AggregateRating.stories.tsx +1 -1
  80. package/src/{molecules → components/molecules}/Alert/Alert.tsx +0 -0
  81. package/src/{molecules → components/molecules}/Alert/index.ts +0 -0
  82. package/src/{molecules → components/molecules}/Alert/stories/Alert.mdx +0 -0
  83. package/src/{molecules → components/molecules}/Alert/stories/Alert.stories.tsx +3 -3
  84. package/src/{molecules → components/molecules}/Banner/Banner.tsx +0 -0
  85. package/src/{molecules → components/molecules}/Banner/BannerContent.tsx +0 -0
  86. package/src/{molecules → components/molecules}/Banner/BannerImage.tsx +0 -0
  87. package/src/{molecules → components/molecules}/Banner/BannerLink.tsx +0 -0
  88. package/src/{molecules → components/molecules}/Banner/index.ts +0 -0
  89. package/src/{molecules → components/molecules}/Banner/stories/Banner.mdx +0 -0
  90. package/src/{molecules → components/molecules}/Banner/stories/Banner.stories.tsx +1 -1
  91. package/src/{molecules → components/molecules}/Breadcrumb/Breadcrumb.tsx +0 -0
  92. package/src/{molecules → components/molecules}/Breadcrumb/index.ts +0 -0
  93. package/src/{molecules → components/molecules}/Breadcrumb/stories/Breadcrumb.mdx +0 -0
  94. package/src/{molecules → components/molecules}/Breadcrumb/stories/Breadcrumb.stories.tsx +1 -1
  95. package/src/{molecules → components/molecules}/Bullets/Bullets.tsx +1 -1
  96. package/src/{molecules → components/molecules}/Bullets/index.ts +0 -0
  97. package/src/{molecules → components/molecules}/Bullets/stories/Bullets.mdx +0 -0
  98. package/src/{molecules → components/molecules}/Bullets/stories/Bullets.stories.tsx +1 -1
  99. package/src/{molecules → components/molecules}/Card/Card.tsx +0 -0
  100. package/src/{molecules → components/molecules}/Card/CardActions.tsx +0 -0
  101. package/src/{molecules → components/molecules}/Card/CardContent.tsx +0 -0
  102. package/src/{molecules → components/molecules}/Card/CardImage.tsx +0 -0
  103. package/src/{molecules → components/molecules}/Card/index.tsx +0 -0
  104. package/src/{molecules → components/molecules}/Card/stories/Card.mdx +0 -0
  105. package/src/{molecules → components/molecules}/Card/stories/Card.stories.tsx +5 -5
  106. package/src/{molecules → components/molecules}/Carousel/Arrows.tsx +0 -0
  107. package/src/{molecules → components/molecules}/Carousel/Carousel.tsx +2 -2
  108. package/src/{molecules → components/molecules}/Carousel/CarouselItem.tsx +1 -1
  109. package/src/{molecules → components/molecules}/Carousel/hooks/useSlideVisibility.ts +0 -0
  110. package/src/{molecules → components/molecules}/Carousel/index.ts +0 -0
  111. package/src/{molecules → components/molecules}/Carousel/stories/Carousel.mdx +0 -0
  112. package/src/{molecules → components/molecules}/Carousel/stories/Carousel.stories.tsx +1 -1
  113. package/src/{molecules → components/molecules}/CartItem/CartItem.tsx +0 -0
  114. package/src/{molecules → components/molecules}/CartItem/CartItemActions.tsx +0 -0
  115. package/src/{molecules → components/molecules}/CartItem/CartItemContent.tsx +0 -0
  116. package/src/{molecules → components/molecules}/CartItem/CartItemImage.tsx +0 -0
  117. package/src/{molecules → components/molecules}/CartItem/CartItemPrices.tsx +0 -0
  118. package/src/{molecules → components/molecules}/CartItem/CartItemSummary.tsx +0 -0
  119. package/src/{molecules → components/molecules}/CartItem/CartItemTitle.tsx +0 -0
  120. package/src/{molecules → components/molecules}/CartItem/index.tsx +0 -0
  121. package/src/{molecules → components/molecules}/CartItem/stories/CartItem.mdx +0 -0
  122. package/src/{molecules → components/molecules}/CartItem/stories/CartItem.stories.tsx +1 -1
  123. package/src/components/molecules/CheckboxField/CheckboxField.stories.mdx +38 -0
  124. package/src/components/molecules/CheckboxField/styles.scss +12 -0
  125. package/src/{molecules → components/molecules}/Dropdown/Dropdown.tsx +0 -0
  126. package/src/{molecules → components/molecules}/Dropdown/DropdownButton.tsx +0 -0
  127. package/src/{molecules → components/molecules}/Dropdown/DropdownItem.tsx +0 -0
  128. package/src/{molecules → components/molecules}/Dropdown/DropdownMenu.tsx +0 -0
  129. package/src/{molecules → components/molecules}/Dropdown/contexts/DropdownContext.ts +0 -0
  130. package/src/{molecules → components/molecules}/Dropdown/hooks/useDropdown.ts +0 -0
  131. package/src/{molecules → components/molecules}/Dropdown/hooks/useDropdownPosition.ts +0 -0
  132. package/src/{molecules → components/molecules}/Dropdown/index.ts +0 -0
  133. package/src/{molecules → components/molecules}/Dropdown/stories/Dropdown.mdx +0 -0
  134. package/src/{molecules → components/molecules}/Dropdown/stories/Dropdown.stories.tsx +1 -1
  135. package/src/{molecules → components/molecules}/Dropdown/stories/assets/Caret.tsx +0 -0
  136. package/src/{molecules → components/molecules}/Form/Form.tsx +0 -0
  137. package/src/{molecules → components/molecules}/Form/index.ts +0 -0
  138. package/src/{molecules → components/molecules}/Form/stories/Form.mdx +0 -0
  139. package/src/{molecules → components/molecules}/Form/stories/Form.stories.tsx +2 -1
  140. package/src/{molecules → components/molecules}/Gift/Gift.tsx +2 -3
  141. package/src/{molecules → components/molecules}/Gift/GiftContent.tsx +0 -0
  142. package/src/{molecules → components/molecules}/Gift/GiftImage.tsx +0 -0
  143. package/src/{molecules → components/molecules}/Gift/index.tsx +0 -0
  144. package/src/{molecules → components/molecules}/Gift/stories/Gift.mdx +0 -0
  145. package/src/{molecules → components/molecules}/Gift/stories/Gift.stories.tsx +1 -1
  146. package/src/components/molecules/IconButton/IconButton.stories.mdx +47 -0
  147. package/src/{molecules → components/molecules}/LoadingButton/LoadingButton.tsx +3 -8
  148. package/src/{molecules → components/molecules}/LoadingButton/index.tsx +0 -0
  149. package/src/{molecules → components/molecules}/LoadingButton/stories/LoadingButton.mdx +0 -0
  150. package/src/{molecules → components/molecules}/LoadingButton/stories/LoadingButton.stories.tsx +1 -1
  151. package/src/{molecules → components/molecules}/Modal/Modal.tsx +0 -0
  152. package/src/{molecules → components/molecules}/Modal/ModalContent.tsx +0 -0
  153. package/src/{molecules → components/molecules}/Modal/index.tsx +0 -0
  154. package/src/{molecules → components/molecules}/Modal/stories/Modal.mdx +0 -0
  155. package/src/{molecules → components/molecules}/Modal/stories/Modal.stories.tsx +1 -1
  156. package/src/{molecules → components/molecules}/Modal/useTrapFocus.ts +0 -0
  157. package/src/{molecules → components/molecules}/OrderSummary/OrderSummary.tsx +0 -0
  158. package/src/{molecules → components/molecules}/OrderSummary/index.tsx +0 -0
  159. package/src/{molecules → components/molecules}/OrderSummary/stories/OrderSummary.mdx +0 -0
  160. package/src/{molecules → components/molecules}/OrderSummary/stories/OrderSummary.stories.tsx +0 -0
  161. package/src/{molecules → components/molecules}/PaymentMethods/PaymentMethods.tsx +0 -0
  162. package/src/{molecules → components/molecules}/PaymentMethods/index.tsx +0 -0
  163. package/src/{molecules → components/molecules}/PaymentMethods/stories/PaymentMethods.mdx +0 -0
  164. package/src/{molecules → components/molecules}/PaymentMethods/stories/PaymentMethods.stories.tsx +0 -0
  165. package/src/{molecules → components/molecules}/PaymentMethods/stories/assets/Icons.tsx +0 -0
  166. package/src/{molecules → components/molecules}/PriceRange/PriceRange.tsx +0 -0
  167. package/src/{molecules → components/molecules}/PriceRange/index.ts +0 -0
  168. package/src/{molecules → components/molecules}/PriceRange/stories/PriceRange.mdx +0 -0
  169. package/src/{molecules → components/molecules}/PriceRange/stories/PriceRange.stories.tsx +1 -1
  170. package/src/{molecules → components/molecules}/ProductCard/ProductCard.tsx +0 -0
  171. package/src/{molecules → components/molecules}/ProductCard/ProductCardActions.tsx +0 -0
  172. package/src/{molecules → components/molecules}/ProductCard/ProductCardContent.tsx +0 -0
  173. package/src/{molecules → components/molecules}/ProductCard/ProductCardImage.tsx +0 -0
  174. package/src/{molecules → components/molecules}/ProductCard/index.tsx +0 -0
  175. package/src/{molecules → components/molecules}/ProductCard/stories/ProductCard.mdx +0 -0
  176. package/src/{molecules → components/molecules}/ProductCard/stories/ProductCard.stories.tsx +1 -2
  177. package/src/{molecules → components/molecules}/ProductTitle/ProductTitle.tsx +0 -0
  178. package/src/{molecules → components/molecules}/ProductTitle/index.tsx +0 -0
  179. package/src/{molecules → components/molecules}/ProductTitle/stories/ProductTitle.mdx +0 -0
  180. package/src/{molecules → components/molecules}/ProductTitle/stories/ProductTitle.stories.tsx +3 -3
  181. package/src/{molecules → components/molecules}/QuantitySelector/QuantitySelector.tsx +2 -2
  182. package/src/{molecules → components/molecules}/QuantitySelector/index.ts +0 -0
  183. package/src/{molecules → components/molecules}/QuantitySelector/stories/QuantitySelector.mdx +0 -0
  184. package/src/{molecules → components/molecules}/QuantitySelector/stories/QuantitySelector.stories.tsx +0 -0
  185. package/src/{molecules → components/molecules}/QuantitySelector/stories/assets/Icons.tsx +0 -0
  186. package/src/components/molecules/RadioField/RadioField.stories.mdx +38 -0
  187. package/src/components/molecules/RadioField/styles.scss +12 -0
  188. package/src/{molecules → components/molecules}/RadioGroup/RadioGroup.tsx +0 -0
  189. package/src/{molecules → components/molecules}/RadioGroup/RadioOption.tsx +1 -1
  190. package/src/{molecules → components/molecules}/RadioGroup/index.tsx +0 -0
  191. package/src/{molecules → components/molecules}/RadioGroup/stories/RadioGroup.mdx +0 -0
  192. package/src/{molecules → components/molecules}/RadioGroup/stories/RadioGroup.stories.tsx +0 -0
  193. package/src/{molecules → components/molecules}/RadioGroup/useRadioGroup.ts +0 -0
  194. package/src/{molecules → components/molecules}/SearchInput/SearchInput.tsx +2 -3
  195. package/src/{molecules → components/molecules}/SearchInput/index.ts +0 -0
  196. package/src/{molecules → components/molecules}/SearchInput/stories/SearchInput.mdx +0 -0
  197. package/src/{molecules → components/molecules}/SearchInput/stories/SearchInput.stories.tsx +1 -1
  198. package/src/{molecules → components/molecules}/SearchInput/stories/assets/CustomIcon.tsx +0 -0
  199. package/src/{molecules → components/molecules}/SkuSelector/SkuSelector.tsx +3 -2
  200. package/src/{molecules → components/molecules}/SkuSelector/index.tsx +0 -0
  201. package/src/{molecules → components/molecules}/SkuSelector/stories/SkuSelector.mdx +0 -0
  202. package/src/{molecules → components/molecules}/SkuSelector/stories/SkuSelector.stories.tsx +1 -1
  203. package/src/{molecules → components/molecules}/Table/Table.tsx +0 -0
  204. package/src/{molecules → components/molecules}/Table/TableBody.tsx +0 -0
  205. package/src/{molecules → components/molecules}/Table/TableCell.tsx +0 -0
  206. package/src/{molecules → components/molecules}/Table/TableFooter.tsx +0 -0
  207. package/src/{molecules → components/molecules}/Table/TableHead.tsx +0 -0
  208. package/src/{molecules → components/molecules}/Table/TableRow.tsx +0 -0
  209. package/src/{molecules → components/molecules}/Table/index.ts +0 -0
  210. package/src/{molecules → components/molecules}/Table/stories/Table.mdx +0 -0
  211. package/src/{molecules → components/molecules}/Table/stories/Table.stories.tsx +0 -0
  212. package/src/components/molecules/Tag/Tag.stories.mdx +31 -0
  213. package/src/components/molecules/Tag/styles.scss +99 -0
  214. package/src/{organisms → components/organisms}/Hero/Hero.tsx +0 -0
  215. package/src/{organisms → components/organisms}/Hero/HeroHeading.tsx +0 -0
  216. package/src/{organisms → components/organisms}/Hero/HeroImage.tsx +0 -0
  217. package/src/{organisms → components/organisms}/Hero/index.tsx +0 -0
  218. package/src/{organisms → components/organisms}/Hero/stories/Hero.mdx +0 -0
  219. package/src/{organisms → components/organisms}/Hero/stories/Hero.stories.tsx +1 -1
  220. package/src/{organisms → components/organisms}/OutOfStock/OutOfStock.tsx +0 -0
  221. package/src/{organisms → components/organisms}/OutOfStock/OutOfStockMessage.tsx +0 -0
  222. package/src/{organisms → components/organisms}/OutOfStock/OutOfStockTitle.tsx +0 -0
  223. package/src/{organisms → components/organisms}/OutOfStock/index.tsx +0 -0
  224. package/src/{organisms → components/organisms}/OutOfStock/stories/OutOfStock.mdx +0 -0
  225. package/src/{organisms → components/organisms}/OutOfStock/stories/OutOfStock.stories.tsx +1 -1
  226. package/src/{organisms → components/organisms}/Tiles/Tile.tsx +0 -0
  227. package/src/{organisms → components/organisms}/Tiles/Tiles.tsx +0 -0
  228. package/src/{organisms → components/organisms}/Tiles/index.ts +0 -0
  229. package/src/{organisms → components/organisms}/Tiles/stories/Tiles.mdx +0 -0
  230. package/src/{organisms → components/organisms}/Tiles/stories/Tiles.stories.tsx +0 -0
  231. package/src/index.ts +97 -99
  232. package/src/styles/base.scss +3 -0
  233. package/src/styles/components.scss +10 -0
  234. package/src/styles/global.scss +4 -0
  235. package/src/styles/reset.scss +54 -0
  236. package/src/styles/utilities.scss +75 -0
  237. package/src/typings/utils.d.ts +2 -2
  238. package/dist/assets/index.d.ts +0 -2
  239. package/dist/assets/index.js +0 -3
  240. package/dist/assets/index.js.map +0 -1
  241. package/src/atoms/Badge/Badge.test.tsx +0 -23
  242. package/src/atoms/Badge/Badge.tsx +0 -23
  243. package/src/atoms/Badge/index.ts +0 -2
  244. package/src/atoms/Badge/stories/Badge.mdx +0 -18
  245. package/src/atoms/Badge/stories/Badge.stories.tsx +0 -37
  246. package/src/atoms/Button/Button.test.tsx +0 -12
  247. package/src/atoms/Button/Button.tsx +0 -23
  248. package/src/atoms/Button/index.ts +0 -2
  249. package/src/atoms/Button/stories/Button.mdx +0 -18
  250. package/src/atoms/Button/stories/Button.stories.tsx +0 -36
  251. package/src/atoms/Checkbox/Checkbox.test.tsx +0 -65
  252. package/src/atoms/Checkbox/Checkbox.tsx +0 -27
  253. package/src/atoms/Checkbox/index.ts +0 -2
  254. package/src/atoms/Checkbox/stories/Checkbox.mdx +0 -18
  255. package/src/atoms/Checkbox/stories/Checkbox.stories.tsx +0 -65
  256. package/src/atoms/Icon/Icon.test.tsx +0 -43
  257. package/src/atoms/Icon/Icon.tsx +0 -26
  258. package/src/atoms/Icon/index.ts +0 -2
  259. package/src/atoms/Icon/stories/Icon.mdx +0 -18
  260. package/src/atoms/Icon/stories/Icon.stories.tsx +0 -40
  261. package/src/atoms/Icon/stories/assets/ShoppingCart.tsx +0 -23
  262. package/src/atoms/Incentive/Incentive.test.tsx +0 -36
  263. package/src/atoms/Input/Input.test.tsx +0 -73
  264. package/src/atoms/Label/Label.test.tsx +0 -71
  265. package/src/atoms/Label/Label.tsx +0 -22
  266. package/src/atoms/Label/index.ts +0 -2
  267. package/src/atoms/Label/stories/Label.mdx +0 -18
  268. package/src/atoms/Label/stories/Label.stories.tsx +0 -30
  269. package/src/atoms/Link/Link.test.tsx +0 -53
  270. package/src/atoms/List/List.test.tsx +0 -195
  271. package/src/atoms/Overlay/Overlay.test.tsx +0 -23
  272. package/src/atoms/Popover/Popover.test.tsx +0 -39
  273. package/src/atoms/Price/Price.test.tsx +0 -63
  274. package/src/atoms/Radio/Radio.test.tsx +0 -59
  275. package/src/atoms/Radio/Radio.tsx +0 -24
  276. package/src/atoms/Radio/index.ts +0 -2
  277. package/src/atoms/Radio/stories/Radio.mdx +0 -18
  278. package/src/atoms/Radio/stories/Radio.stories.tsx +0 -41
  279. package/src/atoms/Select/Select.test.tsx +0 -71
  280. package/src/atoms/Skeleton/Skeleton.test.tsx +0 -13
  281. package/src/atoms/Slider/Slider.test.tsx +0 -32
  282. package/src/atoms/Spinner/Spinner.test.tsx +0 -12
  283. package/src/atoms/TextArea/TextArea.test.tsx +0 -77
  284. package/src/hooks/useSlider/useSlider.test.ts +0 -176
  285. package/src/molecules/Accordion/Accordion.test.tsx +0 -226
  286. package/src/molecules/AggregateRating/AggregateRating.test.tsx +0 -87
  287. package/src/molecules/Alert/Alert.test.tsx +0 -23
  288. package/src/molecules/Banner/Banner.test.tsx +0 -67
  289. package/src/molecules/Breadcrumb/Breadcrumb.test.tsx +0 -124
  290. package/src/molecules/Bullets/Bullets.test.tsx +0 -128
  291. package/src/molecules/Card/Card.test.tsx +0 -68
  292. package/src/molecules/Carousel/Carousel.test.tsx +0 -587
  293. package/src/molecules/Carousel/hooks/hooks.test.ts +0 -109
  294. package/src/molecules/CartItem/CartItem.test.tsx +0 -79
  295. package/src/molecules/Dropdown/Dropdown.test.tsx +0 -275
  296. package/src/molecules/Form/Form.test.tsx +0 -61
  297. package/src/molecules/Gift/Gift.test.tsx +0 -53
  298. package/src/molecules/IconButton/IconButton.test.tsx +0 -31
  299. package/src/molecules/IconButton/IconButton.tsx +0 -35
  300. package/src/molecules/IconButton/index.tsx +0 -2
  301. package/src/molecules/IconButton/stories/IconButton.mdx +0 -27
  302. package/src/molecules/IconButton/stories/IconButton.stories.tsx +0 -35
  303. package/src/molecules/LoadingButton/LoadingButton.test.tsx +0 -14
  304. package/src/molecules/Modal/Modal.test.tsx +0 -241
  305. package/src/molecules/OrderSummary/OrderSummary.test.tsx +0 -103
  306. package/src/molecules/PaymentMethods/PaymentMethods.test.tsx +0 -37
  307. package/src/molecules/PriceRange/PriceRange.test.tsx +0 -70
  308. package/src/molecules/ProductCard/ProductCard.test.tsx +0 -75
  309. package/src/molecules/QuantitySelector/QuantitySelector.test.tsx +0 -93
  310. package/src/molecules/RadioGroup/RadioGroup.test.tsx +0 -107
  311. package/src/molecules/SearchInput/SearchInput.test.tsx +0 -34
  312. package/src/molecules/SkuSelector/SkuSelector.test.tsx +0 -42
  313. package/src/molecules/Table/Table.test.tsx +0 -233
  314. package/src/organisms/Hero/Hero.test.tsx +0 -60
  315. package/src/organisms/OutOfStock/OutOfStock.test.tsx +0 -122
  316. package/src/setupTests.ts +0 -7
  317. package/src/utils/toHaveNoIncomplete.ts +0 -76
@@ -1,79 +0,0 @@
1
- import { render } from '@testing-library/react'
2
- import { axe } from 'jest-axe'
3
- import React from 'react'
4
-
5
- import CartItem, {
6
- CartItemActions,
7
- CartItemContent,
8
- CartItemImage,
9
- CartItemPrices,
10
- CartItemSummary,
11
- CartItemTitle,
12
- } from './'
13
-
14
- const product = {
15
- name: 'Apple Magic Mouse',
16
- imageUrl:
17
- 'https://assets.vtex.app/unsafe/216x216/center/middle/https%3A%2F%2Fstoreframework.vtexassets.com%2Farquivos%2Fids%2F190902%2Funsplash-magic-mouse.jpg%3Fv%3D637800136963870000',
18
- price: {
19
- listing: 999,
20
- spot: 950,
21
- },
22
- }
23
-
24
- const CartItemTest = () => {
25
- return (
26
- <CartItem>
27
- <CartItemContent>
28
- <CartItemImage>
29
- <img alt={product.name} src={product.imageUrl} />
30
- </CartItemImage>
31
-
32
- <CartItemSummary>
33
- <CartItemTitle>{product.name}</CartItemTitle>
34
-
35
- <CartItemPrices>
36
- <span>{product.price.listing}</span>
37
- <span>{product.price.spot}</span>
38
- </CartItemPrices>
39
- </CartItemSummary>
40
- </CartItemContent>
41
-
42
- <CartItemActions>
43
- <button>Remove</button>
44
-
45
- <span>Quantity Selector</span>
46
- </CartItemActions>
47
- </CartItem>
48
- )
49
- }
50
-
51
- describe('`CartItem`', () => {
52
- describe('Data attributes', () => {
53
- it(`should have the correct format`, () => {
54
- const testIdToDataAttributeMap = {
55
- 'store-cart-item': 'data-fs-cart-item',
56
- 'store-cart-item-content': 'data-fs-cart-item-content',
57
- 'store-cart-item-image': 'data-fs-cart-item-image',
58
- 'store-cart-item-summary': 'data-fs-cart-item-summary',
59
- 'store-cart-item-title': 'data-fs-cart-item-title',
60
- 'store-cart-item-prices': 'data-fs-cart-item-prices',
61
- 'store-cart-item-actions': 'data-fs-cart-item-actions',
62
- }
63
- const { getByTestId } = render(<CartItemTest />)
64
-
65
- for (const [testId, dataAttribute] of Object.entries(testIdToDataAttributeMap)) {
66
- expect(getByTestId(testId)).toHaveAttribute(dataAttribute)
67
- }
68
- })
69
- })
70
-
71
- describe('Accessibility', () => {
72
- it('should have no violations', async () => {
73
- const { getByTestId } = render(<CartItemTest />)
74
-
75
- expect(await axe(getByTestId('store-cart-item'))).toHaveNoViolations()
76
- expect(await axe(getByTestId('store-cart-item'))).toHaveNoIncompletes()
77
- })
78
- })
79
- })
@@ -1,275 +0,0 @@
1
- import { fireEvent, render } from '@testing-library/react'
2
- import { axe } from 'jest-axe'
3
- import React from 'react'
4
- import { act } from 'react-dom/test-utils'
5
-
6
- import Dropdown, { DropdownButton, DropdownItem, DropdownMenu } from '.'
7
-
8
- type SimpleDropdownProps = {
9
- onDismiss?(): void
10
- }
11
-
12
- const SimpleDropdown = ({ onDismiss }: SimpleDropdownProps) => (
13
- <Dropdown onDismiss={onDismiss}>
14
- <DropdownButton>Dropdown Button</DropdownButton>
15
- <DropdownMenu>
16
- <DropdownItem>Dropdown Item 1</DropdownItem>
17
- <DropdownItem>Dropdown Item 2</DropdownItem>
18
- <DropdownItem>Dropdown Item 3</DropdownItem>
19
- </DropdownMenu>
20
- </Dropdown>
21
- )
22
-
23
- describe('Dropdown', () => {
24
- it('Should render the DropdownButton component', () => {
25
- const { getByText, queryByTestId } = render(<SimpleDropdown />)
26
-
27
- expect(getByText(/Dropdown Button/g)).toBeInTheDocument()
28
- expect(queryByTestId('store-dropdown-menu')).not.toBeInTheDocument()
29
- })
30
-
31
- it('Should render DropdownMenu when DropdownButton is clicked', () => {
32
- const { getByText, queryByTestId } = render(<SimpleDropdown />)
33
-
34
- const dropdownButton = getByText(/Dropdown Button/g)
35
-
36
- fireEvent.click(dropdownButton)
37
- expect(queryByTestId('store-dropdown-menu')).toBeInTheDocument()
38
- })
39
-
40
- it('Should render DropdownMenu in correct position', () => {
41
- const { getByText, getByTestId } = render(
42
- <>
43
- <SimpleDropdown />
44
- <div style={{ height: 2000, width: 200 }}>Large element</div>
45
- </>
46
- )
47
-
48
- const dropdownButton = getByText(/Dropdown Button/g)
49
-
50
- fireEvent.click(dropdownButton)
51
-
52
- const dropdownMenu = getByTestId('store-dropdown-menu')
53
-
54
- expect(dropdownMenu).toBeInTheDocument()
55
-
56
- const buttonRect = dropdownButton?.getBoundingClientRect()
57
-
58
- fireEvent.scroll(window, { target: { scrollY: 300 } })
59
-
60
- const topLevel: number = buttonRect?.top ?? 0
61
- const topOffset: number = buttonRect?.height ?? 0
62
- const topPosition =
63
- topLevel + topOffset + document.documentElement.scrollTop
64
-
65
- const leftLevel = buttonRect?.left ?? 0
66
- const leftPosition = leftLevel + document.documentElement.scrollLeft
67
-
68
- const topMenuPosition = dropdownMenu.style.top
69
- const leftMenuPosition = dropdownMenu.style.left
70
-
71
- expect(topMenuPosition).toEqual(`${topPosition}px`)
72
- expect(leftMenuPosition).toEqual(`${leftPosition}px`)
73
- })
74
-
75
- it('Should render 3 dropdownItems when DropdownMenu is opened', () => {
76
- const { getByText, queryAllByTestId } = render(<SimpleDropdown />)
77
-
78
- const dropdownButton = getByText(/Dropdown Button/g)
79
-
80
- fireEvent.click(dropdownButton)
81
-
82
- expect(queryAllByTestId('store-dropdown-item')).toHaveLength(3)
83
- })
84
-
85
- it('Should close DropdownMenu and emit onDismiss when DropdownButton is clicked twice', () => {
86
- const onDismissMock = jest.fn()
87
-
88
- const { getByText, queryByTestId } = render(
89
- <SimpleDropdown onDismiss={onDismissMock} />
90
- )
91
-
92
- const dropdownButton = getByText(/Dropdown Button/g)
93
-
94
- fireEvent.click(dropdownButton)
95
- expect(queryByTestId('store-dropdown-menu')).toBeInTheDocument()
96
-
97
- fireEvent.click(dropdownButton)
98
- expect(queryByTestId('store-dropdown-menu')).not.toBeInTheDocument()
99
- expect(onDismissMock).toHaveBeenCalledTimes(1)
100
- })
101
-
102
- it('Should close menu and emit onDismiss event when Overlay is clicked', () => {
103
- const onDismissMock = jest.fn()
104
- const { getByText, queryByTestId, getByTestId } = render(
105
- <SimpleDropdown onDismiss={onDismissMock} />
106
- )
107
-
108
- const dropdownButton = getByText(/Dropdown Button/g)
109
-
110
- dropdownButton.click()
111
-
112
- const dropdownMenu = queryByTestId('store-dropdown-menu')
113
-
114
- expect(dropdownMenu).toBeInTheDocument()
115
-
116
- const overlay = getByTestId('store-dropdown-menu-overlay')
117
-
118
- act(() => {
119
- fireEvent.click(overlay)
120
- })
121
-
122
- expect(queryByTestId('store-dropdown-menu')).not.toBeInTheDocument()
123
- expect(onDismissMock).toHaveBeenCalledTimes(1)
124
- })
125
-
126
- it('Should close menu and emit onDismiss event when other element is clicked', () => {
127
- const onDismissMock = jest.fn()
128
- const { getByText, queryByTestId } = render(
129
- <>
130
- <span>Other Element</span>
131
- <SimpleDropdown onDismiss={onDismissMock} />
132
- </>
133
- )
134
-
135
- const dropdownButton = getByText(/Dropdown Button/g)
136
-
137
- dropdownButton.click()
138
-
139
- const dropdownMenu = queryByTestId('store-dropdown-menu')
140
-
141
- expect(dropdownMenu).toBeInTheDocument()
142
-
143
- const otherElement = getByText(/Other Element/g)
144
-
145
- act(() => {
146
- otherElement.click()
147
- })
148
-
149
- expect(dropdownMenu).not.toBeInTheDocument()
150
- expect(onDismissMock).toHaveBeenCalledTimes(1)
151
- })
152
-
153
- it('Should close menu, emit onDismiss and emit onClose, event when an item is clicked', () => {
154
- const onDismissMock = jest.fn()
155
- const onClickItemMock = jest.fn()
156
-
157
- const { getByText, queryByTestId, getByTestId } = render(
158
- <Dropdown onDismiss={onDismissMock}>
159
- <DropdownButton>Dropdown Button</DropdownButton>
160
- <DropdownMenu>
161
- <DropdownItem onClick={onClickItemMock}>Dropdown Item 1</DropdownItem>
162
- </DropdownMenu>
163
- </Dropdown>
164
- )
165
-
166
- const dropdownButton = getByText(/Dropdown Button/g)
167
-
168
- dropdownButton.click()
169
-
170
- const dropdownMenu = queryByTestId('store-dropdown-menu')
171
-
172
- expect(dropdownMenu).toBeInTheDocument()
173
-
174
- const firstItem = getByTestId('store-dropdown-item')
175
-
176
- act(() => {
177
- firstItem.click()
178
- })
179
-
180
- expect(dropdownMenu).not.toBeInTheDocument()
181
- expect(onDismissMock).toHaveBeenCalledTimes(1)
182
- expect(onClickItemMock).toHaveBeenCalledTimes(1)
183
- })
184
- })
185
-
186
- describe('Accessibility', () => {
187
- const getDropdownStructures = () => {
188
- const onDismissMock = jest.fn()
189
- const { getByText, queryAllByTestId, getByTestId, queryByTestId } = render(
190
- <SimpleDropdown onDismiss={onDismissMock} />
191
- )
192
-
193
- const dropdownButton = getByText(/Dropdown Button/g)
194
-
195
- fireEvent.click(dropdownButton)
196
-
197
- const dropdownItems = queryAllByTestId('store-dropdown-item')
198
- const overlay = getByTestId('store-dropdown-menu-overlay')
199
- const menu = queryByTestId('store-dropdown-menu')
200
-
201
- return { dropdownItems, overlay, menu, onDismissMock }
202
- }
203
-
204
- it('Should not have violations', async () => {
205
- const { getByText, getByTestId, container } = render(<SimpleDropdown />)
206
-
207
- const dropdownButton = getByText(/Dropdown Button/g)
208
-
209
- fireEvent.click(dropdownButton)
210
-
211
- const menu = getByTestId('store-dropdown-menu')
212
-
213
- expect(await axe(container)).toHaveNoViolations()
214
- expect(await axe(container)).toHaveNoIncompletes()
215
- expect(await axe(menu)).toHaveNoViolations()
216
- expect(await axe(menu)).toHaveNoIncompletes()
217
- })
218
-
219
- it('Should close Dropdown menu when Escape key is pressed', async () => {
220
- const { overlay, menu, onDismissMock } = getDropdownStructures()
221
-
222
- fireEvent.keyDown(overlay, {
223
- key: 'Escape',
224
- })
225
-
226
- expect(menu).not.toBeInTheDocument()
227
- expect(onDismissMock).toHaveBeenCalledTimes(1)
228
- })
229
-
230
- it('Should focus on second DropdownItem when ArrowDown key is pressed', async () => {
231
- const { overlay, dropdownItems } = getDropdownStructures()
232
-
233
- fireEvent.keyDown(overlay, {
234
- key: 'ArrowDown',
235
- })
236
-
237
- expect(dropdownItems[1]).toHaveFocus()
238
- })
239
-
240
- it('Should focus on second DropdownItem when ArrowUp key is pressed twice', () => {
241
- const { overlay, dropdownItems } = getDropdownStructures()
242
-
243
- fireEvent.keyDown(overlay, {
244
- key: 'ArrowUp',
245
- })
246
- fireEvent.keyDown(overlay, {
247
- key: 'ArrowUp',
248
- })
249
-
250
- expect(dropdownItems[1]).toHaveFocus()
251
- })
252
-
253
- it('Should focus on last DropdownItem when End key is pressed', () => {
254
- const { overlay, dropdownItems } = getDropdownStructures()
255
-
256
- fireEvent.keyDown(overlay, {
257
- key: 'End',
258
- })
259
-
260
- expect(dropdownItems[2]).toHaveFocus()
261
- })
262
-
263
- it('Should focus on first DropdownItem when Home key is pressed', () => {
264
- const { overlay, dropdownItems } = getDropdownStructures()
265
-
266
- fireEvent.keyDown(overlay, {
267
- key: 'ArrowUp',
268
- })
269
- fireEvent.keyDown(overlay, {
270
- key: 'Home',
271
- })
272
-
273
- expect(dropdownItems[0]).toHaveFocus()
274
- })
275
- })
@@ -1,61 +0,0 @@
1
- import { fireEvent, render } from '@testing-library/react'
2
- import { axe } from 'jest-axe'
3
- import React from 'react'
4
-
5
- import type { FormProps } from '.'
6
- import { Label, Input, Checkbox, Button } from '../..'
7
- import Form from './Form'
8
-
9
- const TestForm = ({ onSubmit }: Pick<FormProps, 'onSubmit'>) => (
10
- <Form onSubmit={onSubmit}>
11
- <h1>Sign up & save 15% off your first order</h1>
12
- <h2>
13
- Be the first to hear about special offers, new product launches, gift
14
- ideas and more.
15
- </h2>
16
- <div>
17
- <Label htmlFor="name">Name:</Label>
18
- <Input
19
- id="name"
20
- placeholder="Enter your name"
21
- required
22
- testId="test-submit-input"
23
- />
24
- </div>
25
- <div>
26
- <Label htmlFor="email">Email:</Label>
27
- <Input id="email" placeholder="Enter your email" required />
28
- </div>
29
- <div>
30
- <Label>
31
- <Checkbox required />I agree to receive emails from Brand. View our{' '}
32
- <a href="/">Privacy Policy</a>.
33
- </Label>
34
- </div>
35
- <Button type="submit">Subscribe</Button>
36
- </Form>
37
- )
38
-
39
- describe('Form', () => {
40
- it('should have `data-fs-form` attribute', () => {
41
- const { getByTestId } = render(<TestForm />)
42
-
43
- expect(getByTestId('store-form')).toHaveAttribute('data-fs-form')
44
- })
45
-
46
- describe('Accessibility', () => {
47
- it('should have no violations', async () => {
48
- const { getByTestId } = render(<TestForm />)
49
-
50
- expect(await axe(getByTestId('store-form'))).toHaveNoViolations()
51
- })
52
-
53
- it('should be able to submit from input', async () => {
54
- const mockOnSubmit = jest.fn()
55
- const { getByTestId } = render(<TestForm onSubmit={mockOnSubmit} />)
56
-
57
- fireEvent.submit(getByTestId('test-submit-input'))
58
- expect(mockOnSubmit).toHaveBeenCalled()
59
- })
60
- })
61
- })
@@ -1,53 +0,0 @@
1
- import { render } from '@testing-library/react'
2
- import { axe } from 'jest-axe'
3
- import React from 'react'
4
-
5
- import Gift from './Gift'
6
- import GiftImage from './GiftImage'
7
- import GiftContent from './GiftContent'
8
-
9
- const GiftTest = () => {
10
- return (
11
- <Gift>
12
- <GiftImage>
13
- <div>An image</div>
14
- </GiftImage>
15
- <GiftContent>
16
- <h3>Product Name</h3>
17
- <p>89.90</p>
18
- <span>Free</span>
19
- </GiftContent>
20
- </Gift>
21
- )
22
- }
23
-
24
- describe('Gift', () => {
25
- describe('Data attributes', () => {
26
- const { getByTestId } = render(<GiftTest />)
27
-
28
- const gift = getByTestId('store-gift')
29
- const giftImage = getByTestId('store-gift-image')
30
- const giftContent = getByTestId('store-gift-content')
31
-
32
- it('`Gift` component should have `data-fs-gift` attribute', () => {
33
- expect(gift).toHaveAttribute('data-fs-gift')
34
- })
35
-
36
- it('`GiftImage` component should have `data-fs-gift-image` attribute', () => {
37
- expect(giftImage).toHaveAttribute('data-fs-gift-image')
38
- })
39
-
40
- it('`GiftContent` component should have `data-fs-gift-content` attribute', () => {
41
- expect(giftContent).toHaveAttribute('data-fs-gift-content')
42
- })
43
- })
44
-
45
- describe('Accessibility', () => {
46
- it('should have no violations', async () => {
47
- const { getByTestId } = render(<GiftTest />)
48
-
49
- expect(await axe(getByTestId('store-gift'))).toHaveNoViolations()
50
- expect(await axe(getByTestId('store-gift'))).toHaveNoIncompletes()
51
- })
52
- })
53
- })
@@ -1,31 +0,0 @@
1
- import React from 'react'
2
- import { render } from '@testing-library/react'
3
-
4
- import IconButton from './IconButton'
5
-
6
- describe('IconButton', () => {
7
- const testId = 'store-icon-button'
8
-
9
- it('data-fs-icon-button is present', () => {
10
- const { getByTestId } = render(
11
- <IconButton testId={testId} aria-label="foo" icon={<div>foo</div>} />
12
- )
13
-
14
- const iconButton = getByTestId(testId)
15
-
16
- expect(iconButton).toBeInTheDocument()
17
- expect(iconButton).toHaveAttribute('data-fs-icon-button')
18
- })
19
-
20
- it('icon is present', () => {
21
- const { getByTestId } = render(
22
- <IconButton
23
- testId={testId}
24
- aria-label="foo"
25
- icon={<div data-testid="icon">foo</div>}
26
- />
27
- )
28
-
29
- expect(getByTestId('icon')).toBeInTheDocument()
30
- })
31
- })
@@ -1,35 +0,0 @@
1
- import type { ReactNode } from 'react'
2
- import React, { forwardRef } from 'react'
3
-
4
- import Button from '../../atoms/Button'
5
- import type { ButtonProps } from '../../atoms/Button'
6
- import Icon from '../../atoms/Icon'
7
-
8
- export interface Props extends Omit<ButtonProps, 'children' | 'aria-label'> {
9
- /**
10
- * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
11
- */
12
- testId?: string
13
- /**
14
- * A React component that will be rendered as an icon.
15
- */
16
- icon: ReactNode
17
-
18
- /**
19
- * Label to be required for accessibility.
20
- */
21
- 'aria-label': string
22
- }
23
-
24
- const IconButton = forwardRef<HTMLButtonElement, Props>(function IconButton(
25
- { icon, testId = 'store-icon-button', ...buttonProps },
26
- ref
27
- ) {
28
- return (
29
- <Button ref={ref} data-fs-icon-button testId={testId} {...buttonProps}>
30
- <Icon component={icon} />
31
- </Button>
32
- )
33
- })
34
-
35
- export default IconButton
@@ -1,2 +0,0 @@
1
- export { default } from './IconButton'
2
- export type { Props as IconButtonProps } from './IconButton'
@@ -1,27 +0,0 @@
1
- import { Story, Canvas, ArgsTable } from '@storybook/addon-docs'
2
- import IconButton from '../IconButton'
3
-
4
- # Icon Button
5
-
6
- ## Default
7
-
8
- <Canvas>
9
- <Story id="molecules-iconbutton--default" />
10
- </Canvas>
11
-
12
- ## Custom Style
13
-
14
- <Canvas>
15
- <Story id="molecules-iconbutton--custom-style" />
16
- </Canvas>
17
-
18
- ## Props
19
-
20
- <ArgsTable of={IconButton} />
21
-
22
- ## CSS Selectors
23
- ```css
24
- [data-fs-icon-button] {}
25
- ```
26
-
27
- This component inherits [Button](?path=/docs/atoms-button--button#css-selectors) css selectors.
@@ -1,35 +0,0 @@
1
- import type { Story, Meta } from '@storybook/react'
2
- import React from 'react'
3
-
4
- import type { Props as IconButtonProps } from '../IconButton'
5
- import Component from '../IconButton'
6
- import ShoppingCartIcon from '../../../atoms/Icon/stories/assets/ShoppingCart'
7
- import mdx from './IconButton.mdx'
8
-
9
- const IconButtonTemplate: Story<IconButtonProps> = (props) => (
10
- <Component {...props} icon={<ShoppingCartIcon />} aria-label="Buy" />
11
- )
12
-
13
- export const Default = IconButtonTemplate.bind({})
14
-
15
- const IconButtonCustomTemplate: Story<IconButtonProps> = (props) => {
16
- return (
17
- <Component
18
- {...props}
19
- className="iconButton"
20
- icon={<ShoppingCartIcon />}
21
- aria-label="Buy"
22
- />
23
- )
24
- }
25
-
26
- export const CustomStyle = IconButtonCustomTemplate.bind({})
27
-
28
- export default {
29
- title: 'Molecules/IconButton',
30
- parameters: {
31
- docs: {
32
- page: mdx,
33
- },
34
- },
35
- } as Meta
@@ -1,14 +0,0 @@
1
- import { render } from '@testing-library/react'
2
- import React from 'react'
3
-
4
- import LoadingButton from './LoadingButton'
5
-
6
- describe('Loading Button', () => {
7
- it('`data-fs-loading-button` is present', () => {
8
- const { getByTestId } = render(<LoadingButton loading />)
9
-
10
- expect(getByTestId('store-loading-button')).toHaveAttribute(
11
- 'data-fs-loading-button'
12
- )
13
- })
14
- })