create-brainerce-store 1.62.0 → 1.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +71 -71
  3. package/dist/index.js +5 -2
  4. package/messages/en.json +502 -502
  5. package/messages/he.json +502 -502
  6. package/package.json +1 -1
  7. package/templates/nextjs/base/.claude/commands/design.md +60 -60
  8. package/templates/nextjs/base/.env.local.ejs +24 -24
  9. package/templates/nextjs/base/.eslintrc.json +57 -57
  10. package/templates/nextjs/base/.mcp.json +8 -8
  11. package/templates/nextjs/base/AI-GUIDE.md +174 -174
  12. package/templates/nextjs/base/TRANSLATIONS.md +200 -200
  13. package/templates/nextjs/base/package.json.ejs +52 -52
  14. package/templates/nextjs/base/src/app/blog/[slug]/page.tsx.ejs +262 -262
  15. package/templates/nextjs/base/src/app/blog/page.tsx.ejs +276 -276
  16. package/templates/nextjs/base/src/app/cart/page.tsx +7 -7
  17. package/templates/nextjs/base/src/app/category/[slug]/page.tsx +106 -106
  18. package/templates/nextjs/base/src/app/checkout/page.tsx +12 -0
  19. package/templates/nextjs/base/src/app/globals.css +36 -36
  20. package/templates/nextjs/base/src/app/indexnow-key.txt/route.ts +26 -26
  21. package/templates/nextjs/base/src/app/layout.tsx.ejs +10 -0
  22. package/templates/nextjs/base/src/app/llms.txt/route.ts +44 -44
  23. package/templates/nextjs/base/src/app/order-confirmation/page.tsx +295 -278
  24. package/templates/nextjs/base/src/app/order-status/page.tsx +121 -121
  25. package/templates/nextjs/base/src/app/page.tsx +64 -64
  26. package/templates/nextjs/base/src/app/products/[slug]/page.tsx +175 -175
  27. package/templates/nextjs/base/src/app/products/page.tsx +19 -19
  28. package/templates/nextjs/base/src/components/account/order-history.tsx +385 -385
  29. package/templates/nextjs/base/src/components/brainerce-bot.tsx +70 -70
  30. package/templates/nextjs/base/src/components/checkout/checkout-form.tsx +612 -612
  31. package/templates/nextjs/base/src/components/checkout/custom-fields-step.tsx +292 -292
  32. package/templates/nextjs/base/src/components/checkout/date-picker.tsx +309 -309
  33. package/templates/nextjs/base/src/components/checkout/datetime-picker.tsx +144 -144
  34. package/templates/nextjs/base/src/components/checkout/order-bump-card.tsx +242 -242
  35. package/templates/nextjs/base/src/components/checkout/pickup-step.tsx +198 -198
  36. package/templates/nextjs/base/src/components/checkout/shipping-step.tsx +125 -125
  37. package/templates/nextjs/base/src/components/checkout/tax-display.tsx +74 -74
  38. package/templates/nextjs/base/src/components/seo/article-json-ld.tsx +59 -59
  39. package/templates/nextjs/base/src/components/seo/breadcrumbs.tsx +37 -37
  40. package/templates/nextjs/base/src/components/seo/category-json-ld.tsx +61 -61
  41. package/templates/nextjs/base/src/components/seo/organization-json-ld.tsx +97 -97
  42. package/templates/nextjs/base/src/components/seo/product-json-ld.tsx +179 -179
  43. package/templates/nextjs/base/src/components/tracking-bootstrap.tsx +62 -0
  44. package/templates/nextjs/base/src/components/ui/accordion.tsx +53 -53
  45. package/templates/nextjs/base/src/components/ui/badge.tsx +32 -32
  46. package/templates/nextjs/base/src/components/ui/button.tsx +49 -49
  47. package/templates/nextjs/base/src/components/ui/card.tsx +55 -55
  48. package/templates/nextjs/base/src/components/ui/checkbox.tsx +28 -28
  49. package/templates/nextjs/base/src/components/ui/dialog.tsx +107 -107
  50. package/templates/nextjs/base/src/components/ui/input.tsx +22 -22
  51. package/templates/nextjs/base/src/components/ui/label.tsx +21 -21
  52. package/templates/nextjs/base/src/components/ui/radio-group.tsx +38 -38
  53. package/templates/nextjs/base/src/components/ui/select.tsx +153 -153
  54. package/templates/nextjs/base/src/components/ui/separator.tsx +26 -26
  55. package/templates/nextjs/base/src/components/ui/sheet.tsx +125 -125
  56. package/templates/nextjs/base/src/components/ui/skeleton.tsx +7 -7
  57. package/templates/nextjs/base/src/components/ui/tabs.tsx +55 -55
  58. package/templates/nextjs/base/src/components/ui/textarea.tsx +21 -21
  59. package/templates/nextjs/base/src/components/ui/tooltip.tsx +32 -32
  60. package/templates/nextjs/base/src/core/hooks/use-cart-page.ts +58 -58
  61. package/templates/nextjs/base/src/core/hooks/use-home-data.ts +51 -51
  62. package/templates/nextjs/base/src/core/hooks/use-product-listing.ts +295 -295
  63. package/templates/nextjs/base/src/core/hooks/use-product-page.ts +20 -2
  64. package/templates/nextjs/base/src/core/lib/image-hosts.ts +7 -7
  65. package/templates/nextjs/base/src/core/lib/product-options.ts +121 -121
  66. package/templates/nextjs/base/src/core/lib/resolve-currency.ts +20 -20
  67. package/templates/nextjs/base/src/core/lib/safe-redirect.ts +38 -38
  68. package/templates/nextjs/base/src/core/lib/seo.ts +46 -46
  69. package/templates/nextjs/base/src/core/lib/store-info.ts +9 -0
  70. package/templates/nextjs/base/src/core/lib/tracking.ts +171 -0
  71. package/templates/nextjs/base/src/core/lib/use-currency.ts +19 -19
  72. package/templates/nextjs/base/src/core/lib/utils.ts +21 -21
  73. package/templates/nextjs/base/src/middleware.ts.ejs +54 -2
  74. package/templates/nextjs/base/src/ui/cart/cart-bundle-offer.tsx +117 -117
  75. package/templates/nextjs/base/src/ui/cart/cart-item.tsx +146 -146
  76. package/templates/nextjs/base/src/ui/cart/cart-nudges.tsx +28 -28
  77. package/templates/nextjs/base/src/ui/cart/cart-summary.tsx +110 -110
  78. package/templates/nextjs/base/src/ui/cart/cart-upgrade-banner.tsx +126 -126
  79. package/templates/nextjs/base/src/ui/cart/cart-view.tsx +140 -140
  80. package/templates/nextjs/base/src/ui/cart/coupon-input.tsx +134 -134
  81. package/templates/nextjs/base/src/ui/cart/free-shipping-bar.tsx +61 -61
  82. package/templates/nextjs/base/src/ui/cart/reservation-countdown.tsx +95 -95
  83. package/templates/nextjs/base/src/ui/home/discount-banner-strip.tsx +20 -20
  84. package/templates/nextjs/base/src/ui/home/featured-products-section.tsx +24 -24
  85. package/templates/nextjs/base/src/ui/home/hero-section.tsx +27 -27
  86. package/templates/nextjs/base/src/ui/home/home-client.tsx +29 -29
  87. package/templates/nextjs/base/src/ui/layout/announcement-bar.tsx.ejs +116 -116
  88. package/templates/nextjs/base/src/ui/layout/faq-section.tsx.ejs +90 -90
  89. package/templates/nextjs/base/src/ui/layout/header-account.tsx +40 -40
  90. package/templates/nextjs/base/src/ui/layout/language-switcher.tsx.ejs +80 -80
  91. package/templates/nextjs/base/src/ui/layout/site-footer.tsx.ejs +144 -144
  92. package/templates/nextjs/base/src/ui/layout/site-header.tsx.ejs +152 -152
  93. package/templates/nextjs/base/src/ui/product/customization-fields.tsx +457 -457
  94. package/templates/nextjs/base/src/ui/product/discount-badge.tsx +18 -18
  95. package/templates/nextjs/base/src/ui/product/frequently-bought-together.tsx +191 -191
  96. package/templates/nextjs/base/src/ui/product/modifier-group-selector.tsx +206 -206
  97. package/templates/nextjs/base/src/ui/product/price-display.tsx +62 -62
  98. package/templates/nextjs/base/src/ui/product/product-card.tsx +7 -2
  99. package/templates/nextjs/base/src/ui/product/product-client-section.tsx +455 -455
  100. package/templates/nextjs/base/src/ui/product/product-listing.tsx +446 -446
  101. package/templates/nextjs/base/src/ui/product/recommendation-section.tsx +102 -102
  102. package/templates/nextjs/base/src/ui/product/review-form.tsx +294 -294
  103. package/templates/nextjs/base/src/ui/product/reviews-section.tsx.ejs +108 -108
  104. package/templates/nextjs/base/src/ui/product/stock-badge.tsx +61 -61
  105. package/templates/nextjs/base/src/ui/product/variant-selector.tsx +291 -291
  106. package/templates/nextjs/base/src/ui/shared/cdn-image.tsx +26 -26
  107. package/templates/nextjs/base/tailwind.config.ts +69 -69
  108. package/templates/nextjs/designs/atelier/app-overlay/layout.tsx.ejs +10 -0
  109. package/templates/nextjs/designs/atelier/globals.css +402 -402
  110. package/templates/nextjs/designs/atelier/messages-patch/en.json +100 -100
  111. package/templates/nextjs/designs/atelier/messages-patch/he.json +100 -100
  112. package/templates/nextjs/designs/atelier/ui/cart/cart-bundle-offer.tsx +110 -110
  113. package/templates/nextjs/designs/atelier/ui/cart/cart-drawer.tsx +163 -163
  114. package/templates/nextjs/designs/atelier/ui/cart/cart-item.tsx +140 -140
  115. package/templates/nextjs/designs/atelier/ui/cart/cart-nudges.tsx +34 -34
  116. package/templates/nextjs/designs/atelier/ui/cart/cart-summary.tsx +107 -107
  117. package/templates/nextjs/designs/atelier/ui/cart/cart-upgrade-banner.tsx +123 -123
  118. package/templates/nextjs/designs/atelier/ui/cart/cart-view.tsx +147 -147
  119. package/templates/nextjs/designs/atelier/ui/cart/coupon-input.tsx +142 -142
  120. package/templates/nextjs/designs/atelier/ui/cart/free-shipping-bar.tsx +77 -77
  121. package/templates/nextjs/designs/atelier/ui/cart/reservation-countdown.tsx +89 -89
  122. package/templates/nextjs/designs/atelier/ui/home/benefits-band.tsx +34 -34
  123. package/templates/nextjs/designs/atelier/ui/home/category-tiles.tsx +151 -151
  124. package/templates/nextjs/designs/atelier/ui/home/discount-banner-strip.tsx +27 -27
  125. package/templates/nextjs/designs/atelier/ui/home/editorial-band.tsx +75 -75
  126. package/templates/nextjs/designs/atelier/ui/home/featured-products-section.tsx +36 -36
  127. package/templates/nextjs/designs/atelier/ui/home/hero-section.tsx +174 -174
  128. package/templates/nextjs/designs/atelier/ui/home/home-client.tsx +54 -54
  129. package/templates/nextjs/designs/atelier/ui/home/newsletter-section.tsx +78 -78
  130. package/templates/nextjs/designs/atelier/ui/home/testimonials-band.tsx +46 -46
  131. package/templates/nextjs/designs/atelier/ui/layout/announcement-bar.tsx +118 -118
  132. package/templates/nextjs/designs/atelier/ui/layout/faq-section.tsx +96 -96
  133. package/templates/nextjs/designs/atelier/ui/layout/header-account.tsx +36 -36
  134. package/templates/nextjs/designs/atelier/ui/layout/header-cart.tsx +36 -36
  135. package/templates/nextjs/designs/atelier/ui/layout/language-switcher.tsx.ejs +137 -137
  136. package/templates/nextjs/designs/atelier/ui/layout/nav-url.ts +14 -14
  137. package/templates/nextjs/designs/atelier/ui/layout/rich-text-block.tsx +34 -34
  138. package/templates/nextjs/designs/atelier/ui/layout/site-footer.tsx.ejs +141 -141
  139. package/templates/nextjs/designs/atelier/ui/layout/site-header.tsx.ejs +138 -138
  140. package/templates/nextjs/designs/atelier/ui/product/customization-fields.tsx +466 -466
  141. package/templates/nextjs/designs/atelier/ui/product/discount-badge.tsx +17 -17
  142. package/templates/nextjs/designs/atelier/ui/product/frequently-bought-together.tsx +196 -196
  143. package/templates/nextjs/designs/atelier/ui/product/modifier-group-selector.tsx +193 -193
  144. package/templates/nextjs/designs/atelier/ui/product/price-display.tsx +69 -69
  145. package/templates/nextjs/designs/atelier/ui/product/product-card.tsx +13 -11
  146. package/templates/nextjs/designs/atelier/ui/product/product-client-section.tsx +477 -477
  147. package/templates/nextjs/designs/atelier/ui/product/product-grid.tsx +42 -42
  148. package/templates/nextjs/designs/atelier/ui/product/product-listing.tsx +260 -260
  149. package/templates/nextjs/designs/atelier/ui/product/recommendation-section.tsx +95 -95
  150. package/templates/nextjs/designs/atelier/ui/product/review-form.tsx +267 -267
  151. package/templates/nextjs/designs/atelier/ui/product/reviews-section.tsx.ejs +148 -148
  152. package/templates/nextjs/designs/atelier/ui/product/stock-badge.tsx +66 -66
  153. package/templates/nextjs/designs/atelier/ui/product/variant-selector.tsx +206 -206
  154. package/templates/nextjs/designs/atelier/ui/shared/cdn-image.tsx +29 -29
  155. package/templates/nextjs/designs/atelier/ui/shared/fly-to-cart.ts +86 -86
  156. package/templates/nextjs/designs/atelier/ui/shared/icons.tsx +276 -276
  157. package/templates/nextjs/designs/atelier/ui/shared/loading-spinner.tsx +63 -63
  158. package/templates/nextjs/designs/atelier/ui/shared/reveal.tsx +71 -71
  159. package/templates/nextjs/designs/atelier/ui/shared/select-menu.tsx +125 -125
  160. package/templates/nextjs/ui-canvas/cart/cart-bundle-offer.tsx +89 -89
  161. package/templates/nextjs/ui-canvas/cart/cart-item.tsx +123 -123
  162. package/templates/nextjs/ui-canvas/cart/cart-nudges.tsx +27 -27
  163. package/templates/nextjs/ui-canvas/cart/cart-summary.tsx +99 -99
  164. package/templates/nextjs/ui-canvas/cart/cart-upgrade-banner.tsx +105 -105
  165. package/templates/nextjs/ui-canvas/cart/cart-view.tsx +106 -106
  166. package/templates/nextjs/ui-canvas/cart/coupon-input.tsx +119 -119
  167. package/templates/nextjs/ui-canvas/cart/free-shipping-bar.tsx +54 -54
  168. package/templates/nextjs/ui-canvas/cart/reservation-countdown.tsx +81 -81
  169. package/templates/nextjs/ui-canvas/home/discount-banner-strip.tsx +19 -19
  170. package/templates/nextjs/ui-canvas/home/featured-products-section.tsx +23 -23
  171. package/templates/nextjs/ui-canvas/home/hero-section.tsx +21 -21
  172. package/templates/nextjs/ui-canvas/home/home-client.tsx +26 -26
  173. package/templates/nextjs/ui-canvas/layout/announcement-bar.tsx.ejs +101 -101
  174. package/templates/nextjs/ui-canvas/layout/faq-section.tsx.ejs +71 -71
  175. package/templates/nextjs/ui-canvas/layout/header-account.tsx +31 -31
  176. package/templates/nextjs/ui-canvas/layout/language-switcher.tsx.ejs +76 -76
  177. package/templates/nextjs/ui-canvas/layout/rich-text-block.tsx.ejs +36 -36
  178. package/templates/nextjs/ui-canvas/layout/site-footer.tsx.ejs +82 -82
  179. package/templates/nextjs/ui-canvas/layout/site-header.tsx.ejs +119 -119
  180. package/templates/nextjs/ui-canvas/product/customization-fields.tsx +445 -445
  181. package/templates/nextjs/ui-canvas/product/discount-badge.tsx +19 -19
  182. package/templates/nextjs/ui-canvas/product/frequently-bought-together.tsx +168 -168
  183. package/templates/nextjs/ui-canvas/product/modifier-group-selector.tsx +165 -165
  184. package/templates/nextjs/ui-canvas/product/price-display.tsx +52 -52
  185. package/templates/nextjs/ui-canvas/product/product-card.tsx +7 -2
  186. package/templates/nextjs/ui-canvas/product/product-client-section.tsx +352 -352
  187. package/templates/nextjs/ui-canvas/product/product-grid.tsx +27 -27
  188. package/templates/nextjs/ui-canvas/product/product-listing.tsx +224 -224
  189. package/templates/nextjs/ui-canvas/product/recommendation-section.tsx +99 -99
  190. package/templates/nextjs/ui-canvas/product/review-form.tsx +266 -266
  191. package/templates/nextjs/ui-canvas/product/reviews-section.tsx.ejs +96 -96
  192. package/templates/nextjs/ui-canvas/product/stock-badge.tsx +45 -45
  193. package/templates/nextjs/ui-canvas/product/variant-selector.tsx +212 -212
  194. package/templates/nextjs/ui-canvas/shared/cdn-image.tsx +31 -31
  195. package/templates/nextjs/ui-canvas/shared/loading-spinner.tsx +27 -27
  196. package/templates/nextjs/base/tsconfig.tsbuildinfo +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-brainerce-store",
3
- "version": "1.62.0",
3
+ "version": "1.63.0",
4
4
  "description": "Scaffold a production-ready e-commerce storefront connected to Brainerce",
5
5
  "bin": {
6
6
  "create-brainerce-store": "dist/index.js"
@@ -1,60 +1,60 @@
1
- ---
2
- description: Redesign this storefront's presentation layer to a distinctive, production-grade look
3
- ---
4
-
5
- You are the design lead for this Brainerce storefront. Design brief from the
6
- merchant: **$ARGUMENTS** (if empty, ask for a one-line direction first — e.g.
7
- "dark cinematic jewelry gallery", "brutalist streetwear", "warm Mediterranean
8
- boutique").
9
-
10
- ## Rebuild, don't restyle
11
-
12
- The shipped `src/ui/` is a WORKING REFERENCE, not an aesthetic to preserve.
13
- (In a `--canvas` scaffold it's already a bare unstyled skeleton — each
14
- component carries a `DESIGN ME` marker telling you what the surface is and
15
- which hook feeds it; skip straight to designing.)
16
- You are expected to design from scratch: deleting entire files under
17
- `src/ui/` and rebuilding them around the same hooks is encouraged — that is
18
- what the folder exists for. Do not inherit the current look's layout,
19
- spacing, or component structure unless it genuinely serves your direction.
20
- Build the store YOU would build; the reference only shows which hooks feed
21
- which surface.
22
-
23
- ## Ground rules (non-negotiable)
24
-
25
- 1. Read `AI-GUIDE.md` and `src/ui/`'s current structure BEFORE writing code.
26
- 2. You may rewrite anything in `src/ui/**` and `src/app/globals.css`, and
27
- wire new ui components in the thin `src/app/**` routes. You may NOT touch
28
- `src/core/**`, `src/app/api/**`, or checkout/auth/account components.
29
- 3. All data via `@/core/hooks/*` and the store provider — no hardcoded
30
- products, prices, or currency symbols.
31
- 4. All copy via `useTranslations()`, keys added to every file in `messages/`.
32
-
33
- ## The process
34
-
35
- ## The quality bar (non-negotiable — from the AI-GUIDE)
36
-
37
- Exactly 3-5 colors (no purple unless asked, no gradients by default), max 2
38
- font families, tokens-only colors, Tailwind spacing scale, real imagery
39
- (never abstract filler), content-rich sections, mobile-first. After EACH
40
- major surface: screenshot → self-critique ("would a Lovable user accept
41
- this?") → fix → continue. See AI-GUIDE.md "The quality bar".
42
-
43
-
44
- 1. **Commit to ONE art direction** — write it down in 4 lines (typography
45
- pairing incl. a script-compatible webfont, 6-10 color tokens, layout
46
- concept, motion language) at the top of `DESIGN.md` in the project root.
47
- Bold and specific beats safe and generic; do not hedge toward the middle.
48
- 2. **Tokens first**: rewrite `globals.css` custom properties + font loading
49
- in the locale layout.
50
- 3. **Surfaces in order**: header/footer → homepage sections → product card +
51
- grid → product page → cart. Keep each step compiling.
52
- 4. **Micro-details**: hover states, loading states, one signature
53
- interaction. Wrap all motion in `prefers-reduced-motion` guards.
54
- 5. **Verify** (mandatory): `pnpm exec tsc --noEmit` = 0, then `pnpm dev` and
55
- drive home → product → add-to-cart → cart in a real browser; screenshot
56
- desktop (1440) AND mobile (390). For RTL locales check anchoring and
57
- arrow directions. Fix what looks off before reporting.
58
-
59
- Report with: the direction chosen, what changed, screenshots, and anything
60
- that needs merchant input (e.g. brand name, logo, photography).
1
+ ---
2
+ description: Redesign this storefront's presentation layer to a distinctive, production-grade look
3
+ ---
4
+
5
+ You are the design lead for this Brainerce storefront. Design brief from the
6
+ merchant: **$ARGUMENTS** (if empty, ask for a one-line direction first — e.g.
7
+ "dark cinematic jewelry gallery", "brutalist streetwear", "warm Mediterranean
8
+ boutique").
9
+
10
+ ## Rebuild, don't restyle
11
+
12
+ The shipped `src/ui/` is a WORKING REFERENCE, not an aesthetic to preserve.
13
+ (In a `--canvas` scaffold it's already a bare unstyled skeleton — each
14
+ component carries a `DESIGN ME` marker telling you what the surface is and
15
+ which hook feeds it; skip straight to designing.)
16
+ You are expected to design from scratch: deleting entire files under
17
+ `src/ui/` and rebuilding them around the same hooks is encouraged — that is
18
+ what the folder exists for. Do not inherit the current look's layout,
19
+ spacing, or component structure unless it genuinely serves your direction.
20
+ Build the store YOU would build; the reference only shows which hooks feed
21
+ which surface.
22
+
23
+ ## Ground rules (non-negotiable)
24
+
25
+ 1. Read `AI-GUIDE.md` and `src/ui/`'s current structure BEFORE writing code.
26
+ 2. You may rewrite anything in `src/ui/**` and `src/app/globals.css`, and
27
+ wire new ui components in the thin `src/app/**` routes. You may NOT touch
28
+ `src/core/**`, `src/app/api/**`, or checkout/auth/account components.
29
+ 3. All data via `@/core/hooks/*` and the store provider — no hardcoded
30
+ products, prices, or currency symbols.
31
+ 4. All copy via `useTranslations()`, keys added to every file in `messages/`.
32
+
33
+ ## The process
34
+
35
+ ## The quality bar (non-negotiable — from the AI-GUIDE)
36
+
37
+ Exactly 3-5 colors (no purple unless asked, no gradients by default), max 2
38
+ font families, tokens-only colors, Tailwind spacing scale, real imagery
39
+ (never abstract filler), content-rich sections, mobile-first. After EACH
40
+ major surface: screenshot → self-critique ("would a Lovable user accept
41
+ this?") → fix → continue. See AI-GUIDE.md "The quality bar".
42
+
43
+
44
+ 1. **Commit to ONE art direction** — write it down in 4 lines (typography
45
+ pairing incl. a script-compatible webfont, 6-10 color tokens, layout
46
+ concept, motion language) at the top of `DESIGN.md` in the project root.
47
+ Bold and specific beats safe and generic; do not hedge toward the middle.
48
+ 2. **Tokens first**: rewrite `globals.css` custom properties + font loading
49
+ in the locale layout.
50
+ 3. **Surfaces in order**: header/footer → homepage sections → product card +
51
+ grid → product page → cart. Keep each step compiling.
52
+ 4. **Micro-details**: hover states, loading states, one signature
53
+ interaction. Wrap all motion in `prefers-reduced-motion` guards.
54
+ 5. **Verify** (mandatory): `pnpm exec tsc --noEmit` = 0, then `pnpm dev` and
55
+ drive home → product → add-to-cart → cart in a real browser; screenshot
56
+ desktop (1440) AND mobile (390). For RTL locales check anchoring and
57
+ arrow directions. Fix what looks off before reporting.
58
+
59
+ Report with: the direction chosen, what changed, screenshots, and anything
60
+ that needs merchant input (e.g. brand name, logo, photography).
@@ -1,24 +1,24 @@
1
- # Brainerce Sales Channel — preferred env var name.
2
- NEXT_PUBLIC_BRAINERCE_SALES_CHANNEL_ID=<%= connectionId %>
3
- # Legacy alias kept for backwards compatibility — both are accepted by the SDK.
4
- # @deprecated will be removed when SDK 2.0 ships.
5
- NEXT_PUBLIC_BRAINERCE_CONNECTION_ID=<%= connectionId %>
6
-
7
- # Store info (pre-fetched during setup to avoid flash on first load)
8
- NEXT_PUBLIC_STORE_NAME=<%- storeNameEnv %>
9
- NEXT_PUBLIC_STORE_CURRENCY=<%- currencyEnv %>
10
-
11
- # Backend API URL (server-side only — used by BFF proxy and SSR, never exposed to browser)
12
- BRAINERCE_API_URL=<%- apiBaseUrlEnv %>
13
-
14
- # Public API origin for the AI chat widget (public, unauthenticated endpoints only).
15
- # The widget streams chat directly from the browser, so this one IS public.
16
- NEXT_PUBLIC_BRAINERCE_API_URL=<%- apiBaseUrlEnv %>
17
-
18
- # Public site URL — used for sitemap, robots.txt, and SEO metadata
19
- NEXT_PUBLIC_SITE_URL=http://localhost:3000
20
-
21
- # Optional: floating WhatsApp contact button (used by some designs, e.g.
22
- # passepartout). Digits only, international format without "+"
23
- # (e.g. 14155550123). Leave unset to hide the button.
24
- # NEXT_PUBLIC_WHATSAPP_PHONE=
1
+ # Brainerce Sales Channel — preferred env var name.
2
+ NEXT_PUBLIC_BRAINERCE_SALES_CHANNEL_ID=<%= connectionId %>
3
+ # Legacy alias kept for backwards compatibility — both are accepted by the SDK.
4
+ # @deprecated will be removed when SDK 2.0 ships.
5
+ NEXT_PUBLIC_BRAINERCE_CONNECTION_ID=<%= connectionId %>
6
+
7
+ # Store info (pre-fetched during setup to avoid flash on first load)
8
+ NEXT_PUBLIC_STORE_NAME=<%- storeNameEnv %>
9
+ NEXT_PUBLIC_STORE_CURRENCY=<%- currencyEnv %>
10
+
11
+ # Backend API URL (server-side only — used by BFF proxy and SSR, never exposed to browser)
12
+ BRAINERCE_API_URL=<%- apiBaseUrlEnv %>
13
+
14
+ # Public API origin for the AI chat widget (public, unauthenticated endpoints only).
15
+ # The widget streams chat directly from the browser, so this one IS public.
16
+ NEXT_PUBLIC_BRAINERCE_API_URL=<%- apiBaseUrlEnv %>
17
+
18
+ # Public site URL — used for sitemap, robots.txt, and SEO metadata
19
+ NEXT_PUBLIC_SITE_URL=http://localhost:3000
20
+
21
+ # Optional: floating WhatsApp contact button (used by some designs, e.g.
22
+ # passepartout). Digits only, international format without "+"
23
+ # (e.g. 14155550123). Leave unset to hide the button.
24
+ # NEXT_PUBLIC_WHATSAPP_PHONE=
@@ -1,57 +1,57 @@
1
- {
2
- "extends": [
3
- "next/core-web-vitals"
4
- ],
5
- "overrides": [
6
- {
7
- "files": [
8
- "src/ui/**/*.{ts,tsx}"
9
- ],
10
- "rules": {
11
- "no-restricted-imports": [
12
- "error",
13
- {
14
- "patterns": [
15
- {
16
- "group": [
17
- "@/core/lib/*",
18
- "!@/core/lib/auth",
19
- "!@/core/lib/brainerce",
20
- "!@/core/lib/image-hosts",
21
- "!@/core/lib/navigation",
22
- "!@/core/lib/product-options",
23
- "!@/core/lib/sanitize",
24
- "!@/core/lib/sanitize-html",
25
- "!@/core/lib/translations",
26
- "!@/core/lib/use-currency",
27
- "!@/core/lib/utils"
28
- ],
29
- "message": "UI consumes data via @/core/hooks/* and @/core/providers/* — not core internals. (Approved presentation helpers are exempt.)"
30
- }
31
- ]
32
- }
33
- ]
34
- }
35
- },
36
- {
37
- "files": [
38
- "src/core/**/*.{ts,tsx}"
39
- ],
40
- "rules": {
41
- "no-restricted-imports": [
42
- "error",
43
- {
44
- "patterns": [
45
- {
46
- "group": [
47
- "@/ui/*"
48
- ],
49
- "message": "core/ must never depend on presentation (ui/)."
50
- }
51
- ]
52
- }
53
- ]
54
- }
55
- }
56
- ]
57
- }
1
+ {
2
+ "extends": [
3
+ "next/core-web-vitals"
4
+ ],
5
+ "overrides": [
6
+ {
7
+ "files": [
8
+ "src/ui/**/*.{ts,tsx}"
9
+ ],
10
+ "rules": {
11
+ "no-restricted-imports": [
12
+ "error",
13
+ {
14
+ "patterns": [
15
+ {
16
+ "group": [
17
+ "@/core/lib/*",
18
+ "!@/core/lib/auth",
19
+ "!@/core/lib/brainerce",
20
+ "!@/core/lib/image-hosts",
21
+ "!@/core/lib/navigation",
22
+ "!@/core/lib/product-options",
23
+ "!@/core/lib/sanitize",
24
+ "!@/core/lib/sanitize-html",
25
+ "!@/core/lib/translations",
26
+ "!@/core/lib/use-currency",
27
+ "!@/core/lib/utils"
28
+ ],
29
+ "message": "UI consumes data via @/core/hooks/* and @/core/providers/* — not core internals. (Approved presentation helpers are exempt.)"
30
+ }
31
+ ]
32
+ }
33
+ ]
34
+ }
35
+ },
36
+ {
37
+ "files": [
38
+ "src/core/**/*.{ts,tsx}"
39
+ ],
40
+ "rules": {
41
+ "no-restricted-imports": [
42
+ "error",
43
+ {
44
+ "patterns": [
45
+ {
46
+ "group": [
47
+ "@/ui/*"
48
+ ],
49
+ "message": "core/ must never depend on presentation (ui/)."
50
+ }
51
+ ]
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ ]
57
+ }
@@ -1,8 +1,8 @@
1
- {
2
- "mcpServers": {
3
- "brainerce-docs": {
4
- "type": "http",
5
- "url": "https://mcp-docs.brainerce.com/mcp"
6
- }
7
- }
8
- }
1
+ {
2
+ "mcpServers": {
3
+ "brainerce-docs": {
4
+ "type": "http",
5
+ "url": "https://mcp-docs.brainerce.com/mcp"
6
+ }
7
+ }
8
+ }