@cimplify/sdk 0.44.33 → 0.45.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 (450) hide show
  1. package/README.md +21 -16
  2. package/dist/styles.css +1 -1
  3. package/package.json +5 -9
  4. package/dist/cli/commands/deploy.mjs +0 -569
  5. package/dist/cli/commands/dev.mjs +0 -434
  6. package/dist/cli/commands/domains.mjs +0 -653
  7. package/dist/cli/commands/env.mjs +0 -610
  8. package/dist/cli/commands/link.mjs +0 -325
  9. package/dist/cli/commands/login.mjs +0 -515
  10. package/dist/cli/commands/logout.mjs +0 -54
  11. package/dist/cli/commands/logs.mjs +0 -358
  12. package/dist/cli/commands/projects.mjs +0 -327
  13. package/dist/cli/commands/rollback.mjs +0 -477
  14. package/dist/cli/commands/status.mjs +0 -380
  15. package/dist/cli/commands/unlink.mjs +0 -58
  16. package/dist/cli/commands/whoami.mjs +0 -234
  17. package/dist/cli.js +0 -184
  18. package/dist/dispatcher.mjs +0 -286
  19. package/registry/booking-page.json +0 -18
  20. package/registry/bookings-page.json +0 -17
  21. package/registry/service-card.json +0 -16
  22. package/registry/service-grid.json +0 -16
  23. package/templates/storefront-bakery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  24. package/templates/storefront-bakery/.cursor/rules/cimplify-storefront.mdc +0 -25
  25. package/templates/storefront-bakery/.env.example +0 -16
  26. package/templates/storefront-bakery/AGENTS.md +0 -120
  27. package/templates/storefront-bakery/CLAUDE.md +0 -22
  28. package/templates/storefront-bakery/README.md +0 -73
  29. package/templates/storefront-bakery/__tests__/brand.test.ts +0 -4
  30. package/templates/storefront-bakery/__tests__/cart-flow.test.ts +0 -4
  31. package/templates/storefront-bakery/__tests__/contract.test.ts +0 -4
  32. package/templates/storefront-bakery/app/about/page.tsx +0 -38
  33. package/templates/storefront-bakery/app/accessibility/page.tsx +0 -11
  34. package/templates/storefront-bakery/app/account/addresses/page.tsx +0 -21
  35. package/templates/storefront-bakery/app/account/orders/page.tsx +0 -21
  36. package/templates/storefront-bakery/app/account/page.tsx +0 -22
  37. package/templates/storefront-bakery/app/account/settings/page.tsx +0 -21
  38. package/templates/storefront-bakery/app/cart/page.tsx +0 -9
  39. package/templates/storefront-bakery/app/categories/[slug]/listing-client.tsx +0 -19
  40. package/templates/storefront-bakery/app/categories/[slug]/page.tsx +0 -118
  41. package/templates/storefront-bakery/app/checkout/page.tsx +0 -17
  42. package/templates/storefront-bakery/app/collections/[slug]/listing-client.tsx +0 -20
  43. package/templates/storefront-bakery/app/collections/[slug]/page.tsx +0 -118
  44. package/templates/storefront-bakery/app/contact/contact-form.tsx +0 -109
  45. package/templates/storefront-bakery/app/contact/page.tsx +0 -54
  46. package/templates/storefront-bakery/app/error.tsx +0 -60
  47. package/templates/storefront-bakery/app/faq/page.tsx +0 -46
  48. package/templates/storefront-bakery/app/globals.css +0 -47
  49. package/templates/storefront-bakery/app/layout.tsx +0 -82
  50. package/templates/storefront-bakery/app/llms.txt/route.ts +0 -94
  51. package/templates/storefront-bakery/app/login/page.tsx +0 -17
  52. package/templates/storefront-bakery/app/not-found.tsx +0 -39
  53. package/templates/storefront-bakery/app/opensearch.xml/route.ts +0 -37
  54. package/templates/storefront-bakery/app/orders/[id]/page.tsx +0 -21
  55. package/templates/storefront-bakery/app/page.tsx +0 -97
  56. package/templates/storefront-bakery/app/privacy/page.tsx +0 -44
  57. package/templates/storefront-bakery/app/returns/page.tsx +0 -11
  58. package/templates/storefront-bakery/app/robots.ts +0 -18
  59. package/templates/storefront-bakery/app/search/page.tsx +0 -38
  60. package/templates/storefront-bakery/app/search/search-client.tsx +0 -7
  61. package/templates/storefront-bakery/app/shipping/page.tsx +0 -16
  62. package/templates/storefront-bakery/app/shop/page.tsx +0 -31
  63. package/templates/storefront-bakery/app/shop/shop-client.tsx +0 -27
  64. package/templates/storefront-bakery/app/signup/page.tsx +0 -17
  65. package/templates/storefront-bakery/app/sitemap-page/page.tsx +0 -167
  66. package/templates/storefront-bakery/app/sitemap.ts +0 -62
  67. package/templates/storefront-bakery/app/terms/page.tsx +0 -44
  68. package/templates/storefront-bakery/app/track-order/page.tsx +0 -24
  69. package/templates/storefront-bakery/app/track-order/track-order-form.tsx +0 -69
  70. package/templates/storefront-bakery/components/account-iframe.tsx +0 -13
  71. package/templates/storefront-bakery/components/cart-drawer.tsx +0 -14
  72. package/templates/storefront-bakery/components/cart-pill.tsx +0 -36
  73. package/templates/storefront-bakery/components/category-grid.tsx +0 -28
  74. package/templates/storefront-bakery/components/collection-strip.tsx +0 -45
  75. package/templates/storefront-bakery/components/footer.tsx +0 -148
  76. package/templates/storefront-bakery/components/header.tsx +0 -43
  77. package/templates/storefront-bakery/components/hero.tsx +0 -25
  78. package/templates/storefront-bakery/components/nav-link.tsx +0 -20
  79. package/templates/storefront-bakery/components/policy-page.tsx +0 -49
  80. package/templates/storefront-bakery/components/product-modal.tsx +0 -104
  81. package/templates/storefront-bakery/components/providers.tsx +0 -35
  82. package/templates/storefront-bakery/components/store-product-card.tsx +0 -87
  83. package/templates/storefront-bakery/lib/brand.ts +0 -570
  84. package/templates/storefront-bakery/lib/cart.ts +0 -12
  85. package/templates/storefront-bakery/next.config.ts +0 -42
  86. package/templates/storefront-bakery/package.json +0 -35
  87. package/templates/storefront-bakery/postcss.config.mjs +0 -7
  88. package/templates/storefront-bakery/tsconfig.json +0 -23
  89. package/templates/storefront-bakery/vitest.config.ts +0 -9
  90. package/templates/storefront-fashion/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  91. package/templates/storefront-fashion/.cursor/rules/cimplify-storefront.mdc +0 -25
  92. package/templates/storefront-fashion/.env.example +0 -16
  93. package/templates/storefront-fashion/AGENTS.md +0 -126
  94. package/templates/storefront-fashion/CLAUDE.md +0 -22
  95. package/templates/storefront-fashion/README.md +0 -77
  96. package/templates/storefront-fashion/__tests__/brand.test.ts +0 -4
  97. package/templates/storefront-fashion/__tests__/cart-flow.test.ts +0 -55
  98. package/templates/storefront-fashion/__tests__/contract.test.ts +0 -4
  99. package/templates/storefront-fashion/app/about/page.tsx +0 -41
  100. package/templates/storefront-fashion/app/accessibility/page.tsx +0 -11
  101. package/templates/storefront-fashion/app/account/addresses/page.tsx +0 -21
  102. package/templates/storefront-fashion/app/account/orders/page.tsx +0 -21
  103. package/templates/storefront-fashion/app/account/page.tsx +0 -22
  104. package/templates/storefront-fashion/app/account/settings/page.tsx +0 -21
  105. package/templates/storefront-fashion/app/cart/page.tsx +0 -9
  106. package/templates/storefront-fashion/app/categories/[slug]/listing-client.tsx +0 -19
  107. package/templates/storefront-fashion/app/categories/[slug]/page.tsx +0 -130
  108. package/templates/storefront-fashion/app/checkout/page.tsx +0 -17
  109. package/templates/storefront-fashion/app/collections/[slug]/listing-client.tsx +0 -20
  110. package/templates/storefront-fashion/app/collections/[slug]/page.tsx +0 -130
  111. package/templates/storefront-fashion/app/contact/contact-form.tsx +0 -109
  112. package/templates/storefront-fashion/app/contact/page.tsx +0 -54
  113. package/templates/storefront-fashion/app/error.tsx +0 -61
  114. package/templates/storefront-fashion/app/faq/page.tsx +0 -46
  115. package/templates/storefront-fashion/app/globals.css +0 -46
  116. package/templates/storefront-fashion/app/layout.tsx +0 -78
  117. package/templates/storefront-fashion/app/llms.txt/route.ts +0 -94
  118. package/templates/storefront-fashion/app/login/page.tsx +0 -17
  119. package/templates/storefront-fashion/app/lookbook/page.tsx +0 -132
  120. package/templates/storefront-fashion/app/not-found.tsx +0 -39
  121. package/templates/storefront-fashion/app/opensearch.xml/route.ts +0 -37
  122. package/templates/storefront-fashion/app/orders/[id]/page.tsx +0 -24
  123. package/templates/storefront-fashion/app/page.tsx +0 -183
  124. package/templates/storefront-fashion/app/privacy/page.tsx +0 -44
  125. package/templates/storefront-fashion/app/products/[slug]/page.tsx +0 -165
  126. package/templates/storefront-fashion/app/products/[slug]/product-detail.tsx +0 -70
  127. package/templates/storefront-fashion/app/returns/page.tsx +0 -11
  128. package/templates/storefront-fashion/app/robots.ts +0 -18
  129. package/templates/storefront-fashion/app/search/page.tsx +0 -38
  130. package/templates/storefront-fashion/app/search/search-client.tsx +0 -7
  131. package/templates/storefront-fashion/app/shipping/page.tsx +0 -16
  132. package/templates/storefront-fashion/app/shop/page.tsx +0 -63
  133. package/templates/storefront-fashion/app/shop/shop-client.tsx +0 -32
  134. package/templates/storefront-fashion/app/signup/page.tsx +0 -17
  135. package/templates/storefront-fashion/app/sitemap-page/page.tsx +0 -167
  136. package/templates/storefront-fashion/app/sitemap.ts +0 -59
  137. package/templates/storefront-fashion/app/size-guide/page.tsx +0 -155
  138. package/templates/storefront-fashion/app/terms/page.tsx +0 -44
  139. package/templates/storefront-fashion/app/track-order/page.tsx +0 -24
  140. package/templates/storefront-fashion/app/track-order/track-order-form.tsx +0 -69
  141. package/templates/storefront-fashion/components/account-iframe.tsx +0 -13
  142. package/templates/storefront-fashion/components/brand-marquee.tsx +0 -27
  143. package/templates/storefront-fashion/components/cart-drawer.tsx +0 -14
  144. package/templates/storefront-fashion/components/cart-pill.tsx +0 -36
  145. package/templates/storefront-fashion/components/category-grid.tsx +0 -28
  146. package/templates/storefront-fashion/components/category-tiles.tsx +0 -104
  147. package/templates/storefront-fashion/components/collection-strip.tsx +0 -45
  148. package/templates/storefront-fashion/components/feature-hero.tsx +0 -82
  149. package/templates/storefront-fashion/components/footer.tsx +0 -153
  150. package/templates/storefront-fashion/components/header.tsx +0 -43
  151. package/templates/storefront-fashion/components/hero.tsx +0 -28
  152. package/templates/storefront-fashion/components/nav-link.tsx +0 -20
  153. package/templates/storefront-fashion/components/newsletter.tsx +0 -50
  154. package/templates/storefront-fashion/components/policy-page.tsx +0 -49
  155. package/templates/storefront-fashion/components/promo-banner.tsx +0 -41
  156. package/templates/storefront-fashion/components/providers.tsx +0 -35
  157. package/templates/storefront-fashion/components/section-heading.tsx +0 -37
  158. package/templates/storefront-fashion/components/store-product-card.tsx +0 -87
  159. package/templates/storefront-fashion/components/trade-in-cta.tsx +0 -54
  160. package/templates/storefront-fashion/components/trust-bar.tsx +0 -66
  161. package/templates/storefront-fashion/e2e/visual.spec.ts +0 -52
  162. package/templates/storefront-fashion/lib/brand.ts +0 -518
  163. package/templates/storefront-fashion/lib/cart.ts +0 -12
  164. package/templates/storefront-fashion/next.config.ts +0 -42
  165. package/templates/storefront-fashion/package.json +0 -38
  166. package/templates/storefront-fashion/playwright.config.ts +0 -48
  167. package/templates/storefront-fashion/postcss.config.mjs +0 -7
  168. package/templates/storefront-fashion/tsconfig.json +0 -23
  169. package/templates/storefront-fashion/vitest.config.ts +0 -9
  170. package/templates/storefront-grocery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  171. package/templates/storefront-grocery/.cursor/rules/cimplify-storefront.mdc +0 -25
  172. package/templates/storefront-grocery/.env.example +0 -16
  173. package/templates/storefront-grocery/AGENTS.md +0 -96
  174. package/templates/storefront-grocery/CLAUDE.md +0 -22
  175. package/templates/storefront-grocery/README.md +0 -73
  176. package/templates/storefront-grocery/__tests__/brand.test.ts +0 -4
  177. package/templates/storefront-grocery/__tests__/cart-flow.test.ts +0 -4
  178. package/templates/storefront-grocery/__tests__/contract.test.ts +0 -4
  179. package/templates/storefront-grocery/app/about/page.tsx +0 -38
  180. package/templates/storefront-grocery/app/accessibility/page.tsx +0 -11
  181. package/templates/storefront-grocery/app/account/addresses/page.tsx +0 -21
  182. package/templates/storefront-grocery/app/account/orders/page.tsx +0 -21
  183. package/templates/storefront-grocery/app/account/page.tsx +0 -22
  184. package/templates/storefront-grocery/app/account/settings/page.tsx +0 -21
  185. package/templates/storefront-grocery/app/cart/page.tsx +0 -9
  186. package/templates/storefront-grocery/app/categories/[slug]/listing-client.tsx +0 -19
  187. package/templates/storefront-grocery/app/categories/[slug]/page.tsx +0 -118
  188. package/templates/storefront-grocery/app/checkout/page.tsx +0 -17
  189. package/templates/storefront-grocery/app/collections/[slug]/listing-client.tsx +0 -20
  190. package/templates/storefront-grocery/app/collections/[slug]/page.tsx +0 -118
  191. package/templates/storefront-grocery/app/contact/contact-form.tsx +0 -109
  192. package/templates/storefront-grocery/app/contact/page.tsx +0 -54
  193. package/templates/storefront-grocery/app/error.tsx +0 -60
  194. package/templates/storefront-grocery/app/faq/page.tsx +0 -46
  195. package/templates/storefront-grocery/app/globals.css +0 -45
  196. package/templates/storefront-grocery/app/layout.tsx +0 -77
  197. package/templates/storefront-grocery/app/llms.txt/route.ts +0 -94
  198. package/templates/storefront-grocery/app/login/page.tsx +0 -17
  199. package/templates/storefront-grocery/app/not-found.tsx +0 -39
  200. package/templates/storefront-grocery/app/opensearch.xml/route.ts +0 -37
  201. package/templates/storefront-grocery/app/orders/[id]/page.tsx +0 -21
  202. package/templates/storefront-grocery/app/page.tsx +0 -97
  203. package/templates/storefront-grocery/app/privacy/page.tsx +0 -44
  204. package/templates/storefront-grocery/app/returns/page.tsx +0 -11
  205. package/templates/storefront-grocery/app/robots.ts +0 -18
  206. package/templates/storefront-grocery/app/search/page.tsx +0 -38
  207. package/templates/storefront-grocery/app/search/search-client.tsx +0 -7
  208. package/templates/storefront-grocery/app/shipping/page.tsx +0 -16
  209. package/templates/storefront-grocery/app/shop/page.tsx +0 -31
  210. package/templates/storefront-grocery/app/shop/shop-client.tsx +0 -27
  211. package/templates/storefront-grocery/app/signup/page.tsx +0 -17
  212. package/templates/storefront-grocery/app/sitemap-page/page.tsx +0 -167
  213. package/templates/storefront-grocery/app/sitemap.ts +0 -62
  214. package/templates/storefront-grocery/app/terms/page.tsx +0 -44
  215. package/templates/storefront-grocery/app/track-order/page.tsx +0 -24
  216. package/templates/storefront-grocery/app/track-order/track-order-form.tsx +0 -69
  217. package/templates/storefront-grocery/components/account-iframe.tsx +0 -13
  218. package/templates/storefront-grocery/components/cart-drawer.tsx +0 -14
  219. package/templates/storefront-grocery/components/cart-pill.tsx +0 -36
  220. package/templates/storefront-grocery/components/category-grid.tsx +0 -28
  221. package/templates/storefront-grocery/components/collection-strip.tsx +0 -45
  222. package/templates/storefront-grocery/components/footer.tsx +0 -148
  223. package/templates/storefront-grocery/components/header.tsx +0 -43
  224. package/templates/storefront-grocery/components/hero.tsx +0 -25
  225. package/templates/storefront-grocery/components/nav-link.tsx +0 -20
  226. package/templates/storefront-grocery/components/policy-page.tsx +0 -49
  227. package/templates/storefront-grocery/components/product-modal.tsx +0 -104
  228. package/templates/storefront-grocery/components/providers.tsx +0 -35
  229. package/templates/storefront-grocery/components/store-product-card.tsx +0 -87
  230. package/templates/storefront-grocery/lib/brand.ts +0 -375
  231. package/templates/storefront-grocery/lib/cart.ts +0 -12
  232. package/templates/storefront-grocery/next.config.ts +0 -42
  233. package/templates/storefront-grocery/package.json +0 -35
  234. package/templates/storefront-grocery/postcss.config.mjs +0 -7
  235. package/templates/storefront-grocery/tsconfig.json +0 -23
  236. package/templates/storefront-grocery/vitest.config.ts +0 -9
  237. package/templates/storefront-restaurant/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  238. package/templates/storefront-restaurant/.cursor/rules/cimplify-storefront.mdc +0 -25
  239. package/templates/storefront-restaurant/.env.example +0 -16
  240. package/templates/storefront-restaurant/AGENTS.md +0 -102
  241. package/templates/storefront-restaurant/CLAUDE.md +0 -22
  242. package/templates/storefront-restaurant/README.md +0 -73
  243. package/templates/storefront-restaurant/__tests__/brand.test.ts +0 -4
  244. package/templates/storefront-restaurant/__tests__/cart-flow.test.ts +0 -4
  245. package/templates/storefront-restaurant/__tests__/contract.test.ts +0 -4
  246. package/templates/storefront-restaurant/app/about/page.tsx +0 -38
  247. package/templates/storefront-restaurant/app/accessibility/page.tsx +0 -11
  248. package/templates/storefront-restaurant/app/account/addresses/page.tsx +0 -21
  249. package/templates/storefront-restaurant/app/account/orders/page.tsx +0 -21
  250. package/templates/storefront-restaurant/app/account/page.tsx +0 -22
  251. package/templates/storefront-restaurant/app/account/settings/page.tsx +0 -21
  252. package/templates/storefront-restaurant/app/cart/page.tsx +0 -9
  253. package/templates/storefront-restaurant/app/categories/[slug]/listing-client.tsx +0 -19
  254. package/templates/storefront-restaurant/app/categories/[slug]/page.tsx +0 -118
  255. package/templates/storefront-restaurant/app/checkout/page.tsx +0 -17
  256. package/templates/storefront-restaurant/app/collections/[slug]/listing-client.tsx +0 -20
  257. package/templates/storefront-restaurant/app/collections/[slug]/page.tsx +0 -118
  258. package/templates/storefront-restaurant/app/contact/contact-form.tsx +0 -109
  259. package/templates/storefront-restaurant/app/contact/page.tsx +0 -54
  260. package/templates/storefront-restaurant/app/error.tsx +0 -60
  261. package/templates/storefront-restaurant/app/faq/page.tsx +0 -46
  262. package/templates/storefront-restaurant/app/globals.css +0 -44
  263. package/templates/storefront-restaurant/app/layout.tsx +0 -82
  264. package/templates/storefront-restaurant/app/llms.txt/route.ts +0 -94
  265. package/templates/storefront-restaurant/app/login/page.tsx +0 -17
  266. package/templates/storefront-restaurant/app/not-found.tsx +0 -39
  267. package/templates/storefront-restaurant/app/opensearch.xml/route.ts +0 -37
  268. package/templates/storefront-restaurant/app/orders/[id]/page.tsx +0 -21
  269. package/templates/storefront-restaurant/app/page.tsx +0 -97
  270. package/templates/storefront-restaurant/app/privacy/page.tsx +0 -44
  271. package/templates/storefront-restaurant/app/reservations/page.tsx +0 -66
  272. package/templates/storefront-restaurant/app/reservations/reservations-client.tsx +0 -234
  273. package/templates/storefront-restaurant/app/returns/page.tsx +0 -11
  274. package/templates/storefront-restaurant/app/robots.ts +0 -18
  275. package/templates/storefront-restaurant/app/search/page.tsx +0 -38
  276. package/templates/storefront-restaurant/app/search/search-client.tsx +0 -7
  277. package/templates/storefront-restaurant/app/shipping/page.tsx +0 -16
  278. package/templates/storefront-restaurant/app/shop/page.tsx +0 -31
  279. package/templates/storefront-restaurant/app/shop/shop-client.tsx +0 -27
  280. package/templates/storefront-restaurant/app/signup/page.tsx +0 -17
  281. package/templates/storefront-restaurant/app/sitemap-page/page.tsx +0 -167
  282. package/templates/storefront-restaurant/app/sitemap.ts +0 -62
  283. package/templates/storefront-restaurant/app/terms/page.tsx +0 -44
  284. package/templates/storefront-restaurant/app/track-order/page.tsx +0 -24
  285. package/templates/storefront-restaurant/app/track-order/track-order-form.tsx +0 -69
  286. package/templates/storefront-restaurant/components/account-iframe.tsx +0 -13
  287. package/templates/storefront-restaurant/components/cart-drawer.tsx +0 -14
  288. package/templates/storefront-restaurant/components/cart-pill.tsx +0 -36
  289. package/templates/storefront-restaurant/components/category-grid.tsx +0 -28
  290. package/templates/storefront-restaurant/components/collection-strip.tsx +0 -45
  291. package/templates/storefront-restaurant/components/footer.tsx +0 -148
  292. package/templates/storefront-restaurant/components/header.tsx +0 -43
  293. package/templates/storefront-restaurant/components/hero.tsx +0 -25
  294. package/templates/storefront-restaurant/components/nav-link.tsx +0 -20
  295. package/templates/storefront-restaurant/components/policy-page.tsx +0 -49
  296. package/templates/storefront-restaurant/components/product-modal.tsx +0 -104
  297. package/templates/storefront-restaurant/components/providers.tsx +0 -35
  298. package/templates/storefront-restaurant/components/store-product-card.tsx +0 -87
  299. package/templates/storefront-restaurant/lib/brand.ts +0 -377
  300. package/templates/storefront-restaurant/lib/cart.ts +0 -12
  301. package/templates/storefront-restaurant/next.config.ts +0 -42
  302. package/templates/storefront-restaurant/package.json +0 -35
  303. package/templates/storefront-restaurant/postcss.config.mjs +0 -7
  304. package/templates/storefront-restaurant/tsconfig.json +0 -23
  305. package/templates/storefront-restaurant/vitest.config.ts +0 -9
  306. package/templates/storefront-retail/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  307. package/templates/storefront-retail/.cursor/rules/cimplify-storefront.mdc +0 -25
  308. package/templates/storefront-retail/.env.example +0 -16
  309. package/templates/storefront-retail/AGENTS.md +0 -117
  310. package/templates/storefront-retail/CLAUDE.md +0 -22
  311. package/templates/storefront-retail/README.md +0 -77
  312. package/templates/storefront-retail/__tests__/brand.test.ts +0 -4
  313. package/templates/storefront-retail/__tests__/cart-flow.test.ts +0 -4
  314. package/templates/storefront-retail/__tests__/contract.test.ts +0 -4
  315. package/templates/storefront-retail/app/about/page.tsx +0 -41
  316. package/templates/storefront-retail/app/accessibility/page.tsx +0 -11
  317. package/templates/storefront-retail/app/account/addresses/page.tsx +0 -21
  318. package/templates/storefront-retail/app/account/orders/page.tsx +0 -21
  319. package/templates/storefront-retail/app/account/page.tsx +0 -22
  320. package/templates/storefront-retail/app/account/settings/page.tsx +0 -21
  321. package/templates/storefront-retail/app/cart/page.tsx +0 -9
  322. package/templates/storefront-retail/app/categories/[slug]/listing-client.tsx +0 -19
  323. package/templates/storefront-retail/app/categories/[slug]/page.tsx +0 -130
  324. package/templates/storefront-retail/app/checkout/page.tsx +0 -17
  325. package/templates/storefront-retail/app/collections/[slug]/listing-client.tsx +0 -20
  326. package/templates/storefront-retail/app/collections/[slug]/page.tsx +0 -130
  327. package/templates/storefront-retail/app/contact/contact-form.tsx +0 -109
  328. package/templates/storefront-retail/app/contact/page.tsx +0 -54
  329. package/templates/storefront-retail/app/error.tsx +0 -61
  330. package/templates/storefront-retail/app/faq/page.tsx +0 -46
  331. package/templates/storefront-retail/app/globals.css +0 -47
  332. package/templates/storefront-retail/app/layout.tsx +0 -77
  333. package/templates/storefront-retail/app/llms.txt/route.ts +0 -94
  334. package/templates/storefront-retail/app/login/page.tsx +0 -17
  335. package/templates/storefront-retail/app/not-found.tsx +0 -39
  336. package/templates/storefront-retail/app/opensearch.xml/route.ts +0 -37
  337. package/templates/storefront-retail/app/orders/[id]/page.tsx +0 -24
  338. package/templates/storefront-retail/app/page.tsx +0 -182
  339. package/templates/storefront-retail/app/privacy/page.tsx +0 -44
  340. package/templates/storefront-retail/app/products/[slug]/page.tsx +0 -165
  341. package/templates/storefront-retail/app/products/[slug]/product-detail.tsx +0 -70
  342. package/templates/storefront-retail/app/returns/page.tsx +0 -11
  343. package/templates/storefront-retail/app/robots.ts +0 -18
  344. package/templates/storefront-retail/app/search/page.tsx +0 -38
  345. package/templates/storefront-retail/app/search/search-client.tsx +0 -7
  346. package/templates/storefront-retail/app/shipping/page.tsx +0 -16
  347. package/templates/storefront-retail/app/shop/page.tsx +0 -63
  348. package/templates/storefront-retail/app/shop/shop-client.tsx +0 -32
  349. package/templates/storefront-retail/app/signup/page.tsx +0 -17
  350. package/templates/storefront-retail/app/sitemap-page/page.tsx +0 -167
  351. package/templates/storefront-retail/app/sitemap.ts +0 -59
  352. package/templates/storefront-retail/app/terms/page.tsx +0 -44
  353. package/templates/storefront-retail/app/track-order/page.tsx +0 -24
  354. package/templates/storefront-retail/app/track-order/track-order-form.tsx +0 -69
  355. package/templates/storefront-retail/components/account-iframe.tsx +0 -13
  356. package/templates/storefront-retail/components/brand-marquee.tsx +0 -27
  357. package/templates/storefront-retail/components/cart-drawer.tsx +0 -14
  358. package/templates/storefront-retail/components/cart-pill.tsx +0 -36
  359. package/templates/storefront-retail/components/category-grid.tsx +0 -28
  360. package/templates/storefront-retail/components/category-tiles.tsx +0 -104
  361. package/templates/storefront-retail/components/collection-strip.tsx +0 -45
  362. package/templates/storefront-retail/components/feature-hero.tsx +0 -84
  363. package/templates/storefront-retail/components/footer.tsx +0 -153
  364. package/templates/storefront-retail/components/header.tsx +0 -45
  365. package/templates/storefront-retail/components/hero.tsx +0 -28
  366. package/templates/storefront-retail/components/nav-link.tsx +0 -20
  367. package/templates/storefront-retail/components/newsletter.tsx +0 -50
  368. package/templates/storefront-retail/components/policy-page.tsx +0 -49
  369. package/templates/storefront-retail/components/promo-banner.tsx +0 -41
  370. package/templates/storefront-retail/components/providers.tsx +0 -35
  371. package/templates/storefront-retail/components/section-heading.tsx +0 -37
  372. package/templates/storefront-retail/components/store-product-card.tsx +0 -87
  373. package/templates/storefront-retail/components/trade-in-cta.tsx +0 -54
  374. package/templates/storefront-retail/components/trust-bar.tsx +0 -66
  375. package/templates/storefront-retail/lib/brand.ts +0 -664
  376. package/templates/storefront-retail/lib/cart.ts +0 -12
  377. package/templates/storefront-retail/next.config.ts +0 -42
  378. package/templates/storefront-retail/package.json +0 -35
  379. package/templates/storefront-retail/postcss.config.mjs +0 -7
  380. package/templates/storefront-retail/tsconfig.json +0 -23
  381. package/templates/storefront-retail/vitest.config.ts +0 -9
  382. package/templates/storefront-services/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  383. package/templates/storefront-services/.cursor/rules/cimplify-storefront.mdc +0 -25
  384. package/templates/storefront-services/.env.example +0 -16
  385. package/templates/storefront-services/AGENTS.md +0 -101
  386. package/templates/storefront-services/CLAUDE.md +0 -22
  387. package/templates/storefront-services/README.md +0 -73
  388. package/templates/storefront-services/__tests__/brand.test.ts +0 -4
  389. package/templates/storefront-services/__tests__/cart-flow.test.ts +0 -4
  390. package/templates/storefront-services/__tests__/contract.test.ts +0 -4
  391. package/templates/storefront-services/app/about/page.tsx +0 -38
  392. package/templates/storefront-services/app/accessibility/page.tsx +0 -11
  393. package/templates/storefront-services/app/account/addresses/page.tsx +0 -21
  394. package/templates/storefront-services/app/account/orders/page.tsx +0 -21
  395. package/templates/storefront-services/app/account/page.tsx +0 -22
  396. package/templates/storefront-services/app/account/settings/page.tsx +0 -21
  397. package/templates/storefront-services/app/book/book-client.tsx +0 -195
  398. package/templates/storefront-services/app/book/page.tsx +0 -65
  399. package/templates/storefront-services/app/cart/page.tsx +0 -9
  400. package/templates/storefront-services/app/categories/[slug]/listing-client.tsx +0 -19
  401. package/templates/storefront-services/app/categories/[slug]/page.tsx +0 -118
  402. package/templates/storefront-services/app/checkout/page.tsx +0 -17
  403. package/templates/storefront-services/app/collections/[slug]/listing-client.tsx +0 -20
  404. package/templates/storefront-services/app/collections/[slug]/page.tsx +0 -118
  405. package/templates/storefront-services/app/contact/contact-form.tsx +0 -109
  406. package/templates/storefront-services/app/contact/page.tsx +0 -54
  407. package/templates/storefront-services/app/error.tsx +0 -60
  408. package/templates/storefront-services/app/faq/page.tsx +0 -46
  409. package/templates/storefront-services/app/globals.css +0 -45
  410. package/templates/storefront-services/app/layout.tsx +0 -82
  411. package/templates/storefront-services/app/llms.txt/route.ts +0 -94
  412. package/templates/storefront-services/app/login/page.tsx +0 -17
  413. package/templates/storefront-services/app/not-found.tsx +0 -39
  414. package/templates/storefront-services/app/opensearch.xml/route.ts +0 -37
  415. package/templates/storefront-services/app/orders/[id]/page.tsx +0 -21
  416. package/templates/storefront-services/app/page.tsx +0 -97
  417. package/templates/storefront-services/app/privacy/page.tsx +0 -44
  418. package/templates/storefront-services/app/returns/page.tsx +0 -11
  419. package/templates/storefront-services/app/robots.ts +0 -18
  420. package/templates/storefront-services/app/search/page.tsx +0 -38
  421. package/templates/storefront-services/app/search/search-client.tsx +0 -7
  422. package/templates/storefront-services/app/shipping/page.tsx +0 -16
  423. package/templates/storefront-services/app/shop/page.tsx +0 -31
  424. package/templates/storefront-services/app/shop/shop-client.tsx +0 -27
  425. package/templates/storefront-services/app/signup/page.tsx +0 -17
  426. package/templates/storefront-services/app/sitemap-page/page.tsx +0 -167
  427. package/templates/storefront-services/app/sitemap.ts +0 -62
  428. package/templates/storefront-services/app/terms/page.tsx +0 -44
  429. package/templates/storefront-services/app/track-order/page.tsx +0 -24
  430. package/templates/storefront-services/app/track-order/track-order-form.tsx +0 -69
  431. package/templates/storefront-services/components/account-iframe.tsx +0 -13
  432. package/templates/storefront-services/components/cart-drawer.tsx +0 -14
  433. package/templates/storefront-services/components/cart-pill.tsx +0 -36
  434. package/templates/storefront-services/components/category-grid.tsx +0 -28
  435. package/templates/storefront-services/components/collection-strip.tsx +0 -45
  436. package/templates/storefront-services/components/footer.tsx +0 -148
  437. package/templates/storefront-services/components/header.tsx +0 -43
  438. package/templates/storefront-services/components/hero.tsx +0 -25
  439. package/templates/storefront-services/components/nav-link.tsx +0 -20
  440. package/templates/storefront-services/components/policy-page.tsx +0 -49
  441. package/templates/storefront-services/components/product-modal.tsx +0 -104
  442. package/templates/storefront-services/components/providers.tsx +0 -35
  443. package/templates/storefront-services/components/store-product-card.tsx +0 -87
  444. package/templates/storefront-services/lib/brand.ts +0 -396
  445. package/templates/storefront-services/lib/cart.ts +0 -12
  446. package/templates/storefront-services/next.config.ts +0 -42
  447. package/templates/storefront-services/package.json +0 -35
  448. package/templates/storefront-services/postcss.config.mjs +0 -7
  449. package/templates/storefront-services/tsconfig.json +0 -23
  450. package/templates/storefront-services/vitest.config.ts +0 -9
@@ -1,167 +0,0 @@
1
- import type { Metadata } from "next";
2
- import Link from "next/link";
3
- import { cacheTag, cacheLife } from "next/cache";
4
- import { getServerClient, tags, type Product } from "@cimplify/sdk/server";
5
- import { brand } from "@/lib/brand";
6
-
7
- export const metadata: Metadata = {
8
- title: `Sitemap — ${brand.name}`,
9
- description: "A human-readable index of every page on this site.",
10
- };
11
-
12
- interface SitemapData {
13
- products: { slug: string; name: string }[];
14
- categories: { slug: string; name: string }[];
15
- collections: { slug: string; name: string }[];
16
- }
17
-
18
- async function getSitemap(): Promise<SitemapData> {
19
- "use cache";
20
- cacheTag(tags.products(), tags.categories(), tags.collections());
21
- cacheLife("hours");
22
-
23
- const client = getServerClient();
24
- const [pRes, cRes, colRes] = await Promise.all([
25
- client.catalogue.getProducts({ limit: 500 }),
26
- client.catalogue.getCategories(),
27
- client.catalogue.getCollections(),
28
- ]);
29
- return {
30
- products: (pRes.ok ? pRes.value.items : []).map((p: Product) => ({
31
- slug: p.slug ?? p.id,
32
- name: p.name,
33
- })),
34
- categories: (cRes.ok ? cRes.value : []).map((c) => ({ slug: c.slug, name: c.name })),
35
- collections: (colRes.ok ? colRes.value : []).map((c) => ({ slug: c.slug, name: c.name })),
36
- };
37
- }
38
-
39
- const STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[] = [
40
- {
41
- title: "Browse",
42
- links: [
43
- { href: "/", label: "Home" },
44
- { href: "/shop", label: "Shop" },
45
- { href: "/search", label: "Search" },
46
- ],
47
- },
48
- {
49
- title: "Account",
50
- links: [
51
- { href: "/account", label: "Account" },
52
- { href: "/account/orders", label: "Orders" },
53
- { href: "/account/addresses", label: "Addresses" },
54
- { href: "/account/settings", label: "Settings" },
55
- { href: "/login", label: "Sign in" },
56
- { href: "/signup", label: "Create account" },
57
- { href: "/track-order", label: "Track an order" },
58
- { href: "/cart", label: "Cart" },
59
- { href: "/checkout", label: "Checkout" },
60
- ],
61
- },
62
- {
63
- title: "About",
64
- links: [
65
- { href: "/about", label: "About" },
66
- { href: "/faq", label: "FAQ" },
67
- { href: "/contact", label: "Contact" },
68
- ],
69
- },
70
- {
71
- title: "Policies",
72
- links: [
73
- { href: "/shipping", label: "Shipping" },
74
- { href: "/returns", label: "Returns" },
75
- { href: "/accessibility", label: "Accessibility" },
76
- { href: "/terms", label: "Terms of Service" },
77
- { href: "/privacy", label: "Privacy Policy" },
78
- ],
79
- },
80
- {
81
- title: "Machine-readable",
82
- links: [
83
- { href: "/sitemap.xml", label: "sitemap.xml (search engines)" },
84
- { href: "/llms.txt", label: "llms.txt (LLM agents)" },
85
- { href: "/robots.txt", label: "robots.txt" },
86
- { href: "/opensearch.xml", label: "opensearch.xml (browser search)" },
87
- ],
88
- },
89
- ];
90
-
91
- export default async function SitemapHtmlPage() {
92
- const { products, categories, collections } = await getSitemap();
93
-
94
- return (
95
- <article className="max-w-5xl mx-auto px-6 sm:px-8 py-16">
96
- <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">
97
- Sitemap
98
- </p>
99
- <h1 className="text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2 -tracking-[0.02em]">
100
- Every page, in one place.
101
- </h1>
102
- <p className="text-muted-foreground mb-12">
103
- For search engines, see <Link href="/sitemap.xml" className="text-primary hover:underline">/sitemap.xml</Link>.
104
- For LLM agents, see <Link href="/llms.txt" className="text-primary hover:underline">/llms.txt</Link>.
105
- </p>
106
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10">
107
- {STATIC_LINKS.map((s) => (
108
- <Section key={s.title} title={s.title}>
109
- {s.links.map((l) => (
110
- <li key={l.href}>
111
- <Link href={l.href} className="hover:text-primary transition-colors">
112
- {l.label}
113
- </Link>
114
- </li>
115
- ))}
116
- </Section>
117
- ))}
118
- {categories.length > 0 && (
119
- <Section title="Categories">
120
- {categories.map((c) => (
121
- <li key={c.slug}>
122
- <Link href={`/categories/${c.slug}`} className="hover:text-primary transition-colors">
123
- {c.name}
124
- </Link>
125
- </li>
126
- ))}
127
- </Section>
128
- )}
129
- {collections.length > 0 && (
130
- <Section title="Collections">
131
- {collections.map((c) => (
132
- <li key={c.slug}>
133
- <Link href={`/collections/${c.slug}`} className="hover:text-primary transition-colors">
134
- {c.name}
135
- </Link>
136
- </li>
137
- ))}
138
- </Section>
139
- )}
140
- {products.length > 0 && (
141
- <Section title={`Products (${products.length})`}>
142
- {products.map((p) => (
143
- <li key={p.slug}>
144
- <Link href={`/shop?product=${encodeURIComponent(p.slug)}`} className="hover:text-primary transition-colors">
145
- {p.name}
146
- </Link>
147
- </li>
148
- ))}
149
- </Section>
150
- )}
151
- </div>
152
- </article>
153
- );
154
- }
155
-
156
- function Section({ title, children }: { title: string; children: React.ReactNode }) {
157
- return (
158
- <div>
159
- <p className="font-semibold text-[12px] uppercase tracking-[0.12em] text-foreground mb-3">
160
- {title}
161
- </p>
162
- <ul className="space-y-2 m-0 p-0 list-none text-sm text-muted-foreground">
163
- {children}
164
- </ul>
165
- </div>
166
- );
167
- }
@@ -1,62 +0,0 @@
1
- import type { MetadataRoute } from "next";
2
- import { getServerClient, type Product } from "@cimplify/sdk/server";
3
-
4
- const SITE_URL =
5
- process.env.NEXT_PUBLIC_SITE_URL?.trim() || "https://example.com";
6
-
7
- const STATIC_ROUTES: { path: string; priority: number; changeFrequency: "daily" | "weekly" | "monthly" }[] = [
8
- { path: "/", priority: 1.0, changeFrequency: "daily" },
9
- { path: "/shop", priority: 0.9, changeFrequency: "daily" },
10
- { path: "/about", priority: 0.5, changeFrequency: "monthly" },
11
- { path: "/faq", priority: 0.4, changeFrequency: "monthly" },
12
- { path: "/terms", priority: 0.2, changeFrequency: "monthly" },
13
- { path: "/privacy", priority: 0.2, changeFrequency: "monthly" },
14
- ];
15
-
16
- export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
17
- const now = new Date();
18
- const client = getServerClient();
19
-
20
- const [productsRes, categoriesRes, collectionsRes] = await Promise.all([
21
- client.catalogue.getProducts({ limit: 500 }),
22
- client.catalogue.getCategories(),
23
- client.catalogue.getCollections(),
24
- ]);
25
-
26
- const products = productsRes.ok ? productsRes.value.items : [];
27
- const categories = categoriesRes.ok ? categoriesRes.value : [];
28
- const collections = collectionsRes.ok ? collectionsRes.value : [];
29
-
30
- const staticEntries: MetadataRoute.Sitemap = STATIC_ROUTES.map((r) => ({
31
- url: `${SITE_URL}${r.path}`,
32
- lastModified: now,
33
- changeFrequency: r.changeFrequency,
34
- priority: r.priority,
35
- }));
36
-
37
- // Bakery uses a URL-driven product modal (`?product=<slug>` on the home or
38
- // shop pages). Emit those as deep-linkable URLs so search engines and LLMs
39
- // can index each product canonically.
40
- const productEntries: MetadataRoute.Sitemap = products.map((p: Product) => ({
41
- url: `${SITE_URL}/shop?product=${encodeURIComponent(p.slug ?? p.id)}`,
42
- lastModified: p.updated_at ? new Date(p.updated_at) : now,
43
- changeFrequency: "weekly",
44
- priority: 0.7,
45
- }));
46
-
47
- const categoryEntries: MetadataRoute.Sitemap = categories.map((c) => ({
48
- url: `${SITE_URL}/categories/${c.slug}`,
49
- lastModified: now,
50
- changeFrequency: "weekly",
51
- priority: 0.6,
52
- }));
53
-
54
- const collectionEntries: MetadataRoute.Sitemap = collections.map((c) => ({
55
- url: `${SITE_URL}/collections/${c.slug}`,
56
- lastModified: now,
57
- changeFrequency: "weekly",
58
- priority: 0.6,
59
- }));
60
-
61
- return [...staticEntries, ...categoryEntries, ...collectionEntries, ...productEntries];
62
- }
@@ -1,44 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { brand } from "@/lib/brand";
3
-
4
- export const metadata: Metadata = {
5
- title: `Terms of Service — ${brand.name}`,
6
- description: `The rules of the road for ordering from ${brand.name}.`,
7
- };
8
-
9
- export default function TermsPage() {
10
- const t = brand.terms;
11
- return (
12
- <article className="max-w-3xl mx-auto px-8 py-16 prose prose-lg max-w-none">
13
- <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">
14
- {t.eyebrow}
15
- </p>
16
- <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">
17
- {t.title}
18
- </h1>
19
- <p className="text-sm text-muted-foreground not-prose mb-10">
20
- Last updated: {t.lastUpdated}
21
- </p>
22
-
23
- <section className="space-y-5 leading-relaxed text-foreground/90">
24
- {t.sections.map((s) => (
25
- <div key={s.heading}>
26
- <h2 className="font-serif text-2xl font-semibold mt-0">{s.heading}</h2>
27
- {typeof s.body === "string" ? (
28
- <p>{s.body}</p>
29
- ) : (
30
- <>
31
- <p>{s.body.intro}</p>
32
- <ul className="list-disc pl-6 space-y-2">
33
- {s.body.bullets.map((b) => (
34
- <li key={b}>{b}</li>
35
- ))}
36
- </ul>
37
- </>
38
- )}
39
- </div>
40
- ))}
41
- </section>
42
- </article>
43
- );
44
- }
@@ -1,24 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { TrackOrderForm } from "./track-order-form";
3
- import { brand } from "@/lib/brand";
4
-
5
- export const metadata: Metadata = {
6
- title: `Track an order — ${brand.name}`,
7
- description: brand.trackOrder.body,
8
- };
9
-
10
- export default function TrackOrderPage() {
11
- const t = brand.trackOrder;
12
- return (
13
- <article className="max-w-2xl mx-auto px-6 sm:px-8 py-16">
14
- <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">
15
- {t.eyebrow}
16
- </p>
17
- <h1 className="font-serif text-[clamp(2rem,5vw,3rem)] font-semibold mb-4 -tracking-[0.02em]">
18
- {t.title}
19
- </h1>
20
- <p className="text-muted-foreground leading-relaxed mb-8">{t.body}</p>
21
- <TrackOrderForm />
22
- </article>
23
- );
24
- }
@@ -1,69 +0,0 @@
1
- "use client";
2
-
3
- import { useState } from "react";
4
- import { useRouter } from "next/navigation";
5
-
6
- /**
7
- * Guest order tracker. Routes /orders/<id> with the entered id; the
8
- * post-checkout confirmation page already lives at /orders/[id] so this
9
- * just sends the visitor there. Replace the redirect with a real lookup
10
- * (e.g. Cimplify orders API + email-match guard) for production.
11
- */
12
- export function TrackOrderForm() {
13
- const router = useRouter();
14
- const [orderId, setOrderId] = useState("");
15
- const [email, setEmail] = useState("");
16
-
17
- return (
18
- <form
19
- onSubmit={(e) => {
20
- e.preventDefault();
21
- if (!orderId.trim()) return;
22
- router.push(`/orders/${encodeURIComponent(orderId.trim())}`);
23
- }}
24
- className="space-y-4 rounded-2xl border border-border bg-card p-6"
25
- >
26
- <div>
27
- <label
28
- htmlFor="orderId"
29
- className="text-xs font-semibold uppercase tracking-wider text-muted-foreground block mb-1.5"
30
- >
31
- Order number
32
- </label>
33
- <input
34
- id="orderId"
35
- name="orderId"
36
- required
37
- value={orderId}
38
- onChange={(e) => setOrderId(e.target.value)}
39
- placeholder="ord_abc123…"
40
- className="w-full px-4 py-3 rounded-md bg-background border border-border focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none text-sm"
41
- />
42
- </div>
43
- <div>
44
- <label
45
- htmlFor="email"
46
- className="text-xs font-semibold uppercase tracking-wider text-muted-foreground block mb-1.5"
47
- >
48
- Order email
49
- </label>
50
- <input
51
- id="email"
52
- name="email"
53
- type="email"
54
- required
55
- value={email}
56
- onChange={(e) => setEmail(e.target.value)}
57
- placeholder="you@email.com"
58
- className="w-full px-4 py-3 rounded-md bg-background border border-border focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none text-sm"
59
- />
60
- </div>
61
- <button
62
- type="submit"
63
- className="w-full inline-flex items-center justify-center px-5 py-3 rounded-md bg-primary text-primary-foreground font-semibold text-sm hover:bg-primary/90 transition-colors"
64
- >
65
- Track order
66
- </button>
67
- </form>
68
- );
69
- }
@@ -1,13 +0,0 @@
1
- "use client";
2
-
3
- import { CimplifyAccount } from "@cimplify/sdk/react";
4
-
5
- /**
6
- * Cimplify Account portal — iframe-mounted UI hosted by Cimplify Link.
7
- * Handles sign-in, sign-up, OTP, addresses, payment methods, sessions,
8
- * and order history. The iframe owns auth state; we just choose which
9
- * `section` to land on.
10
- */
11
- export function AccountIframe({ section }: { section?: string }) {
12
- return <CimplifyAccount section={section} />;
13
- }
@@ -1,14 +0,0 @@
1
- "use client";
2
-
3
- import { useRouter } from "next/navigation";
4
- import { CartDrawer as SdkCartDrawer } from "@cimplify/sdk/react";
5
-
6
- /**
7
- * Side-drawer cart. Auto-opens when an item is added (via
8
- * `<CartDrawerProvider>` in `providers.tsx`). The header's cart pill
9
- * also calls `useCartDrawer().open()` to reveal it on click.
10
- */
11
- export function CartDrawer() {
12
- const router = useRouter();
13
- return <SdkCartDrawer onCheckout={() => router.push("/checkout")} />;
14
- }
@@ -1,36 +0,0 @@
1
- "use client";
2
-
3
- import { useCartDrawer } from "@cimplify/sdk/react";
4
- import { useCartCount } from "@/lib/cart";
5
-
6
- /**
7
- * Cart pill — dynamic island. Reads the live cart count via the SDK and
8
- * opens the side cart drawer on click (instead of navigating to /cart).
9
- * Wrap in `<Suspense fallback={<CartPillSkeleton/>}>` so the cached
10
- * header chrome streams without blocking on the cart fetch.
11
- */
12
- export function CartPill() {
13
- const { count } = useCartCount();
14
- const { open } = useCartDrawer();
15
- return (
16
- <button
17
- type="button"
18
- onClick={open}
19
- aria-label={`Open cart, ${count} ${count === 1 ? "item" : "items"}`}
20
- className="inline-flex items-center gap-1.5 px-3.5 py-2 rounded-full bg-foreground text-background text-xs font-semibold tracking-wide transition-transform hover:scale-105 cursor-pointer"
21
- >
22
- Cart · {count}
23
- </button>
24
- );
25
- }
26
-
27
- export function CartPillSkeleton() {
28
- return (
29
- <span
30
- aria-hidden
31
- className="inline-flex items-center gap-1.5 px-3.5 py-2 rounded-full bg-foreground/80 text-background text-xs font-semibold tracking-wide"
32
- >
33
- Cart · …
34
- </span>
35
- );
36
- }
@@ -1,28 +0,0 @@
1
- "use client";
2
-
3
- import { useRouter } from "next/navigation";
4
- import { CategoryGrid as SdkCategoryGrid } from "@cimplify/sdk/react";
5
- import type { Category } from "@cimplify/sdk";
6
-
7
- /**
8
- * Homepage category tiles — defers to the SDK's <CategoryGrid/> for layout
9
- * and accessibility, and routes selections to /categories/:slug.
10
- */
11
- export function CategoryGrid({ categories }: { categories?: Category[] }) {
12
- const router = useRouter();
13
- return (
14
- <section className="max-w-7xl mx-auto px-8 pt-14">
15
- <h2 className="font-serif text-[28px] font-semibold m-0 mb-5">Browse the menu</h2>
16
- <SdkCategoryGrid
17
- categories={categories}
18
- onSelect={(c) => router.push(`/categories/${c.slug}`)}
19
- classNames={{
20
- item: "flex flex-col gap-1 p-6 bg-card border border-border rounded-2xl cursor-pointer text-left transition-all hover:border-primary hover:-translate-y-0.5",
21
- name: "font-serif text-lg font-semibold text-foreground",
22
- description: "text-xs text-muted-foreground",
23
- count: "text-xs text-muted-foreground mt-1",
24
- }}
25
- />
26
- </section>
27
- );
28
- }
@@ -1,45 +0,0 @@
1
- import Link from "next/link";
2
- import type { Collection, Product } from "@cimplify/sdk";
3
- import { StoreProductCard } from "./store-product-card";
4
-
5
- interface CollectionStripProps {
6
- collection: Collection;
7
- products: Product[];
8
- collectionHref?: string;
9
- }
10
-
11
- /**
12
- * Horizontal strip of products under a collection title. Cards come from the
13
- * SDK so every variant (Food, Bundle, Composite, Service, …) renders
14
- * correctly; clicks open the shared URL-driven product modal.
15
- */
16
- export function CollectionStrip({ collection, products, collectionHref }: CollectionStripProps) {
17
- if (products.length === 0) return null;
18
- return (
19
- <section className="max-w-7xl mx-auto px-8 pt-12">
20
- <header className="grid grid-cols-[1fr_auto] items-end gap-4 mb-5">
21
- <h2 className="font-serif text-[28px] font-semibold m-0">{collection.name}</h2>
22
- {collectionHref && (
23
- <Link
24
- href={collectionHref}
25
- className="text-[13px] font-semibold text-primary hover:underline"
26
- >
27
- See all →
28
- </Link>
29
- )}
30
- {collection.description && (
31
- <p className="col-span-full m-0 mt-1 text-sm text-muted-foreground">
32
- {collection.description}
33
- </p>
34
- )}
35
- </header>
36
- <div className="grid grid-flow-col auto-cols-[minmax(220px,1fr)] gap-4 overflow-x-auto snap-x snap-mandatory pb-2">
37
- {products.slice(0, 8).map((p) => (
38
- <div key={p.id} className="snap-start">
39
- <StoreProductCard product={p} />
40
- </div>
41
- ))}
42
- </div>
43
- </section>
44
- );
45
- }
@@ -1,148 +0,0 @@
1
- import Link from "next/link";
2
- import { brand } from "@/lib/brand";
3
-
4
- const ICONS: Record<string, React.ReactNode> = {
5
- instagram: (
6
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" aria-hidden className="w-5 h-5">
7
- <rect x="3" y="3" width="18" height="18" rx="5" />
8
- <circle cx="12" cy="12" r="4" />
9
- <circle cx="17.5" cy="6.5" r="0.75" fill="currentColor" />
10
- </svg>
11
- ),
12
- x: (
13
- <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">
14
- <path d="M18 2h3l-7.5 8.6L22 22h-6.6l-5-6.5L4 22H1l8-9.2L1.4 2H8l4.6 6 5.4-6z" />
15
- </svg>
16
- ),
17
- tiktok: (
18
- <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">
19
- <path d="M16 3v3.5a4.5 4.5 0 0 0 4.5 4.5V14a7.5 7.5 0 0 1-4.5-1.5V16a5 5 0 1 1-5-5v3a2 2 0 1 0 2 2V3z" />
20
- </svg>
21
- ),
22
- facebook: (
23
- <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">
24
- <path d="M14 9V7a1 1 0 0 1 1-1h2V3h-3a4 4 0 0 0-4 4v2H8v3h2v9h3v-9h2.5l.5-3H13z" />
25
- </svg>
26
- ),
27
- youtube: (
28
- <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">
29
- <path d="M22.5 6.5a2.6 2.6 0 0 0-1.8-1.8C19 4.2 12 4.2 12 4.2s-7 0-8.7.5A2.6 2.6 0 0 0 1.5 6.5C1 8.2 1 12 1 12s0 3.8.5 5.5a2.6 2.6 0 0 0 1.8 1.8C5 19.8 12 19.8 12 19.8s7 0 8.7-.5a2.6 2.6 0 0 0 1.8-1.8c.5-1.7.5-5.5.5-5.5s0-3.8-.5-5.5zM10 15.5v-7l6 3.5-6 3.5z" />
30
- </svg>
31
- ),
32
- linkedin: (
33
- <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">
34
- <path d="M4 4h4v16H4zM6 2.5a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM10 8h4v2.5h.1c.6-1.1 2-2.5 4-2.5 4 0 4.9 2.6 4.9 6V20h-4v-5c0-1.5-.5-3-2.3-3-1.7 0-2.5 1.3-2.5 3v5h-4z" />
35
- </svg>
36
- ),
37
- whatsapp: (
38
- <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">
39
- <path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.2-1.4A10 10 0 1 0 12 2zm5 14.2c-.2.6-1.2 1.2-1.7 1.2-.5.1-1.1.1-1.7-.1-.4-.1-.9-.3-1.5-.6a8.4 8.4 0 0 1-3.7-3.4c-.7-1-1-1.8-1-2.5 0-.7.4-1.1.6-1.3.2-.2.4-.2.5-.2h.4c.1 0 .3 0 .4.3l.6 1.4c.1.2 0 .3 0 .4l-.3.4-.3.3c-.1.1-.2.2-.1.4.2.4.7 1.1 1.4 1.8.9.8 1.7 1.1 1.9 1.2.2.1.3.1.5-.1l.6-.7c.2-.2.3-.2.5-.1l1.4.7c.2.1.3.2.4.3.1.2.1.6 0 1z" />
40
- </svg>
41
- ),
42
- };
43
-
44
- const FALLBACK_ICON = (
45
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" aria-hidden className="w-5 h-5">
46
- <circle cx="12" cy="12" r="9" />
47
- </svg>
48
- );
49
-
50
- export async function Footer() {
51
- "use cache";
52
- const year = new Date().getFullYear();
53
- return (
54
- <footer className="mt-12 px-8 py-10 text-xs text-muted-foreground border-t border-border bg-card">
55
- <div className="max-w-7xl mx-auto">
56
- <div className="grid gap-10 md:grid-cols-[1.4fr_repeat(4,1fr)]">
57
- <div>
58
- <p className="font-serif text-2xl text-foreground m-0 mb-2">{brand.name}</p>
59
- <p className="leading-relaxed mb-4 max-w-sm">{brand.footer.blurb}</p>
60
- <address className="not-italic space-y-1">
61
- <p className="m-0">{brand.contact.address}</p>
62
- <p className="m-0">
63
- <a
64
- href={`tel:${brand.contact.phoneTel}`}
65
- className="hover:text-foreground transition-colors"
66
- >
67
- {brand.contact.phone}
68
- </a>
69
- </p>
70
- <p className="m-0">
71
- <a
72
- href={`mailto:${brand.contact.email}`}
73
- className="hover:text-foreground transition-colors"
74
- >
75
- {brand.contact.email}
76
- </a>
77
- </p>
78
- <p className="m-0">{brand.contact.hours}</p>
79
- </address>
80
- <div className="flex items-center gap-3 mt-5">
81
- {brand.socials.map((s) => (
82
- <a
83
- key={s.label}
84
- href={s.href}
85
- aria-label={s.label}
86
- target="_blank"
87
- rel="noopener noreferrer"
88
- className="inline-flex items-center justify-center w-9 h-9 rounded-full border border-border text-muted-foreground hover:text-foreground hover:border-foreground transition-colors"
89
- >
90
- {(s.icon && ICONS[s.icon]) ?? FALLBACK_ICON}
91
- </a>
92
- ))}
93
- </div>
94
- </div>
95
- {brand.footer.sitemap.map((section) => (
96
- <nav key={section.title} aria-labelledby={`footer-${section.title}`}>
97
- <p
98
- id={`footer-${section.title}`}
99
- className="font-semibold text-foreground mb-3 text-[13px] uppercase tracking-[0.08em]"
100
- >
101
- {section.title}
102
- </p>
103
- <ul className="space-y-2 m-0 p-0 list-none">
104
- {section.links.map((link) => (
105
- <li key={link.label}>
106
- <Link
107
- href={link.href}
108
- className="hover:text-foreground transition-colors"
109
- >
110
- {link.label}
111
- </Link>
112
- </li>
113
- ))}
114
- </ul>
115
- </nav>
116
- ))}
117
- </div>
118
- <div className="mt-12 pt-6 border-t border-border flex flex-col sm:flex-row items-center justify-between gap-3">
119
- <p className="m-0">© {year} {brand.name}. All rights reserved.</p>
120
- {brand.footer.poweredBy && (
121
- <p className="m-0 inline-flex items-center gap-1.5">
122
- <span className="text-muted-foreground/80">Powered by</span>
123
- <a
124
- href={brand.footer.poweredBy.href}
125
- target="_blank"
126
- rel="noopener noreferrer"
127
- aria-label={brand.footer.poweredBy.label}
128
- className="inline-flex items-center gap-1 font-serif text-foreground hover:text-primary transition-colors"
129
- >
130
- <span className="font-semibold tracking-tight">{brand.footer.poweredBy.label}</span>
131
- <svg
132
- viewBox="0 0 12 12"
133
- aria-hidden
134
- className="w-3 h-3 opacity-70"
135
- fill="none"
136
- stroke="currentColor"
137
- strokeWidth="1.5"
138
- >
139
- <path d="M3 9L9 3M9 3H4M9 3v5" strokeLinecap="round" strokeLinejoin="round" />
140
- </svg>
141
- </a>
142
- </p>
143
- )}
144
- </div>
145
- </div>
146
- </footer>
147
- );
148
- }