@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.
- package/README.md +21 -16
- package/dist/advanced.d.mts +1 -1
- package/dist/advanced.d.ts +1 -1
- package/dist/{client-5B9IPDmf.d.ts → client-Bsd4Vi_y.d.ts} +1 -0
- package/dist/{client-CpVMRI8V.d.mts → client-C5LcbNxL.d.mts} +1 -0
- package/dist/{client-DMhRxuzm.d.ts → client-DjzIoewX.d.ts} +1 -1
- package/dist/{client-Cwb1sMr3.d.mts → client-EM8xKCPO.d.mts} +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/react.d.mts +120 -45
- package/dist/react.d.ts +120 -45
- package/dist/react.js +453 -97
- package/dist/react.mjs +452 -98
- package/dist/server.d.mts +2 -2
- package/dist/server.d.ts +2 -2
- package/dist/styles.css +2 -2
- package/dist/testing/suite.d.mts +2 -2
- package/dist/testing/suite.d.ts +2 -2
- package/dist/testing.d.mts +2 -2
- package/dist/testing.d.ts +2 -2
- package/package.json +5 -9
- package/registry/booking-page.json +2 -1
- package/registry/bookings-page.json +1 -1
- package/registry/index.json +24 -0
- package/dist/cli/commands/deploy.mjs +0 -717
- package/dist/cli/commands/dev.mjs +0 -479
- package/dist/cli/commands/domains.mjs +0 -769
- package/dist/cli/commands/env.mjs +0 -705
- package/dist/cli/commands/link.mjs +0 -378
- package/dist/cli/commands/login.mjs +0 -584
- package/dist/cli/commands/logout.mjs +0 -75
- package/dist/cli/commands/logs.mjs +0 -432
- package/dist/cli/commands/projects.mjs +0 -473
- package/dist/cli/commands/repo.mjs +0 -584
- package/dist/cli/commands/rollback.mjs +0 -553
- package/dist/cli/commands/status.mjs +0 -450
- package/dist/cli/commands/unlink.mjs +0 -79
- package/dist/cli/commands/whoami.mjs +0 -285
- package/dist/cli.js +0 -184
- package/dist/dispatcher.mjs +0 -360
- package/registry/service-card.json +0 -16
- package/registry/service-grid.json +0 -16
- package/templates/storefront-bakery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
- package/templates/storefront-bakery/.cursor/rules/cimplify-storefront.mdc +0 -25
- package/templates/storefront-bakery/.env.example +0 -16
- package/templates/storefront-bakery/AGENTS.md +0 -120
- package/templates/storefront-bakery/CLAUDE.md +0 -22
- package/templates/storefront-bakery/README.md +0 -73
- package/templates/storefront-bakery/__tests__/brand.test.ts +0 -4
- package/templates/storefront-bakery/__tests__/cart-flow.test.ts +0 -4
- package/templates/storefront-bakery/__tests__/contract.test.ts +0 -4
- package/templates/storefront-bakery/app/about/page.tsx +0 -38
- package/templates/storefront-bakery/app/accessibility/page.tsx +0 -11
- package/templates/storefront-bakery/app/account/addresses/page.tsx +0 -21
- package/templates/storefront-bakery/app/account/orders/page.tsx +0 -21
- package/templates/storefront-bakery/app/account/page.tsx +0 -22
- package/templates/storefront-bakery/app/account/settings/page.tsx +0 -21
- package/templates/storefront-bakery/app/cart/page.tsx +0 -9
- package/templates/storefront-bakery/app/categories/[slug]/listing-client.tsx +0 -19
- package/templates/storefront-bakery/app/categories/[slug]/page.tsx +0 -118
- package/templates/storefront-bakery/app/checkout/page.tsx +0 -17
- package/templates/storefront-bakery/app/collections/[slug]/listing-client.tsx +0 -20
- package/templates/storefront-bakery/app/collections/[slug]/page.tsx +0 -118
- package/templates/storefront-bakery/app/contact/contact-form.tsx +0 -109
- package/templates/storefront-bakery/app/contact/page.tsx +0 -54
- package/templates/storefront-bakery/app/error.tsx +0 -60
- package/templates/storefront-bakery/app/faq/page.tsx +0 -46
- package/templates/storefront-bakery/app/globals.css +0 -47
- package/templates/storefront-bakery/app/layout.tsx +0 -82
- package/templates/storefront-bakery/app/llms.txt/route.ts +0 -94
- package/templates/storefront-bakery/app/login/page.tsx +0 -17
- package/templates/storefront-bakery/app/not-found.tsx +0 -39
- package/templates/storefront-bakery/app/opensearch.xml/route.ts +0 -37
- package/templates/storefront-bakery/app/orders/[id]/page.tsx +0 -21
- package/templates/storefront-bakery/app/page.tsx +0 -97
- package/templates/storefront-bakery/app/privacy/page.tsx +0 -44
- package/templates/storefront-bakery/app/returns/page.tsx +0 -11
- package/templates/storefront-bakery/app/robots.ts +0 -18
- package/templates/storefront-bakery/app/search/page.tsx +0 -38
- package/templates/storefront-bakery/app/search/search-client.tsx +0 -7
- package/templates/storefront-bakery/app/shipping/page.tsx +0 -16
- package/templates/storefront-bakery/app/shop/page.tsx +0 -31
- package/templates/storefront-bakery/app/shop/shop-client.tsx +0 -27
- package/templates/storefront-bakery/app/signup/page.tsx +0 -17
- package/templates/storefront-bakery/app/sitemap-page/page.tsx +0 -167
- package/templates/storefront-bakery/app/sitemap.ts +0 -62
- package/templates/storefront-bakery/app/terms/page.tsx +0 -44
- package/templates/storefront-bakery/app/track-order/page.tsx +0 -24
- package/templates/storefront-bakery/app/track-order/track-order-form.tsx +0 -69
- package/templates/storefront-bakery/components/account-iframe.tsx +0 -13
- package/templates/storefront-bakery/components/cart-drawer.tsx +0 -14
- package/templates/storefront-bakery/components/cart-pill.tsx +0 -36
- package/templates/storefront-bakery/components/category-grid.tsx +0 -28
- package/templates/storefront-bakery/components/collection-strip.tsx +0 -45
- package/templates/storefront-bakery/components/footer.tsx +0 -148
- package/templates/storefront-bakery/components/header.tsx +0 -43
- package/templates/storefront-bakery/components/hero.tsx +0 -25
- package/templates/storefront-bakery/components/nav-link.tsx +0 -20
- package/templates/storefront-bakery/components/policy-page.tsx +0 -49
- package/templates/storefront-bakery/components/product-modal.tsx +0 -104
- package/templates/storefront-bakery/components/providers.tsx +0 -35
- package/templates/storefront-bakery/components/store-product-card.tsx +0 -87
- package/templates/storefront-bakery/lib/brand.ts +0 -570
- package/templates/storefront-bakery/lib/cart.ts +0 -12
- package/templates/storefront-bakery/next.config.ts +0 -42
- package/templates/storefront-bakery/package.json +0 -35
- package/templates/storefront-bakery/postcss.config.mjs +0 -7
- package/templates/storefront-bakery/tsconfig.json +0 -23
- package/templates/storefront-bakery/vitest.config.ts +0 -9
- package/templates/storefront-fashion/.claude/skills/cimplify-storefront/SKILL.md +0 -145
- package/templates/storefront-fashion/.cursor/rules/cimplify-storefront.mdc +0 -25
- package/templates/storefront-fashion/.env.example +0 -16
- package/templates/storefront-fashion/AGENTS.md +0 -126
- package/templates/storefront-fashion/CLAUDE.md +0 -22
- package/templates/storefront-fashion/README.md +0 -77
- package/templates/storefront-fashion/__tests__/brand.test.ts +0 -4
- package/templates/storefront-fashion/__tests__/cart-flow.test.ts +0 -55
- package/templates/storefront-fashion/__tests__/contract.test.ts +0 -4
- package/templates/storefront-fashion/app/about/page.tsx +0 -41
- package/templates/storefront-fashion/app/accessibility/page.tsx +0 -11
- package/templates/storefront-fashion/app/account/addresses/page.tsx +0 -21
- package/templates/storefront-fashion/app/account/orders/page.tsx +0 -21
- package/templates/storefront-fashion/app/account/page.tsx +0 -22
- package/templates/storefront-fashion/app/account/settings/page.tsx +0 -21
- package/templates/storefront-fashion/app/cart/page.tsx +0 -9
- package/templates/storefront-fashion/app/categories/[slug]/listing-client.tsx +0 -19
- package/templates/storefront-fashion/app/categories/[slug]/page.tsx +0 -130
- package/templates/storefront-fashion/app/checkout/page.tsx +0 -17
- package/templates/storefront-fashion/app/collections/[slug]/listing-client.tsx +0 -20
- package/templates/storefront-fashion/app/collections/[slug]/page.tsx +0 -130
- package/templates/storefront-fashion/app/contact/contact-form.tsx +0 -109
- package/templates/storefront-fashion/app/contact/page.tsx +0 -54
- package/templates/storefront-fashion/app/error.tsx +0 -61
- package/templates/storefront-fashion/app/faq/page.tsx +0 -46
- package/templates/storefront-fashion/app/globals.css +0 -46
- package/templates/storefront-fashion/app/layout.tsx +0 -78
- package/templates/storefront-fashion/app/llms.txt/route.ts +0 -94
- package/templates/storefront-fashion/app/login/page.tsx +0 -17
- package/templates/storefront-fashion/app/lookbook/page.tsx +0 -132
- package/templates/storefront-fashion/app/not-found.tsx +0 -39
- package/templates/storefront-fashion/app/opensearch.xml/route.ts +0 -37
- package/templates/storefront-fashion/app/orders/[id]/page.tsx +0 -24
- package/templates/storefront-fashion/app/page.tsx +0 -183
- package/templates/storefront-fashion/app/privacy/page.tsx +0 -44
- package/templates/storefront-fashion/app/products/[slug]/page.tsx +0 -165
- package/templates/storefront-fashion/app/products/[slug]/product-detail.tsx +0 -70
- package/templates/storefront-fashion/app/returns/page.tsx +0 -11
- package/templates/storefront-fashion/app/robots.ts +0 -18
- package/templates/storefront-fashion/app/search/page.tsx +0 -38
- package/templates/storefront-fashion/app/search/search-client.tsx +0 -7
- package/templates/storefront-fashion/app/shipping/page.tsx +0 -16
- package/templates/storefront-fashion/app/shop/page.tsx +0 -63
- package/templates/storefront-fashion/app/shop/shop-client.tsx +0 -32
- package/templates/storefront-fashion/app/signup/page.tsx +0 -17
- package/templates/storefront-fashion/app/sitemap-page/page.tsx +0 -167
- package/templates/storefront-fashion/app/sitemap.ts +0 -59
- package/templates/storefront-fashion/app/size-guide/page.tsx +0 -155
- package/templates/storefront-fashion/app/terms/page.tsx +0 -44
- package/templates/storefront-fashion/app/track-order/page.tsx +0 -24
- package/templates/storefront-fashion/app/track-order/track-order-form.tsx +0 -69
- package/templates/storefront-fashion/components/account-iframe.tsx +0 -13
- package/templates/storefront-fashion/components/brand-marquee.tsx +0 -27
- package/templates/storefront-fashion/components/cart-drawer.tsx +0 -14
- package/templates/storefront-fashion/components/cart-pill.tsx +0 -36
- package/templates/storefront-fashion/components/category-grid.tsx +0 -28
- package/templates/storefront-fashion/components/category-tiles.tsx +0 -104
- package/templates/storefront-fashion/components/collection-strip.tsx +0 -45
- package/templates/storefront-fashion/components/feature-hero.tsx +0 -82
- package/templates/storefront-fashion/components/footer.tsx +0 -153
- package/templates/storefront-fashion/components/header.tsx +0 -43
- package/templates/storefront-fashion/components/hero.tsx +0 -28
- package/templates/storefront-fashion/components/nav-link.tsx +0 -20
- package/templates/storefront-fashion/components/newsletter.tsx +0 -50
- package/templates/storefront-fashion/components/policy-page.tsx +0 -49
- package/templates/storefront-fashion/components/promo-banner.tsx +0 -41
- package/templates/storefront-fashion/components/providers.tsx +0 -35
- package/templates/storefront-fashion/components/section-heading.tsx +0 -37
- package/templates/storefront-fashion/components/store-product-card.tsx +0 -87
- package/templates/storefront-fashion/components/trade-in-cta.tsx +0 -54
- package/templates/storefront-fashion/components/trust-bar.tsx +0 -66
- package/templates/storefront-fashion/e2e/visual.spec.ts +0 -52
- package/templates/storefront-fashion/lib/brand.ts +0 -518
- package/templates/storefront-fashion/lib/cart.ts +0 -12
- package/templates/storefront-fashion/next.config.ts +0 -42
- package/templates/storefront-fashion/package.json +0 -38
- package/templates/storefront-fashion/playwright.config.ts +0 -48
- package/templates/storefront-fashion/postcss.config.mjs +0 -7
- package/templates/storefront-fashion/tsconfig.json +0 -23
- package/templates/storefront-fashion/vitest.config.ts +0 -9
- package/templates/storefront-grocery/.claude/skills/cimplify-storefront/SKILL.md +0 -145
- package/templates/storefront-grocery/.cursor/rules/cimplify-storefront.mdc +0 -25
- package/templates/storefront-grocery/.env.example +0 -16
- package/templates/storefront-grocery/AGENTS.md +0 -96
- package/templates/storefront-grocery/CLAUDE.md +0 -22
- package/templates/storefront-grocery/README.md +0 -73
- package/templates/storefront-grocery/__tests__/brand.test.ts +0 -4
- package/templates/storefront-grocery/__tests__/cart-flow.test.ts +0 -4
- package/templates/storefront-grocery/__tests__/contract.test.ts +0 -4
- package/templates/storefront-grocery/app/about/page.tsx +0 -38
- package/templates/storefront-grocery/app/accessibility/page.tsx +0 -11
- package/templates/storefront-grocery/app/account/addresses/page.tsx +0 -21
- package/templates/storefront-grocery/app/account/orders/page.tsx +0 -21
- package/templates/storefront-grocery/app/account/page.tsx +0 -22
- package/templates/storefront-grocery/app/account/settings/page.tsx +0 -21
- package/templates/storefront-grocery/app/cart/page.tsx +0 -9
- package/templates/storefront-grocery/app/categories/[slug]/listing-client.tsx +0 -19
- package/templates/storefront-grocery/app/categories/[slug]/page.tsx +0 -118
- package/templates/storefront-grocery/app/checkout/page.tsx +0 -17
- package/templates/storefront-grocery/app/collections/[slug]/listing-client.tsx +0 -20
- package/templates/storefront-grocery/app/collections/[slug]/page.tsx +0 -118
- package/templates/storefront-grocery/app/contact/contact-form.tsx +0 -109
- package/templates/storefront-grocery/app/contact/page.tsx +0 -54
- package/templates/storefront-grocery/app/error.tsx +0 -60
- package/templates/storefront-grocery/app/faq/page.tsx +0 -46
- package/templates/storefront-grocery/app/globals.css +0 -45
- package/templates/storefront-grocery/app/layout.tsx +0 -77
- package/templates/storefront-grocery/app/llms.txt/route.ts +0 -94
- package/templates/storefront-grocery/app/login/page.tsx +0 -17
- package/templates/storefront-grocery/app/not-found.tsx +0 -39
- package/templates/storefront-grocery/app/opensearch.xml/route.ts +0 -37
- package/templates/storefront-grocery/app/orders/[id]/page.tsx +0 -21
- package/templates/storefront-grocery/app/page.tsx +0 -97
- package/templates/storefront-grocery/app/privacy/page.tsx +0 -44
- package/templates/storefront-grocery/app/returns/page.tsx +0 -11
- package/templates/storefront-grocery/app/robots.ts +0 -18
- package/templates/storefront-grocery/app/search/page.tsx +0 -38
- package/templates/storefront-grocery/app/search/search-client.tsx +0 -7
- package/templates/storefront-grocery/app/shipping/page.tsx +0 -16
- package/templates/storefront-grocery/app/shop/page.tsx +0 -31
- package/templates/storefront-grocery/app/shop/shop-client.tsx +0 -27
- package/templates/storefront-grocery/app/signup/page.tsx +0 -17
- package/templates/storefront-grocery/app/sitemap-page/page.tsx +0 -167
- package/templates/storefront-grocery/app/sitemap.ts +0 -62
- package/templates/storefront-grocery/app/terms/page.tsx +0 -44
- package/templates/storefront-grocery/app/track-order/page.tsx +0 -24
- package/templates/storefront-grocery/app/track-order/track-order-form.tsx +0 -69
- package/templates/storefront-grocery/components/account-iframe.tsx +0 -13
- package/templates/storefront-grocery/components/cart-drawer.tsx +0 -14
- package/templates/storefront-grocery/components/cart-pill.tsx +0 -36
- package/templates/storefront-grocery/components/category-grid.tsx +0 -28
- package/templates/storefront-grocery/components/collection-strip.tsx +0 -45
- package/templates/storefront-grocery/components/footer.tsx +0 -148
- package/templates/storefront-grocery/components/header.tsx +0 -43
- package/templates/storefront-grocery/components/hero.tsx +0 -25
- package/templates/storefront-grocery/components/nav-link.tsx +0 -20
- package/templates/storefront-grocery/components/policy-page.tsx +0 -49
- package/templates/storefront-grocery/components/product-modal.tsx +0 -104
- package/templates/storefront-grocery/components/providers.tsx +0 -35
- package/templates/storefront-grocery/components/store-product-card.tsx +0 -87
- package/templates/storefront-grocery/lib/brand.ts +0 -375
- package/templates/storefront-grocery/lib/cart.ts +0 -12
- package/templates/storefront-grocery/next.config.ts +0 -42
- package/templates/storefront-grocery/package.json +0 -35
- package/templates/storefront-grocery/postcss.config.mjs +0 -7
- package/templates/storefront-grocery/tsconfig.json +0 -23
- package/templates/storefront-grocery/vitest.config.ts +0 -9
- package/templates/storefront-restaurant/.claude/skills/cimplify-storefront/SKILL.md +0 -145
- package/templates/storefront-restaurant/.cursor/rules/cimplify-storefront.mdc +0 -25
- package/templates/storefront-restaurant/.env.example +0 -16
- package/templates/storefront-restaurant/AGENTS.md +0 -102
- package/templates/storefront-restaurant/CLAUDE.md +0 -22
- package/templates/storefront-restaurant/README.md +0 -73
- package/templates/storefront-restaurant/__tests__/brand.test.ts +0 -4
- package/templates/storefront-restaurant/__tests__/cart-flow.test.ts +0 -4
- package/templates/storefront-restaurant/__tests__/contract.test.ts +0 -4
- package/templates/storefront-restaurant/app/about/page.tsx +0 -38
- package/templates/storefront-restaurant/app/accessibility/page.tsx +0 -11
- package/templates/storefront-restaurant/app/account/addresses/page.tsx +0 -21
- package/templates/storefront-restaurant/app/account/orders/page.tsx +0 -21
- package/templates/storefront-restaurant/app/account/page.tsx +0 -22
- package/templates/storefront-restaurant/app/account/settings/page.tsx +0 -21
- package/templates/storefront-restaurant/app/cart/page.tsx +0 -9
- package/templates/storefront-restaurant/app/categories/[slug]/listing-client.tsx +0 -19
- package/templates/storefront-restaurant/app/categories/[slug]/page.tsx +0 -118
- package/templates/storefront-restaurant/app/checkout/page.tsx +0 -17
- package/templates/storefront-restaurant/app/collections/[slug]/listing-client.tsx +0 -20
- package/templates/storefront-restaurant/app/collections/[slug]/page.tsx +0 -118
- package/templates/storefront-restaurant/app/contact/contact-form.tsx +0 -109
- package/templates/storefront-restaurant/app/contact/page.tsx +0 -54
- package/templates/storefront-restaurant/app/error.tsx +0 -60
- package/templates/storefront-restaurant/app/faq/page.tsx +0 -46
- package/templates/storefront-restaurant/app/globals.css +0 -44
- package/templates/storefront-restaurant/app/layout.tsx +0 -82
- package/templates/storefront-restaurant/app/llms.txt/route.ts +0 -94
- package/templates/storefront-restaurant/app/login/page.tsx +0 -17
- package/templates/storefront-restaurant/app/not-found.tsx +0 -39
- package/templates/storefront-restaurant/app/opensearch.xml/route.ts +0 -37
- package/templates/storefront-restaurant/app/orders/[id]/page.tsx +0 -21
- package/templates/storefront-restaurant/app/page.tsx +0 -97
- package/templates/storefront-restaurant/app/privacy/page.tsx +0 -44
- package/templates/storefront-restaurant/app/reservations/page.tsx +0 -66
- package/templates/storefront-restaurant/app/reservations/reservations-client.tsx +0 -234
- package/templates/storefront-restaurant/app/returns/page.tsx +0 -11
- package/templates/storefront-restaurant/app/robots.ts +0 -18
- package/templates/storefront-restaurant/app/search/page.tsx +0 -38
- package/templates/storefront-restaurant/app/search/search-client.tsx +0 -7
- package/templates/storefront-restaurant/app/shipping/page.tsx +0 -16
- package/templates/storefront-restaurant/app/shop/page.tsx +0 -31
- package/templates/storefront-restaurant/app/shop/shop-client.tsx +0 -27
- package/templates/storefront-restaurant/app/signup/page.tsx +0 -17
- package/templates/storefront-restaurant/app/sitemap-page/page.tsx +0 -167
- package/templates/storefront-restaurant/app/sitemap.ts +0 -62
- package/templates/storefront-restaurant/app/terms/page.tsx +0 -44
- package/templates/storefront-restaurant/app/track-order/page.tsx +0 -24
- package/templates/storefront-restaurant/app/track-order/track-order-form.tsx +0 -69
- package/templates/storefront-restaurant/components/account-iframe.tsx +0 -13
- package/templates/storefront-restaurant/components/cart-drawer.tsx +0 -14
- package/templates/storefront-restaurant/components/cart-pill.tsx +0 -36
- package/templates/storefront-restaurant/components/category-grid.tsx +0 -28
- package/templates/storefront-restaurant/components/collection-strip.tsx +0 -45
- package/templates/storefront-restaurant/components/footer.tsx +0 -148
- package/templates/storefront-restaurant/components/header.tsx +0 -43
- package/templates/storefront-restaurant/components/hero.tsx +0 -25
- package/templates/storefront-restaurant/components/nav-link.tsx +0 -20
- package/templates/storefront-restaurant/components/policy-page.tsx +0 -49
- package/templates/storefront-restaurant/components/product-modal.tsx +0 -104
- package/templates/storefront-restaurant/components/providers.tsx +0 -35
- package/templates/storefront-restaurant/components/store-product-card.tsx +0 -87
- package/templates/storefront-restaurant/lib/brand.ts +0 -377
- package/templates/storefront-restaurant/lib/cart.ts +0 -12
- package/templates/storefront-restaurant/next.config.ts +0 -42
- package/templates/storefront-restaurant/package.json +0 -35
- package/templates/storefront-restaurant/postcss.config.mjs +0 -7
- package/templates/storefront-restaurant/tsconfig.json +0 -23
- package/templates/storefront-restaurant/vitest.config.ts +0 -9
- package/templates/storefront-retail/.claude/skills/cimplify-storefront/SKILL.md +0 -145
- package/templates/storefront-retail/.cursor/rules/cimplify-storefront.mdc +0 -25
- package/templates/storefront-retail/.env.example +0 -16
- package/templates/storefront-retail/AGENTS.md +0 -117
- package/templates/storefront-retail/CLAUDE.md +0 -22
- package/templates/storefront-retail/README.md +0 -77
- package/templates/storefront-retail/__tests__/brand.test.ts +0 -4
- package/templates/storefront-retail/__tests__/cart-flow.test.ts +0 -4
- package/templates/storefront-retail/__tests__/contract.test.ts +0 -4
- package/templates/storefront-retail/app/about/page.tsx +0 -41
- package/templates/storefront-retail/app/accessibility/page.tsx +0 -11
- package/templates/storefront-retail/app/account/addresses/page.tsx +0 -21
- package/templates/storefront-retail/app/account/orders/page.tsx +0 -21
- package/templates/storefront-retail/app/account/page.tsx +0 -22
- package/templates/storefront-retail/app/account/settings/page.tsx +0 -21
- package/templates/storefront-retail/app/cart/page.tsx +0 -9
- package/templates/storefront-retail/app/categories/[slug]/listing-client.tsx +0 -19
- package/templates/storefront-retail/app/categories/[slug]/page.tsx +0 -130
- package/templates/storefront-retail/app/checkout/page.tsx +0 -17
- package/templates/storefront-retail/app/collections/[slug]/listing-client.tsx +0 -20
- package/templates/storefront-retail/app/collections/[slug]/page.tsx +0 -130
- package/templates/storefront-retail/app/contact/contact-form.tsx +0 -109
- package/templates/storefront-retail/app/contact/page.tsx +0 -54
- package/templates/storefront-retail/app/error.tsx +0 -61
- package/templates/storefront-retail/app/faq/page.tsx +0 -46
- package/templates/storefront-retail/app/globals.css +0 -47
- package/templates/storefront-retail/app/layout.tsx +0 -77
- package/templates/storefront-retail/app/llms.txt/route.ts +0 -94
- package/templates/storefront-retail/app/login/page.tsx +0 -17
- package/templates/storefront-retail/app/not-found.tsx +0 -39
- package/templates/storefront-retail/app/opensearch.xml/route.ts +0 -37
- package/templates/storefront-retail/app/orders/[id]/page.tsx +0 -24
- package/templates/storefront-retail/app/page.tsx +0 -182
- package/templates/storefront-retail/app/privacy/page.tsx +0 -44
- package/templates/storefront-retail/app/products/[slug]/page.tsx +0 -165
- package/templates/storefront-retail/app/products/[slug]/product-detail.tsx +0 -70
- package/templates/storefront-retail/app/returns/page.tsx +0 -11
- package/templates/storefront-retail/app/robots.ts +0 -18
- package/templates/storefront-retail/app/search/page.tsx +0 -38
- package/templates/storefront-retail/app/search/search-client.tsx +0 -7
- package/templates/storefront-retail/app/shipping/page.tsx +0 -16
- package/templates/storefront-retail/app/shop/page.tsx +0 -63
- package/templates/storefront-retail/app/shop/shop-client.tsx +0 -32
- package/templates/storefront-retail/app/signup/page.tsx +0 -17
- package/templates/storefront-retail/app/sitemap-page/page.tsx +0 -167
- package/templates/storefront-retail/app/sitemap.ts +0 -59
- package/templates/storefront-retail/app/terms/page.tsx +0 -44
- package/templates/storefront-retail/app/track-order/page.tsx +0 -24
- package/templates/storefront-retail/app/track-order/track-order-form.tsx +0 -69
- package/templates/storefront-retail/components/account-iframe.tsx +0 -13
- package/templates/storefront-retail/components/brand-marquee.tsx +0 -27
- package/templates/storefront-retail/components/cart-drawer.tsx +0 -14
- package/templates/storefront-retail/components/cart-pill.tsx +0 -36
- package/templates/storefront-retail/components/category-grid.tsx +0 -28
- package/templates/storefront-retail/components/category-tiles.tsx +0 -104
- package/templates/storefront-retail/components/collection-strip.tsx +0 -45
- package/templates/storefront-retail/components/feature-hero.tsx +0 -84
- package/templates/storefront-retail/components/footer.tsx +0 -153
- package/templates/storefront-retail/components/header.tsx +0 -45
- package/templates/storefront-retail/components/hero.tsx +0 -28
- package/templates/storefront-retail/components/nav-link.tsx +0 -20
- package/templates/storefront-retail/components/newsletter.tsx +0 -50
- package/templates/storefront-retail/components/policy-page.tsx +0 -49
- package/templates/storefront-retail/components/promo-banner.tsx +0 -41
- package/templates/storefront-retail/components/providers.tsx +0 -35
- package/templates/storefront-retail/components/section-heading.tsx +0 -37
- package/templates/storefront-retail/components/store-product-card.tsx +0 -87
- package/templates/storefront-retail/components/trade-in-cta.tsx +0 -54
- package/templates/storefront-retail/components/trust-bar.tsx +0 -66
- package/templates/storefront-retail/lib/brand.ts +0 -664
- package/templates/storefront-retail/lib/cart.ts +0 -12
- package/templates/storefront-retail/next.config.ts +0 -42
- package/templates/storefront-retail/package.json +0 -35
- package/templates/storefront-retail/postcss.config.mjs +0 -7
- package/templates/storefront-retail/tsconfig.json +0 -23
- package/templates/storefront-retail/vitest.config.ts +0 -9
- package/templates/storefront-services/.claude/skills/cimplify-storefront/SKILL.md +0 -145
- package/templates/storefront-services/.cursor/rules/cimplify-storefront.mdc +0 -25
- package/templates/storefront-services/.env.example +0 -16
- package/templates/storefront-services/AGENTS.md +0 -101
- package/templates/storefront-services/CLAUDE.md +0 -22
- package/templates/storefront-services/README.md +0 -73
- package/templates/storefront-services/__tests__/brand.test.ts +0 -4
- package/templates/storefront-services/__tests__/cart-flow.test.ts +0 -4
- package/templates/storefront-services/__tests__/contract.test.ts +0 -4
- package/templates/storefront-services/app/about/page.tsx +0 -38
- package/templates/storefront-services/app/accessibility/page.tsx +0 -11
- package/templates/storefront-services/app/account/addresses/page.tsx +0 -21
- package/templates/storefront-services/app/account/orders/page.tsx +0 -21
- package/templates/storefront-services/app/account/page.tsx +0 -22
- package/templates/storefront-services/app/account/settings/page.tsx +0 -21
- package/templates/storefront-services/app/book/book-client.tsx +0 -195
- package/templates/storefront-services/app/book/page.tsx +0 -65
- package/templates/storefront-services/app/cart/page.tsx +0 -9
- package/templates/storefront-services/app/categories/[slug]/listing-client.tsx +0 -19
- package/templates/storefront-services/app/categories/[slug]/page.tsx +0 -118
- package/templates/storefront-services/app/checkout/page.tsx +0 -17
- package/templates/storefront-services/app/collections/[slug]/listing-client.tsx +0 -20
- package/templates/storefront-services/app/collections/[slug]/page.tsx +0 -118
- package/templates/storefront-services/app/contact/contact-form.tsx +0 -109
- package/templates/storefront-services/app/contact/page.tsx +0 -54
- package/templates/storefront-services/app/error.tsx +0 -60
- package/templates/storefront-services/app/faq/page.tsx +0 -46
- package/templates/storefront-services/app/globals.css +0 -45
- package/templates/storefront-services/app/layout.tsx +0 -82
- package/templates/storefront-services/app/llms.txt/route.ts +0 -94
- package/templates/storefront-services/app/login/page.tsx +0 -17
- package/templates/storefront-services/app/not-found.tsx +0 -39
- package/templates/storefront-services/app/opensearch.xml/route.ts +0 -37
- package/templates/storefront-services/app/orders/[id]/page.tsx +0 -21
- package/templates/storefront-services/app/page.tsx +0 -97
- package/templates/storefront-services/app/privacy/page.tsx +0 -44
- package/templates/storefront-services/app/returns/page.tsx +0 -11
- package/templates/storefront-services/app/robots.ts +0 -18
- package/templates/storefront-services/app/search/page.tsx +0 -38
- package/templates/storefront-services/app/search/search-client.tsx +0 -7
- package/templates/storefront-services/app/shipping/page.tsx +0 -16
- package/templates/storefront-services/app/shop/page.tsx +0 -31
- package/templates/storefront-services/app/shop/shop-client.tsx +0 -27
- package/templates/storefront-services/app/signup/page.tsx +0 -17
- package/templates/storefront-services/app/sitemap-page/page.tsx +0 -167
- package/templates/storefront-services/app/sitemap.ts +0 -62
- package/templates/storefront-services/app/terms/page.tsx +0 -44
- package/templates/storefront-services/app/track-order/page.tsx +0 -24
- package/templates/storefront-services/app/track-order/track-order-form.tsx +0 -69
- package/templates/storefront-services/components/account-iframe.tsx +0 -13
- package/templates/storefront-services/components/cart-drawer.tsx +0 -14
- package/templates/storefront-services/components/cart-pill.tsx +0 -36
- package/templates/storefront-services/components/category-grid.tsx +0 -28
- package/templates/storefront-services/components/collection-strip.tsx +0 -45
- package/templates/storefront-services/components/footer.tsx +0 -148
- package/templates/storefront-services/components/header.tsx +0 -43
- package/templates/storefront-services/components/hero.tsx +0 -25
- package/templates/storefront-services/components/nav-link.tsx +0 -20
- package/templates/storefront-services/components/policy-page.tsx +0 -49
- package/templates/storefront-services/components/product-modal.tsx +0 -104
- package/templates/storefront-services/components/providers.tsx +0 -35
- package/templates/storefront-services/components/store-product-card.tsx +0 -87
- package/templates/storefront-services/lib/brand.ts +0 -396
- package/templates/storefront-services/lib/cart.ts +0 -12
- package/templates/storefront-services/next.config.ts +0 -42
- package/templates/storefront-services/package.json +0 -35
- package/templates/storefront-services/postcss.config.mjs +0 -7
- package/templates/storefront-services/tsconfig.json +0 -23
- package/templates/storefront-services/vitest.config.ts +0 -9
|
@@ -1,518 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Brand & content configuration — single source of truth for every visible
|
|
3
|
-
* string. Edit this file to rebrand. See ../AGENTS.md.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { SeedName } from "@cimplify/sdk/testing/suite";
|
|
7
|
-
|
|
8
|
-
export interface BrandSocial {
|
|
9
|
-
label: string;
|
|
10
|
-
href: string;
|
|
11
|
-
icon?: "instagram" | "x" | "tiktok" | "facebook" | "youtube" | "linkedin" | "whatsapp";
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface BrandFaqEntry { q: string; a: string }
|
|
15
|
-
export interface BrandFaqSection { title: string; items: BrandFaqEntry[] }
|
|
16
|
-
export interface BrandPolicySection {
|
|
17
|
-
heading: string;
|
|
18
|
-
body: string | { intro: string; bullets: string[] };
|
|
19
|
-
}
|
|
20
|
-
export interface BrandSitemapSection { title: string; links: { label: string; href: string }[] }
|
|
21
|
-
|
|
22
|
-
export interface Brand {
|
|
23
|
-
name: string;
|
|
24
|
-
shortName: string;
|
|
25
|
-
microTag: string;
|
|
26
|
-
description: string;
|
|
27
|
-
schemaType:
|
|
28
|
-
| "Store" | "Bakery" | "Restaurant" | "BeautySalon"
|
|
29
|
-
| "GroceryStore" | "LocalBusiness" | "Organization";
|
|
30
|
-
currency: string;
|
|
31
|
-
locale: string;
|
|
32
|
-
contact: {
|
|
33
|
-
address: string; streetAddress: string; city: string; countryCode: string;
|
|
34
|
-
phone: string; phoneTel: string; email: string; privacyEmail: string;
|
|
35
|
-
supportEmail?: string; businessEmail?: string; hours: string;
|
|
36
|
-
};
|
|
37
|
-
socials: BrandSocial[];
|
|
38
|
-
header: { nav: { label: string; href: string }[] };
|
|
39
|
-
hero: {
|
|
40
|
-
badge: string; title: string; subtitle: string;
|
|
41
|
-
primaryCtaLabel: string;
|
|
42
|
-
secondaryCtaLabel?: string; secondaryCtaHref?: string;
|
|
43
|
-
};
|
|
44
|
-
trustItems?: { label: string; value: string; description: string; iconKey: string }[];
|
|
45
|
-
brandStrip?: { headline: string; brands: string[] };
|
|
46
|
-
promo?: { badge: string; title: string; body: string; ctaLabel: string; ctaHref: string };
|
|
47
|
-
tradeIn?: {
|
|
48
|
-
eyebrow: string; title: string; body: string;
|
|
49
|
-
primaryCtaLabel: string; primaryCtaHref: string;
|
|
50
|
-
secondaryCtaLabel: string; secondaryCtaHref: string;
|
|
51
|
-
steps: { step: string; title: string; body: string }[];
|
|
52
|
-
};
|
|
53
|
-
newsletter: {
|
|
54
|
-
eyebrow: string; title: string; body: string; placeholder: string;
|
|
55
|
-
submitLabel: string; successLabel: string;
|
|
56
|
-
};
|
|
57
|
-
about: {
|
|
58
|
-
eyebrow: string; title: string; paragraphs: string[];
|
|
59
|
-
sections: { heading: string; body: string }[];
|
|
60
|
-
};
|
|
61
|
-
faq: {
|
|
62
|
-
eyebrow: string; title: string; sections: BrandFaqSection[];
|
|
63
|
-
contactPrompt: string; contactEmail: string;
|
|
64
|
-
};
|
|
65
|
-
terms: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
66
|
-
privacy: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
67
|
-
shipping: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
68
|
-
returns: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
69
|
-
accessibility: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
70
|
-
account: {
|
|
71
|
-
loginEyebrow: string; loginTitle: string; loginSubtitle: string;
|
|
72
|
-
signupEyebrow: string; signupTitle: string; signupSubtitle: string;
|
|
73
|
-
accountEyebrow: string; accountTitle: string;
|
|
74
|
-
};
|
|
75
|
-
contactPage: {
|
|
76
|
-
eyebrow: string; title: string; body: string;
|
|
77
|
-
reasons: string[];
|
|
78
|
-
directLines: { label: string; value: string; href: string }[];
|
|
79
|
-
};
|
|
80
|
-
trackOrder: { eyebrow: string; title: string; body: string };
|
|
81
|
-
footer: {
|
|
82
|
-
blurb: string; sitemap: BrandSitemapSection[];
|
|
83
|
-
poweredBy?: { label: string; href: string };
|
|
84
|
-
};
|
|
85
|
-
llms: { summary: string };
|
|
86
|
-
mock: { seed: SeedName; businessId: string };
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export const brand: Brand = {
|
|
90
|
-
name: "Studio FRX",
|
|
91
|
-
shortName: "FRX",
|
|
92
|
-
microTag: "VOL. 04",
|
|
93
|
-
description:
|
|
94
|
-
"Limited-run streetwear and graphic apparel. Designed in Accra, dropped weekly, shipped worldwide.",
|
|
95
|
-
schemaType: "Store",
|
|
96
|
-
|
|
97
|
-
currency: "GHS",
|
|
98
|
-
locale: "en_GH",
|
|
99
|
-
|
|
100
|
-
contact: {
|
|
101
|
-
address: "Osu Oxford Street, Accra",
|
|
102
|
-
streetAddress: "Osu Oxford Street",
|
|
103
|
-
city: "Accra",
|
|
104
|
-
countryCode: "GH",
|
|
105
|
-
phone: "+233 244 000 000",
|
|
106
|
-
phoneTel: "+233244000000",
|
|
107
|
-
email: "hello@studiofrx.test",
|
|
108
|
-
privacyEmail: "privacy@studiofrx.test",
|
|
109
|
-
supportEmail: "help@studiofrx.test",
|
|
110
|
-
hours: "Tue–Sat · 11am–8pm",
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
socials: [
|
|
114
|
-
{ label: "Instagram", href: "https://instagram.com/studiofrx", icon: "instagram" },
|
|
115
|
-
{ label: "TikTok", href: "https://tiktok.com/@studiofrx", icon: "tiktok" },
|
|
116
|
-
{ label: "X", href: "https://x.com/studiofrx", icon: "x" },
|
|
117
|
-
{ label: "YouTube", href: "https://youtube.com/@studiofrx", icon: "youtube" },
|
|
118
|
-
],
|
|
119
|
-
|
|
120
|
-
header: {
|
|
121
|
-
nav: [
|
|
122
|
-
{ label: "New", href: "/categories/new-arrivals" },
|
|
123
|
-
{ label: "Drops", href: "/collections/latest-drop" },
|
|
124
|
-
{ label: "Shop", href: "/shop" },
|
|
125
|
-
{ label: "Lookbook", href: "/about" },
|
|
126
|
-
],
|
|
127
|
-
},
|
|
128
|
-
|
|
129
|
-
hero: {
|
|
130
|
-
badge: "Drop 04 · Live now",
|
|
131
|
-
title: "Built for now.\nBuilt to last.",
|
|
132
|
-
subtitle:
|
|
133
|
-
"A 24-piece capsule of heavyweight cotton, garment-dyed in Tema, screen-printed by hand. Every piece signed and numbered.",
|
|
134
|
-
primaryCtaLabel: "Shop the drop",
|
|
135
|
-
secondaryCtaLabel: "View the lookbook",
|
|
136
|
-
secondaryCtaHref: "/about",
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
trustItems: [
|
|
140
|
-
{
|
|
141
|
-
label: "Shipping",
|
|
142
|
-
value: "Free worldwide over $80",
|
|
143
|
-
description: "DHL Express, 2–4 business days.",
|
|
144
|
-
iconKey: "delivery",
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
label: "Returns",
|
|
148
|
-
value: "30 days, on us",
|
|
149
|
-
description: "Free returns from the US, UK, and EU.",
|
|
150
|
-
iconKey: "warranty",
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
label: "Sizing",
|
|
154
|
-
value: "True-to-size, oversized",
|
|
155
|
-
description: "Charts on every product page.",
|
|
156
|
-
iconKey: "verified",
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
label: "Made",
|
|
160
|
-
value: "In Tema, Ghana",
|
|
161
|
-
description: "Heavyweight cotton, garment-dyed.",
|
|
162
|
-
iconKey: "support",
|
|
163
|
-
},
|
|
164
|
-
],
|
|
165
|
-
|
|
166
|
-
brandStrip: {
|
|
167
|
-
headline: "Stocked at",
|
|
168
|
-
brands: ["VOGUE", "HIGHSNOBIETY", "GQ", "DAZED", "i-D", "COMPLEX", "HYPEBEAST"],
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
promo: {
|
|
172
|
-
badge: "Drop 04 · 412 left",
|
|
173
|
-
title: "The Heavyweight Hoodie. Now in 4 colourways.",
|
|
174
|
-
body: "500gsm garment-dyed cotton. Hand-screened FRX seal. Numbered run of 600 pieces — when they're gone, they're gone.",
|
|
175
|
-
ctaLabel: "Shop the hoodie",
|
|
176
|
-
ctaHref: "/shop",
|
|
177
|
-
},
|
|
178
|
-
|
|
179
|
-
tradeIn: {
|
|
180
|
-
eyebrow: "Studio collective",
|
|
181
|
-
title: "Wear the studio.\nBe in the studio.",
|
|
182
|
-
body: "Every drop ships with a single-use code that gets you behind the scenes — early access to the next drop, in-person Accra studio days, and a slot on our private design call.",
|
|
183
|
-
primaryCtaLabel: "Join the collective",
|
|
184
|
-
primaryCtaHref: "/about",
|
|
185
|
-
secondaryCtaLabel: "How it works",
|
|
186
|
-
secondaryCtaHref: "/faq",
|
|
187
|
-
steps: [
|
|
188
|
-
{ step: "01", title: "Order any piece", body: "Each piece ships with a one-time access code." },
|
|
189
|
-
{ step: "02", title: "Activate online", body: "Two minutes. Membership unlocks instantly." },
|
|
190
|
-
{ step: "03", title: "Be in the room", body: "Studio days, design calls, drop previews — for a year." },
|
|
191
|
-
],
|
|
192
|
-
},
|
|
193
|
-
|
|
194
|
-
newsletter: {
|
|
195
|
-
eyebrow: "FRX list",
|
|
196
|
-
title: "First in line, always.",
|
|
197
|
-
body: "We drop quietly. The list gets a 24-hour head start, the linesheet a week before, and discount codes on collabs. Unsubscribe in one click.",
|
|
198
|
-
placeholder: "you@email.com",
|
|
199
|
-
submitLabel: "Join the list",
|
|
200
|
-
successLabel: "On the list ✓",
|
|
201
|
-
},
|
|
202
|
-
|
|
203
|
-
about: {
|
|
204
|
-
eyebrow: "About Studio FRX",
|
|
205
|
-
title: "Apparel from\nthe other side.",
|
|
206
|
-
paragraphs: [
|
|
207
|
-
"Studio FRX started in 2021 in a converted shipping container in Osu, with a single Riley screen press and a stack of 14oz cotton blanks. We make heavyweight, hand-screened streetwear — graphic-led, garment-dyed, numbered.",
|
|
208
|
-
"We don't restock. Each drop is a closed run — between 200 and 800 pieces — with the production, dye batch, and screen burn documented on the inside hem. When a drop ends, we move on.",
|
|
209
|
-
"Made in Tema. Shipped worldwide. Pictured on the people you see in our feed — most of whom are on the list.",
|
|
210
|
-
],
|
|
211
|
-
sections: [
|
|
212
|
-
{
|
|
213
|
-
heading: "The collective",
|
|
214
|
-
body: "Every order activates a year of access — drop previews, in-person studio days, and a seat on our monthly design call. Not a discount programme. A studio.",
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
heading: "Sizing",
|
|
218
|
-
body: "Our pieces are cut for an oversized, dropped-shoulder fit. Order true to size if you want oversized; size down for a regular fit. Charts on every product page.",
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
heading: "Visit",
|
|
222
|
-
body: "Osu Oxford Street, Accra · Tue–Sat, 11am–8pm. We open the studio for fittings by appointment.",
|
|
223
|
-
},
|
|
224
|
-
],
|
|
225
|
-
},
|
|
226
|
-
|
|
227
|
-
faq: {
|
|
228
|
-
eyebrow: "Q&A",
|
|
229
|
-
title: "Things people ask.",
|
|
230
|
-
sections: [
|
|
231
|
-
{
|
|
232
|
-
title: "Sizing & fit",
|
|
233
|
-
items: [
|
|
234
|
-
{
|
|
235
|
-
q: "How do I find my size?",
|
|
236
|
-
a: "Every product page has a size chart with chest, length, and shoulder measurements. Our pieces fit oversized — order true to size for the intended fit, or size down for a regular cut.",
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
q: "Do you offer larger sizes?",
|
|
240
|
-
a: "Most pieces run S–3XL. A few drops are smaller — XS–XL — and that's flagged on the product page.",
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
q: "What if it doesn't fit?",
|
|
244
|
-
a: "Free returns within 30 days from the US, UK, and EU. Anywhere else, return shipping is on you, but we'll refund or exchange immediately.",
|
|
245
|
-
},
|
|
246
|
-
],
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
title: "Shipping & delivery",
|
|
250
|
-
items: [
|
|
251
|
-
{
|
|
252
|
-
q: "How fast is shipping?",
|
|
253
|
-
a: "DHL Express worldwide. 2–4 business days from when you order. Free over $80 (or local equivalent).",
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
q: "Do you ship to my country?",
|
|
257
|
-
a: "We ship to 80+ countries via DHL. Enter your address at checkout to see rates and ETA.",
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
q: "Customs and duties?",
|
|
261
|
-
a: "Charged on delivery in some countries — DHL will contact you. We can prepay for orders over $300; email help@studiofrx.test before placing the order.",
|
|
262
|
-
},
|
|
263
|
-
],
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
title: "Drops & restocks",
|
|
267
|
-
items: [
|
|
268
|
-
{
|
|
269
|
-
q: "Will you restock my size?",
|
|
270
|
-
a: "No. Every drop is a closed run, numbered and dated. When a size sells out, it's gone.",
|
|
271
|
-
},
|
|
272
|
-
{
|
|
273
|
-
q: "How do I find out about the next drop?",
|
|
274
|
-
a: "Join the FRX list. You get 24 hours of head-start before each drop opens to the public.",
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
q: "Do you ever do collabs?",
|
|
278
|
-
a: "Two or three a year. They're announced on the list first, then on Instagram. Most sell out the same day.",
|
|
279
|
-
},
|
|
280
|
-
],
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
title: "Returns",
|
|
284
|
-
items: [
|
|
285
|
-
{
|
|
286
|
-
q: "What's your return policy?",
|
|
287
|
-
a: "30 days from delivery. Item must be unworn, with original tags. Underwear and final-sale items aren't returnable.",
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
q: "How do I start a return?",
|
|
291
|
-
a: "Email help@studiofrx.test with your order number. We'll email a prepaid label (US/UK/EU) or instructions.",
|
|
292
|
-
},
|
|
293
|
-
],
|
|
294
|
-
},
|
|
295
|
-
],
|
|
296
|
-
contactPrompt: "Anything else? Email",
|
|
297
|
-
contactEmail: "help@studiofrx.test",
|
|
298
|
-
},
|
|
299
|
-
|
|
300
|
-
terms: {
|
|
301
|
-
eyebrow: "Terms of service",
|
|
302
|
-
title: "Terms of Service",
|
|
303
|
-
lastUpdated: "1 May 2026",
|
|
304
|
-
sections: [
|
|
305
|
-
{
|
|
306
|
-
heading: "1. Who we are",
|
|
307
|
-
body: "Studio FRX (\"we\", \"us\") is an apparel studio operating from Osu, Accra, Ghana. By placing an order on this site, you (\"you\", \"customer\") agree to these terms.",
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
heading: "2. Limited drops",
|
|
311
|
-
body: "Every product is part of a closed, numbered run. We do not restock. Pricing reflects the numbered nature of each drop.",
|
|
312
|
-
},
|
|
313
|
-
{
|
|
314
|
-
heading: "3. Pricing and payment",
|
|
315
|
-
body: "Prices are displayed in your local currency where supported (auto-detected at checkout). Payment is taken at the time of order via card or Mobile Money.",
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
heading: "4. Shipping",
|
|
319
|
-
body: "DHL Express worldwide. Customs and duties are the customer's responsibility unless prepaid options are available at checkout.",
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
heading: "5. Returns",
|
|
323
|
-
body: "30-day return window from delivery date. Items must be unworn with original tags. Underwear, sale items, and bespoke pieces are final.",
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
heading: "6. Intellectual property",
|
|
327
|
-
body: "All graphics, prints, and product designs are original works of Studio FRX. Reproduction or commercial use without written permission is prohibited.",
|
|
328
|
-
},
|
|
329
|
-
{
|
|
330
|
-
heading: "7. Liability",
|
|
331
|
-
body: "Our maximum liability for any order is the value of that order. We're not liable for indirect or consequential losses.",
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
heading: "8. Governing law",
|
|
335
|
-
body: "These terms are governed by the laws of Ghana. Disputes are resolved in the courts of Greater Accra.",
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
heading: "9. Contact",
|
|
339
|
-
body: "Questions? Email hello@studiofrx.test.",
|
|
340
|
-
},
|
|
341
|
-
],
|
|
342
|
-
},
|
|
343
|
-
|
|
344
|
-
privacy: {
|
|
345
|
-
eyebrow: "Privacy",
|
|
346
|
-
title: "Privacy Policy",
|
|
347
|
-
lastUpdated: "1 May 2026",
|
|
348
|
-
sections: [
|
|
349
|
-
{
|
|
350
|
-
heading: "What we collect",
|
|
351
|
-
body: "Order details (name, address, phone, email), garment measurements if you fill our size finder, and payment data via our processors (Paystack, Stripe). We do not store payment cards on our servers.",
|
|
352
|
-
},
|
|
353
|
-
{
|
|
354
|
-
heading: "How we use it",
|
|
355
|
-
body: {
|
|
356
|
-
intro: "We use your data to:",
|
|
357
|
-
bullets: [
|
|
358
|
-
"Fulfil and ship your order.",
|
|
359
|
-
"Send order updates by SMS and email.",
|
|
360
|
-
"Send drop announcements (only if you opted in).",
|
|
361
|
-
"Improve sizing recommendations across the catalogue.",
|
|
362
|
-
],
|
|
363
|
-
},
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
heading: "Who we share it with",
|
|
367
|
-
body: "DHL (shipping), Paystack/Stripe (payments), and our email/SMS providers. We do not sell or rent personal data.",
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
heading: "Cookies",
|
|
371
|
-
body: "Strictly-necessary cookies for cart and session, plus optional analytics (toggleable in our cookie banner).",
|
|
372
|
-
},
|
|
373
|
-
{
|
|
374
|
-
heading: "Your rights",
|
|
375
|
-
body: "Under the Ghana Data Protection Act, 2012 (Act 843), you have the right to access, correct, or delete your data. Email privacy@studiofrx.test.",
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
heading: "Retention",
|
|
379
|
-
body: "Order records: 7 years (tax law). Marketing list: until you unsubscribe.",
|
|
380
|
-
},
|
|
381
|
-
],
|
|
382
|
-
},
|
|
383
|
-
|
|
384
|
-
shipping: {
|
|
385
|
-
eyebrow: "Shipping",
|
|
386
|
-
title: "Shipping",
|
|
387
|
-
lastUpdated: "1 May 2026",
|
|
388
|
-
sections: [
|
|
389
|
-
{ heading: "Worldwide via DHL Express", body: "2–4 business days from order. Free over $80 (or local equivalent)." },
|
|
390
|
-
{ heading: "Customs & duties", body: "Charged on delivery in some countries — DHL contacts you. Prepay for orders over $300; email help@studiofrx.test before placing the order." },
|
|
391
|
-
{ heading: "Studio pickup", body: "Free, ready in 30 minutes. Tue–Sat 11am–8pm at Osu Oxford Street, Accra." },
|
|
392
|
-
{ heading: "Tracking", body: "DHL tracking link sent by email and SMS within an hour of dispatch." },
|
|
393
|
-
],
|
|
394
|
-
},
|
|
395
|
-
|
|
396
|
-
returns: {
|
|
397
|
-
eyebrow: "Returns",
|
|
398
|
-
title: "Returns & Exchanges",
|
|
399
|
-
lastUpdated: "1 May 2026",
|
|
400
|
-
sections: [
|
|
401
|
-
{ heading: "30 days, on us (US/UK/EU)", body: "Free return labels prepaid by us. Item must be unworn with original tags." },
|
|
402
|
-
{ heading: "Worldwide", body: "Return shipping is on you, but we'll refund or exchange immediately on receipt." },
|
|
403
|
-
{ heading: "Final sale", body: "Underwear, swim, custom pieces, and anything marked final-sale on the product page is non-returnable." },
|
|
404
|
-
{ heading: "How to start", body: "Email help@studiofrx.test with your order number. We'll send a label or instructions within 24 hours." },
|
|
405
|
-
],
|
|
406
|
-
},
|
|
407
|
-
|
|
408
|
-
accessibility: {
|
|
409
|
-
eyebrow: "Accessibility",
|
|
410
|
-
title: "Accessibility Statement",
|
|
411
|
-
lastUpdated: "1 May 2026",
|
|
412
|
-
sections: [
|
|
413
|
-
{ heading: "Our commitment", body: "We aim for WCAG 2.1 AA on this site, tested on each release." },
|
|
414
|
-
{ heading: "What we've done", body: { intro: "Specifically, we've:", bullets: [
|
|
415
|
-
"Maintained a minimum 4.5:1 contrast on body text.",
|
|
416
|
-
"Ensured every interactive element is keyboard-reachable.",
|
|
417
|
-
"Provided alt text on every image, including lookbook editorials.",
|
|
418
|
-
"Respected `prefers-reduced-motion` for the homepage editorial transitions.",
|
|
419
|
-
] } },
|
|
420
|
-
{ heading: "Reporting issues", body: "Email accessibility@studiofrx.test. We respond within 5 business days." },
|
|
421
|
-
],
|
|
422
|
-
},
|
|
423
|
-
|
|
424
|
-
account: {
|
|
425
|
-
loginEyebrow: "Welcome back",
|
|
426
|
-
loginTitle: "Sign in to FRX",
|
|
427
|
-
loginSubtitle: "Track orders, manage your collective access, and view past drops.",
|
|
428
|
-
signupEyebrow: "Welcome",
|
|
429
|
-
signupTitle: "Create your account",
|
|
430
|
-
signupSubtitle: "First-look at the next drop, faster checkout, and your size remembered.",
|
|
431
|
-
accountEyebrow: "Your account",
|
|
432
|
-
accountTitle: "Welcome back",
|
|
433
|
-
},
|
|
434
|
-
|
|
435
|
-
contactPage: {
|
|
436
|
-
eyebrow: "Contact",
|
|
437
|
-
title: "Talk to the studio.",
|
|
438
|
-
body: "Order question, sizing help, collab pitch — message us and we'll reply within a business day.",
|
|
439
|
-
reasons: ["General question", "An order issue", "Sizing help", "Returns / exchanges", "Press / collabs", "Wholesale"],
|
|
440
|
-
directLines: [
|
|
441
|
-
{ label: "Email", value: "help@studiofrx.test", href: "mailto:help@studiofrx.test" },
|
|
442
|
-
{ label: "Phone", value: "+233 244 000 000", href: "tel:+233244000000" },
|
|
443
|
-
],
|
|
444
|
-
},
|
|
445
|
-
|
|
446
|
-
trackOrder: {
|
|
447
|
-
eyebrow: "Track an order",
|
|
448
|
-
title: "Where's my drop?",
|
|
449
|
-
body: "Enter your order number and the email used at checkout. We'll show DHL's latest scan and the live ETA.",
|
|
450
|
-
},
|
|
451
|
-
|
|
452
|
-
footer: {
|
|
453
|
-
blurb:
|
|
454
|
-
"Limited-run streetwear from Accra. Heavyweight cotton, hand-screened, numbered. Each drop is a closed run.",
|
|
455
|
-
sitemap: [
|
|
456
|
-
{
|
|
457
|
-
title: "Shop",
|
|
458
|
-
links: [
|
|
459
|
-
{ label: "All products", href: "/shop" },
|
|
460
|
-
{ label: "New arrivals", href: "/categories/new-arrivals" },
|
|
461
|
-
{ label: "Hoodies", href: "/categories/hoodies" },
|
|
462
|
-
{ label: "Tees", href: "/categories/tees" },
|
|
463
|
-
{ label: "Outerwear", href: "/categories/outerwear" },
|
|
464
|
-
{ label: "Drops", href: "/collections/latest-drop" },
|
|
465
|
-
],
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
title: "Studio",
|
|
469
|
-
links: [
|
|
470
|
-
{ label: "About", href: "/about" },
|
|
471
|
-
{ label: "The collective", href: "/about" },
|
|
472
|
-
{ label: "Lookbook", href: "/about" },
|
|
473
|
-
{ label: "Press", href: "mailto:press@studiofrx.test" },
|
|
474
|
-
],
|
|
475
|
-
},
|
|
476
|
-
{
|
|
477
|
-
title: "Help",
|
|
478
|
-
links: [
|
|
479
|
-
{ label: "Contact", href: "/contact" },
|
|
480
|
-
{ label: "Track an order", href: "/track-order" },
|
|
481
|
-
{ label: "Size guide", href: "/size-guide" },
|
|
482
|
-
{ label: "Shipping", href: "/shipping" },
|
|
483
|
-
{ label: "Returns", href: "/returns" },
|
|
484
|
-
{ label: "FAQ", href: "/faq" },
|
|
485
|
-
],
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
title: "Account",
|
|
489
|
-
links: [
|
|
490
|
-
{ label: "Sign in", href: "/login" },
|
|
491
|
-
{ label: "Create account", href: "/signup" },
|
|
492
|
-
{ label: "Your orders", href: "/account/orders" },
|
|
493
|
-
{ label: "Settings", href: "/account/settings" },
|
|
494
|
-
],
|
|
495
|
-
},
|
|
496
|
-
{
|
|
497
|
-
title: "Legal",
|
|
498
|
-
links: [
|
|
499
|
-
{ label: "Terms of Service", href: "/terms" },
|
|
500
|
-
{ label: "Privacy Policy", href: "/privacy" },
|
|
501
|
-
{ label: "Accessibility", href: "/accessibility" },
|
|
502
|
-
{ label: "Sitemap", href: "/sitemap-page" },
|
|
503
|
-
],
|
|
504
|
-
},
|
|
505
|
-
],
|
|
506
|
-
poweredBy: { label: "Cimplify", href: "https://app.cimplify.io" },
|
|
507
|
-
},
|
|
508
|
-
|
|
509
|
-
llms: {
|
|
510
|
-
summary:
|
|
511
|
-
"Studio FRX — limited-run streetwear from Accra. Heavyweight cotton garment-dyed in Tema and hand-screened. Closed runs only — no restocks. Free worldwide shipping over $80, 30-day returns from US/UK/EU.",
|
|
512
|
-
},
|
|
513
|
-
|
|
514
|
-
mock: {
|
|
515
|
-
seed: "fashion",
|
|
516
|
-
businessId: "bus_studio_frx",
|
|
517
|
-
},
|
|
518
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { useCart } from "@cimplify/sdk/react";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Reactive cart count for the header pill. Subscribes to the SDK cart
|
|
7
|
-
* state — updates immediately on add / remove / quantity change.
|
|
8
|
-
*/
|
|
9
|
-
export function useCartCount(): { count: number } {
|
|
10
|
-
const { itemCount } = useCart();
|
|
11
|
-
return { count: itemCount };
|
|
12
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { NextConfig } from "next";
|
|
2
|
-
|
|
3
|
-
const MOCK_URL = process.env.NEXT_PUBLIC_CIMPLIFY_API_URL?.trim() || "http://127.0.0.1:8787";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Same-origin proxy to the Cimplify mock so the browser never makes a
|
|
7
|
-
* cross-origin request in dev (no CORS preflights, no flaky `Origin`
|
|
8
|
-
* mismatches). The SDK's base URL stays empty/relative — requests go to
|
|
9
|
-
* `/api/v1/...` on the Next origin, then this rewrite forwards them to
|
|
10
|
-
* the mock at `127.0.0.1:8787`.
|
|
11
|
-
*
|
|
12
|
-
* In production, point `NEXT_PUBLIC_CIMPLIFY_API_URL` at your Cimplify
|
|
13
|
-
* host and the rewrite continues to work the same way (or remove it and
|
|
14
|
-
* pass the absolute URL through `<CimplifyProvider/>`).
|
|
15
|
-
*/
|
|
16
|
-
const nextConfig: NextConfig = {
|
|
17
|
-
// Enable Next 16's `cacheComponents` mode so we can use `'use cache'` +
|
|
18
|
-
// `cacheTag` / `cacheLife` for SSR caching. Cached chrome streams first,
|
|
19
|
-
// dynamic Suspense boundaries fill in when ready.
|
|
20
|
-
cacheComponents: true,
|
|
21
|
-
async rewrites() {
|
|
22
|
-
return [
|
|
23
|
-
{ source: "/api/v1/:path*", destination: `${MOCK_URL}/api/v1/:path*` },
|
|
24
|
-
{ source: "/img/:path*", destination: `${MOCK_URL}/img/:path*` },
|
|
25
|
-
{ source: "/elements/:path*", destination: `${MOCK_URL}/elements/:path*` },
|
|
26
|
-
{ source: "/_mock/:path*", destination: `${MOCK_URL}/_mock/:path*` },
|
|
27
|
-
];
|
|
28
|
-
},
|
|
29
|
-
images: {
|
|
30
|
-
remotePatterns: [
|
|
31
|
-
{ protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },
|
|
32
|
-
{ protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },
|
|
33
|
-
{ protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },
|
|
34
|
-
{ protocol: "https", hostname: "loremflickr.com", pathname: "/**" },
|
|
35
|
-
{ protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },
|
|
36
|
-
{ protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },
|
|
37
|
-
{ protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },
|
|
38
|
-
],
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export default nextConfig;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "__STOREFRONT_NAME__",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "0.0.0",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "concurrently -k -n mock,next -c blue,magenta \"bunx @cimplify/sdk --seed fashion --quiet\" \"next dev\"",
|
|
7
|
-
"dev:storefront": "next dev",
|
|
8
|
-
"dev:mock": "bunx @cimplify/sdk --seed fashion",
|
|
9
|
-
"build": "next build",
|
|
10
|
-
"start": "next start",
|
|
11
|
-
"typecheck": "tsc --noEmit",
|
|
12
|
-
"test": "vitest",
|
|
13
|
-
"test:run": "vitest run",
|
|
14
|
-
"check:brand": "vitest run __tests__/brand.test.ts",
|
|
15
|
-
"check:cart": "vitest run __tests__/cart-flow.test.ts",
|
|
16
|
-
"check:contract": "vitest run __tests__/contract.test.ts",
|
|
17
|
-
"check:visual": "playwright test",
|
|
18
|
-
"check:visual:update": "playwright test --update-snapshots",
|
|
19
|
-
"check": "bun run typecheck && bun run test:run"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"@cimplify/sdk": "^0.44.34",
|
|
23
|
-
"next": "^16.2.4",
|
|
24
|
-
"react": "^19.0.0",
|
|
25
|
-
"react-dom": "^19.0.0"
|
|
26
|
-
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"@playwright/test": "^1.50.0",
|
|
29
|
-
"@tailwindcss/postcss": "^4.2.4",
|
|
30
|
-
"@types/node": "^22.10.0",
|
|
31
|
-
"@types/react": "^19.0.0",
|
|
32
|
-
"@types/react-dom": "^19.0.0",
|
|
33
|
-
"concurrently": "^9.0.0",
|
|
34
|
-
"tailwindcss": "^4.2.4",
|
|
35
|
-
"typescript": "^5.9.3",
|
|
36
|
-
"vitest": "^4.1.5"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { defineConfig, devices } from "@playwright/test";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Visual regression config — boots `bun dev` (mock + next), runs against
|
|
5
|
-
* a stable Chromium, snapshots key pages.
|
|
6
|
-
*
|
|
7
|
-
* Run:
|
|
8
|
-
* bun run check:visual # compare against baseline
|
|
9
|
-
* bun run check:visual --update-snapshots # accept new baseline
|
|
10
|
-
*
|
|
11
|
-
* Baselines live in `e2e/__snapshots__/`. Commit them.
|
|
12
|
-
*/
|
|
13
|
-
export default defineConfig({
|
|
14
|
-
testDir: "./e2e",
|
|
15
|
-
fullyParallel: false,
|
|
16
|
-
forbidOnly: Boolean(process.env.CI),
|
|
17
|
-
retries: process.env.CI ? 1 : 0,
|
|
18
|
-
workers: 1,
|
|
19
|
-
reporter: process.env.CI ? "github" : "list",
|
|
20
|
-
|
|
21
|
-
use: {
|
|
22
|
-
baseURL: "http://localhost:3000",
|
|
23
|
-
trace: "retain-on-failure",
|
|
24
|
-
// Viewport snapshots are noisy across OS / browser builds. Lock here.
|
|
25
|
-
viewport: { width: 1280, height: 800 },
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
projects: [
|
|
29
|
-
{
|
|
30
|
-
name: "chromium",
|
|
31
|
-
use: { ...devices["Desktop Chrome"], viewport: { width: 1280, height: 800 } },
|
|
32
|
-
},
|
|
33
|
-
],
|
|
34
|
-
|
|
35
|
-
expect: {
|
|
36
|
-
// Anti-flake: allow tiny rendering differences (font hinting across runners).
|
|
37
|
-
toHaveScreenshot: { maxDiffPixelRatio: 0.01 },
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
webServer: {
|
|
41
|
-
command: "bun dev",
|
|
42
|
-
url: "http://localhost:3000",
|
|
43
|
-
reuseExistingServer: !process.env.CI,
|
|
44
|
-
timeout: 120_000,
|
|
45
|
-
stdout: "ignore",
|
|
46
|
-
stderr: "pipe",
|
|
47
|
-
},
|
|
48
|
-
});
|