@shopify/shop-minis-react 0.3.2 → 0.4.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 (205) hide show
  1. package/dist/components/MinisContainer.js +11 -10
  2. package/dist/components/MinisContainer.js.map +1 -1
  3. package/dist/components/atoms/content-wrapper.js.map +1 -1
  4. package/dist/components/atoms/video-player.js +28 -26
  5. package/dist/components/atoms/video-player.js.map +1 -1
  6. package/dist/components/commerce/product-card.js +106 -79
  7. package/dist/components/commerce/product-card.js.map +1 -1
  8. package/dist/components/commerce/product-link.js +124 -137
  9. package/dist/components/commerce/product-link.js.map +1 -1
  10. package/dist/components/commerce/search.js +20 -20
  11. package/dist/components/commerce/search.js.map +1 -1
  12. package/dist/components/ui/sonner.js +3 -1
  13. package/dist/components/ui/sonner.js.map +1 -1
  14. package/dist/hooks/content/useContent.js +12 -18
  15. package/dist/hooks/content/useContent.js.map +1 -1
  16. package/dist/hooks/navigation/useNavigateWithTransition.js +10 -11
  17. package/dist/hooks/navigation/useNavigateWithTransition.js.map +1 -1
  18. package/dist/hooks/product/useCuratedProducts.js +9 -11
  19. package/dist/hooks/product/useCuratedProducts.js.map +1 -1
  20. package/dist/hooks/product/usePopularProducts.js +9 -11
  21. package/dist/hooks/product/usePopularProducts.js.map +1 -1
  22. package/dist/hooks/product/useProduct.js +11 -17
  23. package/dist/hooks/product/useProduct.js.map +1 -1
  24. package/dist/hooks/product/useProductList.js +10 -21
  25. package/dist/hooks/product/useProductList.js.map +1 -1
  26. package/dist/hooks/product/useProductLists.js +11 -13
  27. package/dist/hooks/product/useProductLists.js.map +1 -1
  28. package/dist/hooks/product/useProductMedia.js +12 -18
  29. package/dist/hooks/product/useProductMedia.js.map +1 -1
  30. package/dist/hooks/product/useProductSearch.js +34 -27
  31. package/dist/hooks/product/useProductSearch.js.map +1 -1
  32. package/dist/hooks/product/useProductVariants.js +11 -14
  33. package/dist/hooks/product/useProductVariants.js.map +1 -1
  34. package/dist/hooks/product/useProducts.js +12 -11
  35. package/dist/hooks/product/useProducts.js.map +1 -1
  36. package/dist/hooks/product/useRecommendedProducts.js +11 -13
  37. package/dist/hooks/product/useRecommendedProducts.js.map +1 -1
  38. package/dist/hooks/shop/useRecommendedShops.js +11 -13
  39. package/dist/hooks/shop/useRecommendedShops.js.map +1 -1
  40. package/dist/hooks/shop/useShop.js +12 -11
  41. package/dist/hooks/shop/useShop.js.map +1 -1
  42. package/dist/hooks/user/useBuyerAttributes.js +8 -10
  43. package/dist/hooks/user/useBuyerAttributes.js.map +1 -1
  44. package/dist/hooks/user/useCurrentUser.js +7 -9
  45. package/dist/hooks/user/useCurrentUser.js.map +1 -1
  46. package/dist/hooks/user/useFollowedShops.js +11 -14
  47. package/dist/hooks/user/useFollowedShops.js.map +1 -1
  48. package/dist/hooks/user/useOrders.js +7 -9
  49. package/dist/hooks/user/useOrders.js.map +1 -1
  50. package/dist/hooks/user/useRecentProducts.js +11 -13
  51. package/dist/hooks/user/useRecentProducts.js.map +1 -1
  52. package/dist/hooks/user/useRecentShops.js +10 -13
  53. package/dist/hooks/user/useRecentShops.js.map +1 -1
  54. package/dist/hooks/user/useSavedProducts.js +10 -13
  55. package/dist/hooks/user/useSavedProducts.js.map +1 -1
  56. package/dist/index.js +269 -264
  57. package/dist/index.js.map +1 -1
  58. package/dist/internal/components/product-review-stars.js +78 -0
  59. package/dist/internal/components/product-review-stars.js.map +1 -0
  60. package/dist/internal/reactQuery/MinisQueryProvider.js +11 -0
  61. package/dist/internal/reactQuery/MinisQueryProvider.js.map +1 -0
  62. package/dist/internal/reactQuery/queryClient.js +33 -0
  63. package/dist/internal/reactQuery/queryClient.js.map +1 -0
  64. package/dist/internal/reactQuery/useShopActionInfiniteQuery.js +52 -0
  65. package/dist/internal/reactQuery/useShopActionInfiniteQuery.js.map +1 -0
  66. package/dist/internal/reactQuery/useShopActionQuery.js +37 -0
  67. package/dist/internal/reactQuery/useShopActionQuery.js.map +1 -0
  68. package/dist/mocks.js +178 -107
  69. package/dist/mocks.js.map +1 -1
  70. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/focusManager.js +45 -0
  71. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/focusManager.js.map +1 -0
  72. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js +89 -0
  73. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js.map +1 -0
  74. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js +55 -0
  75. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js.map +1 -0
  76. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/mutation.js +198 -0
  77. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/mutation.js.map +1 -0
  78. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/mutationCache.js +99 -0
  79. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/mutationCache.js.map +1 -0
  80. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js +67 -0
  81. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js.map +1 -0
  82. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/onlineManager.js +39 -0
  83. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/onlineManager.js.map +1 -0
  84. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/query.js +299 -0
  85. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/query.js.map +1 -0
  86. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/queryCache.js +80 -0
  87. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/queryCache.js.map +1 -0
  88. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/queryClient.js +215 -0
  89. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/queryClient.js.map +1 -0
  90. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/queryObserver.js +300 -0
  91. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/queryObserver.js.map +1 -0
  92. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/removable.js +25 -0
  93. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/removable.js.map +1 -0
  94. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/retryer.js +76 -0
  95. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/retryer.js.map +1 -0
  96. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/subscribable.js +21 -0
  97. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/subscribable.js.map +1 -0
  98. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/thenable.js +26 -0
  99. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/thenable.js.map +1 -0
  100. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/utils.js +176 -0
  101. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_query-core@5.86.0/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -0
  102. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js +7 -0
  103. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js.map +1 -0
  104. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +17 -0
  105. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js.map +1 -0
  106. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js +19 -0
  107. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js.map +1 -0
  108. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js +21 -0
  109. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js.map +1 -0
  110. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/suspense.js +18 -0
  111. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/suspense.js.map +1 -0
  112. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js +64 -0
  113. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js.map +1 -0
  114. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js +13 -0
  115. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js.map +1 -0
  116. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useQuery.js +9 -0
  117. package/dist/shop-minis-react/node_modules/.pnpm/@tanstack_react-query@5.86.0_react@19.1.0/node_modules/@tanstack/react-query/build/modern/useQuery.js.map +1 -0
  118. package/dist/shop-minis-react/node_modules/.pnpm/lucide-react@0.513.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/star-half.js +21 -0
  119. package/dist/shop-minis-react/node_modules/.pnpm/lucide-react@0.513.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/star-half.js.map +1 -0
  120. package/dist/shop-minis-react/node_modules/.pnpm/sonner@2.0.5_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/sonner/dist/index.js +4 -4
  121. package/dist/shop-minis-react/node_modules/.pnpm/sonner@2.0.5_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/sonner/dist/index.js.map +1 -1
  122. package/package.json +2 -7
  123. package/src/components/MinisContainer.tsx +6 -3
  124. package/src/components/atoms/content-wrapper.tsx +1 -1
  125. package/src/components/atoms/video-player.tsx +7 -0
  126. package/src/components/commerce/product-card.test.tsx +135 -0
  127. package/src/components/commerce/product-card.tsx +39 -5
  128. package/src/components/commerce/product-link.test.tsx +15 -3
  129. package/src/components/commerce/product-link.tsx +9 -25
  130. package/src/components/commerce/search.tsx +2 -2
  131. package/src/components/index.ts +1 -0
  132. package/src/components/ui/sonner.tsx +2 -2
  133. package/src/hooks/content/useContent.ts +6 -17
  134. package/src/hooks/navigation/useNavigateWithTransition.test.ts +46 -7
  135. package/src/hooks/navigation/useNavigateWithTransition.ts +4 -1
  136. package/src/hooks/product/useCuratedProducts.ts +4 -6
  137. package/src/hooks/product/usePopularProducts.ts +4 -6
  138. package/src/hooks/product/useProduct.ts +6 -17
  139. package/src/hooks/product/useProductList.ts +4 -19
  140. package/src/hooks/product/useProductLists.ts +4 -6
  141. package/src/hooks/product/useProductMedia.ts +6 -17
  142. package/src/hooks/product/useProductSearch.ts +19 -15
  143. package/src/hooks/product/useProductVariants.ts +5 -13
  144. package/src/hooks/product/useProducts.ts +8 -12
  145. package/src/hooks/product/useRecommendedProducts.ts +4 -6
  146. package/src/hooks/shop/useRecommendedShops.ts +4 -6
  147. package/src/hooks/shop/useShop.ts +8 -12
  148. package/src/hooks/user/useBuyerAttributes.ts +4 -6
  149. package/src/hooks/user/useCurrentUser.ts +4 -6
  150. package/src/hooks/user/useFollowedShops.ts +5 -13
  151. package/src/hooks/user/useOrders.ts +4 -6
  152. package/src/hooks/user/useRecentProducts.ts +4 -6
  153. package/src/hooks/user/useRecentShops.ts +5 -13
  154. package/src/hooks/user/useSavedProducts.ts +5 -13
  155. package/src/internal/components/product-review-stars.test.tsx +90 -0
  156. package/src/internal/components/product-review-stars.tsx +113 -0
  157. package/src/internal/reactQuery/MinisQueryProvider.test.tsx +38 -0
  158. package/src/internal/reactQuery/MinisQueryProvider.tsx +16 -0
  159. package/src/internal/reactQuery/index.ts +8 -0
  160. package/src/internal/reactQuery/queryClient.test.tsx +91 -0
  161. package/src/internal/reactQuery/queryClient.ts +43 -0
  162. package/src/internal/reactQuery/useShopActionInfiniteQuery.test.tsx +357 -0
  163. package/src/internal/reactQuery/useShopActionInfiniteQuery.ts +129 -0
  164. package/src/internal/reactQuery/useShopActionQuery.test.tsx +184 -0
  165. package/src/internal/reactQuery/useShopActionQuery.ts +74 -0
  166. package/src/mocks.ts +10 -2
  167. package/src/providers/ImagePickerProvider.test.tsx +3 -9
  168. package/dist/internal/useShopActionsDataFetching.js +0 -79
  169. package/dist/internal/useShopActionsDataFetching.js.map +0 -1
  170. package/dist/internal/useShopActionsPaginatedDataFetching.js +0 -96
  171. package/dist/internal/useShopActionsPaginatedDataFetching.js.map +0 -1
  172. package/src/hooks/product/useProductSearch.test.ts +0 -470
  173. package/src/internal/useShopActionsDataFetching.test.ts +0 -465
  174. package/src/internal/useShopActionsDataFetching.ts +0 -150
  175. package/src/internal/useShopActionsPaginatedDataFetching.ts +0 -188
  176. package/src/stories/Accordion.stories.tsx +0 -124
  177. package/src/stories/AddToCart.stories.tsx +0 -251
  178. package/src/stories/Alert.stories.tsx +0 -38
  179. package/src/stories/AlertDialog.stories.tsx +0 -48
  180. package/src/stories/Avatar.stories.tsx +0 -29
  181. package/src/stories/Badge.stories.tsx +0 -46
  182. package/src/stories/Button.stories.tsx +0 -81
  183. package/src/stories/Card.stories.tsx +0 -40
  184. package/src/stories/Checkbox.stories.tsx +0 -44
  185. package/src/stories/FavoriteButton.stories.tsx +0 -58
  186. package/src/stories/IconButton.stories.tsx +0 -68
  187. package/src/stories/ImageContentWrapper.stories.tsx +0 -65
  188. package/src/stories/Input.stories.tsx +0 -44
  189. package/src/stories/Label.stories.tsx +0 -19
  190. package/src/stories/List.stories.tsx +0 -64
  191. package/src/stories/MerchantCard.stories.tsx +0 -127
  192. package/src/stories/ProductCard.stories.tsx +0 -92
  193. package/src/stories/ProductLink.stories.tsx +0 -46
  194. package/src/stories/ProductVariantPrice.stories.tsx +0 -70
  195. package/src/stories/Progress.stories.tsx +0 -30
  196. package/src/stories/PullToRefreshList.stories.tsx +0 -122
  197. package/src/stories/QuantitySelector.stories.tsx +0 -78
  198. package/src/stories/RadioGroup.stories.tsx +0 -51
  199. package/src/stories/Search.stories.tsx +0 -37
  200. package/src/stories/Select.stories.tsx +0 -85
  201. package/src/stories/Skeleton.stories.tsx +0 -19
  202. package/src/stories/TextInput.stories.tsx +0 -26
  203. package/src/stories/Toaster.stories.tsx +0 -46
  204. package/src/stories/Touchable.stories.tsx +0 -40
  205. package/src/stories/VideoPlayer.stories.tsx +0 -129
@@ -1,46 +0,0 @@
1
- import {Badge} from '../components/ui/badge'
2
-
3
- import type {Meta, StoryObj} from '@storybook/react-vite'
4
-
5
- const meta = {
6
- title: 'UI/Badge',
7
- component: Badge,
8
- parameters: {},
9
- tags: ['autodocs'],
10
- argTypes: {
11
- variant: {
12
- control: 'radio',
13
- options: ['default', 'secondary', 'destructive', 'outline'],
14
- },
15
- },
16
- } satisfies Meta<typeof Badge>
17
-
18
- export default meta
19
- type Story = StoryObj<typeof meta>
20
-
21
- export const Default: Story = {
22
- args: {
23
- children: 'Badge',
24
- },
25
- }
26
-
27
- export const Secondary: Story = {
28
- args: {
29
- variant: 'secondary',
30
- children: 'Badge',
31
- },
32
- }
33
-
34
- export const Destructive: Story = {
35
- args: {
36
- variant: 'destructive',
37
- children: 'Badge',
38
- },
39
- }
40
-
41
- export const Outline: Story = {
42
- args: {
43
- variant: 'outline',
44
- children: 'Badge',
45
- },
46
- }
@@ -1,81 +0,0 @@
1
- import {fn} from 'storybook/test'
2
-
3
- import {Button} from '../components/atoms/button'
4
-
5
- import type {Meta, StoryObj} from '@storybook/react-vite'
6
-
7
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
8
- const meta = {
9
- title: 'Atoms/Button',
10
- component: Button,
11
- parameters: {},
12
- // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
13
- tags: ['autodocs'],
14
- argTypes: {
15
- variant: {
16
- control: 'radio',
17
- options: [
18
- 'default',
19
- 'secondary',
20
- 'tertiary',
21
- 'outline',
22
- 'ghost',
23
- 'link',
24
- 'destructive',
25
- ],
26
- },
27
- },
28
- args: {onClick: fn()},
29
- } satisfies Meta<typeof Button>
30
-
31
- export default meta
32
- type Story = StoryObj<typeof meta>
33
-
34
- export const Default: Story = {
35
- args: {
36
- variant: 'default',
37
- children: 'Button',
38
- },
39
- }
40
-
41
- export const Secondary: Story = {
42
- args: {
43
- variant: 'secondary',
44
- children: 'Button',
45
- },
46
- }
47
-
48
- export const Tertiary: Story = {
49
- args: {
50
- variant: 'tertiary',
51
- children: 'Button',
52
- },
53
- }
54
-
55
- export const Outline: Story = {
56
- args: {
57
- variant: 'outline',
58
- children: 'Button',
59
- },
60
- }
61
-
62
- export const Ghost: Story = {
63
- args: {
64
- variant: 'ghost',
65
- children: 'Button',
66
- },
67
- }
68
-
69
- export const Link: Story = {
70
- args: {
71
- variant: 'link',
72
- children: 'Button',
73
- },
74
- }
75
-
76
- export const Destructive: Story = {
77
- args: {
78
- variant: 'destructive',
79
- children: 'Button',
80
- },
81
- }
@@ -1,40 +0,0 @@
1
- import {Button} from '../components/atoms/button'
2
- import {
3
- Card,
4
- CardHeader,
5
- CardFooter,
6
- CardTitle,
7
- CardAction,
8
- CardDescription,
9
- CardContent,
10
- } from '../components/ui/card'
11
-
12
- import type {Meta, StoryObj} from '@storybook/react-vite'
13
-
14
- const meta = {
15
- title: 'UI/Card',
16
- render: () => (
17
- <Card>
18
- <CardHeader>
19
- <CardTitle>Card Title</CardTitle>
20
- <CardDescription>Card description goes here</CardDescription>
21
- <CardAction>
22
- <Button>Action</Button>
23
- </CardAction>
24
- </CardHeader>
25
- <CardContent>
26
- <p>This is the main content of the card.</p>
27
- </CardContent>
28
- <CardFooter>
29
- <p>Card footer content</p>
30
- </CardFooter>
31
- </Card>
32
- ),
33
- parameters: {},
34
- tags: ['autodocs'],
35
- } satisfies Meta<typeof Card>
36
-
37
- export default meta
38
- type Story = StoryObj<typeof meta>
39
-
40
- export const Default: Story = {}
@@ -1,44 +0,0 @@
1
- import {Checkbox} from '../components/ui/checkbox'
2
-
3
- import type {Meta, StoryObj} from '@storybook/react-vite'
4
-
5
- const meta = {
6
- title: 'UI/Checkbox',
7
- component: Checkbox,
8
- parameters: {},
9
- tags: ['autodocs'],
10
- argTypes: {
11
- checked: {
12
- control: 'boolean',
13
- },
14
- disabled: {
15
- control: 'boolean',
16
- },
17
- },
18
- } satisfies Meta<typeof Checkbox>
19
-
20
- export default meta
21
- type Story = StoryObj<typeof meta>
22
-
23
- export const Default: Story = {
24
- args: {},
25
- }
26
-
27
- export const Checked: Story = {
28
- args: {
29
- checked: true,
30
- },
31
- }
32
-
33
- export const Disabled: Story = {
34
- args: {
35
- disabled: true,
36
- },
37
- }
38
-
39
- export const DisabledChecked: Story = {
40
- args: {
41
- disabled: true,
42
- checked: true,
43
- },
44
- }
@@ -1,58 +0,0 @@
1
- import {fn} from 'storybook/test'
2
-
3
- import {FavoriteButton} from '../components/commerce/favorite-button'
4
-
5
- import type {Meta, StoryObj} from '@storybook/react-vite'
6
-
7
- const meta = {
8
- title: 'Commerce/FavoriteButton',
9
- component: FavoriteButton,
10
- parameters: {},
11
- tags: ['autodocs'],
12
- argTypes: {
13
- filled: {
14
- control: 'boolean',
15
- },
16
- },
17
- args: {
18
- onClick: fn(),
19
- filled: false,
20
- },
21
- } satisfies Meta<typeof FavoriteButton>
22
-
23
- export default meta
24
- type Story = StoryObj<typeof meta>
25
-
26
- export const Favorited: Story = {
27
- args: {
28
- filled: true,
29
- onClick: fn(),
30
- },
31
- render: ({onClick, filled}) => {
32
- return (
33
- <FavoriteButton
34
- filled={filled}
35
- onClick={() => {
36
- onClick?.()
37
- }}
38
- />
39
- )
40
- },
41
- }
42
-
43
- export const Unfavorited: Story = {
44
- args: {
45
- filled: false,
46
- onClick: fn(),
47
- },
48
- render: ({onClick, filled}) => {
49
- return (
50
- <FavoriteButton
51
- filled={filled}
52
- onClick={() => {
53
- onClick?.()
54
- }}
55
- />
56
- )
57
- },
58
- }
@@ -1,68 +0,0 @@
1
- import {Heart, Star, Settings, Home} from 'lucide-react'
2
- import {fn} from 'storybook/test'
3
-
4
- import {IconButton} from '../components/atoms/icon-button'
5
-
6
- import type {Meta, StoryObj} from '@storybook/react-vite'
7
-
8
- const meta = {
9
- title: 'Atoms/IconButton',
10
- component: IconButton,
11
- parameters: {},
12
- tags: ['autodocs'],
13
- argTypes: {
14
- size: {
15
- control: 'radio',
16
- options: ['sm', 'default', 'lg'],
17
- },
18
- filled: {
19
- control: 'boolean',
20
- },
21
- Icon: {
22
- control: 'select',
23
- options: ['Heart', 'Star', 'Settings', 'Home'],
24
- mapping: {
25
- Heart,
26
- Star,
27
- Settings,
28
- Home,
29
- },
30
- },
31
- },
32
- args: {
33
- onClick: fn(),
34
- filled: false,
35
- size: 'default',
36
- Icon: Heart,
37
- },
38
- } satisfies Meta<typeof IconButton>
39
-
40
- export default meta
41
- type Story = StoryObj<typeof meta>
42
-
43
- export const Default: Story = {
44
- args: {
45
- Icon: Heart,
46
- },
47
- }
48
-
49
- export const Filled: Story = {
50
- args: {
51
- Icon: Heart,
52
- filled: true,
53
- },
54
- }
55
-
56
- export const Small: Story = {
57
- args: {
58
- Icon: Star,
59
- size: 'sm',
60
- },
61
- }
62
-
63
- export const Large: Story = {
64
- args: {
65
- Icon: Settings,
66
- size: 'lg',
67
- },
68
- }
@@ -1,65 +0,0 @@
1
- import {fn} from 'storybook/test'
2
-
3
- import {ImageContentWrapper} from '../components/content/image-content-wrapper'
4
- import {injectMocks} from '../mocks'
5
-
6
- import type {Meta, StoryObj} from '@storybook/react-vite'
7
-
8
- const meta = {
9
- title: 'Atoms/ImageContentWrapper',
10
- component: ImageContentWrapper,
11
- parameters: {
12
- layout: 'padded',
13
- },
14
- args: {
15
- onLoad: fn(),
16
- },
17
- argTypes: {
18
- publicId: {
19
- control: 'text',
20
- },
21
- externalId: {
22
- control: 'text',
23
- },
24
- width: {
25
- control: 'number',
26
- },
27
- height: {
28
- control: 'number',
29
- },
30
- className: {
31
- control: 'text',
32
- },
33
- },
34
- tags: ['autodocs'],
35
- } satisfies Meta<typeof ImageContentWrapper>
36
-
37
- export default meta
38
- type Story = StoryObj<typeof meta>
39
-
40
- injectMocks()
41
-
42
- export const WithPublicId: Story = {
43
- args: {
44
- publicId: 'content-123',
45
- width: 400,
46
- height: 300,
47
- },
48
- }
49
-
50
- export const WithExternalId: Story = {
51
- args: {
52
- externalId: 'external-123',
53
- width: 400,
54
- height: 300,
55
- },
56
- }
57
-
58
- export const WithCustomLoader: Story = {
59
- args: {
60
- publicId: 'content-123',
61
- width: 400,
62
- height: 300,
63
- Loader: 'Loading image...',
64
- },
65
- }
@@ -1,44 +0,0 @@
1
- import {Input} from '../components/ui/input'
2
-
3
- import type {Meta, StoryObj} from '@storybook/react-vite'
4
-
5
- const meta = {
6
- title: 'UI/Input',
7
- component: Input,
8
- parameters: {},
9
- tags: ['autodocs'],
10
- argTypes: {
11
- type: {
12
- control: 'select',
13
- options: ['text', 'email', 'password', 'number', 'search', 'tel', 'url'],
14
- },
15
- placeholder: {
16
- control: 'text',
17
- },
18
- disabled: {
19
- control: 'boolean',
20
- },
21
- },
22
- } satisfies Meta<typeof Input>
23
-
24
- export default meta
25
- type Story = StoryObj<typeof meta>
26
-
27
- export const Default: Story = {
28
- args: {
29
- placeholder: 'Enter text...',
30
- },
31
- }
32
-
33
- export const WithValue: Story = {
34
- args: {
35
- value: 'This is an input',
36
- },
37
- }
38
-
39
- export const Disabled: Story = {
40
- args: {
41
- disabled: true,
42
- value: 'Disabled input',
43
- },
44
- }
@@ -1,19 +0,0 @@
1
- import {Label} from '../components/ui/label'
2
-
3
- import type {Meta, StoryObj} from '@storybook/react-vite'
4
-
5
- const meta = {
6
- title: 'UI/Label',
7
- component: Label,
8
- parameters: {},
9
- tags: ['autodocs'],
10
- } satisfies Meta<typeof Label>
11
-
12
- export default meta
13
- type Story = StoryObj<typeof meta>
14
-
15
- export const Default: Story = {
16
- args: {
17
- children: 'This is a text label',
18
- },
19
- }
@@ -1,64 +0,0 @@
1
- import {fn} from 'storybook/test'
2
-
3
- import {List} from '../components/atoms/list'
4
- import {ProductCard} from '../components/commerce/product-card'
5
- import {ProductLink} from '../components/commerce/product-link'
6
- import {createProduct, injectMocks} from '../mocks'
7
-
8
- import type {Product} from '@shopify/shop-minis-platform'
9
- import type {Meta, StoryObj} from '@storybook/react-vite'
10
-
11
- const meta = {
12
- title: 'Atoms/List',
13
- component: List as any,
14
- parameters: {
15
- layout: 'padded',
16
- },
17
- argTypes: {
18
- height: {
19
- control: 'number',
20
- description: 'Height of the virtualized list container',
21
- },
22
- },
23
- tags: ['autodocs'],
24
- } satisfies Meta<typeof List>
25
-
26
- export default meta
27
- type Story = StoryObj<typeof meta>
28
-
29
- injectMocks()
30
-
31
- const createProductList = (count: number) => {
32
- return Array.from({length: count}, (_, index) =>
33
- createProduct(`product-${index + 1}`, `Product ${index + 1}`, '9.99')
34
- )
35
- }
36
-
37
- export const ProductLinkList: Story = {
38
- args: {
39
- items: createProductList(50),
40
- height: 600,
41
- itemSizeForRow: () => 100,
42
- showScrollbar: true,
43
- renderItem: (product: Product) => (
44
- <div className="p-4">
45
- <ProductLink product={product} />
46
- </div>
47
- ),
48
- },
49
- }
50
-
51
- export const ProductGridList: Story = {
52
- args: {
53
- items: createProductList(20),
54
- height: 600,
55
- itemSizeForRow: () => 220,
56
- showScrollbar: true,
57
- renderItem: (product: Product) => (
58
- <div className="grid grid-cols-2 gap-4">
59
- <ProductCard product={product} onFavoriteToggled={fn()} />
60
- <ProductCard product={product} onFavoriteToggled={fn()} />
61
- </div>
62
- ),
63
- },
64
- }
@@ -1,127 +0,0 @@
1
- import {MerchantCard} from '../components/commerce/merchant-card'
2
- import {createShop, injectMocks} from '../mocks'
3
-
4
- import type {Meta, StoryObj} from '@storybook/react-vite'
5
-
6
- type MerchantCardProps = React.ComponentProps<typeof MerchantCard>
7
-
8
- const meta = {
9
- title: 'Commerce/MerchantCard',
10
- component: MerchantCard,
11
- parameters: {
12
- layout: 'padded',
13
- },
14
- argTypes: {
15
- touchable: {
16
- control: 'boolean',
17
- },
18
- featuredImagesLimit: {
19
- control: 'number',
20
- },
21
- },
22
- tags: ['autodocs'],
23
- } satisfies Meta<MerchantCardProps>
24
-
25
- export default meta
26
- type Story = StoryObj<typeof meta>
27
-
28
- injectMocks()
29
-
30
- export const Default: Story = {
31
- decorators: [
32
- Story => (
33
- <div style={{maxWidth: 200}}>
34
- <Story />
35
- </div>
36
- ),
37
- ],
38
- args: {
39
- shop: {
40
- ...createShop('shop1', 'Amazing Store'),
41
- reviewAnalytics: {averageRating: 4.8, reviewCount: 1250},
42
- },
43
- },
44
- }
45
-
46
- export const CoverImageDark: Story = {
47
- decorators: [
48
- Story => (
49
- <div style={{maxWidth: 200}}>
50
- <Story />
51
- </div>
52
- ),
53
- ],
54
- name: 'Cover Image',
55
- args: {
56
- shop: createShop('cover3', 'Midnight Store', {
57
- themeType: 'coverImage',
58
- coverDominantColor: '#2C3E50',
59
- }),
60
- },
61
- }
62
-
63
- export const BrandColorWordmark: Story = {
64
- decorators: [
65
- Story => (
66
- <div style={{maxWidth: 200}}>
67
- <Story />
68
- </div>
69
- ),
70
- ],
71
- name: 'Brand Color + Wordmark',
72
- args: {
73
- shop: createShop('brand2', 'Amazing Store', {
74
- themeType: 'brandColor',
75
- wordmarkUrl:
76
- 'https://merrypeople.com/cdn/shop/files/Transparent_Background_1.png?v=1696465429&width=1024',
77
- primaryColor: '#E3F2FD',
78
- }),
79
- },
80
- }
81
-
82
- export const Grid: Story = {
83
- decorators: [
84
- () => (
85
- <div className="grid grid-cols-2 gap-4">
86
- {/* Default */}
87
- <MerchantCard
88
- shop={{
89
- ...createShop('shop1', 'Amazing Store'),
90
- reviewAnalytics: {averageRating: 4.8, reviewCount: 1250},
91
- }}
92
- />
93
-
94
- {/* Cover Image (Dark) */}
95
- <MerchantCard
96
- shop={createShop('cover3', 'Amazing Store', {
97
- themeType: 'coverImage',
98
- coverDominantColor: '#2C3E50',
99
- })}
100
- />
101
-
102
- {/* Brand Color + Wordmark (Light) */}
103
- <MerchantCard
104
- shop={createShop('brand2', 'Amazing Store', {
105
- themeType: 'brandColor',
106
- wordmarkUrl:
107
- 'https://merrypeople.com/cdn/shop/files/Transparent_Background_1.png?v=1696465429&width=1024',
108
- primaryColor: '#E3F2FD',
109
- })}
110
- />
111
-
112
- {/* Brand Color + Wordmark (Dark) */}
113
- <MerchantCard
114
- shop={createShop('brand4', 'Amazing Store', {
115
- themeType: 'brandColor',
116
- wordmarkUrl:
117
- 'https://merrypeople.com/cdn/shop/files/Transparent_Background_1.png?v=1696465429&width=1024',
118
- primaryColor: '#808080',
119
- })}
120
- />
121
- </div>
122
- ),
123
- ],
124
- args: {
125
- shop: createShop('shop1', 'Amazing Store'),
126
- },
127
- }