create-brainerce-store 1.51.0 → 1.52.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 (173) hide show
  1. package/README.md +71 -0
  2. package/dist/index.js +24 -80
  3. package/messages/en.json +32 -0
  4. package/messages/he.json +32 -0
  5. package/package.json +1 -1
  6. package/templates/nextjs/base/.claude/commands/design.md +9 -0
  7. package/templates/nextjs/base/AI-GUIDE.md +52 -3
  8. package/templates/nextjs/base/CLAUDE.md +10 -0
  9. package/templates/nextjs/base/package.json.ejs +52 -39
  10. package/templates/nextjs/base/src/app/globals.css +36 -30
  11. package/templates/nextjs/base/src/components/checkout/payment-step.tsx +14 -10
  12. package/templates/nextjs/base/src/components/ui/accordion.tsx +53 -0
  13. package/templates/nextjs/base/src/components/ui/badge.tsx +32 -0
  14. package/templates/nextjs/base/src/components/ui/button.tsx +49 -0
  15. package/templates/nextjs/base/src/components/ui/card.tsx +55 -0
  16. package/templates/nextjs/base/src/components/ui/checkbox.tsx +28 -0
  17. package/templates/nextjs/base/src/components/ui/dialog.tsx +107 -0
  18. package/templates/nextjs/base/src/components/ui/input.tsx +22 -0
  19. package/templates/nextjs/base/src/components/ui/label.tsx +21 -0
  20. package/templates/nextjs/base/src/components/ui/radio-group.tsx +38 -0
  21. package/templates/nextjs/base/src/components/ui/select.tsx +153 -0
  22. package/templates/nextjs/base/src/components/ui/separator.tsx +26 -0
  23. package/templates/nextjs/base/src/components/ui/sheet.tsx +125 -0
  24. package/templates/nextjs/base/src/components/ui/skeleton.tsx +7 -0
  25. package/templates/nextjs/base/src/components/ui/tabs.tsx +55 -0
  26. package/templates/nextjs/base/src/components/ui/textarea.tsx +21 -0
  27. package/templates/nextjs/base/src/components/ui/tooltip.tsx +32 -0
  28. package/templates/nextjs/base/src/ui/cart/cart-bundle-offer.tsx +17 -11
  29. package/templates/nextjs/base/src/ui/cart/cart-item.tsx +2 -8
  30. package/templates/nextjs/base/src/ui/cart/cart-nudges.tsx +28 -39
  31. package/templates/nextjs/base/src/ui/cart/cart-summary.tsx +3 -1
  32. package/templates/nextjs/base/src/ui/cart/cart-upgrade-banner.tsx +8 -23
  33. package/templates/nextjs/base/src/ui/cart/cart-view.tsx +18 -27
  34. package/templates/nextjs/base/src/ui/cart/coupon-input.tsx +10 -21
  35. package/templates/nextjs/base/src/ui/cart/free-shipping-bar.tsx +2 -3
  36. package/templates/nextjs/base/src/ui/cart/reservation-countdown.tsx +95 -103
  37. package/templates/nextjs/base/src/ui/home/hero-section.tsx +4 -6
  38. package/templates/nextjs/base/src/ui/layout/announcement-bar.tsx.ejs +116 -125
  39. package/templates/nextjs/base/src/ui/layout/faq-section.tsx.ejs +90 -103
  40. package/templates/nextjs/base/src/ui/layout/header-account.tsx +2 -17
  41. package/templates/nextjs/base/src/ui/layout/language-switcher.tsx.ejs +80 -70
  42. package/templates/nextjs/base/src/ui/layout/site-footer.tsx.ejs +144 -164
  43. package/templates/nextjs/base/src/ui/layout/site-header.tsx.ejs +152 -182
  44. package/templates/nextjs/base/src/ui/product/customization-fields.tsx +456 -444
  45. package/templates/nextjs/base/src/ui/product/discount-badge.tsx +18 -22
  46. package/templates/nextjs/base/src/ui/product/frequently-bought-together.tsx +15 -27
  47. package/templates/nextjs/base/src/ui/product/modifier-group-selector.tsx +206 -175
  48. package/templates/nextjs/base/src/ui/product/price-display.tsx +3 -2
  49. package/templates/nextjs/base/src/ui/product/product-card.tsx +238 -271
  50. package/templates/nextjs/base/src/ui/product/product-client-section.tsx +455 -470
  51. package/templates/nextjs/base/src/ui/product/product-listing.tsx +96 -79
  52. package/templates/nextjs/base/src/ui/product/recommendation-section.tsx +102 -107
  53. package/templates/nextjs/base/src/ui/product/review-form.tsx +44 -43
  54. package/templates/nextjs/{designs/passepartout → base/src}/ui/product/reviews-section.tsx.ejs +108 -96
  55. package/templates/nextjs/base/src/ui/product/stock-badge.tsx +61 -63
  56. package/templates/nextjs/base/tailwind.config.ts +69 -42
  57. package/templates/nextjs/designs/{passepartout → atelier}/app-overlay/layout.tsx.ejs +23 -25
  58. package/templates/nextjs/designs/atelier/globals.css +396 -0
  59. package/templates/nextjs/designs/atelier/messages-patch/en.json +99 -0
  60. package/templates/nextjs/designs/atelier/messages-patch/he.json +99 -0
  61. package/templates/nextjs/designs/{passepartout → atelier}/ui/cart/cart-bundle-offer.tsx +110 -111
  62. package/templates/nextjs/designs/atelier/ui/cart/cart-drawer.tsx +163 -0
  63. package/templates/nextjs/designs/atelier/ui/cart/cart-item.tsx +140 -0
  64. package/templates/nextjs/designs/atelier/ui/cart/cart-nudges.tsx +34 -0
  65. package/templates/nextjs/designs/atelier/ui/cart/cart-summary.tsx +107 -0
  66. package/templates/nextjs/designs/{passepartout → atelier}/ui/cart/cart-upgrade-banner.tsx +123 -141
  67. package/templates/nextjs/designs/atelier/ui/cart/cart-view.tsx +147 -0
  68. package/templates/nextjs/designs/atelier/ui/cart/coupon-input.tsx +142 -0
  69. package/templates/nextjs/designs/{passepartout → atelier}/ui/cart/free-shipping-bar.tsx +77 -62
  70. package/templates/nextjs/designs/{passepartout → atelier}/ui/cart/reservation-countdown.tsx +89 -103
  71. package/templates/nextjs/designs/atelier/ui/home/benefits-band.tsx +34 -0
  72. package/templates/nextjs/designs/atelier/ui/home/category-tiles.tsx +148 -0
  73. package/templates/nextjs/designs/atelier/ui/home/discount-banner-strip.tsx +27 -0
  74. package/templates/nextjs/designs/atelier/ui/home/editorial-band.tsx +73 -0
  75. package/templates/nextjs/designs/atelier/ui/home/featured-products-section.tsx +36 -0
  76. package/templates/nextjs/designs/atelier/ui/home/hero-section.tsx +148 -0
  77. package/templates/nextjs/designs/atelier/ui/home/home-client.tsx +54 -0
  78. package/templates/nextjs/designs/atelier/ui/home/newsletter-section.tsx +78 -0
  79. package/templates/nextjs/designs/atelier/ui/home/testimonials-band.tsx +46 -0
  80. package/templates/nextjs/designs/atelier/ui/layout/announcement-bar.tsx +118 -0
  81. package/templates/nextjs/designs/atelier/ui/layout/faq-section.tsx +96 -0
  82. package/templates/nextjs/designs/atelier/ui/layout/header-account.tsx +36 -0
  83. package/templates/nextjs/designs/atelier/ui/layout/header-cart.tsx +36 -0
  84. package/templates/nextjs/designs/atelier/ui/layout/language-switcher.tsx.ejs +137 -0
  85. package/templates/nextjs/designs/atelier/ui/layout/nav-url.ts +14 -0
  86. package/templates/nextjs/designs/atelier/ui/layout/rich-text-block.tsx +34 -0
  87. package/templates/nextjs/designs/atelier/ui/layout/site-footer.tsx.ejs +141 -0
  88. package/templates/nextjs/designs/atelier/ui/layout/site-header.tsx.ejs +138 -0
  89. package/templates/nextjs/designs/atelier/ui/product/customization-fields.tsx +466 -0
  90. package/templates/nextjs/designs/{passepartout → atelier}/ui/product/discount-badge.tsx +17 -22
  91. package/templates/nextjs/designs/{passepartout → atelier}/ui/product/frequently-bought-together.tsx +196 -205
  92. package/templates/nextjs/designs/atelier/ui/product/modifier-group-selector.tsx +193 -0
  93. package/templates/nextjs/designs/atelier/ui/product/price-display.tsx +69 -0
  94. package/templates/nextjs/designs/atelier/ui/product/product-card.tsx +260 -0
  95. package/templates/nextjs/designs/atelier/ui/product/product-client-section.tsx +471 -0
  96. package/templates/nextjs/designs/atelier/ui/product/product-grid.tsx +47 -0
  97. package/templates/nextjs/designs/atelier/ui/product/product-listing.tsx +260 -0
  98. package/templates/nextjs/designs/atelier/ui/product/recommendation-section.tsx +95 -0
  99. package/templates/nextjs/designs/{passepartout → atelier}/ui/product/review-form.tsx +267 -294
  100. package/templates/nextjs/designs/atelier/ui/product/reviews-section.tsx.ejs +148 -0
  101. package/templates/nextjs/designs/atelier/ui/product/stock-badge.tsx +66 -0
  102. package/templates/nextjs/designs/atelier/ui/product/variant-selector.tsx +206 -0
  103. package/templates/nextjs/designs/atelier/ui/shared/cdn-image.tsx +29 -0
  104. package/templates/nextjs/designs/{passepartout → atelier}/ui/shared/fly-to-cart.ts +86 -85
  105. package/templates/nextjs/designs/atelier/ui/shared/icons.tsx +269 -0
  106. package/templates/nextjs/designs/atelier/ui/shared/loading-spinner.tsx +64 -0
  107. package/templates/nextjs/designs/atelier/ui/shared/reveal.tsx +71 -0
  108. package/templates/nextjs/designs/atelier/ui/shared/select-menu.tsx +125 -0
  109. package/templates/nextjs/ui-canvas/cart/cart-bundle-offer.tsx +2 -0
  110. package/templates/nextjs/ui-canvas/cart/cart-item.tsx +2 -0
  111. package/templates/nextjs/ui-canvas/cart/cart-nudges.tsx +2 -0
  112. package/templates/nextjs/ui-canvas/cart/cart-summary.tsx +2 -0
  113. package/templates/nextjs/ui-canvas/cart/cart-upgrade-banner.tsx +2 -0
  114. package/templates/nextjs/ui-canvas/cart/cart-view.tsx +2 -2
  115. package/templates/nextjs/ui-canvas/cart/coupon-input.tsx +2 -0
  116. package/templates/nextjs/ui-canvas/cart/free-shipping-bar.tsx +2 -0
  117. package/templates/nextjs/ui-canvas/cart/reservation-countdown.tsx +2 -0
  118. package/templates/nextjs/ui-canvas/home/discount-banner-strip.tsx +1 -1
  119. package/templates/nextjs/ui-canvas/home/featured-products-section.tsx +1 -1
  120. package/templates/nextjs/ui-canvas/home/hero-section.tsx +1 -1
  121. package/templates/nextjs/ui-canvas/home/home-client.tsx +1 -1
  122. package/templates/nextjs/ui-canvas/layout/announcement-bar.tsx.ejs +1 -1
  123. package/templates/nextjs/ui-canvas/layout/faq-section.tsx.ejs +2 -2
  124. package/templates/nextjs/ui-canvas/layout/header-account.tsx +1 -1
  125. package/templates/nextjs/ui-canvas/layout/language-switcher.tsx.ejs +2 -0
  126. package/templates/nextjs/ui-canvas/layout/rich-text-block.tsx.ejs +2 -0
  127. package/templates/nextjs/ui-canvas/layout/site-footer.tsx.ejs +2 -2
  128. package/templates/nextjs/ui-canvas/layout/site-header.tsx.ejs +2 -2
  129. package/templates/nextjs/ui-canvas/product/customization-fields.tsx +2 -0
  130. package/templates/nextjs/ui-canvas/product/discount-badge.tsx +2 -0
  131. package/templates/nextjs/ui-canvas/product/frequently-bought-together.tsx +2 -0
  132. package/templates/nextjs/ui-canvas/product/modifier-group-selector.tsx +2 -0
  133. package/templates/nextjs/ui-canvas/product/price-display.tsx +2 -0
  134. package/templates/nextjs/ui-canvas/product/product-card.tsx +1 -1
  135. package/templates/nextjs/ui-canvas/product/product-client-section.tsx +1 -1
  136. package/templates/nextjs/ui-canvas/product/product-grid.tsx +1 -1
  137. package/templates/nextjs/ui-canvas/product/product-listing.tsx +1 -1
  138. package/templates/nextjs/ui-canvas/product/recommendation-section.tsx +4 -0
  139. package/templates/nextjs/ui-canvas/product/review-form.tsx +29 -32
  140. package/templates/nextjs/ui-canvas/product/{reviews-section.tsx → reviews-section.tsx.ejs} +26 -8
  141. package/templates/nextjs/ui-canvas/product/stock-badge.tsx +2 -0
  142. package/templates/nextjs/ui-canvas/product/variant-selector.tsx +2 -0
  143. package/templates/nextjs/ui-canvas/shared/cdn-image.tsx +2 -0
  144. package/templates/nextjs/ui-canvas/shared/loading-spinner.tsx +2 -0
  145. package/templates/nextjs/base/src/ui/product/reviews-section.tsx +0 -85
  146. package/templates/nextjs/designs/passepartout/globals.css +0 -412
  147. package/templates/nextjs/designs/passepartout/messages-patch/en.json +0 -87
  148. package/templates/nextjs/designs/passepartout/messages-patch/he.json +0 -87
  149. package/templates/nextjs/designs/passepartout/ui/cart/cart-nudges.tsx +0 -39
  150. package/templates/nextjs/designs/passepartout/ui/cart/cart-view.tsx +0 -149
  151. package/templates/nextjs/designs/passepartout/ui/home/home-client.tsx +0 -401
  152. package/templates/nextjs/designs/passepartout/ui/layout/announcement-bar.tsx +0 -139
  153. package/templates/nextjs/designs/passepartout/ui/layout/cart-link.tsx +0 -45
  154. package/templates/nextjs/designs/passepartout/ui/layout/faq-section.tsx +0 -103
  155. package/templates/nextjs/designs/passepartout/ui/layout/site-footer.tsx +0 -159
  156. package/templates/nextjs/designs/passepartout/ui/layout/site-header.tsx.ejs +0 -155
  157. package/templates/nextjs/designs/passepartout/ui/layout/trust-icons.tsx +0 -60
  158. package/templates/nextjs/designs/passepartout/ui/layout/whatsapp-button.tsx +0 -34
  159. package/templates/nextjs/designs/passepartout/ui/product/price-display.tsx +0 -111
  160. package/templates/nextjs/designs/passepartout/ui/product/product-card.tsx +0 -265
  161. package/templates/nextjs/designs/passepartout/ui/product/product-client-section.tsx +0 -667
  162. package/templates/nextjs/designs/passepartout/ui/product/product-grid.tsx +0 -35
  163. package/templates/nextjs/designs/passepartout/ui/product/product-listing.tsx +0 -427
  164. package/templates/nextjs/designs/passepartout/ui/product/recommendation-section.tsx +0 -113
  165. package/templates/nextjs/designs/passepartout/ui/product/stock-badge.tsx +0 -52
  166. package/templates/nextjs/designs/passepartout/ui/product/variant-selector.tsx +0 -307
  167. package/templates/nextjs/designs/passepartout/ui/shared/loading-spinner.tsx +0 -33
  168. package/templates/nextjs/themes/luxury/globals.css +0 -399
  169. package/templates/nextjs/themes/luxury/theme.json +0 -23
  170. package/templates/nextjs/themes/minimal/globals.css +0 -30
  171. package/templates/nextjs/themes/minimal/theme.json +0 -23
  172. package/templates/nextjs/themes/playful/globals.css +0 -400
  173. package/templates/nextjs/themes/playful/theme.json +0 -23
@@ -1,400 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- @layer base {
6
- :root {
7
- --background: 0 0% 99%;
8
- --foreground: 260 25% 16%;
9
- --primary: 330 75% 56%;
10
- --primary-foreground: 0 0% 100%;
11
- --secondary: 260 50% 94%;
12
- --secondary-foreground: 260 25% 16%;
13
- --muted: 270 30% 95%;
14
- --muted-foreground: 260 10% 45%;
15
- --accent: 280 60% 60%;
16
- --accent-foreground: 0 0% 100%;
17
- --destructive: 0 84% 60%;
18
- --destructive-foreground: 0 0% 100%;
19
- --border: 270 20% 88%;
20
- --radius: 1rem;
21
-
22
- /* Playful-specific tokens */
23
- --pink: 330 75% 56%;
24
- --purple: 280 60% 60%;
25
- --lavender: 260 50% 94%;
26
- --peach: 20 80% 88%;
27
- --mint: 160 50% 88%;
28
- }
29
-
30
- * {
31
- @apply border-border;
32
- }
33
-
34
- body {
35
- @apply bg-background text-foreground antialiased;
36
- line-height: 1.65;
37
- }
38
-
39
- /* Playful typography — friendly, bold, tight */
40
- h1,
41
- h2,
42
- h3,
43
- h4 {
44
- font-weight: 700;
45
- letter-spacing: -0.02em;
46
- line-height: 1.2;
47
- }
48
-
49
- h1 {
50
- font-weight: 800;
51
- letter-spacing: -0.03em;
52
- }
53
-
54
- /* Fun colorful selection */
55
- ::selection {
56
- background: hsl(var(--pink) / 0.25);
57
- color: hsl(260 25% 16%);
58
- }
59
-
60
- /* Colorful focus rings */
61
- :focus-visible {
62
- outline: 2.5px solid hsl(var(--purple));
63
- outline-offset: 3px;
64
- border-radius: var(--radius);
65
- }
66
-
67
- /* Playful scrollbar */
68
- ::-webkit-scrollbar {
69
- width: 8px;
70
- }
71
-
72
- ::-webkit-scrollbar-track {
73
- background: hsl(var(--lavender));
74
- }
75
-
76
- ::-webkit-scrollbar-thumb {
77
- background: linear-gradient(
78
- 180deg,
79
- hsl(var(--pink)),
80
- hsl(var(--purple))
81
- );
82
- border-radius: 999px;
83
- }
84
- }
85
-
86
- @layer components {
87
- /* ─── Buttons ─── */
88
-
89
- /* Primary CTA — gradient with bounce and glow */
90
- button[class*="bg-primary"],
91
- a[class*="bg-primary"] {
92
- font-weight: 700;
93
- letter-spacing: 0.01em;
94
- background: linear-gradient(
95
- 135deg,
96
- hsl(var(--pink)),
97
- hsl(330 80% 52%),
98
- hsl(var(--purple))
99
- ) !important;
100
- background-size: 200% 200%;
101
- box-shadow:
102
- 0 4px 14px hsl(var(--pink) / 0.3),
103
- 0 2px 6px hsl(var(--purple) / 0.15);
104
- transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
105
- border: none;
106
- }
107
-
108
- button[class*="bg-primary"]:hover,
109
- a[class*="bg-primary"]:hover {
110
- transform: translateY(-3px) scale(1.03);
111
- box-shadow:
112
- 0 8px 28px hsl(var(--pink) / 0.4),
113
- 0 4px 12px hsl(var(--purple) / 0.2);
114
- background-position: 100% 0;
115
- opacity: 1 !important;
116
- }
117
-
118
- button[class*="bg-primary"]:active,
119
- a[class*="bg-primary"]:active {
120
- transform: translateY(0) scale(0.97);
121
- box-shadow: 0 2px 8px hsl(var(--pink) / 0.2);
122
- }
123
-
124
- /* Secondary buttons — soft pill with hover pop */
125
- [class*="bg-secondary"] {
126
- border-radius: 999px !important;
127
- font-weight: 600;
128
- transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
129
- }
130
-
131
- [class*="bg-secondary"]:hover {
132
- background: hsl(var(--lavender)) !important;
133
- transform: translateY(-2px);
134
- box-shadow: 0 4px 16px hsl(var(--purple) / 0.12);
135
- }
136
-
137
- /* ─── Product Cards ─── */
138
-
139
- [class*="group"][class*="border"] {
140
- border-radius: var(--radius);
141
- overflow: hidden;
142
- border: 2px solid hsl(var(--border));
143
- background: white;
144
- transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
145
- }
146
-
147
- [class*="group"][class*="border"]:hover {
148
- transform: translateY(-6px) rotate(-0.5deg);
149
- border-color: hsl(var(--pink) / 0.3);
150
- box-shadow:
151
- 0 16px 40px hsl(var(--purple) / 0.12),
152
- 0 6px 16px hsl(var(--pink) / 0.1);
153
- }
154
-
155
- /* Product image hover — fun overshoot zoom */
156
- [class*="group-hover\\:scale-105"] {
157
- transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
158
- }
159
-
160
- [class*="group"]:hover [class*="group-hover\\:scale-105"] {
161
- transform: scale(1.08) !important;
162
- }
163
-
164
- /* ─── Form Elements ─── */
165
-
166
- input[class*="border-border"],
167
- select[class*="border-border"],
168
- textarea[class*="border-border"] {
169
- border-radius: var(--radius);
170
- border-width: 2px;
171
- transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
172
- }
173
-
174
- input[class*="border-border"]:focus,
175
- select[class*="border-border"]:focus,
176
- textarea[class*="border-border"]:focus {
177
- border-color: hsl(var(--purple)) !important;
178
- box-shadow: 0 0 0 4px hsl(var(--purple) / 0.1);
179
- transform: scale(1.01);
180
- }
181
-
182
- input::placeholder,
183
- textarea::placeholder {
184
- color: hsl(var(--muted-foreground) / 0.6);
185
- }
186
-
187
- /* ─── Navigation & Header ─── */
188
-
189
- header[class*="sticky"] {
190
- border-bottom: none !important;
191
- box-shadow: 0 4px 20px hsl(var(--purple) / 0.06);
192
- background: hsl(0 0% 99% / 0.9) !important;
193
- backdrop-filter: blur(10px);
194
- }
195
-
196
- /* Nav link hover — colorful underline */
197
- nav a {
198
- position: relative;
199
- font-weight: 600;
200
- transition: color 0.2s ease;
201
- }
202
-
203
- nav a::after {
204
- content: '';
205
- position: absolute;
206
- bottom: -2px;
207
- left: 50%;
208
- width: 0;
209
- height: 3px;
210
- background: linear-gradient(90deg, hsl(var(--pink)), hsl(var(--purple)));
211
- border-radius: 999px;
212
- transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
213
- transform: translateX(-50%);
214
- }
215
-
216
- nav a:hover::after {
217
- width: 100%;
218
- }
219
-
220
- nav a:hover {
221
- color: hsl(var(--pink));
222
- }
223
-
224
- /* ─── Badges & Tags ─── */
225
-
226
- /* Category/filter pills */
227
- [class*="bg-muted"][class*="text-xs"] {
228
- border-radius: 999px;
229
- font-weight: 700;
230
- padding-left: 0.85rem;
231
- padding-right: 0.85rem;
232
- transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
233
- }
234
-
235
- [class*="bg-muted"][class*="text-xs"]:hover {
236
- background: hsl(var(--lavender)) !important;
237
- transform: scale(1.05);
238
- }
239
-
240
- /* Sale/discount badges — fun wiggle + pill */
241
- [class*="bg-destructive"] {
242
- border-radius: 999px;
243
- font-weight: 800;
244
- box-shadow: 0 2px 8px hsl(0 84% 60% / 0.3);
245
- animation: playful-wiggle 3s ease-in-out infinite;
246
- }
247
-
248
- /* ─── Price Display ─── */
249
-
250
- [class*="font-bold"][class*="text-lg"],
251
- [class*="font-bold"][class*="text-xl"],
252
- [class*="font-bold"][class*="text-2xl"] {
253
- color: hsl(var(--pink));
254
- }
255
-
256
- /* Strikethrough — more playful */
257
- [class*="line-through"] {
258
- opacity: 0.4;
259
- text-decoration-color: hsl(var(--purple) / 0.4);
260
- text-decoration-thickness: 2px;
261
- }
262
-
263
- /* ─── Dividers ─── */
264
-
265
- hr {
266
- border: none;
267
- height: 3px;
268
- background: linear-gradient(
269
- 90deg,
270
- transparent,
271
- hsl(var(--lavender)),
272
- hsl(var(--pink) / 0.2),
273
- hsl(var(--lavender)),
274
- transparent
275
- );
276
- border-radius: 999px;
277
- }
278
-
279
- /* ─── Cart & Checkout ─── */
280
-
281
- /* Sticky summary — playful card */
282
- [class*="sticky"][class*="top-"] {
283
- border-radius: var(--radius);
284
- border: 2px solid hsl(var(--border));
285
- box-shadow: 0 4px 20px hsl(var(--purple) / 0.06);
286
- }
287
-
288
- /* Quantity buttons */
289
- button[class*="h-8"][class*="w-8"],
290
- button[class*="h-10"][class*="w-10"] {
291
- border-radius: 999px !important;
292
- transition: all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
293
- }
294
-
295
- button[class*="h-8"][class*="w-8"]:hover,
296
- button[class*="h-10"][class*="w-10"]:hover {
297
- transform: scale(1.1);
298
- background: hsl(var(--lavender)) !important;
299
- }
300
-
301
- /* ─── Images ─── */
302
-
303
- /* Product images — rounded */
304
- [class*="aspect-square"] {
305
- border-radius: calc(var(--radius) - 2px);
306
- overflow: hidden;
307
- }
308
- }
309
-
310
- /* ─── Animations ─── */
311
-
312
- /* Bouncy slide-up entrance */
313
- @keyframes playful-slide-up {
314
- from {
315
- opacity: 0;
316
- transform: translateY(24px) scale(0.96);
317
- }
318
- 50% {
319
- transform: translateY(-6px) scale(1.01);
320
- }
321
- to {
322
- opacity: 1;
323
- transform: translateY(0) scale(1);
324
- }
325
- }
326
-
327
- /* Wiggle for discount badges */
328
- @keyframes playful-wiggle {
329
- 0%,
330
- 85%,
331
- 100% {
332
- transform: rotate(0deg);
333
- }
334
- 90% {
335
- transform: rotate(-3deg);
336
- }
337
- 95% {
338
- transform: rotate(3deg);
339
- }
340
- }
341
-
342
- /* Pop-in for grid items */
343
- @keyframes playful-pop-in {
344
- from {
345
- opacity: 0;
346
- transform: scale(0.9) translateY(16px);
347
- }
348
- 60% {
349
- transform: scale(1.02) translateY(-2px);
350
- }
351
- to {
352
- opacity: 1;
353
- transform: scale(1) translateY(0);
354
- }
355
- }
356
-
357
- main > * {
358
- animation: playful-slide-up 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both;
359
- }
360
-
361
- main > *:nth-child(2) {
362
- animation-delay: 0.06s;
363
- }
364
-
365
- main > *:nth-child(3) {
366
- animation-delay: 0.12s;
367
- }
368
-
369
- /* Staggered grid items — playful pop */
370
- [class*="grid"] > [class*="group"] {
371
- animation: playful-pop-in 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both;
372
- }
373
-
374
- [class*="grid"] > [class*="group"]:nth-child(2) {
375
- animation-delay: 0.06s;
376
- }
377
-
378
- [class*="grid"] > [class*="group"]:nth-child(3) {
379
- animation-delay: 0.12s;
380
- }
381
-
382
- [class*="grid"] > [class*="group"]:nth-child(4) {
383
- animation-delay: 0.18s;
384
- }
385
-
386
- [class*="grid"] > [class*="group"]:nth-child(5) {
387
- animation-delay: 0.24s;
388
- }
389
-
390
- [class*="grid"] > [class*="group"]:nth-child(6) {
391
- animation-delay: 0.3s;
392
- }
393
-
394
- [class*="grid"] > [class*="group"]:nth-child(7) {
395
- animation-delay: 0.36s;
396
- }
397
-
398
- [class*="grid"] > [class*="group"]:nth-child(8) {
399
- animation-delay: 0.42s;
400
- }
@@ -1,23 +0,0 @@
1
- {
2
- "name": "Playful",
3
- "description": "Warm, vibrant design with Nunito rounded font and energetic pink-purple palette",
4
- "font": {
5
- "family": "Nunito",
6
- "import": "next/font/google"
7
- },
8
- "colors": {
9
- "background": "0 0% 99%",
10
- "foreground": "260 25% 16%",
11
- "primary": "330 75% 56%",
12
- "primary-foreground": "0 0% 100%",
13
- "secondary": "260 50% 94%",
14
- "secondary-foreground": "260 25% 16%",
15
- "muted": "270 30% 95%",
16
- "muted-foreground": "260 10% 45%",
17
- "accent": "280 60% 60%",
18
- "accent-foreground": "0 0% 100%",
19
- "destructive": "0 84% 60%",
20
- "border": "270 20% 88%"
21
- },
22
- "radius": "1rem"
23
- }