@cimplify/sdk 0.44.34 → 0.45.1

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 (470) hide show
  1. package/README.md +21 -16
  2. package/dist/advanced.d.mts +1 -1
  3. package/dist/advanced.d.ts +1 -1
  4. package/dist/{client-5B9IPDmf.d.ts → client-Bsd4Vi_y.d.ts} +1 -0
  5. package/dist/{client-CpVMRI8V.d.mts → client-C5LcbNxL.d.mts} +1 -0
  6. package/dist/{client-DMhRxuzm.d.ts → client-DjzIoewX.d.ts} +1 -1
  7. package/dist/{client-Cwb1sMr3.d.mts → client-EM8xKCPO.d.mts} +1 -1
  8. package/dist/index.d.mts +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/react.d.mts +120 -45
  11. package/dist/react.d.ts +120 -45
  12. package/dist/react.js +453 -97
  13. package/dist/react.mjs +452 -98
  14. package/dist/server.d.mts +2 -2
  15. package/dist/server.d.ts +2 -2
  16. package/dist/styles.css +2 -2
  17. package/dist/testing/suite.d.mts +2 -2
  18. package/dist/testing/suite.d.ts +2 -2
  19. package/dist/testing.d.mts +2 -2
  20. package/dist/testing.d.ts +2 -2
  21. package/package.json +5 -9
  22. package/registry/booking-page.json +2 -1
  23. package/registry/bookings-page.json +1 -1
  24. package/registry/index.json +24 -0
  25. package/dist/cli/commands/deploy.mjs +0 -717
  26. package/dist/cli/commands/dev.mjs +0 -479
  27. package/dist/cli/commands/domains.mjs +0 -769
  28. package/dist/cli/commands/env.mjs +0 -705
  29. package/dist/cli/commands/link.mjs +0 -378
  30. package/dist/cli/commands/login.mjs +0 -584
  31. package/dist/cli/commands/logout.mjs +0 -75
  32. package/dist/cli/commands/logs.mjs +0 -432
  33. package/dist/cli/commands/projects.mjs +0 -473
  34. package/dist/cli/commands/repo.mjs +0 -584
  35. package/dist/cli/commands/rollback.mjs +0 -553
  36. package/dist/cli/commands/status.mjs +0 -450
  37. package/dist/cli/commands/unlink.mjs +0 -79
  38. package/dist/cli/commands/whoami.mjs +0 -285
  39. package/dist/cli.js +0 -184
  40. package/dist/dispatcher.mjs +0 -360
  41. package/registry/service-card.json +0 -16
  42. package/registry/service-grid.json +0 -16
  43. package/templates/storefront-bakery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  44. package/templates/storefront-bakery/.cursor/rules/cimplify-storefront.mdc +0 -25
  45. package/templates/storefront-bakery/.env.example +0 -16
  46. package/templates/storefront-bakery/AGENTS.md +0 -120
  47. package/templates/storefront-bakery/CLAUDE.md +0 -22
  48. package/templates/storefront-bakery/README.md +0 -73
  49. package/templates/storefront-bakery/__tests__/brand.test.ts +0 -4
  50. package/templates/storefront-bakery/__tests__/cart-flow.test.ts +0 -4
  51. package/templates/storefront-bakery/__tests__/contract.test.ts +0 -4
  52. package/templates/storefront-bakery/app/about/page.tsx +0 -38
  53. package/templates/storefront-bakery/app/accessibility/page.tsx +0 -11
  54. package/templates/storefront-bakery/app/account/addresses/page.tsx +0 -21
  55. package/templates/storefront-bakery/app/account/orders/page.tsx +0 -21
  56. package/templates/storefront-bakery/app/account/page.tsx +0 -22
  57. package/templates/storefront-bakery/app/account/settings/page.tsx +0 -21
  58. package/templates/storefront-bakery/app/cart/page.tsx +0 -9
  59. package/templates/storefront-bakery/app/categories/[slug]/listing-client.tsx +0 -19
  60. package/templates/storefront-bakery/app/categories/[slug]/page.tsx +0 -118
  61. package/templates/storefront-bakery/app/checkout/page.tsx +0 -17
  62. package/templates/storefront-bakery/app/collections/[slug]/listing-client.tsx +0 -20
  63. package/templates/storefront-bakery/app/collections/[slug]/page.tsx +0 -118
  64. package/templates/storefront-bakery/app/contact/contact-form.tsx +0 -109
  65. package/templates/storefront-bakery/app/contact/page.tsx +0 -54
  66. package/templates/storefront-bakery/app/error.tsx +0 -60
  67. package/templates/storefront-bakery/app/faq/page.tsx +0 -46
  68. package/templates/storefront-bakery/app/globals.css +0 -47
  69. package/templates/storefront-bakery/app/layout.tsx +0 -82
  70. package/templates/storefront-bakery/app/llms.txt/route.ts +0 -94
  71. package/templates/storefront-bakery/app/login/page.tsx +0 -17
  72. package/templates/storefront-bakery/app/not-found.tsx +0 -39
  73. package/templates/storefront-bakery/app/opensearch.xml/route.ts +0 -37
  74. package/templates/storefront-bakery/app/orders/[id]/page.tsx +0 -21
  75. package/templates/storefront-bakery/app/page.tsx +0 -97
  76. package/templates/storefront-bakery/app/privacy/page.tsx +0 -44
  77. package/templates/storefront-bakery/app/returns/page.tsx +0 -11
  78. package/templates/storefront-bakery/app/robots.ts +0 -18
  79. package/templates/storefront-bakery/app/search/page.tsx +0 -38
  80. package/templates/storefront-bakery/app/search/search-client.tsx +0 -7
  81. package/templates/storefront-bakery/app/shipping/page.tsx +0 -16
  82. package/templates/storefront-bakery/app/shop/page.tsx +0 -31
  83. package/templates/storefront-bakery/app/shop/shop-client.tsx +0 -27
  84. package/templates/storefront-bakery/app/signup/page.tsx +0 -17
  85. package/templates/storefront-bakery/app/sitemap-page/page.tsx +0 -167
  86. package/templates/storefront-bakery/app/sitemap.ts +0 -62
  87. package/templates/storefront-bakery/app/terms/page.tsx +0 -44
  88. package/templates/storefront-bakery/app/track-order/page.tsx +0 -24
  89. package/templates/storefront-bakery/app/track-order/track-order-form.tsx +0 -69
  90. package/templates/storefront-bakery/components/account-iframe.tsx +0 -13
  91. package/templates/storefront-bakery/components/cart-drawer.tsx +0 -14
  92. package/templates/storefront-bakery/components/cart-pill.tsx +0 -36
  93. package/templates/storefront-bakery/components/category-grid.tsx +0 -28
  94. package/templates/storefront-bakery/components/collection-strip.tsx +0 -45
  95. package/templates/storefront-bakery/components/footer.tsx +0 -148
  96. package/templates/storefront-bakery/components/header.tsx +0 -43
  97. package/templates/storefront-bakery/components/hero.tsx +0 -25
  98. package/templates/storefront-bakery/components/nav-link.tsx +0 -20
  99. package/templates/storefront-bakery/components/policy-page.tsx +0 -49
  100. package/templates/storefront-bakery/components/product-modal.tsx +0 -104
  101. package/templates/storefront-bakery/components/providers.tsx +0 -35
  102. package/templates/storefront-bakery/components/store-product-card.tsx +0 -87
  103. package/templates/storefront-bakery/lib/brand.ts +0 -570
  104. package/templates/storefront-bakery/lib/cart.ts +0 -12
  105. package/templates/storefront-bakery/next.config.ts +0 -42
  106. package/templates/storefront-bakery/package.json +0 -35
  107. package/templates/storefront-bakery/postcss.config.mjs +0 -7
  108. package/templates/storefront-bakery/tsconfig.json +0 -23
  109. package/templates/storefront-bakery/vitest.config.ts +0 -9
  110. package/templates/storefront-fashion/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  111. package/templates/storefront-fashion/.cursor/rules/cimplify-storefront.mdc +0 -25
  112. package/templates/storefront-fashion/.env.example +0 -16
  113. package/templates/storefront-fashion/AGENTS.md +0 -126
  114. package/templates/storefront-fashion/CLAUDE.md +0 -22
  115. package/templates/storefront-fashion/README.md +0 -77
  116. package/templates/storefront-fashion/__tests__/brand.test.ts +0 -4
  117. package/templates/storefront-fashion/__tests__/cart-flow.test.ts +0 -55
  118. package/templates/storefront-fashion/__tests__/contract.test.ts +0 -4
  119. package/templates/storefront-fashion/app/about/page.tsx +0 -41
  120. package/templates/storefront-fashion/app/accessibility/page.tsx +0 -11
  121. package/templates/storefront-fashion/app/account/addresses/page.tsx +0 -21
  122. package/templates/storefront-fashion/app/account/orders/page.tsx +0 -21
  123. package/templates/storefront-fashion/app/account/page.tsx +0 -22
  124. package/templates/storefront-fashion/app/account/settings/page.tsx +0 -21
  125. package/templates/storefront-fashion/app/cart/page.tsx +0 -9
  126. package/templates/storefront-fashion/app/categories/[slug]/listing-client.tsx +0 -19
  127. package/templates/storefront-fashion/app/categories/[slug]/page.tsx +0 -130
  128. package/templates/storefront-fashion/app/checkout/page.tsx +0 -17
  129. package/templates/storefront-fashion/app/collections/[slug]/listing-client.tsx +0 -20
  130. package/templates/storefront-fashion/app/collections/[slug]/page.tsx +0 -130
  131. package/templates/storefront-fashion/app/contact/contact-form.tsx +0 -109
  132. package/templates/storefront-fashion/app/contact/page.tsx +0 -54
  133. package/templates/storefront-fashion/app/error.tsx +0 -61
  134. package/templates/storefront-fashion/app/faq/page.tsx +0 -46
  135. package/templates/storefront-fashion/app/globals.css +0 -46
  136. package/templates/storefront-fashion/app/layout.tsx +0 -78
  137. package/templates/storefront-fashion/app/llms.txt/route.ts +0 -94
  138. package/templates/storefront-fashion/app/login/page.tsx +0 -17
  139. package/templates/storefront-fashion/app/lookbook/page.tsx +0 -132
  140. package/templates/storefront-fashion/app/not-found.tsx +0 -39
  141. package/templates/storefront-fashion/app/opensearch.xml/route.ts +0 -37
  142. package/templates/storefront-fashion/app/orders/[id]/page.tsx +0 -24
  143. package/templates/storefront-fashion/app/page.tsx +0 -183
  144. package/templates/storefront-fashion/app/privacy/page.tsx +0 -44
  145. package/templates/storefront-fashion/app/products/[slug]/page.tsx +0 -165
  146. package/templates/storefront-fashion/app/products/[slug]/product-detail.tsx +0 -70
  147. package/templates/storefront-fashion/app/returns/page.tsx +0 -11
  148. package/templates/storefront-fashion/app/robots.ts +0 -18
  149. package/templates/storefront-fashion/app/search/page.tsx +0 -38
  150. package/templates/storefront-fashion/app/search/search-client.tsx +0 -7
  151. package/templates/storefront-fashion/app/shipping/page.tsx +0 -16
  152. package/templates/storefront-fashion/app/shop/page.tsx +0 -63
  153. package/templates/storefront-fashion/app/shop/shop-client.tsx +0 -32
  154. package/templates/storefront-fashion/app/signup/page.tsx +0 -17
  155. package/templates/storefront-fashion/app/sitemap-page/page.tsx +0 -167
  156. package/templates/storefront-fashion/app/sitemap.ts +0 -59
  157. package/templates/storefront-fashion/app/size-guide/page.tsx +0 -155
  158. package/templates/storefront-fashion/app/terms/page.tsx +0 -44
  159. package/templates/storefront-fashion/app/track-order/page.tsx +0 -24
  160. package/templates/storefront-fashion/app/track-order/track-order-form.tsx +0 -69
  161. package/templates/storefront-fashion/components/account-iframe.tsx +0 -13
  162. package/templates/storefront-fashion/components/brand-marquee.tsx +0 -27
  163. package/templates/storefront-fashion/components/cart-drawer.tsx +0 -14
  164. package/templates/storefront-fashion/components/cart-pill.tsx +0 -36
  165. package/templates/storefront-fashion/components/category-grid.tsx +0 -28
  166. package/templates/storefront-fashion/components/category-tiles.tsx +0 -104
  167. package/templates/storefront-fashion/components/collection-strip.tsx +0 -45
  168. package/templates/storefront-fashion/components/feature-hero.tsx +0 -82
  169. package/templates/storefront-fashion/components/footer.tsx +0 -153
  170. package/templates/storefront-fashion/components/header.tsx +0 -43
  171. package/templates/storefront-fashion/components/hero.tsx +0 -28
  172. package/templates/storefront-fashion/components/nav-link.tsx +0 -20
  173. package/templates/storefront-fashion/components/newsletter.tsx +0 -50
  174. package/templates/storefront-fashion/components/policy-page.tsx +0 -49
  175. package/templates/storefront-fashion/components/promo-banner.tsx +0 -41
  176. package/templates/storefront-fashion/components/providers.tsx +0 -35
  177. package/templates/storefront-fashion/components/section-heading.tsx +0 -37
  178. package/templates/storefront-fashion/components/store-product-card.tsx +0 -87
  179. package/templates/storefront-fashion/components/trade-in-cta.tsx +0 -54
  180. package/templates/storefront-fashion/components/trust-bar.tsx +0 -66
  181. package/templates/storefront-fashion/e2e/visual.spec.ts +0 -52
  182. package/templates/storefront-fashion/lib/brand.ts +0 -518
  183. package/templates/storefront-fashion/lib/cart.ts +0 -12
  184. package/templates/storefront-fashion/next.config.ts +0 -42
  185. package/templates/storefront-fashion/package.json +0 -38
  186. package/templates/storefront-fashion/playwright.config.ts +0 -48
  187. package/templates/storefront-fashion/postcss.config.mjs +0 -7
  188. package/templates/storefront-fashion/tsconfig.json +0 -23
  189. package/templates/storefront-fashion/vitest.config.ts +0 -9
  190. package/templates/storefront-grocery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  191. package/templates/storefront-grocery/.cursor/rules/cimplify-storefront.mdc +0 -25
  192. package/templates/storefront-grocery/.env.example +0 -16
  193. package/templates/storefront-grocery/AGENTS.md +0 -96
  194. package/templates/storefront-grocery/CLAUDE.md +0 -22
  195. package/templates/storefront-grocery/README.md +0 -73
  196. package/templates/storefront-grocery/__tests__/brand.test.ts +0 -4
  197. package/templates/storefront-grocery/__tests__/cart-flow.test.ts +0 -4
  198. package/templates/storefront-grocery/__tests__/contract.test.ts +0 -4
  199. package/templates/storefront-grocery/app/about/page.tsx +0 -38
  200. package/templates/storefront-grocery/app/accessibility/page.tsx +0 -11
  201. package/templates/storefront-grocery/app/account/addresses/page.tsx +0 -21
  202. package/templates/storefront-grocery/app/account/orders/page.tsx +0 -21
  203. package/templates/storefront-grocery/app/account/page.tsx +0 -22
  204. package/templates/storefront-grocery/app/account/settings/page.tsx +0 -21
  205. package/templates/storefront-grocery/app/cart/page.tsx +0 -9
  206. package/templates/storefront-grocery/app/categories/[slug]/listing-client.tsx +0 -19
  207. package/templates/storefront-grocery/app/categories/[slug]/page.tsx +0 -118
  208. package/templates/storefront-grocery/app/checkout/page.tsx +0 -17
  209. package/templates/storefront-grocery/app/collections/[slug]/listing-client.tsx +0 -20
  210. package/templates/storefront-grocery/app/collections/[slug]/page.tsx +0 -118
  211. package/templates/storefront-grocery/app/contact/contact-form.tsx +0 -109
  212. package/templates/storefront-grocery/app/contact/page.tsx +0 -54
  213. package/templates/storefront-grocery/app/error.tsx +0 -60
  214. package/templates/storefront-grocery/app/faq/page.tsx +0 -46
  215. package/templates/storefront-grocery/app/globals.css +0 -45
  216. package/templates/storefront-grocery/app/layout.tsx +0 -77
  217. package/templates/storefront-grocery/app/llms.txt/route.ts +0 -94
  218. package/templates/storefront-grocery/app/login/page.tsx +0 -17
  219. package/templates/storefront-grocery/app/not-found.tsx +0 -39
  220. package/templates/storefront-grocery/app/opensearch.xml/route.ts +0 -37
  221. package/templates/storefront-grocery/app/orders/[id]/page.tsx +0 -21
  222. package/templates/storefront-grocery/app/page.tsx +0 -97
  223. package/templates/storefront-grocery/app/privacy/page.tsx +0 -44
  224. package/templates/storefront-grocery/app/returns/page.tsx +0 -11
  225. package/templates/storefront-grocery/app/robots.ts +0 -18
  226. package/templates/storefront-grocery/app/search/page.tsx +0 -38
  227. package/templates/storefront-grocery/app/search/search-client.tsx +0 -7
  228. package/templates/storefront-grocery/app/shipping/page.tsx +0 -16
  229. package/templates/storefront-grocery/app/shop/page.tsx +0 -31
  230. package/templates/storefront-grocery/app/shop/shop-client.tsx +0 -27
  231. package/templates/storefront-grocery/app/signup/page.tsx +0 -17
  232. package/templates/storefront-grocery/app/sitemap-page/page.tsx +0 -167
  233. package/templates/storefront-grocery/app/sitemap.ts +0 -62
  234. package/templates/storefront-grocery/app/terms/page.tsx +0 -44
  235. package/templates/storefront-grocery/app/track-order/page.tsx +0 -24
  236. package/templates/storefront-grocery/app/track-order/track-order-form.tsx +0 -69
  237. package/templates/storefront-grocery/components/account-iframe.tsx +0 -13
  238. package/templates/storefront-grocery/components/cart-drawer.tsx +0 -14
  239. package/templates/storefront-grocery/components/cart-pill.tsx +0 -36
  240. package/templates/storefront-grocery/components/category-grid.tsx +0 -28
  241. package/templates/storefront-grocery/components/collection-strip.tsx +0 -45
  242. package/templates/storefront-grocery/components/footer.tsx +0 -148
  243. package/templates/storefront-grocery/components/header.tsx +0 -43
  244. package/templates/storefront-grocery/components/hero.tsx +0 -25
  245. package/templates/storefront-grocery/components/nav-link.tsx +0 -20
  246. package/templates/storefront-grocery/components/policy-page.tsx +0 -49
  247. package/templates/storefront-grocery/components/product-modal.tsx +0 -104
  248. package/templates/storefront-grocery/components/providers.tsx +0 -35
  249. package/templates/storefront-grocery/components/store-product-card.tsx +0 -87
  250. package/templates/storefront-grocery/lib/brand.ts +0 -375
  251. package/templates/storefront-grocery/lib/cart.ts +0 -12
  252. package/templates/storefront-grocery/next.config.ts +0 -42
  253. package/templates/storefront-grocery/package.json +0 -35
  254. package/templates/storefront-grocery/postcss.config.mjs +0 -7
  255. package/templates/storefront-grocery/tsconfig.json +0 -23
  256. package/templates/storefront-grocery/vitest.config.ts +0 -9
  257. package/templates/storefront-restaurant/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  258. package/templates/storefront-restaurant/.cursor/rules/cimplify-storefront.mdc +0 -25
  259. package/templates/storefront-restaurant/.env.example +0 -16
  260. package/templates/storefront-restaurant/AGENTS.md +0 -102
  261. package/templates/storefront-restaurant/CLAUDE.md +0 -22
  262. package/templates/storefront-restaurant/README.md +0 -73
  263. package/templates/storefront-restaurant/__tests__/brand.test.ts +0 -4
  264. package/templates/storefront-restaurant/__tests__/cart-flow.test.ts +0 -4
  265. package/templates/storefront-restaurant/__tests__/contract.test.ts +0 -4
  266. package/templates/storefront-restaurant/app/about/page.tsx +0 -38
  267. package/templates/storefront-restaurant/app/accessibility/page.tsx +0 -11
  268. package/templates/storefront-restaurant/app/account/addresses/page.tsx +0 -21
  269. package/templates/storefront-restaurant/app/account/orders/page.tsx +0 -21
  270. package/templates/storefront-restaurant/app/account/page.tsx +0 -22
  271. package/templates/storefront-restaurant/app/account/settings/page.tsx +0 -21
  272. package/templates/storefront-restaurant/app/cart/page.tsx +0 -9
  273. package/templates/storefront-restaurant/app/categories/[slug]/listing-client.tsx +0 -19
  274. package/templates/storefront-restaurant/app/categories/[slug]/page.tsx +0 -118
  275. package/templates/storefront-restaurant/app/checkout/page.tsx +0 -17
  276. package/templates/storefront-restaurant/app/collections/[slug]/listing-client.tsx +0 -20
  277. package/templates/storefront-restaurant/app/collections/[slug]/page.tsx +0 -118
  278. package/templates/storefront-restaurant/app/contact/contact-form.tsx +0 -109
  279. package/templates/storefront-restaurant/app/contact/page.tsx +0 -54
  280. package/templates/storefront-restaurant/app/error.tsx +0 -60
  281. package/templates/storefront-restaurant/app/faq/page.tsx +0 -46
  282. package/templates/storefront-restaurant/app/globals.css +0 -44
  283. package/templates/storefront-restaurant/app/layout.tsx +0 -82
  284. package/templates/storefront-restaurant/app/llms.txt/route.ts +0 -94
  285. package/templates/storefront-restaurant/app/login/page.tsx +0 -17
  286. package/templates/storefront-restaurant/app/not-found.tsx +0 -39
  287. package/templates/storefront-restaurant/app/opensearch.xml/route.ts +0 -37
  288. package/templates/storefront-restaurant/app/orders/[id]/page.tsx +0 -21
  289. package/templates/storefront-restaurant/app/page.tsx +0 -97
  290. package/templates/storefront-restaurant/app/privacy/page.tsx +0 -44
  291. package/templates/storefront-restaurant/app/reservations/page.tsx +0 -66
  292. package/templates/storefront-restaurant/app/reservations/reservations-client.tsx +0 -234
  293. package/templates/storefront-restaurant/app/returns/page.tsx +0 -11
  294. package/templates/storefront-restaurant/app/robots.ts +0 -18
  295. package/templates/storefront-restaurant/app/search/page.tsx +0 -38
  296. package/templates/storefront-restaurant/app/search/search-client.tsx +0 -7
  297. package/templates/storefront-restaurant/app/shipping/page.tsx +0 -16
  298. package/templates/storefront-restaurant/app/shop/page.tsx +0 -31
  299. package/templates/storefront-restaurant/app/shop/shop-client.tsx +0 -27
  300. package/templates/storefront-restaurant/app/signup/page.tsx +0 -17
  301. package/templates/storefront-restaurant/app/sitemap-page/page.tsx +0 -167
  302. package/templates/storefront-restaurant/app/sitemap.ts +0 -62
  303. package/templates/storefront-restaurant/app/terms/page.tsx +0 -44
  304. package/templates/storefront-restaurant/app/track-order/page.tsx +0 -24
  305. package/templates/storefront-restaurant/app/track-order/track-order-form.tsx +0 -69
  306. package/templates/storefront-restaurant/components/account-iframe.tsx +0 -13
  307. package/templates/storefront-restaurant/components/cart-drawer.tsx +0 -14
  308. package/templates/storefront-restaurant/components/cart-pill.tsx +0 -36
  309. package/templates/storefront-restaurant/components/category-grid.tsx +0 -28
  310. package/templates/storefront-restaurant/components/collection-strip.tsx +0 -45
  311. package/templates/storefront-restaurant/components/footer.tsx +0 -148
  312. package/templates/storefront-restaurant/components/header.tsx +0 -43
  313. package/templates/storefront-restaurant/components/hero.tsx +0 -25
  314. package/templates/storefront-restaurant/components/nav-link.tsx +0 -20
  315. package/templates/storefront-restaurant/components/policy-page.tsx +0 -49
  316. package/templates/storefront-restaurant/components/product-modal.tsx +0 -104
  317. package/templates/storefront-restaurant/components/providers.tsx +0 -35
  318. package/templates/storefront-restaurant/components/store-product-card.tsx +0 -87
  319. package/templates/storefront-restaurant/lib/brand.ts +0 -377
  320. package/templates/storefront-restaurant/lib/cart.ts +0 -12
  321. package/templates/storefront-restaurant/next.config.ts +0 -42
  322. package/templates/storefront-restaurant/package.json +0 -35
  323. package/templates/storefront-restaurant/postcss.config.mjs +0 -7
  324. package/templates/storefront-restaurant/tsconfig.json +0 -23
  325. package/templates/storefront-restaurant/vitest.config.ts +0 -9
  326. package/templates/storefront-retail/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  327. package/templates/storefront-retail/.cursor/rules/cimplify-storefront.mdc +0 -25
  328. package/templates/storefront-retail/.env.example +0 -16
  329. package/templates/storefront-retail/AGENTS.md +0 -117
  330. package/templates/storefront-retail/CLAUDE.md +0 -22
  331. package/templates/storefront-retail/README.md +0 -77
  332. package/templates/storefront-retail/__tests__/brand.test.ts +0 -4
  333. package/templates/storefront-retail/__tests__/cart-flow.test.ts +0 -4
  334. package/templates/storefront-retail/__tests__/contract.test.ts +0 -4
  335. package/templates/storefront-retail/app/about/page.tsx +0 -41
  336. package/templates/storefront-retail/app/accessibility/page.tsx +0 -11
  337. package/templates/storefront-retail/app/account/addresses/page.tsx +0 -21
  338. package/templates/storefront-retail/app/account/orders/page.tsx +0 -21
  339. package/templates/storefront-retail/app/account/page.tsx +0 -22
  340. package/templates/storefront-retail/app/account/settings/page.tsx +0 -21
  341. package/templates/storefront-retail/app/cart/page.tsx +0 -9
  342. package/templates/storefront-retail/app/categories/[slug]/listing-client.tsx +0 -19
  343. package/templates/storefront-retail/app/categories/[slug]/page.tsx +0 -130
  344. package/templates/storefront-retail/app/checkout/page.tsx +0 -17
  345. package/templates/storefront-retail/app/collections/[slug]/listing-client.tsx +0 -20
  346. package/templates/storefront-retail/app/collections/[slug]/page.tsx +0 -130
  347. package/templates/storefront-retail/app/contact/contact-form.tsx +0 -109
  348. package/templates/storefront-retail/app/contact/page.tsx +0 -54
  349. package/templates/storefront-retail/app/error.tsx +0 -61
  350. package/templates/storefront-retail/app/faq/page.tsx +0 -46
  351. package/templates/storefront-retail/app/globals.css +0 -47
  352. package/templates/storefront-retail/app/layout.tsx +0 -77
  353. package/templates/storefront-retail/app/llms.txt/route.ts +0 -94
  354. package/templates/storefront-retail/app/login/page.tsx +0 -17
  355. package/templates/storefront-retail/app/not-found.tsx +0 -39
  356. package/templates/storefront-retail/app/opensearch.xml/route.ts +0 -37
  357. package/templates/storefront-retail/app/orders/[id]/page.tsx +0 -24
  358. package/templates/storefront-retail/app/page.tsx +0 -182
  359. package/templates/storefront-retail/app/privacy/page.tsx +0 -44
  360. package/templates/storefront-retail/app/products/[slug]/page.tsx +0 -165
  361. package/templates/storefront-retail/app/products/[slug]/product-detail.tsx +0 -70
  362. package/templates/storefront-retail/app/returns/page.tsx +0 -11
  363. package/templates/storefront-retail/app/robots.ts +0 -18
  364. package/templates/storefront-retail/app/search/page.tsx +0 -38
  365. package/templates/storefront-retail/app/search/search-client.tsx +0 -7
  366. package/templates/storefront-retail/app/shipping/page.tsx +0 -16
  367. package/templates/storefront-retail/app/shop/page.tsx +0 -63
  368. package/templates/storefront-retail/app/shop/shop-client.tsx +0 -32
  369. package/templates/storefront-retail/app/signup/page.tsx +0 -17
  370. package/templates/storefront-retail/app/sitemap-page/page.tsx +0 -167
  371. package/templates/storefront-retail/app/sitemap.ts +0 -59
  372. package/templates/storefront-retail/app/terms/page.tsx +0 -44
  373. package/templates/storefront-retail/app/track-order/page.tsx +0 -24
  374. package/templates/storefront-retail/app/track-order/track-order-form.tsx +0 -69
  375. package/templates/storefront-retail/components/account-iframe.tsx +0 -13
  376. package/templates/storefront-retail/components/brand-marquee.tsx +0 -27
  377. package/templates/storefront-retail/components/cart-drawer.tsx +0 -14
  378. package/templates/storefront-retail/components/cart-pill.tsx +0 -36
  379. package/templates/storefront-retail/components/category-grid.tsx +0 -28
  380. package/templates/storefront-retail/components/category-tiles.tsx +0 -104
  381. package/templates/storefront-retail/components/collection-strip.tsx +0 -45
  382. package/templates/storefront-retail/components/feature-hero.tsx +0 -84
  383. package/templates/storefront-retail/components/footer.tsx +0 -153
  384. package/templates/storefront-retail/components/header.tsx +0 -45
  385. package/templates/storefront-retail/components/hero.tsx +0 -28
  386. package/templates/storefront-retail/components/nav-link.tsx +0 -20
  387. package/templates/storefront-retail/components/newsletter.tsx +0 -50
  388. package/templates/storefront-retail/components/policy-page.tsx +0 -49
  389. package/templates/storefront-retail/components/promo-banner.tsx +0 -41
  390. package/templates/storefront-retail/components/providers.tsx +0 -35
  391. package/templates/storefront-retail/components/section-heading.tsx +0 -37
  392. package/templates/storefront-retail/components/store-product-card.tsx +0 -87
  393. package/templates/storefront-retail/components/trade-in-cta.tsx +0 -54
  394. package/templates/storefront-retail/components/trust-bar.tsx +0 -66
  395. package/templates/storefront-retail/lib/brand.ts +0 -664
  396. package/templates/storefront-retail/lib/cart.ts +0 -12
  397. package/templates/storefront-retail/next.config.ts +0 -42
  398. package/templates/storefront-retail/package.json +0 -35
  399. package/templates/storefront-retail/postcss.config.mjs +0 -7
  400. package/templates/storefront-retail/tsconfig.json +0 -23
  401. package/templates/storefront-retail/vitest.config.ts +0 -9
  402. package/templates/storefront-services/.claude/skills/cimplify-storefront/SKILL.md +0 -145
  403. package/templates/storefront-services/.cursor/rules/cimplify-storefront.mdc +0 -25
  404. package/templates/storefront-services/.env.example +0 -16
  405. package/templates/storefront-services/AGENTS.md +0 -101
  406. package/templates/storefront-services/CLAUDE.md +0 -22
  407. package/templates/storefront-services/README.md +0 -73
  408. package/templates/storefront-services/__tests__/brand.test.ts +0 -4
  409. package/templates/storefront-services/__tests__/cart-flow.test.ts +0 -4
  410. package/templates/storefront-services/__tests__/contract.test.ts +0 -4
  411. package/templates/storefront-services/app/about/page.tsx +0 -38
  412. package/templates/storefront-services/app/accessibility/page.tsx +0 -11
  413. package/templates/storefront-services/app/account/addresses/page.tsx +0 -21
  414. package/templates/storefront-services/app/account/orders/page.tsx +0 -21
  415. package/templates/storefront-services/app/account/page.tsx +0 -22
  416. package/templates/storefront-services/app/account/settings/page.tsx +0 -21
  417. package/templates/storefront-services/app/book/book-client.tsx +0 -195
  418. package/templates/storefront-services/app/book/page.tsx +0 -65
  419. package/templates/storefront-services/app/cart/page.tsx +0 -9
  420. package/templates/storefront-services/app/categories/[slug]/listing-client.tsx +0 -19
  421. package/templates/storefront-services/app/categories/[slug]/page.tsx +0 -118
  422. package/templates/storefront-services/app/checkout/page.tsx +0 -17
  423. package/templates/storefront-services/app/collections/[slug]/listing-client.tsx +0 -20
  424. package/templates/storefront-services/app/collections/[slug]/page.tsx +0 -118
  425. package/templates/storefront-services/app/contact/contact-form.tsx +0 -109
  426. package/templates/storefront-services/app/contact/page.tsx +0 -54
  427. package/templates/storefront-services/app/error.tsx +0 -60
  428. package/templates/storefront-services/app/faq/page.tsx +0 -46
  429. package/templates/storefront-services/app/globals.css +0 -45
  430. package/templates/storefront-services/app/layout.tsx +0 -82
  431. package/templates/storefront-services/app/llms.txt/route.ts +0 -94
  432. package/templates/storefront-services/app/login/page.tsx +0 -17
  433. package/templates/storefront-services/app/not-found.tsx +0 -39
  434. package/templates/storefront-services/app/opensearch.xml/route.ts +0 -37
  435. package/templates/storefront-services/app/orders/[id]/page.tsx +0 -21
  436. package/templates/storefront-services/app/page.tsx +0 -97
  437. package/templates/storefront-services/app/privacy/page.tsx +0 -44
  438. package/templates/storefront-services/app/returns/page.tsx +0 -11
  439. package/templates/storefront-services/app/robots.ts +0 -18
  440. package/templates/storefront-services/app/search/page.tsx +0 -38
  441. package/templates/storefront-services/app/search/search-client.tsx +0 -7
  442. package/templates/storefront-services/app/shipping/page.tsx +0 -16
  443. package/templates/storefront-services/app/shop/page.tsx +0 -31
  444. package/templates/storefront-services/app/shop/shop-client.tsx +0 -27
  445. package/templates/storefront-services/app/signup/page.tsx +0 -17
  446. package/templates/storefront-services/app/sitemap-page/page.tsx +0 -167
  447. package/templates/storefront-services/app/sitemap.ts +0 -62
  448. package/templates/storefront-services/app/terms/page.tsx +0 -44
  449. package/templates/storefront-services/app/track-order/page.tsx +0 -24
  450. package/templates/storefront-services/app/track-order/track-order-form.tsx +0 -69
  451. package/templates/storefront-services/components/account-iframe.tsx +0 -13
  452. package/templates/storefront-services/components/cart-drawer.tsx +0 -14
  453. package/templates/storefront-services/components/cart-pill.tsx +0 -36
  454. package/templates/storefront-services/components/category-grid.tsx +0 -28
  455. package/templates/storefront-services/components/collection-strip.tsx +0 -45
  456. package/templates/storefront-services/components/footer.tsx +0 -148
  457. package/templates/storefront-services/components/header.tsx +0 -43
  458. package/templates/storefront-services/components/hero.tsx +0 -25
  459. package/templates/storefront-services/components/nav-link.tsx +0 -20
  460. package/templates/storefront-services/components/policy-page.tsx +0 -49
  461. package/templates/storefront-services/components/product-modal.tsx +0 -104
  462. package/templates/storefront-services/components/providers.tsx +0 -35
  463. package/templates/storefront-services/components/store-product-card.tsx +0 -87
  464. package/templates/storefront-services/lib/brand.ts +0 -396
  465. package/templates/storefront-services/lib/cart.ts +0 -12
  466. package/templates/storefront-services/next.config.ts +0 -42
  467. package/templates/storefront-services/package.json +0 -35
  468. package/templates/storefront-services/postcss.config.mjs +0 -7
  469. package/templates/storefront-services/tsconfig.json +0 -23
  470. package/templates/storefront-services/vitest.config.ts +0 -9
@@ -1,97 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { Suspense } from "react";
3
- import { cacheTag, cacheLife } from "next/cache";
4
- import { getServerClient, tags, type Product } from "@cimplify/sdk/server";
5
- import { Hero } from "@/components/hero";
6
- import { CollectionStrip } from "@/components/collection-strip";
7
- import { CategoryGrid } from "@/components/category-grid";
8
- import { brand } from "@/lib/brand";
9
-
10
- export const metadata: Metadata = {
11
- title: `${brand.name} — ${brand.hero.title}`,
12
- description: brand.description,
13
- };
14
-
15
- async function getHomeData() {
16
- "use cache";
17
- cacheTag(tags.collections(), tags.categories(), tags.products());
18
- cacheLife("hours");
19
-
20
- const client = getServerClient();
21
- const [colRes, catRes] = await Promise.all([
22
- client.catalogue.getCollections(),
23
- client.catalogue.getCategories(),
24
- ]);
25
- const collections = colRes.ok ? colRes.value : [];
26
- const categories = catRes.ok ? catRes.value : [];
27
-
28
- const collectionsWithProducts = await Promise.all(
29
- collections.map(async (col) => {
30
- const r = await client.catalogue.getCollectionProducts(col.id);
31
- const items = r.ok
32
- ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))
33
- : [];
34
- return { collection: col, products: items };
35
- }),
36
- );
37
-
38
- return {
39
- collections: collectionsWithProducts.filter((x) => x.products.length > 0),
40
- categories,
41
- };
42
- }
43
-
44
- export default async function HomePage() {
45
- const { collections, categories } = await getHomeData();
46
-
47
- return (
48
- <>
49
- <Hero
50
- badge={brand.hero.badge}
51
- title={brand.hero.title}
52
- subtitle={brand.hero.subtitle}
53
- />
54
- {collections.map(({ collection, products }) => (
55
- <Suspense
56
- key={collection.id}
57
- fallback={<StripSkeleton title={collection.name} />}
58
- >
59
- <CollectionStrip
60
- collection={collection}
61
- products={products}
62
- collectionHref={`/collections/${collection.slug}`}
63
- />
64
- </Suspense>
65
- ))}
66
- <Suspense fallback={<CategoryGridSkeleton />}>
67
- <CategoryGrid categories={categories} />
68
- </Suspense>
69
- </>
70
- );
71
- }
72
-
73
- function StripSkeleton({ title }: { title: string }) {
74
- return (
75
- <section className="max-w-7xl mx-auto px-8 pt-12">
76
- <h2 className="font-serif text-[28px] font-semibold m-0 mb-5">{title}</h2>
77
- <div className="grid grid-flow-col auto-cols-[minmax(220px,1fr)] gap-4 overflow-x-auto pb-2">
78
- {Array.from({ length: 5 }).map((_, i) => (
79
- <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />
80
- ))}
81
- </div>
82
- </section>
83
- );
84
- }
85
-
86
- function CategoryGridSkeleton() {
87
- return (
88
- <section className="max-w-7xl mx-auto px-8 pt-14">
89
- <div className="h-8 w-48 bg-muted rounded mb-5 animate-pulse" />
90
- <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
91
- {Array.from({ length: 6 }).map((_, i) => (
92
- <div key={i} className="h-32 bg-muted rounded-2xl animate-pulse" />
93
- ))}
94
- </div>
95
- </section>
96
- );
97
- }
@@ -1,44 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { brand } from "@/lib/brand";
3
-
4
- export const metadata: Metadata = {
5
- title: `Privacy Policy — ${brand.name}`,
6
- description: `How ${brand.name} collects, uses, and protects your personal data.`,
7
- };
8
-
9
- export default function PrivacyPage() {
10
- const p = brand.privacy;
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
- {p.eyebrow}
15
- </p>
16
- <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">
17
- {p.title}
18
- </h1>
19
- <p className="text-sm text-muted-foreground not-prose mb-10">
20
- Last updated: {p.lastUpdated}
21
- </p>
22
-
23
- <section className="space-y-5 leading-relaxed text-foreground/90">
24
- {p.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,11 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { brand } from "@/lib/brand";
3
- import { PolicyPage } from "@/components/policy-page";
4
-
5
- export const metadata: Metadata = {
6
- title: `${brand.returns.title} — ${brand.name}`,
7
- };
8
-
9
- export default function ReturnsPage() {
10
- return <PolicyPage policy={brand.returns} />;
11
- }
@@ -1,18 +0,0 @@
1
- import type { MetadataRoute } from "next";
2
-
3
- const SITE_URL =
4
- process.env.NEXT_PUBLIC_SITE_URL?.trim() || "https://example.com";
5
-
6
- export default function robots(): MetadataRoute.Robots {
7
- return {
8
- rules: [
9
- {
10
- userAgent: "*",
11
- allow: "/",
12
- disallow: ["/cart", "/checkout", "/orders/", "/api/"],
13
- },
14
- ],
15
- sitemap: `${SITE_URL}/sitemap.xml`,
16
- host: SITE_URL,
17
- };
18
- }
@@ -1,38 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { Suspense } from "react";
3
- import { SearchClient } from "./search-client";
4
- import { brand } from "@/lib/brand";
5
-
6
- export const metadata: Metadata = {
7
- title: `Search — ${brand.name}`,
8
- description: `Search ${brand.name} — products, collections, categories.`,
9
- };
10
-
11
- export default function SearchPage() {
12
- return (
13
- <article className="max-w-7xl mx-auto px-6 sm:px-8 py-10">
14
- <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">
15
- Search
16
- </p>
17
- <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">
18
- Find anything.
19
- </h1>
20
- <Suspense fallback={<SearchSkeleton />}>
21
- <SearchClient />
22
- </Suspense>
23
- </article>
24
- );
25
- }
26
-
27
- function SearchSkeleton() {
28
- return (
29
- <div>
30
- <div className="h-12 w-full max-w-xl bg-muted rounded animate-pulse mb-8" />
31
- <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3 sm:gap-4">
32
- {Array.from({ length: 8 }).map((_, i) => (
33
- <div key={i} className="aspect-[4/3] bg-muted rounded-2xl animate-pulse" />
34
- ))}
35
- </div>
36
- </div>
37
- );
38
- }
@@ -1,7 +0,0 @@
1
- "use client";
2
-
3
- import { SearchPage } from "@cimplify/sdk/react";
4
-
5
- export function SearchClient() {
6
- return <SearchPage />;
7
- }
@@ -1,16 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { brand } from "@/lib/brand";
3
- import { PolicyPage } from "@/components/policy-page";
4
-
5
- export const metadata: Metadata = {
6
- title: `${brand.shipping.title} — ${brand.name}`,
7
- description: brand.shipping.sections[0]?.body
8
- ? typeof brand.shipping.sections[0].body === "string"
9
- ? brand.shipping.sections[0].body
10
- : brand.shipping.sections[0].body.intro
11
- : undefined,
12
- };
13
-
14
- export default function ShippingPage() {
15
- return <PolicyPage policy={brand.shipping} />;
16
- }
@@ -1,31 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { cacheTag, cacheLife } from "next/cache";
3
- import { getServerClient, tags } from "@cimplify/sdk/server";
4
- import { ShopClient } from "./shop-client";
5
- import { brand } from "@/lib/brand";
6
-
7
- export const metadata: Metadata = {
8
- title: `Shop — ${brand.name}`,
9
- description: brand.description,
10
- };
11
-
12
- async function getShopData() {
13
- "use cache";
14
- cacheTag(tags.products(), tags.categories());
15
- cacheLife("hours");
16
-
17
- const client = getServerClient();
18
- const [p, c] = await Promise.all([
19
- client.catalogue.getProducts({ limit: 50 }),
20
- client.catalogue.getCategories(),
21
- ]);
22
- return {
23
- products: p.ok ? p.value.items : [],
24
- categories: c.ok ? c.value : [],
25
- };
26
- }
27
-
28
- export default async function ShopPage() {
29
- const { products, categories } = await getShopData();
30
- return <ShopClient products={products} categories={categories} />;
31
- }
@@ -1,27 +0,0 @@
1
- "use client";
2
-
3
- import { CataloguePage } from "@cimplify/sdk/react";
4
- import type { Category, Product } from "@cimplify/sdk";
5
- import { StoreProductCard } from "@/components/store-product-card";
6
-
7
- /**
8
- * Client island for the shop page. Server-side fetches all products and
9
- * categories (cached via `'use cache'` in `app/shop/page.tsx`), then hands
10
- * them to `<CataloguePage>` which owns the interactive filter / sort state.
11
- */
12
- export function ShopClient({
13
- products,
14
- categories,
15
- }: {
16
- products: Product[];
17
- categories: Category[];
18
- }) {
19
- return (
20
- <CataloguePage
21
- title="The Menu"
22
- products={products}
23
- categories={categories}
24
- renderCard={(p) => <StoreProductCard product={p} />}
25
- />
26
- );
27
- }
@@ -1,17 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { redirect } from "next/navigation";
3
- import { brand } from "@/lib/brand";
4
-
5
- export const metadata: Metadata = {
6
- title: `Create an account — ${brand.name}`,
7
- description: brand.account.signupSubtitle,
8
- };
9
-
10
- /**
11
- * Cimplify Link handles sign-up inside the `<CimplifyAccount>` iframe.
12
- * We bounce /signup to /account; the iframe shows the create-account UI
13
- * for visitors with no session.
14
- */
15
- export default function SignupPage(): never {
16
- redirect("/account");
17
- }
@@ -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
- }