create-nymbal-app 0.0.0 → 0.2.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 (159) hide show
  1. package/bin/create-nymbal-app.mjs +9 -0
  2. package/dist/index.d.ts +37 -0
  3. package/dist/index.js +419 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +41 -7
  6. package/scaffold/project/astro/src/pages/index.astro +57 -0
  7. package/scaffold/templates/astro/README.md +26 -0
  8. package/scaffold/templates/astro/_dot.env.example +6 -0
  9. package/scaffold/templates/astro/_dot.gitignore +16 -0
  10. package/scaffold/templates/astro/_dot.node-version +1 -0
  11. package/scaffold/templates/astro/_dot.npmrc +1 -0
  12. package/scaffold/templates/astro/astro.config.mjs +14 -0
  13. package/scaffold/templates/astro/package.json +59 -0
  14. package/scaffold/templates/astro/src/components/AddressForm.astro +107 -0
  15. package/scaffold/templates/astro/src/components/Breadcrumb.astro +20 -0
  16. package/scaffold/templates/astro/src/components/CategoryNav.astro +27 -0
  17. package/scaffold/templates/astro/src/components/CheckoutSteps.astro +29 -0
  18. package/scaffold/templates/astro/src/components/Footer.astro +108 -0
  19. package/scaffold/templates/astro/src/components/Header.astro +192 -0
  20. package/scaffold/templates/astro/src/components/HeroSection.astro +17 -0
  21. package/scaffold/templates/astro/src/components/ImageGallery.astro +42 -0
  22. package/scaffold/templates/astro/src/components/NewsletterSignup.astro +39 -0
  23. package/scaffold/templates/astro/src/components/OrderSummary.astro +53 -0
  24. package/scaffold/templates/astro/src/components/Pagination.astro +13 -0
  25. package/scaffold/templates/astro/src/components/PriceDisplay.astro +25 -0
  26. package/scaffold/templates/astro/src/components/ProductCard.astro +44 -0
  27. package/scaffold/templates/astro/src/components/RelatedProducts.astro +28 -0
  28. package/scaffold/templates/astro/src/components/ReviewForm.astro +100 -0
  29. package/scaffold/templates/astro/src/components/ReviewList.astro +41 -0
  30. package/scaffold/templates/astro/src/components/SkipNav.astro +3 -0
  31. package/scaffold/templates/astro/src/components/SortDropdown.astro +26 -0
  32. package/scaffold/templates/astro/src/components/StockBadge.astro +32 -0
  33. package/scaffold/templates/astro/src/env.d.ts +2 -0
  34. package/scaffold/templates/astro/src/layouts/AccountLayout.astro +168 -0
  35. package/scaffold/templates/astro/src/layouts/BaseLayout.astro +55 -0
  36. package/scaffold/templates/astro/src/lib/api.ts +89 -0
  37. package/scaffold/templates/astro/src/lib/client.ts +13 -0
  38. package/scaffold/templates/astro/src/lib/format.ts +17 -0
  39. package/scaffold/templates/astro/src/lib/order-status.ts +14 -0
  40. package/scaffold/templates/astro/src/lib/seo.ts +62 -0
  41. package/scaffold/templates/astro/src/pages/404.astro +18 -0
  42. package/scaffold/templates/astro/src/pages/500.astro +17 -0
  43. package/scaffold/templates/astro/src/pages/account/addresses.astro +110 -0
  44. package/scaffold/templates/astro/src/pages/account/index.astro +67 -0
  45. package/scaffold/templates/astro/src/pages/account/login.astro +55 -0
  46. package/scaffold/templates/astro/src/pages/account/orders/[orderNumber].astro +108 -0
  47. package/scaffold/templates/astro/src/pages/account/orders.astro +81 -0
  48. package/scaffold/templates/astro/src/pages/account/profile.astro +131 -0
  49. package/scaffold/templates/astro/src/pages/account/register.astro +94 -0
  50. package/scaffold/templates/astro/src/pages/cart.astro +16 -0
  51. package/scaffold/templates/astro/src/pages/category/[slug].astro +73 -0
  52. package/scaffold/templates/astro/src/pages/checkout.astro +100 -0
  53. package/scaffold/templates/astro/src/pages/fragments/footer.astro +5 -0
  54. package/scaffold/templates/astro/src/pages/fragments/header.astro +5 -0
  55. package/scaffold/templates/astro/src/pages/fragments/nav.astro +9 -0
  56. package/scaffold/templates/astro/src/pages/fragments/product/[slug].astro +14 -0
  57. package/scaffold/templates/astro/src/pages/index.astro +49 -0
  58. package/scaffold/templates/astro/src/pages/order/[orderNumber].astro +127 -0
  59. package/scaffold/templates/astro/src/pages/product/[slug].astro +107 -0
  60. package/scaffold/templates/astro/src/pages/products/index.astro +62 -0
  61. package/scaffold/templates/astro/src/pages/search.astro +37 -0
  62. package/scaffold/templates/astro/src/scripts/account-guard.ts +22 -0
  63. package/scaffold/templates/astro/src/scripts/auth-forms.ts +89 -0
  64. package/scaffold/templates/astro/src/scripts/cart-page.ts +143 -0
  65. package/scaffold/templates/astro/src/scripts/checkout.ts +277 -0
  66. package/scaffold/templates/astro/src/scripts/image-gallery.ts +22 -0
  67. package/scaffold/templates/astro/src/scripts/init-client.ts +16 -0
  68. package/scaffold/templates/astro/src/scripts/order-status.ts +27 -0
  69. package/scaffold/templates/astro/src/scripts/pdp.ts +67 -0
  70. package/scaffold/templates/astro/src/scripts/plp.ts +109 -0
  71. package/scaffold/templates/astro/src/scripts/search.ts +145 -0
  72. package/scaffold/templates/astro/src/styles/global.css +362 -0
  73. package/scaffold/templates/astro/src/styles/pages/account.css +331 -0
  74. package/scaffold/templates/astro/src/styles/pages/cart.css +243 -0
  75. package/scaffold/templates/astro/src/styles/pages/checkout.css +270 -0
  76. package/scaffold/templates/astro/src/styles/pages/confirmation.css +142 -0
  77. package/scaffold/templates/astro/src/styles/pages/error.css +69 -0
  78. package/scaffold/templates/astro/src/styles/pages/home.css +269 -0
  79. package/scaffold/templates/astro/src/styles/pages/pdp.css +272 -0
  80. package/scaffold/templates/astro/src/styles/pages/plp.css +213 -0
  81. package/scaffold/templates/astro/src/styles/pages/search.css +152 -0
  82. package/scaffold/templates/astro/tsconfig.json +3 -0
  83. package/scaffold/templates/nextjs/README.md +26 -0
  84. package/scaffold/templates/nextjs/_dot.env.example +6 -0
  85. package/scaffold/templates/nextjs/_dot.gitignore +17 -0
  86. package/scaffold/templates/nextjs/_dot.node-version +1 -0
  87. package/scaffold/templates/nextjs/_dot.npmrc +1 -0
  88. package/scaffold/templates/nextjs/app/account/addresses/page.tsx +10 -0
  89. package/scaffold/templates/nextjs/app/account/layout.tsx +57 -0
  90. package/scaffold/templates/nextjs/app/account/login/page.tsx +23 -0
  91. package/scaffold/templates/nextjs/app/account/orders/[orderNumber]/page.tsx +192 -0
  92. package/scaffold/templates/nextjs/app/account/orders/page.tsx +123 -0
  93. package/scaffold/templates/nextjs/app/account/page.tsx +59 -0
  94. package/scaffold/templates/nextjs/app/account/profile/page.tsx +10 -0
  95. package/scaffold/templates/nextjs/app/account/register/page.tsx +10 -0
  96. package/scaffold/templates/nextjs/app/cart/page.tsx +10 -0
  97. package/scaffold/templates/nextjs/app/category/[slug]/page.tsx +58 -0
  98. package/scaffold/templates/nextjs/app/checkout/page.tsx +10 -0
  99. package/scaffold/templates/nextjs/app/error.tsx +49 -0
  100. package/scaffold/templates/nextjs/app/globals.css +473 -0
  101. package/scaffold/templates/nextjs/app/layout.tsx +29 -0
  102. package/scaffold/templates/nextjs/app/not-found.tsx +38 -0
  103. package/scaffold/templates/nextjs/app/order/[orderNumber]/page.tsx +127 -0
  104. package/scaffold/templates/nextjs/app/page.tsx +63 -0
  105. package/scaffold/templates/nextjs/app/product/[slug]/page.tsx +111 -0
  106. package/scaffold/templates/nextjs/app/products/page.tsx +40 -0
  107. package/scaffold/templates/nextjs/app/search/page.tsx +24 -0
  108. package/scaffold/templates/nextjs/components/client/AddressManager.tsx +181 -0
  109. package/scaffold/templates/nextjs/components/client/AuthGuard.tsx +55 -0
  110. package/scaffold/templates/nextjs/components/client/CartDrawerToggle.tsx +39 -0
  111. package/scaffold/templates/nextjs/components/client/CartPage.tsx +120 -0
  112. package/scaffold/templates/nextjs/components/client/CheckoutForm.tsx +523 -0
  113. package/scaffold/templates/nextjs/components/client/ImageGallery.tsx +68 -0
  114. package/scaffold/templates/nextjs/components/client/LoginForm.tsx +89 -0
  115. package/scaffold/templates/nextjs/components/client/MiniCartWrapper.tsx +12 -0
  116. package/scaffold/templates/nextjs/components/client/NewsletterSignup.tsx +74 -0
  117. package/scaffold/templates/nextjs/components/client/NymbalSetup.tsx +24 -0
  118. package/scaffold/templates/nextjs/components/client/OrderStatusRefresh.tsx +48 -0
  119. package/scaffold/templates/nextjs/components/client/ProductGrid.tsx +148 -0
  120. package/scaffold/templates/nextjs/components/client/ProductInteractive.tsx +61 -0
  121. package/scaffold/templates/nextjs/components/client/ProfileForm.tsx +112 -0
  122. package/scaffold/templates/nextjs/components/client/RegisterForm.tsx +131 -0
  123. package/scaffold/templates/nextjs/components/client/ReviewForm.tsx +116 -0
  124. package/scaffold/templates/nextjs/components/client/SearchBarWrapper.tsx +27 -0
  125. package/scaffold/templates/nextjs/components/client/SearchResults.tsx +141 -0
  126. package/scaffold/templates/nextjs/components/client/SortDropdown.tsx +35 -0
  127. package/scaffold/templates/nextjs/components/server/Breadcrumb.tsx +36 -0
  128. package/scaffold/templates/nextjs/components/server/CategoryNav.tsx +29 -0
  129. package/scaffold/templates/nextjs/components/server/CheckoutSteps.tsx +60 -0
  130. package/scaffold/templates/nextjs/components/server/Footer.module.css +64 -0
  131. package/scaffold/templates/nextjs/components/server/Footer.tsx +79 -0
  132. package/scaffold/templates/nextjs/components/server/Header.module.css +147 -0
  133. package/scaffold/templates/nextjs/components/server/Header.tsx +102 -0
  134. package/scaffold/templates/nextjs/components/server/HeroSection.tsx +18 -0
  135. package/scaffold/templates/nextjs/components/server/OrderSummary.tsx +79 -0
  136. package/scaffold/templates/nextjs/components/server/PriceDisplay.tsx +31 -0
  137. package/scaffold/templates/nextjs/components/server/ProductCard.tsx +59 -0
  138. package/scaffold/templates/nextjs/components/server/RelatedProducts.tsx +31 -0
  139. package/scaffold/templates/nextjs/components/server/ReviewList.tsx +62 -0
  140. package/scaffold/templates/nextjs/components/server/SkipNav.tsx +7 -0
  141. package/scaffold/templates/nextjs/components/server/StockBadge.tsx +19 -0
  142. package/scaffold/templates/nextjs/lib/api.ts +89 -0
  143. package/scaffold/templates/nextjs/lib/client.ts +23 -0
  144. package/scaffold/templates/nextjs/lib/format.ts +7 -0
  145. package/scaffold/templates/nextjs/lib/order-status.ts +14 -0
  146. package/scaffold/templates/nextjs/lib/seo.ts +73 -0
  147. package/scaffold/templates/nextjs/next.config.mjs +9 -0
  148. package/scaffold/templates/nextjs/package.json +64 -0
  149. package/scaffold/templates/nextjs/styles/pages/account.module.css +377 -0
  150. package/scaffold/templates/nextjs/styles/pages/cart.module.css +240 -0
  151. package/scaffold/templates/nextjs/styles/pages/checkout.module.css +404 -0
  152. package/scaffold/templates/nextjs/styles/pages/confirmation.module.css +237 -0
  153. package/scaffold/templates/nextjs/styles/pages/error.module.css +132 -0
  154. package/scaffold/templates/nextjs/styles/pages/home.module.css +285 -0
  155. package/scaffold/templates/nextjs/styles/pages/pdp.module.css +319 -0
  156. package/scaffold/templates/nextjs/styles/pages/plp.module.css +280 -0
  157. package/scaffold/templates/nextjs/styles/pages/search.module.css +192 -0
  158. package/scaffold/templates/nextjs/tsconfig.json +41 -0
  159. package/README.md +0 -4
@@ -0,0 +1,192 @@
1
+ /* ── Search Results Page ───────────────────────────────────────────── */
2
+
3
+ .page {
4
+ padding-block: var(--nymbal-spacing-xl);
5
+ }
6
+
7
+ .header {
8
+ margin-bottom: var(--nymbal-spacing-lg);
9
+ }
10
+
11
+ .pageTitle {
12
+ font-size: 2rem;
13
+ font-weight: var(--nymbal-font-weight-bold);
14
+ margin-bottom: var(--nymbal-spacing-sm);
15
+ }
16
+
17
+ .queryText {
18
+ font-size: var(--nymbal-font-size-sm);
19
+ color: var(--nymbal-color-text-muted);
20
+ }
21
+
22
+ .queryTerm {
23
+ font-weight: var(--nymbal-font-weight-medium);
24
+ color: var(--nymbal-color-text);
25
+ }
26
+
27
+ .resultCount {
28
+ font-size: var(--nymbal-font-size-sm);
29
+ color: var(--nymbal-color-text-muted);
30
+ margin-bottom: var(--nymbal-spacing-md);
31
+ }
32
+
33
+ /* ── Search Input ─────────────────────────────────────────────────── */
34
+
35
+ .searchInputWrapper {
36
+ max-width: 32rem;
37
+ margin-bottom: var(--nymbal-spacing-xl);
38
+ }
39
+
40
+ /* ── Results Grid ─────────────────────────────────────────────────── */
41
+
42
+ .grid {
43
+ display: grid;
44
+ grid-template-columns: 1fr;
45
+ gap: var(--nymbal-spacing-md);
46
+ }
47
+
48
+ @media (min-width: 640px) {
49
+ .grid {
50
+ grid-template-columns: repeat(2, 1fr);
51
+ }
52
+ }
53
+
54
+ @media (min-width: 1024px) {
55
+ .grid {
56
+ grid-template-columns: repeat(4, 1fr);
57
+ }
58
+ }
59
+
60
+ .productCard {
61
+ display: flex;
62
+ flex-direction: column;
63
+ background: var(--nymbal-color-surface);
64
+ border: 1px solid var(--nymbal-color-border);
65
+ border-radius: var(--nymbal-radius-lg);
66
+ overflow: hidden;
67
+ text-decoration: none;
68
+ color: var(--nymbal-color-text);
69
+ transition: box-shadow var(--nymbal-transition-fast),
70
+ transform var(--nymbal-transition-fast);
71
+ }
72
+
73
+ .productCard:hover {
74
+ box-shadow: var(--nymbal-shadow-md);
75
+ transform: translateY(-2px);
76
+ text-decoration: none;
77
+ color: var(--nymbal-color-text);
78
+ }
79
+
80
+ .productImage {
81
+ aspect-ratio: 1;
82
+ background-color: #f4f4f5;
83
+ overflow: hidden;
84
+ }
85
+
86
+ .productImage img {
87
+ width: 100%;
88
+ height: 100%;
89
+ object-fit: cover;
90
+ }
91
+
92
+ .productInfo {
93
+ padding: var(--nymbal-spacing-md);
94
+ display: flex;
95
+ flex-direction: column;
96
+ gap: var(--nymbal-spacing-xs);
97
+ }
98
+
99
+ .productName {
100
+ font-size: var(--nymbal-font-size-sm);
101
+ font-weight: var(--nymbal-font-weight-medium);
102
+ }
103
+
104
+ .productPrice {
105
+ font-size: var(--nymbal-font-size-sm);
106
+ font-weight: var(--nymbal-font-weight-bold);
107
+ }
108
+
109
+ /* ── Empty State ──────────────────────────────────────────────────── */
110
+
111
+ .empty {
112
+ text-align: center;
113
+ padding: 4rem var(--nymbal-spacing-lg);
114
+ }
115
+
116
+ .emptyIcon {
117
+ display: inline-flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ width: 4rem;
121
+ height: 4rem;
122
+ border-radius: 50%;
123
+ background-color: #f4f4f5;
124
+ color: var(--nymbal-color-text-muted);
125
+ margin-bottom: var(--nymbal-spacing-md);
126
+ }
127
+
128
+ .emptyIcon svg {
129
+ width: 2rem;
130
+ height: 2rem;
131
+ }
132
+
133
+ .emptyTitle {
134
+ font-size: var(--nymbal-font-size-lg);
135
+ font-weight: var(--nymbal-font-weight-medium);
136
+ margin-bottom: var(--nymbal-spacing-sm);
137
+ }
138
+
139
+ .emptyText {
140
+ font-size: var(--nymbal-font-size-sm);
141
+ color: var(--nymbal-color-text-muted);
142
+ max-width: 24rem;
143
+ margin-inline: auto;
144
+ }
145
+
146
+ /* ── Loading ──────────────────────────────────────────────────────── */
147
+
148
+ .loading {
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ min-height: 16rem;
153
+ }
154
+
155
+ /* ── Suggestions ──────────────────────────────────────────────────── */
156
+
157
+ .suggestions {
158
+ margin-top: var(--nymbal-spacing-xl);
159
+ padding-top: var(--nymbal-spacing-xl);
160
+ border-top: 1px solid var(--nymbal-color-border);
161
+ }
162
+
163
+ .suggestionsTitle {
164
+ font-size: var(--nymbal-font-size-lg);
165
+ font-weight: var(--nymbal-font-weight-bold);
166
+ margin-bottom: var(--nymbal-spacing-md);
167
+ }
168
+
169
+ .suggestionTags {
170
+ display: flex;
171
+ flex-wrap: wrap;
172
+ gap: var(--nymbal-spacing-sm);
173
+ }
174
+
175
+ .suggestionTag {
176
+ padding: var(--nymbal-spacing-xs) var(--nymbal-spacing-md);
177
+ font-size: var(--nymbal-font-size-sm);
178
+ color: var(--nymbal-color-text);
179
+ background: #f4f4f5;
180
+ border: 1px solid var(--nymbal-color-border);
181
+ border-radius: var(--nymbal-radius-full);
182
+ text-decoration: none;
183
+ transition: border-color var(--nymbal-transition-fast),
184
+ background-color var(--nymbal-transition-fast);
185
+ }
186
+
187
+ .suggestionTag:hover {
188
+ border-color: var(--nymbal-color-accent);
189
+ background-color: rgba(37, 99, 235, 0.04);
190
+ text-decoration: none;
191
+ color: var(--nymbal-color-accent);
192
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "lib": [
5
+ "dom",
6
+ "dom.iterable",
7
+ "esnext"
8
+ ],
9
+ "allowJs": true,
10
+ "skipLibCheck": true,
11
+ "strict": true,
12
+ "noEmit": true,
13
+ "esModuleInterop": true,
14
+ "module": "esnext",
15
+ "moduleResolution": "bundler",
16
+ "resolveJsonModule": true,
17
+ "isolatedModules": true,
18
+ "jsx": "react-jsx",
19
+ "incremental": true,
20
+ "plugins": [
21
+ {
22
+ "name": "next"
23
+ }
24
+ ],
25
+ "paths": {
26
+ "@/*": [
27
+ "./*"
28
+ ]
29
+ }
30
+ },
31
+ "include": [
32
+ "next-env.d.ts",
33
+ "**/*.ts",
34
+ "**/*.tsx",
35
+ ".next/types/**/*.ts",
36
+ ".next/dev/types/**/*.ts"
37
+ ],
38
+ "exclude": [
39
+ "node_modules"
40
+ ]
41
+ }
package/README.md DELETED
@@ -1,4 +0,0 @@
1
- # create-nymbal-app
2
-
3
- Reserved by the Nymbal project (https://github.com/nymbalhq/nymbal) for the `npx create-nymbal-app` scaffolder.
4
- The first working release follows the project's Phase 0. Nothing in this version is runnable.