@thorprovider/blocks 0.1.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/README.md +228 -68
  3. package/docs/standards/data-contracts.md +13 -2
  4. package/package.json +26 -10
  5. package/scripts/fix-esm-extensions.mjs +40 -0
  6. package/src/blocks/application/login-forms/login-page.test.tsx +190 -0
  7. package/src/blocks/application/login-forms/login-page.tsx +240 -0
  8. package/src/blocks/application/password-recovery/forgot-password-page-1.tsx +6 -8
  9. package/src/blocks/application/signup-forms/signup-page-1.tsx +127 -129
  10. package/src/blocks/application/verification/verify-1.tsx +2 -2
  11. package/src/blocks/application/viewport-ownership.test.tsx +41 -0
  12. package/src/blocks/e-commerce/category-filters/category-listing-filter-fields.tsx +218 -0
  13. package/src/blocks/e-commerce/category-filters/{category-filter-2.test.tsx → category-listing.test.tsx} +287 -199
  14. package/src/blocks/e-commerce/category-filters/category-listing.tsx +934 -0
  15. package/src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx +149 -0
  16. package/src/blocks/e-commerce/checkout-forms/{checkout-form-1-country-field.tsx → checkout-country-field.tsx} +10 -8
  17. package/src/blocks/e-commerce/checkout-forms/checkout-order-summary.tsx +230 -0
  18. package/src/blocks/e-commerce/checkout-forms/checkout-payment-step.tsx +100 -0
  19. package/src/blocks/e-commerce/checkout-forms/checkout-progress.tsx +62 -0
  20. package/src/blocks/e-commerce/checkout-forms/checkout-review-step.tsx +59 -0
  21. package/src/blocks/e-commerce/checkout-forms/{checkout-form-1-shipping-step.tsx → checkout-shipping-step.tsx} +65 -41
  22. package/src/blocks/e-commerce/checkout-forms/checkout.test.tsx +478 -0
  23. package/src/blocks/e-commerce/checkout-forms/checkout.tsx +550 -0
  24. package/src/blocks/e-commerce/navigation/storefront-navbar-account-menu.test.tsx +56 -0
  25. package/src/blocks/{marketing/navbars/navbar-4-account-menu.tsx → e-commerce/navigation/storefront-navbar-account-menu.tsx} +3 -3
  26. package/src/blocks/{marketing/navbars/navbar-4-cart-sheet.test.tsx → e-commerce/navigation/storefront-navbar-cart-sheet.test.tsx} +22 -22
  27. package/src/blocks/{marketing/navbars/navbar-4-cart-sheet.tsx → e-commerce/navigation/storefront-navbar-cart-sheet.tsx} +3 -3
  28. package/src/blocks/{marketing/navbars/navbar-4-mobile-nav.tsx → e-commerce/navigation/storefront-navbar-mobile-nav.tsx} +4 -12
  29. package/src/blocks/{marketing/navbars/navbar-4-search-bar.tsx → e-commerce/navigation/storefront-navbar-search-bar.tsx} +3 -3
  30. package/src/blocks/{marketing/navbars/navbar-4.test.tsx → e-commerce/navigation/storefront-navbar.test.tsx} +67 -36
  31. package/src/blocks/{marketing/navbars/navbar-4.tsx → e-commerce/navigation/storefront-navbar.tsx} +43 -25
  32. package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +122 -0
  33. package/src/blocks/e-commerce/product-categories/category-card.test.tsx +68 -0
  34. package/src/blocks/e-commerce/product-categories/category-card.tsx +172 -0
  35. package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +67 -0
  36. package/src/blocks/e-commerce/product-categories/category-shared.tsx +109 -0
  37. package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +170 -0
  38. package/src/blocks/e-commerce/product-categories/product-category.test.tsx +266 -0
  39. package/src/blocks/e-commerce/product-categories/product-category.tsx +462 -0
  40. package/src/blocks/e-commerce/product-list/product-card.test.tsx +263 -0
  41. package/src/blocks/e-commerce/product-list/product-card.tsx +447 -0
  42. package/src/blocks/e-commerce/product-list/product-grid.test.tsx +162 -0
  43. package/src/blocks/e-commerce/product-list/product-grid.tsx +114 -0
  44. package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +71 -0
  45. package/src/blocks/e-commerce/product-overview/{product-overview-5-lightbox-tab.tsx → product-overview-lightbox-tab.tsx} +35 -23
  46. package/src/blocks/e-commerce/product-overview/{product-overview-5-reviews-tab.tsx → product-overview-reviews-tab.tsx} +40 -17
  47. package/src/blocks/e-commerce/product-overview/{product-overview-5-tabs.tsx → product-overview-tabs.tsx} +8 -7
  48. package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +283 -0
  49. package/src/blocks/e-commerce/product-overview/product-overview.tsx +1186 -0
  50. package/src/blocks/e-commerce/reviews/review-rating-2.tsx +5 -6
  51. package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +399 -0
  52. package/src/blocks/e-commerce/shopping-carts/{shopping-cart-4.tsx → shopping-cart.tsx} +119 -85
  53. package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +412 -0
  54. package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +1283 -0
  55. package/src/blocks/marketing/features/feature.test.tsx +153 -0
  56. package/src/blocks/marketing/features/feature.tsx +195 -0
  57. package/src/blocks/marketing/footers/footer-section-accessibility.test.tsx +118 -0
  58. package/src/blocks/marketing/footers/footer-section-actions.test.tsx +131 -0
  59. package/src/blocks/marketing/footers/footer-section-data.test.tsx +127 -0
  60. package/src/blocks/marketing/footers/footer-section-native-links.test.tsx +100 -0
  61. package/src/blocks/marketing/footers/footer-section-public-api.test.tsx +11 -0
  62. package/src/blocks/marketing/footers/footer-section.test.tsx +46 -0
  63. package/src/blocks/marketing/footers/footer-section.tsx +532 -0
  64. package/src/blocks/marketing/navbars/navbar-public-api.test.tsx +57 -0
  65. package/src/blocks/marketing/navbars/navbar.mega.test.tsx +149 -0
  66. package/src/blocks/marketing/navbars/navbar.test.tsx +155 -0
  67. package/src/blocks/marketing/navbars/navbar.tsx +735 -0
  68. package/src/blocks/marketing/testimonials/testimonial-section.test.tsx +171 -0
  69. package/src/blocks/marketing/testimonials/testimonial-section.tsx +237 -0
  70. package/src/index.ts +156 -128
  71. package/src/lib/contracts-curated.test.ts +47 -29
  72. package/src/lib/contracts.test.ts +198 -2
  73. package/src/lib/contracts.ts +410 -16
  74. package/src/ui/button-group.tsx +1 -1
  75. package/src/ui/carousel.tsx +1 -1
  76. package/src/ui/dialog.tsx +1 -1
  77. package/src/ui/field.tsx +2 -2
  78. package/src/ui/input-group.tsx +3 -3
  79. package/src/ui/pagination.tsx +1 -1
  80. package/src/ui/sidebar.tsx +7 -7
  81. package/src/ui/toggle-group.tsx +1 -1
  82. package/tsconfig.build.json +12 -0
  83. package/tsup.config.ts +11 -7
  84. package/.turbo/turbo-build.log +0 -24
  85. package/.turbo/turbo-test.log +0 -47
  86. package/.turbo/turbo-type-check.log +0 -0
  87. package/dist/.tsbuildinfo +0 -1
  88. package/dist/contracts.d.mts +0 -1732
  89. package/dist/contracts.d.ts +0 -1732
  90. package/dist/contracts.js +0 -423
  91. package/dist/contracts.js.map +0 -1
  92. package/dist/contracts.mjs +0 -365
  93. package/dist/contracts.mjs.map +0 -1
  94. package/dist/index.d.mts +0 -3068
  95. package/dist/index.d.ts +0 -3068
  96. package/dist/index.js +0 -17834
  97. package/dist/index.js.map +0 -1
  98. package/dist/index.mjs +0 -17740
  99. package/dist/index.mjs.map +0 -1
  100. package/src/blocks/application/login-forms/login-page-1.tsx +0 -246
  101. package/src/blocks/application/login-forms/login-page-2.tsx +0 -207
  102. package/src/blocks/e-commerce/category-filters/category-filter-1.tsx +0 -260
  103. package/src/blocks/e-commerce/category-filters/category-filter-2-filter-panel.tsx +0 -222
  104. package/src/blocks/e-commerce/category-filters/category-filter-2.tsx +0 -921
  105. package/src/blocks/e-commerce/category-filters/category-filter-4-chip-rail.tsx +0 -57
  106. package/src/blocks/e-commerce/category-filters/category-filter-4-drawer.tsx +0 -124
  107. package/src/blocks/e-commerce/category-filters/category-filter-4-fields.tsx +0 -170
  108. package/src/blocks/e-commerce/category-filters/category-filter-4-sidebar.tsx +0 -52
  109. package/src/blocks/e-commerce/category-filters/category-filter-4-sort-sheet.tsx +0 -57
  110. package/src/blocks/e-commerce/category-filters/category-filter-4-state.ts +0 -68
  111. package/src/blocks/e-commerce/category-filters/category-filter-4.tsx +0 -298
  112. package/src/blocks/e-commerce/checkout-forms/card-formatting.test.ts +0 -47
  113. package/src/blocks/e-commerce/checkout-forms/card-formatting.ts +0 -9
  114. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-contact-step.tsx +0 -96
  115. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-order-summary.tsx +0 -252
  116. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-payment-step.tsx +0 -188
  117. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-progress.tsx +0 -36
  118. package/src/blocks/e-commerce/checkout-forms/checkout-form-1.test.tsx +0 -216
  119. package/src/blocks/e-commerce/checkout-forms/checkout-form-1.tsx +0 -338
  120. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-order-summary.tsx +0 -130
  121. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-payment-card.tsx +0 -175
  122. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-shipping-card.tsx +0 -190
  123. package/src/blocks/e-commerce/checkout-forms/checkout-form-2.tsx +0 -312
  124. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-information-step.tsx +0 -91
  125. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-order-summary.tsx +0 -110
  126. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-payment-step.tsx +0 -137
  127. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-progress.tsx +0 -68
  128. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-review-step.tsx +0 -79
  129. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-shipping-step.tsx +0 -172
  130. package/src/blocks/e-commerce/checkout-forms/checkout-form-3.tsx +0 -392
  131. package/src/blocks/e-commerce/product-categories/avatar-group.tsx +0 -86
  132. package/src/blocks/e-commerce/product-categories/product-category-1.tsx +0 -126
  133. package/src/blocks/e-commerce/product-categories/product-category-2.test.tsx +0 -51
  134. package/src/blocks/e-commerce/product-categories/product-category-2.tsx +0 -120
  135. package/src/blocks/e-commerce/product-categories/product-category-4.tsx +0 -129
  136. package/src/blocks/e-commerce/product-categories/product-category-5.tsx +0 -218
  137. package/src/blocks/e-commerce/product-list/product-card-1.test.tsx +0 -88
  138. package/src/blocks/e-commerce/product-list/product-card-1.tsx +0 -192
  139. package/src/blocks/e-commerce/product-list/product-card-2.tsx +0 -71
  140. package/src/blocks/e-commerce/product-list/product-card-3-reaction-toggle.tsx +0 -166
  141. package/src/blocks/e-commerce/product-list/product-card-3.tsx +0 -215
  142. package/src/blocks/e-commerce/product-list/product-card-5-checkbox-check.tsx +0 -98
  143. package/src/blocks/e-commerce/product-list/product-card-5-reaction-toggle.tsx +0 -171
  144. package/src/blocks/e-commerce/product-list/product-card-5.tsx +0 -367
  145. package/src/blocks/e-commerce/product-overview/product-overview-1.test.tsx +0 -182
  146. package/src/blocks/e-commerce/product-overview/product-overview-1.tsx +0 -370
  147. package/src/blocks/e-commerce/product-overview/product-overview-2.tsx +0 -272
  148. package/src/blocks/e-commerce/product-overview/product-overview-5-gallery.tsx +0 -59
  149. package/src/blocks/e-commerce/product-overview/product-overview-5.tsx +0 -274
  150. package/src/blocks/e-commerce/shopping-carts/shopping-cart-1-spinning-counter.tsx +0 -142
  151. package/src/blocks/e-commerce/shopping-carts/shopping-cart-1.tsx +0 -291
  152. package/src/blocks/e-commerce/shopping-carts/shopping-cart-2-item-row.tsx +0 -110
  153. package/src/blocks/e-commerce/shopping-carts/shopping-cart-2-recommendations.tsx +0 -51
  154. package/src/blocks/e-commerce/shopping-carts/shopping-cart-2-spinning-counter.tsx +0 -146
  155. package/src/blocks/e-commerce/shopping-carts/shopping-cart-2.tsx +0 -295
  156. package/src/blocks/e-commerce/shopping-carts/shopping-cart-3-spinning-counter.tsx +0 -142
  157. package/src/blocks/e-commerce/shopping-carts/shopping-cart-3.tsx +0 -342
  158. package/src/blocks/e-commerce/shopping-carts/shopping-cart-4-spinning-counter.tsx +0 -146
  159. package/src/blocks/e-commerce/shopping-carts/shopping-cart-4.test.tsx +0 -229
  160. package/src/blocks/e-commerce/storefront-hero/storefront-hero-1.test.tsx +0 -72
  161. package/src/blocks/e-commerce/storefront-hero/storefront-hero-1.tsx +0 -263
  162. package/src/blocks/e-commerce/storefront-hero/storefront-hero-2.tsx +0 -283
  163. package/src/blocks/e-commerce/storefront-hero/storefront-hero-5.tsx +0 -318
  164. package/src/blocks/e-commerce/storefront-hero/storefront-hero-6.tsx +0 -205
  165. package/src/blocks/marketing/features/feature-1.tsx +0 -97
  166. package/src/blocks/marketing/features/feature-2.tsx +0 -82
  167. package/src/blocks/marketing/footers/footer-section-1.test.tsx +0 -117
  168. package/src/blocks/marketing/footers/footer-section-1.tsx +0 -178
  169. package/src/blocks/marketing/footers/footer-section-3.tsx +0 -192
  170. package/src/blocks/marketing/footers/footer-section-4.tsx +0 -355
  171. package/src/blocks/marketing/navbars/navbar-1.tsx +0 -267
  172. package/src/blocks/marketing/navbars/navbar-2.tsx +0 -351
  173. package/src/blocks/marketing/navbars/navbar-3.tsx +0 -303
  174. package/src/blocks/marketing/navbars/navbar-4-account-menu.test.tsx +0 -38
  175. package/src/blocks/marketing/navbars/navbar-4-like-button.tsx +0 -177
  176. package/src/blocks/marketing/navbars/navbar-4-product-grid.tsx +0 -219
  177. package/src/blocks/marketing/testimonials/testimonial-1.tsx +0 -141
  178. package/src/blocks/marketing/testimonials/testimonial-2.tsx +0 -108
package/src/index.ts CHANGED
@@ -16,77 +16,93 @@ export {
16
16
  CardContent,
17
17
  } from './ui/card'
18
18
 
19
- export { default as Navbar1 } from './blocks/marketing/navbars/navbar-1'
20
- export { default as Navbar2 } from './blocks/marketing/navbars/navbar-2'
21
- export { default as Navbar3 } from './blocks/marketing/navbars/navbar-3'
22
- export { default as Navbar4 } from './blocks/marketing/navbars/navbar-4'
19
+ export { default as Navbar } from './blocks/marketing/navbars/navbar'
20
+ export { default as StorefrontNavbar } from './blocks/e-commerce/navigation/storefront-navbar'
23
21
  export { default as Banner1 } from './blocks/marketing/banners/banner-1'
24
22
  export { default as HeroSection1 } from './blocks/marketing/hero-sections/hero-section-1'
25
23
  export { default as CtaSection1 } from './blocks/marketing/cta/cta-section-1'
26
- export { default as Feature1 } from './blocks/marketing/features/feature-1'
27
- export { default as Feature2 } from './blocks/marketing/features/feature-2'
28
- export { default as Testimonial1 } from './blocks/marketing/testimonials/testimonial-1'
29
- export { default as Testimonial2 } from './blocks/marketing/testimonials/testimonial-2'
24
+ export { default as Feature } from './blocks/marketing/features/feature'
25
+ export { TestimonialSection } from './blocks/marketing/testimonials/testimonial-section'
30
26
  export { default as FaqBlock1 } from './blocks/marketing/faq/faq-block-1'
31
27
  export { default as PricingSection1 } from './blocks/marketing/pricing/pricing-section-1'
32
28
  export type { CtaSection1Props } from './blocks/marketing/cta/cta-section-1'
33
29
  export type { FaqBlock1Props, FaqItem } from './blocks/marketing/faq/faq-block-1'
34
- export type { Feature1Props, Feature1Item } from './blocks/marketing/features/feature-1'
35
- export type { Feature2Props, Feature2Item } from './blocks/marketing/features/feature-2'
30
+ export type {
31
+ FeatureProps,
32
+ FeatureItem,
33
+ FeaturePresentation,
34
+ } from './blocks/marketing/features/feature'
36
35
  export type { LogoCloud1Props, LogoCloud1Platform } from './blocks/marketing/logo-clouds/logo-cloud-1'
37
36
  export type { PricingSection1Props, PricingTier } from './blocks/marketing/pricing/pricing-section-1'
38
37
  export type { Statistic1Props, StatisticItem } from './blocks/marketing/statistics/statistic-1'
39
- export type { Testimonial1Props, Testimonial1Item } from './blocks/marketing/testimonials/testimonial-1'
40
- export type { Testimonial2Props, Testimonial2Item } from './blocks/marketing/testimonials/testimonial-2'
38
+ export type {
39
+ TestimonialItem,
40
+ TestimonialCarouselLabels,
41
+ TestimonialSectionProps,
42
+ } from './blocks/marketing/testimonials/testimonial-section'
41
43
  export { default as Statistic1 } from './blocks/marketing/statistics/statistic-1'
42
44
  export { default as LogoCloud1 } from './blocks/marketing/logo-clouds/logo-cloud-1'
43
- export { default as FooterSection1 } from './blocks/marketing/footers/footer-section-1'
44
- export { default as FooterSection3 } from './blocks/marketing/footers/footer-section-3'
45
- export type { FooterSection3Props, FooterLinkColumn, FooterLink, SocialLink } from './blocks/marketing/footers/footer-section-3'
46
- export { default as FooterSection4 } from './blocks/marketing/footers/footer-section-4'
45
+ export { FooterSection } from './blocks/marketing/footers/footer-section'
47
46
  export type {
48
- FooterSection4Props,
49
- FooterSection4Contact,
50
- FooterSection4Link,
51
- FooterSection4LinkColumn,
52
- FooterSection4SocialIcon,
53
- FooterSection4SocialLink,
54
- } from './blocks/marketing/footers/footer-section-4'
55
- export { default as ProductCard1 } from './blocks/e-commerce/product-list/product-card-1'
56
- export { default as ProductCard2 } from './blocks/e-commerce/product-list/product-card-2'
57
- export { default as ProductCard3 } from './blocks/e-commerce/product-list/product-card-3'
58
- export { default as ProductCard5 } from './blocks/e-commerce/product-list/product-card-5'
59
- export { default as ProductShowcase1 } from './blocks/e-commerce/product-list/product-showcase-1'
47
+ FooterBrandAccent,
48
+ FooterContact,
49
+ FooterContactItem,
50
+ FooterLink as CanonicalFooterLink,
51
+ FooterLinkBehavior,
52
+ FooterLinkColumn as CanonicalFooterLinkColumn,
53
+ FooterNewsletter,
54
+ FooterPresentation,
55
+ FooterSectionProps,
56
+ FooterSocialLink,
57
+ } from './blocks/marketing/footers/footer-section'
60
58
  export type {
61
- ProductCard1Product,
62
- ProductCard1Props,
63
- } from './blocks/e-commerce/product-list/product-card-1'
59
+ NavbarFeatured,
60
+ NavbarGroup,
61
+ NavbarIcon,
62
+ NavbarIconMap,
63
+ NavbarItem,
64
+ NavbarLink,
65
+ NavbarPresentation,
66
+ NavbarProps,
67
+ } from './blocks/marketing/navbars/navbar'
68
+ export type { StorefrontNavbarProps } from './blocks/e-commerce/navigation/storefront-navbar'
69
+ export { ProductCard } from './blocks/e-commerce/product-list/product-card'
70
+ export type {
71
+ ProductCardProps,
72
+ ProductCardPresentation,
73
+ } from './blocks/e-commerce/product-list/product-card'
74
+ export { ProductGrid } from './blocks/e-commerce/product-list/product-grid'
75
+ export type { ProductGridProps } from './blocks/e-commerce/product-list/product-grid'
76
+ export { default as ProductShowcase1 } from './blocks/e-commerce/product-list/product-showcase-1'
64
77
  export type { ProductShowcase1Props } from './blocks/e-commerce/product-list/product-showcase-1'
65
- export { default as ProductOverview1 } from './blocks/e-commerce/product-overview/product-overview-1'
78
+ export { default as ProductOverview } from './blocks/e-commerce/product-overview/product-overview'
66
79
  export type {
67
- ProductOverview1Props,
68
- ProductOverview1Rating,
80
+ ProductOverviewProps,
81
+ ProductOverviewRating,
82
+ ProductOverviewPresentation,
83
+ ProductOverviewReview,
69
84
  ProductDetailProduct,
70
85
  ProductDetailVariant,
71
- } from './blocks/e-commerce/product-overview/product-overview-1'
72
- export { default as ProductOverview2 } from './blocks/e-commerce/product-overview/product-overview-2'
73
- export { default as ProductOverview5 } from './blocks/e-commerce/product-overview/product-overview-5'
74
- export type { ProductOverview2Props, ProductOverview2Product } from './blocks/e-commerce/product-overview/product-overview-2'
75
- export type { ProductOverview5Props, ProductOverview5Product, ProductOverview5Review } from './blocks/e-commerce/product-overview/product-overview-5'
86
+ } from './blocks/e-commerce/product-overview/product-overview'
76
87
  export { default as ProductQuickView } from './blocks/e-commerce/product-overview/product-quick-view'
77
88
  export { default as ReviewRating1 } from './blocks/e-commerce/reviews/review-rating-1'
78
89
  export type { ReviewRating1Review } from './blocks/e-commerce/reviews/review-rating-1'
79
90
  export { default as ReviewRating2 } from './blocks/e-commerce/reviews/review-rating-2'
80
- export { default as ProductCategory1 } from './blocks/e-commerce/product-categories/product-category-1'
91
+ export { default as ProductCategory } from './blocks/e-commerce/product-categories/product-category'
92
+ export type {
93
+ ProductCategoryProps,
94
+ ProductCategoryPresentation,
95
+ } from './blocks/e-commerce/product-categories/product-category'
96
+ export { default as CategoryCard } from './blocks/e-commerce/product-categories/category-card'
81
97
  export type {
82
- ProductCategory1Category,
83
- ProductCategory1CategoryIcon,
84
- ProductCategory1Props,
85
- } from './blocks/e-commerce/product-categories/product-category-1'
86
- export { default as ProductCategory2 } from './blocks/e-commerce/product-categories/product-category-2'
87
- export type { ProductCategory2Category, ProductCategory2Props } from './blocks/e-commerce/product-categories/product-category-2'
88
- export { default as ProductCategory4 } from './blocks/e-commerce/product-categories/product-category-4'
89
- export { default as ProductCategory5 } from './blocks/e-commerce/product-categories/product-category-5'
98
+ CategoryCardProps,
99
+ CategoryCardPresentation,
100
+ } from './blocks/e-commerce/product-categories/category-card'
101
+ export { default as CategoryGrid } from './blocks/e-commerce/product-categories/product-category-grid'
102
+ export type {
103
+ CategoryGridProps,
104
+ CategoryGridPresentation,
105
+ } from './blocks/e-commerce/product-categories/product-category-grid'
90
106
  export { MegaMenu, megaMenuPropsSchema } from './blocks/e-commerce/navigation/mega-menu'
91
107
  export type { MegaMenuProps } from './blocks/e-commerce/navigation/mega-menu'
92
108
  export { MobileCategoryDrawer, mobileCategoryDrawerPropsSchema } from './blocks/e-commerce/navigation/mobile-category-drawer'
@@ -103,72 +119,49 @@ export { MobileBottomNav, mobileBottomNavItemSchema, mobileBottomNavPropsSchema
103
119
  export type { MobileBottomNavItem, MobileBottomNavProps } from './blocks/e-commerce/navigation/mobile-bottom-nav'
104
120
  export { menuItemSchema, collectionItemSchema } from './lib/types/menu'
105
121
  export type { MenuItem, CollectionItem } from './lib/types/menu'
106
- export { default as CategoryFilter1 } from './blocks/e-commerce/category-filters/category-filter-1'
122
+ export { CategoryListing, CategoryListingStatusView, buildFilterChange, reconcileSearchDraft, toggleFilterValue } from './blocks/e-commerce/category-filters/category-listing'
107
123
  export type {
108
- CategoryFilter1Category,
109
- CategoryFilter1PriceRange,
110
- CategoryFilter1SortOption,
111
- } from './blocks/e-commerce/category-filters/category-filter-1'
112
- export { default as CategoryFilter2 } from './blocks/e-commerce/category-filters/category-filter-2'
113
- export { CategoryFilter2StatusView } from './blocks/e-commerce/category-filters/category-filter-2'
124
+ CategoryListingActiveFilter,
125
+ CategoryListingActiveFilterKind,
126
+ CategoryListingFacetGroup,
127
+ CategoryListingFacetOption,
128
+ CategoryListingFilters,
129
+ CategoryListingOption,
130
+ CategoryListingPresentation,
131
+ CategoryListingPriceRange,
132
+ CategoryListingProps,
133
+ CategoryListingQueryError,
134
+ CategoryListingSortOption,
135
+ CategoryListingStatus,
136
+ CategoryListingStatusViewProps,
137
+ } from './blocks/e-commerce/category-filters/category-listing'
138
+ export { default as ShoppingCart } from './blocks/e-commerce/shopping-carts/shopping-cart'
114
139
  export type {
115
- FilterProduct,
116
- CategoryFilter2Props,
117
- CategoryFilter2Category,
118
- CategoryFilter2Collection,
119
- CategoryFilter2Color,
120
- CategoryFilter2PriceRange,
121
- CategoryFilter2SortOption,
122
- CategoryFilter2Filters,
123
- CategoryFilter2Status,
124
- CategoryFilter2StatusViewProps,
125
- CategoryFilter2QueryError,
126
- CategoryFilter2ActiveFilter,
127
- CategoryFilter2ActiveFilterKind,
128
- } from './blocks/e-commerce/category-filters/category-filter-2'
129
- export { default as CategoryFilter4 } from './blocks/e-commerce/category-filters/category-filter-4'
130
- export type { CategoryFilter4Props, CategoryFilter4Product, CategoryFilter4Facets } from './blocks/e-commerce/category-filters/category-filter-4'
131
- export { default as ShoppingCart1 } from './blocks/e-commerce/shopping-carts/shopping-cart-1'
132
- export { default as ShoppingCart2 } from './blocks/e-commerce/shopping-carts/shopping-cart-2'
133
- export { default as ShoppingCart4 } from './blocks/e-commerce/shopping-carts/shopping-cart-4'
134
- export { default as ShoppingCart3 } from './blocks/e-commerce/shopping-carts/shopping-cart-3'
135
- export type { ShoppingCart3Props, ShoppingCart3CartItem } from './blocks/e-commerce/shopping-carts/shopping-cart-3'
136
- export type { ShoppingCart2Props, ShoppingCart2Item } from './blocks/e-commerce/shopping-carts/shopping-cart-2'
137
- export type { ShoppingCart4Props, ShoppingCart4Item } from './blocks/e-commerce/shopping-carts/shopping-cart-4'
140
+ ShoppingCartProps,
141
+ ShoppingCartPromotion,
142
+ ShoppingCartPresentation,
143
+ ShoppingCartTotalsState,
144
+ } from './blocks/e-commerce/shopping-carts/shopping-cart'
138
145
  export { default as StoreContainer1 } from './blocks/e-commerce/store-containers/store-container-1'
139
146
  export type { StoreContainer1Props } from './blocks/e-commerce/store-containers/store-container-1'
140
- export { default as CheckoutForm1 } from './blocks/e-commerce/checkout-forms/checkout-form-1'
141
- export { default as CheckoutForm2 } from './blocks/e-commerce/checkout-forms/checkout-form-2'
142
- export { default as CheckoutForm3 } from './blocks/e-commerce/checkout-forms/checkout-form-3'
143
- export { default as CheckoutConfirmation } from './blocks/e-commerce/checkout-forms/checkout-confirmation'
144
- export type {
145
- CheckoutForm1Props,
146
- CheckoutForm1FormData,
147
- CheckoutForm1FieldErrors,
148
- CheckoutForm1FieldDescriptions,
149
- CheckoutForm1ChangeHandler,
150
- CheckoutForm1OrderSummary,
151
- CheckoutForm1OrderSummaryItem,
152
- CheckoutForm1CountryOption,
153
- CheckoutForm1ShippingOption,
154
- CheckoutForm1Totals,
155
- CheckoutForm1TotalsState,
156
- } from './blocks/e-commerce/checkout-forms/checkout-form-1'
147
+ export { default as Checkout } from './blocks/e-commerce/checkout-forms/checkout'
157
148
  export type {
158
- CheckoutForm2Props,
159
- CheckoutForm2Item,
160
- CheckoutForm2Data,
161
- CheckoutForm2FieldErrors,
162
- CheckoutForm2FieldDescriptions,
163
- CheckoutForm2Totals,
164
- } from './blocks/e-commerce/checkout-forms/checkout-form-2'
165
- export type {
166
- CheckoutForm3Props,
167
- CheckoutForm3CartItem,
168
- CheckoutForm3FormData,
169
- CheckoutForm3ShippingMethod,
170
- CheckoutForm3CountryOption,
171
- } from './blocks/e-commerce/checkout-forms/checkout-form-3'
149
+ CheckoutProps,
150
+ CheckoutValues,
151
+ CheckoutPresentation,
152
+ CheckoutStepId,
153
+ CheckoutLabels,
154
+ CheckoutValuesFieldErrors,
155
+ CheckoutFieldDescriptions,
156
+ CheckoutChangeHandler,
157
+ CheckoutOrderSummary,
158
+ CheckoutOrderLine,
159
+ CheckoutTotals,
160
+ CheckoutTotalsState,
161
+ CheckoutCountryOption,
162
+ CheckoutShippingOption,
163
+ } from './blocks/e-commerce/checkout-forms/checkout'
164
+ export { default as CheckoutConfirmation } from './blocks/e-commerce/checkout-forms/checkout-confirmation'
172
165
  export type {
173
166
  CheckoutConfirmationProps,
174
167
  FulfilmentStage,
@@ -181,22 +174,24 @@ export type {
181
174
  export type { CheckoutFieldError, CheckoutFieldErrors } from './blocks/e-commerce/checkout-forms/checkout-form-types'
182
175
  export { default as OrderHistory1 } from './blocks/e-commerce/order-history/order-history-1'
183
176
  export { default as OrderHistory2 } from './blocks/e-commerce/order-history/order-history-2'
184
- export { default as StorefrontHero1 } from './blocks/e-commerce/storefront-hero/storefront-hero-1'
177
+ export { default as StorefrontHero } from './blocks/e-commerce/storefront-hero/storefront-hero'
185
178
  export type {
186
179
  FeaturedProduct,
187
- StorefrontHero1Props,
188
- } from './blocks/e-commerce/storefront-hero/storefront-hero-1'
189
- export { default as StorefrontHero2 } from './blocks/e-commerce/storefront-hero/storefront-hero-2'
190
- export { default as StorefrontHero5 } from './blocks/e-commerce/storefront-hero/storefront-hero-5'
191
- export { default as StorefrontHero6 } from './blocks/e-commerce/storefront-hero/storefront-hero-6'
180
+ HeroImage,
181
+ HeroDepartment,
182
+ HeroFeaturedDeal,
183
+ HeroStoreLocator,
184
+ HeroDeal,
185
+ HeroCategory,
186
+ StorefrontHeroPresentation,
187
+ StorefrontHeroProps,
188
+ } from './blocks/e-commerce/storefront-hero/storefront-hero'
192
189
  export { default as AppShell1 } from './blocks/application/app-shells/app-shell-1'
193
- export { default as LoginPage1 } from './blocks/application/login-forms/login-page-1'
194
- export { default as LoginPage2 } from './blocks/application/login-forms/login-page-2'
190
+ export { default as LoginPage } from './blocks/application/login-forms/login-page'
195
191
  export { default as SignUpPage1 } from './blocks/application/signup-forms/signup-page-1'
196
192
  export { default as ForgotPasswordPage1 } from './blocks/application/password-recovery/forgot-password-page-1'
197
193
  export { default as Verify1 } from './blocks/application/verification/verify-1'
198
- export type { LoginPage1Props, LoginPage1FormData, LoginPage1SocialButton } from './blocks/application/login-forms/login-page-1'
199
- export type { LoginPage2Props, LoginPage2SocialButton } from './blocks/application/login-forms/login-page-2'
194
+ export type { LoginPageProps, LoginPageFormData, LoginPageProvider } from './blocks/application/login-forms/login-page'
200
195
  export type { SignUpPage1Props, SignUpPage1Data, SignUpPage1SocialButton } from './blocks/application/signup-forms/signup-page-1'
201
196
  export type { ForgotPasswordPage1Props } from './blocks/application/password-recovery/forgot-password-page-1'
202
197
  export type { Verify1Props } from './blocks/application/verification/verify-1'
@@ -215,14 +210,25 @@ export {
215
210
  cartTotalsSchema,
216
211
  productDetailProductSchema,
217
212
  productDetailVariantSchema,
218
- productOverview1PropsSchema,
213
+ productOverviewPropsSchema,
214
+ storefrontHeroPropsSchema,
215
+ storefrontHeroProductSchema,
219
216
  buttonPropsSchema,
220
217
  storeContainer1PropsSchema,
221
- productCard1PropsSchema,
218
+ productCardPropsSchema,
219
+ productGridPropsSchema,
222
220
  productPresentationSchema,
223
221
  productShowcase1PropsSchema,
224
- shoppingCart4PropsSchema,
225
- navbar4PropsSchema,
222
+ shoppingCartPropsSchema,
223
+ shoppingCartItemSchema,
224
+ shoppingCartSuggestionSchema,
225
+ navbarPresentationSchema,
226
+ navbarItemSchema,
227
+ navbarGroupSchema,
228
+ navbarLinkSchema,
229
+ navbarFeaturedSchema,
230
+ navbarPropsSchema,
231
+ storefrontNavbarPropsSchema,
226
232
  paymentMethodSchema,
227
233
  cardProductSchema,
228
234
  cartItemSchema,
@@ -232,19 +238,34 @@ export {
232
238
  navCartItemSchema,
233
239
  storeUserSchema,
234
240
  accountMenuItemSchema,
241
+ featurePropsSchema,
242
+ featureCardsSpecSchema,
243
+ featureSplitSpecSchema,
244
+ productCategoryItemSchema,
245
+ productCategoryPropsSchema,
235
246
  } from './lib/contracts'
236
247
  export type {
237
248
  ProductDetailProductSpec,
238
249
  ProductDetailVariantSpec,
239
- ProductOverview1SpecProps,
250
+ StorefrontHeroProduct,
251
+ StorefrontHeroSpecProps,
240
252
  CartTotals,
241
253
  ButtonSpecProps,
242
254
  StoreContainer1SpecProps,
243
- ProductCard1SpecProps,
255
+ ProductCardSpecProps,
256
+ ProductGridSpecProps,
244
257
  ProductPresentation,
245
258
  ProductShowcase1SpecProps,
246
- ShoppingCart4SpecProps,
247
- Navbar4SpecProps,
259
+ ShoppingCartItem,
260
+ ShoppingCartSuggestion,
261
+ ShoppingCartSpecProps,
262
+ NavbarPresentationSpec,
263
+ NavbarItemSpec,
264
+ NavbarGroupSpec,
265
+ NavbarLinkSpec,
266
+ NavbarFeaturedSpec,
267
+ NavbarSpecProps,
268
+ StorefrontNavbarSpecProps,
248
269
  CardProduct,
249
270
  CartItem,
250
271
  Promotion,
@@ -253,4 +274,11 @@ export type {
253
274
  NavCartItem,
254
275
  StoreUser,
255
276
  AccountMenuItem,
256
- } from './lib/contracts'
277
+ FeatureSpecProps,
278
+ FeatureCardsSpecProps,
279
+ FeatureSplitSpecProps,
280
+ ProductCategoryItem,
281
+ ProductCategorySpecProps,
282
+ CategoryCardSpecProps,
283
+ CategoryGridSpecProps,
284
+ } from './lib/contracts'
@@ -10,9 +10,9 @@ import {
10
10
  logoAccentSchema,
11
11
  moneySchema,
12
12
  navCartItemSchema,
13
- navbar4PropsSchema,
14
- productOverview1PropsSchema,
15
- shoppingCart4PropsSchema,
13
+ storefrontNavbarPropsSchema,
14
+ productOverviewPropsSchema,
15
+ shoppingCartPropsSchema,
16
16
  } from './contracts'
17
17
 
18
18
  const product = {
@@ -55,13 +55,13 @@ describe('moneySchema', () => {
55
55
  })
56
56
  })
57
57
 
58
- describe('productOverview1PropsSchema', () => {
58
+ describe('productOverviewPropsSchema', () => {
59
59
  it('accepts a product whose variant price is omitted or null (unavailable)', () => {
60
- expect(productOverview1PropsSchema.safeParse({ product }).success).toBe(true)
60
+ expect(productOverviewPropsSchema.safeParse({ product }).success).toBe(true)
61
61
  })
62
62
 
63
63
  it('accepts an explicit controlled selected variant id', () => {
64
- expect(productOverview1PropsSchema.safeParse({ product, selectedVariantId: 'v1' }).success).toBe(true)
64
+ expect(productOverviewPropsSchema.safeParse({ product, selectedVariantId: 'v1' }).success).toBe(true)
65
65
  })
66
66
 
67
67
  it('rejects a variant missing selectedOptions', () => {
@@ -69,7 +69,7 @@ describe('productOverview1PropsSchema', () => {
69
69
  ...product,
70
70
  variants: [{ id: 'v1', title: 'x', availableForSale: true, price: null }],
71
71
  }
72
- expect(productOverview1PropsSchema.safeParse({ product: bad }).success).toBe(false)
72
+ expect(productOverviewPropsSchema.safeParse({ product: bad }).success).toBe(false)
73
73
  })
74
74
  })
75
75
 
@@ -113,12 +113,12 @@ describe('optional brand seams — present, omitted, invalid', () => {
113
113
  utilityLinks: [],
114
114
  logoText: 'ElectroCuba',
115
115
  }
116
- const parsed = navbar4PropsSchema.parse(base)
116
+ const parsed = storefrontNavbarPropsSchema.parse(base)
117
117
  expect(parsed.logoAccent).toBeUndefined()
118
118
  })
119
119
 
120
120
  it('accepts navbar props with the accent present', () => {
121
- const parsed = navbar4PropsSchema.parse({
121
+ const parsed = storefrontNavbarPropsSchema.parse({
122
122
  storeCategories: [],
123
123
  shippingNote: 'Catálogo en línea',
124
124
  utilityLinks: [],
@@ -135,8 +135,8 @@ describe('optional brand seams — present, omitted, invalid', () => {
135
135
  utilityLinks: [],
136
136
  logoText: 'My Shop',
137
137
  }
138
- expect(navbar4PropsSchema.parse(base).className).toBeUndefined()
139
- expect(navbar4PropsSchema.parse({ ...base, className: 'bg-brand-nav text-brand-nav-foreground' }).className).toBe(
138
+ expect(storefrontNavbarPropsSchema.parse(base).className).toBeUndefined()
139
+ expect(storefrontNavbarPropsSchema.parse({ ...base, className: 'bg-brand-nav text-brand-nav-foreground' }).className).toBe(
140
140
  'bg-brand-nav text-brand-nav-foreground',
141
141
  )
142
142
  })
@@ -147,24 +147,6 @@ describe('optional brand seams — present, omitted, invalid', () => {
147
147
  })
148
148
  })
149
149
 
150
- describe('shoppingCart4PropsSchema — authoritative totals', () => {
151
- it('accepts backend totals and a controlled totals state', () => {
152
- const result = shoppingCart4PropsSchema.safeParse({
153
- items: [],
154
- totals: {
155
- subtotal: { amount: '0', currencyCode: 'USD' },
156
- total: { amount: '0', currencyCode: 'USD' },
157
- },
158
- totalsState: 'idle',
159
- })
160
- expect(result.success).toBe(true)
161
- })
162
-
163
- it('rejects an unknown totals state', () => {
164
- expect(shoppingCart4PropsSchema.safeParse({ items: [], totalsState: 'loading' }).success).toBe(false)
165
- })
166
- })
167
-
168
150
  describe('faqBlock1PropsSchema / ctaSection1PropsSchema — bounded editorial sections', () => {
169
151
  const faqItem = { value: 'q1', question: '¿Envían a todo el país?', answer: 'Sí.' }
170
152
 
@@ -205,3 +187,39 @@ describe('faqBlock1PropsSchema / ctaSection1PropsSchema — bounded editorial se
205
187
  expect('onPrimaryClick' in parsed).toBe(false)
206
188
  })
207
189
  })
190
+
191
+ describe('shoppingCartPropsSchema — canonical Money-only cart lines', () => {
192
+ const money = { amount: '22.22', currencyCode: 'USD' }
193
+
194
+ it('accepts a canonical Money line keyed by backend line id', () => {
195
+ const result = shoppingCartPropsSchema.safeParse({
196
+ items: [{ id: 'line_1', name: 'Teclado', quantity: 2, unitPrice: money, lineTotal: money }],
197
+ totals: { subtotal: money, total: money },
198
+ totalsState: 'idle',
199
+ })
200
+ expect(result.success).toBe(true)
201
+ })
202
+
203
+ it('rejects a legacy numeric-price line without canonical Money', () => {
204
+ const result = shoppingCartPropsSchema.safeParse({
205
+ items: [{ id: 'line_1', name: 'Teclado', price: 10, quantity: 2 }],
206
+ })
207
+ expect(result.success).toBe(false)
208
+ })
209
+
210
+ it('rejects an unknown totals state', () => {
211
+ const result = shoppingCartPropsSchema.safeParse({
212
+ items: [],
213
+ totalsState: 'loading',
214
+ })
215
+ expect(result.success).toBe(false)
216
+ })
217
+
218
+ it('omits an absent suggestion image and price honestly', () => {
219
+ const result = shoppingCartPropsSchema.safeParse({
220
+ items: [{ id: 'line_1', name: 'x', quantity: 1, unitPrice: money, lineTotal: money }],
221
+ recentlyViewed: [{ id: 'p1', name: 'Mouse' }],
222
+ })
223
+ expect(result.success).toBe(true)
224
+ })
225
+ })