@promakeai/cli 0.1.2 → 0.1.3
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/dist/index.js +56 -56
- package/dist/registry/about-page.json +2 -2
- package/dist/registry/about-section.json +2 -2
- package/dist/registry/announcement-bar.json +1 -1
- package/dist/registry/blog-section.json +6 -4
- package/dist/registry/cart-drawer.json +5 -4
- package/dist/registry/case-study-page.json +2 -2
- package/dist/registry/coming-soon-page-minimal.json +1 -1
- package/dist/registry/coming-soon-page.json +1 -1
- package/dist/registry/contact-info-grid.json +2 -2
- package/dist/registry/contact-page-centered.json +2 -2
- package/dist/registry/contact-page-split.json +2 -2
- package/dist/registry/contact-page.json +2 -2
- package/dist/registry/cta-section.json +2 -2
- package/dist/registry/docs/blog-section.md +3 -1
- package/dist/registry/docs/cart-drawer.md +9 -9
- package/dist/registry/docs/favorites-blog-block.md +10 -3
- package/dist/registry/docs/favorites-blog-page.md +38 -0
- package/dist/registry/docs/favorites-ecommerce-block.md +10 -3
- package/dist/registry/docs/favorites-ecommerce-page.md +38 -0
- package/dist/registry/docs/login-page.md +6 -16
- package/dist/registry/docs/payment-success-block.md +8 -1
- package/dist/registry/docs/post-detail-page.md +39 -0
- package/dist/registry/docs/product-card-detailed.md +7 -11
- package/dist/registry/docs/product-detail-page.md +39 -0
- package/dist/registry/docs/product-detail-section.md +7 -13
- package/dist/registry/docs/product-quick-view.md +4 -2
- package/dist/registry/faq-categorized.json +2 -2
- package/dist/registry/faq-simple.json +2 -2
- package/dist/registry/favorites-blog-block.json +1 -1
- package/dist/registry/favorites-blog-page.json +48 -0
- package/dist/registry/favorites-ecommerce-block.json +1 -1
- package/dist/registry/favorites-ecommerce-page.json +48 -0
- package/dist/registry/feature-section.json +2 -2
- package/dist/registry/footer.json +2 -2
- package/dist/registry/header-ecommerce.json +1 -1
- package/dist/registry/hero-carousel.json +2 -2
- package/dist/registry/hero-cta.json +2 -2
- package/dist/registry/hero-gradient.json +2 -2
- package/dist/registry/hero.json +2 -2
- package/dist/registry/index.json +9 -0
- package/dist/registry/landing-page-app.json +1 -1
- package/dist/registry/landing-page-saas.json +1 -1
- package/dist/registry/login-page.json +8 -6
- package/dist/registry/logo-cloud.json +1 -1
- package/dist/registry/payment-success-block.json +7 -3
- package/dist/registry/portfolio-page.json +2 -2
- package/dist/registry/post-detail-page.json +48 -0
- package/dist/registry/pricing-page.json +1 -1
- package/dist/registry/pricing-section.json +2 -2
- package/dist/registry/product-card-detailed.json +5 -4
- package/dist/registry/product-detail-page.json +48 -0
- package/dist/registry/product-detail-section.json +5 -4
- package/dist/registry/product-quick-view.json +5 -4
- package/dist/registry/team-page.json +1 -1
- package/dist/registry/testimonials-carousel.json +2 -2
- package/dist/registry/testimonials-grid.json +2 -2
- package/dist/registry/timeline-section.json +2 -2
- package/dist/registry/video-hero.json +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Login Page
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Login page with email/password form, forgot password link, and create account link. Centered card layout with responsive design. Integrated with auth-core for authentication.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -24,24 +24,12 @@ import { LoginPage, default } from '@/modules/login-page';
|
|
|
24
24
|
```
|
|
25
25
|
import LoginPage from '@/modules/login-page';
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
<LoginPage
|
|
29
|
-
onSubmit={(email, password) => {
|
|
30
|
-
// Handle login API call here
|
|
31
|
-
}}
|
|
32
|
-
onGoogleLogin={() => {
|
|
33
|
-
// Handle Google OAuth
|
|
34
|
-
}}
|
|
35
|
-
onMicrosoftLogin={() => {
|
|
36
|
-
// Handle Microsoft OAuth
|
|
37
|
-
}}
|
|
38
|
-
/>
|
|
27
|
+
<LoginPage />
|
|
39
28
|
|
|
40
29
|
• Installed at: src/modules/login-page/
|
|
41
30
|
• Customize text: src/modules/login-page/lang/*.json
|
|
42
|
-
•
|
|
43
|
-
•
|
|
44
|
-
• For built-in API integration, use login-page-split instead
|
|
31
|
+
• Integrated with auth-core for API authentication
|
|
32
|
+
• On success, redirects to previous page or home
|
|
45
33
|
```
|
|
46
34
|
|
|
47
35
|
## Dependencies
|
|
@@ -50,3 +38,5 @@ This component requires:
|
|
|
50
38
|
- `button`
|
|
51
39
|
- `input`
|
|
52
40
|
- `label`
|
|
41
|
+
- `auth-core`
|
|
42
|
+
- `api`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Payment Success Block
|
|
2
2
|
|
|
3
|
-
Payment verification UI with loading, success, and failed states. Displays order details and navigation options
|
|
3
|
+
Payment verification UI with loading, success, and failed states. Displays order details and navigation options. Uses formatPrice from ecommerce-core.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -30,3 +30,10 @@ import { PaymentSuccessBlock } from '@/modules/payment-success-block';
|
|
|
30
30
|
• Handles loading, success, and failed states
|
|
31
31
|
• Use in payment callback/confirmation pages
|
|
32
32
|
```
|
|
33
|
+
|
|
34
|
+
## Dependencies
|
|
35
|
+
|
|
36
|
+
This component requires:
|
|
37
|
+
- `button`
|
|
38
|
+
- `card`
|
|
39
|
+
- `ecommerce-core`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Post Detail Page
|
|
2
|
+
|
|
3
|
+
Blog post detail page that fetches post data by slug from URL params. Uses usePostBySlug hook from blog-core and renders PostDetailBlock. Includes loading skeleton, error handling for not found posts, and automatic page title.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| Target | Type |
|
|
8
|
+
|--------|------|
|
|
9
|
+
| `$modules$/post-detail-page/index.ts` | index |
|
|
10
|
+
| `$modules$/post-detail-page/post-detail-page.tsx` | page |
|
|
11
|
+
| `$modules$/post-detail-page/lang/en.json` | lang |
|
|
12
|
+
| `$modules$/post-detail-page/lang/tr.json` | lang |
|
|
13
|
+
|
|
14
|
+
## Exports
|
|
15
|
+
|
|
16
|
+
**Components/Functions:** `PostDetailPage`, `default`
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { PostDetailPage, default } from '@/modules/post-detail-page';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
import { PostDetailPage } from '@/modules/post-detail-page';
|
|
26
|
+
|
|
27
|
+
<Route path="/blog/:slug" element={<PostDetailPage />} />
|
|
28
|
+
|
|
29
|
+
• Uses usePostBySlug() from blog-core
|
|
30
|
+
• Fetches post by slug from URL params
|
|
31
|
+
• Shows loading skeleton while fetching
|
|
32
|
+
• Handles post not found state
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Dependencies
|
|
36
|
+
|
|
37
|
+
This component requires:
|
|
38
|
+
- `blog-core`
|
|
39
|
+
- `post-detail-block`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Product Card Detailed
|
|
2
2
|
|
|
3
|
-
Detailed product card with wishlist
|
|
3
|
+
Detailed product card with wishlist toggle, hover scale effect, price with optional discount, description, and Add to Cart/Buy Now action buttons. Integrated with ecommerce-core for cart and favorites.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -23,20 +23,16 @@ import { ProductCardDetailed } from '@/modules/product-card-detailed';
|
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
import { ProductCardDetailed } from '@/modules/product-card-detailed';
|
|
26
|
+
import type { Product } from '@/modules/ecommerce-core';
|
|
26
27
|
|
|
27
|
-
<ProductCardDetailed
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
price={49.99}
|
|
32
|
-
originalPrice={80}
|
|
33
|
-
description="Product description here..."
|
|
34
|
-
onAddToCart={() => {}}
|
|
35
|
-
onBuyNow={() => {}}
|
|
36
|
-
/>
|
|
28
|
+
<ProductCardDetailed product={product} />
|
|
29
|
+
|
|
30
|
+
• Uses useCart and useFavorites from ecommerce-core
|
|
31
|
+
• Wishlist toggle shows filled heart when favorited
|
|
37
32
|
```
|
|
38
33
|
|
|
39
34
|
## Dependencies
|
|
40
35
|
|
|
41
36
|
This component requires:
|
|
42
37
|
- `button`
|
|
38
|
+
- `ecommerce-core`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Product Detail Page
|
|
2
|
+
|
|
3
|
+
Product detail page that fetches product data by slug from URL params. Uses useProductBySlug hook from ecommerce-core and renders ProductDetailBlock. Includes loading skeleton, error handling for not found products, and automatic page title.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| Target | Type |
|
|
8
|
+
|--------|------|
|
|
9
|
+
| `$modules$/product-detail-page/index.ts` | index |
|
|
10
|
+
| `$modules$/product-detail-page/product-detail-page.tsx` | page |
|
|
11
|
+
| `$modules$/product-detail-page/lang/en.json` | lang |
|
|
12
|
+
| `$modules$/product-detail-page/lang/tr.json` | lang |
|
|
13
|
+
|
|
14
|
+
## Exports
|
|
15
|
+
|
|
16
|
+
**Components/Functions:** `ProductDetailPage`, `default`
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { ProductDetailPage, default } from '@/modules/product-detail-page';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
import { ProductDetailPage } from '@/modules/product-detail-page';
|
|
26
|
+
|
|
27
|
+
<Route path="/products/:slug" element={<ProductDetailPage />} />
|
|
28
|
+
|
|
29
|
+
• Uses useProductBySlug() from ecommerce-core
|
|
30
|
+
• Fetches product by slug from URL params
|
|
31
|
+
• Shows loading skeleton while fetching
|
|
32
|
+
• Handles product not found state
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Dependencies
|
|
36
|
+
|
|
37
|
+
This component requires:
|
|
38
|
+
- `ecommerce-core`
|
|
39
|
+
- `product-detail-block`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Product Detail Section
|
|
2
2
|
|
|
3
|
-
Product detail UI section with image, title, brand, price, description,
|
|
3
|
+
Product detail UI section with image, title, brand, price, description, rating stars, social share buttons, and add to cart/wishlist actions. Integrated with ecommerce-core for cart and favorites.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -23,19 +23,12 @@ import { ProductDetailSection } from '@/modules/product-detail-section';
|
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
import { ProductDetailSection } from '@/modules/product-detail-section';
|
|
26
|
+
import type { Product } from '@/modules/ecommerce-core';
|
|
26
27
|
|
|
27
|
-
<ProductDetailSection
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
price={58}
|
|
32
|
-
description="Product description..."
|
|
33
|
-
colors={[{ name: 'Red', value: '#ef4444' }]}
|
|
34
|
-
sizes={['SM', 'M', 'L', 'XL']}
|
|
35
|
-
rating={4}
|
|
36
|
-
reviewCount={12}
|
|
37
|
-
onAddToCart={() => {}}
|
|
38
|
-
/>
|
|
28
|
+
<ProductDetailSection product={product} />
|
|
29
|
+
|
|
30
|
+
• Uses useCart and useFavorites from ecommerce-core
|
|
31
|
+
• Wishlist toggle shows filled heart when favorited
|
|
39
32
|
```
|
|
40
33
|
|
|
41
34
|
## Dependencies
|
|
@@ -43,3 +36,4 @@ import { ProductDetailSection } from '@/modules/product-detail-section';
|
|
|
43
36
|
This component requires:
|
|
44
37
|
- `button`
|
|
45
38
|
- `select`
|
|
39
|
+
- `ecommerce-core`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Product Quick View
|
|
2
2
|
|
|
3
|
-
Modal overlay for quick product preview
|
|
3
|
+
Modal overlay for quick product preview. Features image gallery and add to cart functionality. Integrated with ecommerce-core for cart and favorites.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -23,11 +23,12 @@ import { ProductQuickView } from '@/modules/product-quick-view';
|
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
import { ProductQuickView } from '@/modules/product-quick-view';
|
|
26
|
+
import type { Product } from '@/modules/ecommerce-core';
|
|
26
27
|
|
|
27
28
|
<ProductQuickView product={product} open={open} onOpenChange={setOpen} />
|
|
28
29
|
|
|
29
30
|
• Installed at: src/modules/product-quick-view/
|
|
30
|
-
•
|
|
31
|
+
• Uses useCart and useFavorites from ecommerce-core
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
## Dependencies
|
|
@@ -35,3 +36,4 @@ import { ProductQuickView } from '@/modules/product-quick-view';
|
|
|
35
36
|
This component requires:
|
|
36
37
|
- `button`
|
|
37
38
|
- `dialog`
|
|
39
|
+
- `ecommerce-core`
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"path": "faq-categorized/lang/en.json",
|
|
25
25
|
"type": "registry:lang",
|
|
26
26
|
"target": "$modules$/faq-categorized/lang/en.json",
|
|
27
|
-
"content": "{\r\n \"title\": \"Frequently Asked Questions\",\r\n \"subtitle\": \"
|
|
27
|
+
"content": "{\r\n \"title\": \"Frequently Asked Questions\",\r\n \"subtitle\": \"Promake can help personalize this subtitle to match your FAQ section.\",\r\n \"generalTitle\": \"General\",\r\n \"general1Q\": \"Replace this with your first general question\",\r\n \"general1A\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Let Promake update this answer with relevant information for your project.\",\r\n \"general2Q\": \"This is a placeholder question that needs customization\",\r\n \"general2A\": \"Use Promake to generate this answer based on your industry and offerings. Sed do eiusmod tempor incididunt ut labore.\",\r\n \"general3Q\": \"Customize this question for your FAQ section\",\r\n \"general3A\": \"Work with Promake to generate appropriate answers for your site. Ut enim ad minim veniam, quis nostrud exercitation ullamco.\",\r\n \"billingTitle\": \"Billing\",\r\n \"billing1Q\": \"Replace with your billing-related question\",\r\n \"billing1A\": \"Placeholder answer text. Customize this content with Promake to provide accurate billing information.\",\r\n \"billing2Q\": \"This question should be replaced with real billing FAQ\",\r\n \"billing2A\": \"Lorem ipsum dolor sit amet. Have Promake replace this with appropriate billing details for your service.\",\r\n \"billing3Q\": \"Customize this billing question\",\r\n \"billing3A\": \"This is placeholder text. Edit via Promake with billing answers based on your payment structure.\",\r\n \"technicalTitle\": \"Technical\",\r\n \"technical1Q\": \"Replace with your technical question\",\r\n \"technical1A\": \"Update this technical answer using Promake based on your product specifications. Duis aute irure dolor in reprehenderit.\",\r\n \"technical2Q\": \"This is a placeholder technical question\",\r\n \"technical2A\": \"Placeholder answer. Let Promake generate technical information about your platform capabilities.\",\r\n \"technical3Q\": \"Customize this final technical question\",\r\n \"technical3A\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Promake can help add relevant technical details for your offering.\"\r\n}\r\n"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "faq-categorized/lang/tr.json",
|
|
31
31
|
"type": "registry:lang",
|
|
32
32
|
"target": "$modules$/faq-categorized/lang/tr.json",
|
|
33
|
-
"content": "{\r\n \"title\": \"Sıkça Sorulan Sorular\",\r\n \"subtitle\": \"
|
|
33
|
+
"content": "{\r\n \"title\": \"Sıkça Sorulan Sorular\",\r\n \"subtitle\": \"Promake bu alt başlığı SSS bölümünüze göre kişiselleştirmenize yardımcı olabilir.\",\r\n \"generalTitle\": \"Genel\",\r\n \"general1Q\": \"Bunu ilk genel sorunuzla değiştirin\",\r\n \"general1A\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Promake ile bu cevabı projeniz için ilgili bilgilerle güncelleyin.\",\r\n \"general2Q\": \"Bu özelleştirilmesi gereken bir placeholder sorudur\",\r\n \"general2A\": \"Bu cevabı sektörünüz ve tekliflerinize göre üretmek için Promake kullanın. Sed do eiusmod tempor incididunt ut labore.\",\r\n \"general3Q\": \"Bu soruyu SSS bölümünüz için özelleştirin\",\r\n \"general3A\": \"Promake ile siteniz için uygun cevaplar oluşturun. Ut enim ad minim veniam, quis nostrud exercitation ullamco.\",\r\n \"billingTitle\": \"Faturalama\",\r\n \"billing1Q\": \"Faturalama ile ilgili sorunuzla değiştirin\",\r\n \"billing1A\": \"Placeholder cevap metni. Doğru faturalama bilgileri sağlamak için bu içeriği Promake ile özelleştirin.\",\r\n \"billing2Q\": \"Bu soru gerçek faturalama SSS'si ile değiştirilmelidir\",\r\n \"billing2A\": \"Lorem ipsum dolor sit amet. Promake'ten hizmetiniz için uygun faturalama detaylarıyla değiştirmesini isteyin.\",\r\n \"billing3Q\": \"Bu faturalama sorusunu özelleştirin\",\r\n \"billing3A\": \"Bu placeholder metindir. Ödeme yapınıza göre faturalama cevaplarıyla Promake üzerinden düzenleyin.\",\r\n \"technicalTitle\": \"Teknik\",\r\n \"technical1Q\": \"Teknik sorunuzla değiştirin\",\r\n \"technical1A\": \"Bu teknik cevabı ürün özelliklerinize göre Promake kullanarak güncelleyin. Duis aute irure dolor in reprehenderit.\",\r\n \"technical2Q\": \"Bu bir placeholder teknik sorudur\",\r\n \"technical2A\": \"Placeholder cevap. Promake ile platform yetenekleriniz hakkında teknik bilgiler üretin.\",\r\n \"technical3Q\": \"Bu son teknik soruyu özelleştirin\",\r\n \"technical3A\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Promake teklifiniz için ilgili teknik detaylar eklemenize yardımcı olabilir.\"\r\n}\r\n"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
36
|
"exports": {
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"path": "faq-simple/lang/en.json",
|
|
25
25
|
"type": "registry:lang",
|
|
26
26
|
"target": "$modules$/faq-simple/lang/en.json",
|
|
27
|
-
"content": "{\r\n \"title\": \"Frequently Asked Questions\",\r\n \"subtitle\": \"
|
|
27
|
+
"content": "{\r\n \"title\": \"Frequently Asked Questions\",\r\n \"subtitle\": \"Customize this subtitle with Promake based on your offering.\",\r\n \"q1\": \"Replace this question with your first FAQ\",\r\n \"a1\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Let Promake personalize this answer with relevant information.\",\r\n \"q2\": \"This is a placeholder question that needs to be customized\",\r\n \"a2\": \"Use Promake to update this answer based on your project context. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"q3\": \"Customize this question to match your service\",\r\n \"q3\": \"Work with Promake to generate appropriate answers for your audience. Duis aute irure dolor in reprehenderit in voluptate velit esse.\",\r\n \"q4\": \"Replace with your actual frequently asked question\",\r\n \"a4\": \"Placeholder answer text. Have Promake tailor this content to provide accurate information about your offerings.\",\r\n \"q5\": \"This question should be replaced with real FAQ content\",\r\n \"a5\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Edit this via Promake with appropriate information for your site.\",\r\n \"q6\": \"Customize this final question for your FAQ section\",\r\n \"a6\": \"This is placeholder text. Promake can help add relevant answers based on your specific needs.\"\r\n}\r\n"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "faq-simple/lang/tr.json",
|
|
31
31
|
"type": "registry:lang",
|
|
32
32
|
"target": "$modules$/faq-simple/lang/tr.json",
|
|
33
|
-
"content": "{\r\n \"title\": \"Sıkça Sorulan Sorular\",\r\n \"subtitle\": \"
|
|
33
|
+
"content": "{\r\n \"title\": \"Sıkça Sorulan Sorular\",\r\n \"subtitle\": \"Bu alt başlığı teklifinize göre Promake ile özelleştirin.\",\r\n \"q1\": \"Bu soruyu ilk SSS'nizle değiştirin\",\r\n \"a1\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore. Promake ile bu cevabı ilgili bilgilerle kişiselleştirin.\",\r\n \"q2\": \"Bu özelleştirilmesi gereken bir placeholder sorudur\",\r\n \"a2\": \"Bu cevabı proje bağlamınıza göre güncellemek için Promake kullanın. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"q3\": \"Bu soruyu hizmetinize uyacak şekilde özelleştirin\",\r\n \"a3\": \"Promake ile hedef kitleniz için uygun cevaplar oluşturun. Duis aute irure dolor in reprehenderit in voluptate velit esse.\",\r\n \"q4\": \"Gerçek sık sorulan sorunuzla değiştirin\",\r\n \"a4\": \"Placeholder cevap metni. Promake'ten bu içeriği teklifleriniz hakkında doğru bilgi sağlamak için uyarlamasını isteyin.\",\r\n \"q5\": \"Bu soru gerçek SSS içeriğiyle değiştirilmelidir\",\r\n \"a5\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Bunu siteniz için uygun bilgilerle Promake üzerinden düzenleyin.\",\r\n \"q6\": \"SSS bölümünüz için bu son soruyu özelleştirin\",\r\n \"a6\": \"Bu placeholder metindir. Promake özel ihtiyaçlarınıza göre ilgili cevaplar eklemenize yardımcı olabilir.\"\r\n}\r\n"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
36
|
"exports": {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"blog-core",
|
|
8
8
|
"post-card"
|
|
9
9
|
],
|
|
10
|
-
"usage": "import { FavoritesBlogBlock } from '@/modules/favorites-blog-block';\n\n<FavoritesBlogBlock />\n\n•
|
|
10
|
+
"usage": "import { FavoritesBlogBlock } from '@/modules/favorites-blog-block';\nimport type { Post } from '@/modules/blog-core/types';\n\nconst favorites: Post[] = [...];\n\n<FavoritesBlogBlock\n favorites={favorites}\n onClearAll={() => clearFavorites()}\n/>\n\n• Receives favorites as prop (reusable block)\n• Optional onClearAll callback\n• Empty state: \"No saved posts\" with blog link\n• Use favorites-blog-page for full page with hooks",
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
13
13
|
"path": "favorites-blog-block/index.ts",
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "favorites-blog-page",
|
|
3
|
+
"type": "registry:page",
|
|
4
|
+
"title": "Favorites Blog Page",
|
|
5
|
+
"description": "Blog favorites page that displays user's favorite posts with grid layout. Uses useBlog hook from blog-core for state management. Includes empty state, clear all functionality, and responsive post grid.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"blog-core",
|
|
8
|
+
"post-card"
|
|
9
|
+
],
|
|
10
|
+
"usage": "import FavoritesBlogPage from '@/modules/favorites-blog-page';\n\n<Route path=\"/favorites-blog\" element={<FavoritesBlogPage />} />\n\n• Uses useBlog() from blog-core\n• Shows empty state when no favorites\n• Grid layout with PostCard components",
|
|
11
|
+
"route": {
|
|
12
|
+
"path": "/favorites-blog",
|
|
13
|
+
"componentName": "FavoritesBlogPage"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
{
|
|
17
|
+
"path": "favorites-blog-page/index.ts",
|
|
18
|
+
"type": "registry:index",
|
|
19
|
+
"target": "$modules$/favorites-blog-page/index.ts",
|
|
20
|
+
"content": "export * from './favorites-blog-page';\r\nexport { FavoritesBlogPage as default } from './favorites-blog-page';\r\n"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"path": "favorites-blog-page/favorites-blog-page.tsx",
|
|
24
|
+
"type": "registry:page",
|
|
25
|
+
"target": "$modules$/favorites-blog-page/favorites-blog-page.tsx",
|
|
26
|
+
"content": "import { Link } from \"react-router\";\r\nimport { Heart, BookOpen } from \"lucide-react\";\r\nimport { Button } from \"@/components/ui/button\";\r\nimport { Layout } from \"@/components/Layout\";\r\nimport { PostCard } from \"@/modules/post-card/post-card\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useBlog } from \"@/modules/blog-core\";\r\nimport { usePageTitle } from \"@/hooks/use-page-title\";\r\n\r\nexport function FavoritesBlogPage() {\r\n const { t } = useTranslation(\"favorites-blog-page\");\r\n const { favorites, clearFavorites } = useBlog();\r\n usePageTitle({ title: t(\"title\", \"My Favorites\") });\r\n\r\n // Empty State\r\n if (favorites.length === 0) {\r\n return (\r\n <Layout>\r\n <div className=\"min-h-screen bg-muted/30 py-12\">\r\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4\">\r\n <div className=\"text-center max-w-md mx-auto\">\r\n <Heart className=\"w-16 h-16 text-muted-foreground mx-auto mb-6\" />\r\n <h1 className=\"text-3xl font-bold text-foreground mb-4\">\r\n {t(\"noFavoritesYet\", \"No Favorites Yet\")}\r\n </h1>\r\n <p className=\"text-muted-foreground mb-8\">\r\n {t(\r\n \"noFavoritesDescription\",\r\n \"Start browsing our blog and add posts to your favorites by clicking the heart icon.\"\r\n )}\r\n </p>\r\n <Button asChild size=\"lg\">\r\n <Link to=\"/blog\">\r\n <BookOpen className=\"w-5 h-5 mr-2\" />\r\n {t(\"browseBlog\", \"Browse Blog\")}\r\n </Link>\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </Layout>\r\n );\r\n }\r\n\r\n // Favorites Grid\r\n return (\r\n <Layout>\r\n <div className=\"min-h-screen py-12\">\r\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4\">\r\n {/* Header */}\r\n <div className=\"flex justify-between items-center mb-8\">\r\n <div>\r\n <h1 className=\"text-3xl font-bold mb-2\">\r\n {t(\"title\", \"My Favorites\")}\r\n </h1>\r\n <p className=\"text-muted-foreground\">\r\n {t(\r\n \"favoritesCount\",\r\n `You have ${favorites.length} favorite posts`\r\n )}\r\n </p>\r\n </div>\r\n <Button variant=\"outline\" onClick={clearFavorites}>\r\n {t(\"clearAll\", \"Clear All\")}\r\n </Button>\r\n </div>\r\n\r\n {/* Posts Grid */}\r\n <div className=\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\r\n {favorites.map((post) => (\r\n <PostCard key={post.id} post={post} layout=\"grid\" />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </Layout>\r\n );\r\n}\r\n\r\nexport default FavoritesBlogPage;\r\n"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": "favorites-blog-page/lang/en.json",
|
|
30
|
+
"type": "registry:lang",
|
|
31
|
+
"target": "$modules$/favorites-blog-page/lang/en.json",
|
|
32
|
+
"content": "{\r\n \"title\": \"My Favorites\",\r\n \"noFavoritesYet\": \"No Favorites Yet\",\r\n \"noFavoritesDescription\": \"Start browsing our blog and add posts to your favorites by clicking the heart icon.\",\r\n \"browseBlog\": \"Browse Blog\",\r\n \"favoritesCount\": \"favorite posts\",\r\n \"clearAll\": \"Clear All\"\r\n}\r\n"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"path": "favorites-blog-page/lang/tr.json",
|
|
36
|
+
"type": "registry:lang",
|
|
37
|
+
"target": "$modules$/favorites-blog-page/lang/tr.json",
|
|
38
|
+
"content": "{\r\n \"title\": \"Favorilerim\",\r\n \"noFavoritesYet\": \"Henüz Favori Yok\",\r\n \"noFavoritesDescription\": \"Blog yazılarımıza göz atın ve kalp ikonuna tıklayarak favorilerinize ekleyin.\",\r\n \"browseBlog\": \"Bloga Göz At\",\r\n \"favoritesCount\": \"favori yazı\",\r\n \"clearAll\": \"Tümünü Temizle\"\r\n}\r\n"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"exports": {
|
|
42
|
+
"types": [],
|
|
43
|
+
"variables": [
|
|
44
|
+
"FavoritesBlogPage",
|
|
45
|
+
"default"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"ecommerce-core",
|
|
8
8
|
"product-card"
|
|
9
9
|
],
|
|
10
|
-
"usage": "import { FavoritesEcommerceBlock } from '@/modules/favorites-ecommerce-block';\n\n<FavoritesEcommerceBlock />\n\n•
|
|
10
|
+
"usage": "import { FavoritesEcommerceBlock } from '@/modules/favorites-ecommerce-block';\nimport type { Product } from '@/modules/ecommerce-core/types';\n\nconst favorites: Product[] = [...];\n\n<FavoritesEcommerceBlock\n favorites={favorites}\n onClearAll={() => clearFavorites()}\n/>\n\n• Receives favorites as prop (reusable block)\n• Optional onClearAll callback\n• Empty state: \"No favorites yet\" with shop link\n• Use favorites-ecommerce-page for full page with hooks",
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
13
13
|
"path": "favorites-ecommerce-block/index.ts",
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "favorites-ecommerce-page",
|
|
3
|
+
"type": "registry:page",
|
|
4
|
+
"title": "Favorites Ecommerce Page",
|
|
5
|
+
"description": "Product favorites page that displays user's favorite products with grid layout. Uses useFavorites hook from ecommerce-core for state management. Includes empty state, clear all functionality, and responsive product grid.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"ecommerce-core",
|
|
8
|
+
"product-card"
|
|
9
|
+
],
|
|
10
|
+
"usage": "import FavoritesEcommercePage from '@/modules/favorites-ecommerce-page';\n\n<Route path=\"/favorites\" element={<FavoritesEcommercePage />} />\n\n• Uses useFavorites() from ecommerce-core\n• Shows empty state when no favorites\n• Grid layout with ProductCard components",
|
|
11
|
+
"route": {
|
|
12
|
+
"path": "/favorites",
|
|
13
|
+
"componentName": "FavoritesEcommercePage"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
{
|
|
17
|
+
"path": "favorites-ecommerce-page/index.ts",
|
|
18
|
+
"type": "registry:index",
|
|
19
|
+
"target": "$modules$/favorites-ecommerce-page/index.ts",
|
|
20
|
+
"content": "export * from './favorites-ecommerce-page';\r\nexport { FavoritesEcommercePage as default } from './favorites-ecommerce-page';\r\n"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"path": "favorites-ecommerce-page/favorites-ecommerce-page.tsx",
|
|
24
|
+
"type": "registry:page",
|
|
25
|
+
"target": "$modules$/favorites-ecommerce-page/favorites-ecommerce-page.tsx",
|
|
26
|
+
"content": "import { Link } from \"react-router\";\r\nimport { Heart, ShoppingBag } from \"lucide-react\";\r\nimport { Button } from \"@/components/ui/button\";\r\nimport { Layout } from \"@/components/Layout\";\r\nimport { ProductCard } from \"@/modules/product-card/product-card\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useFavorites } from \"@/modules/ecommerce-core\";\r\nimport { usePageTitle } from \"@/hooks/use-page-title\";\r\n\r\nexport function FavoritesEcommercePage() {\r\n const { t } = useTranslation(\"favorites-ecommerce-page\");\r\n const { favorites, clearFavorites } = useFavorites();\r\n usePageTitle({ title: t(\"title\", \"My Favorites\") });\r\n\r\n // Empty State\r\n if (favorites.length === 0) {\r\n return (\r\n <Layout>\r\n <div className=\"min-h-screen bg-muted/30 py-12\">\r\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4\">\r\n <div className=\"text-center max-w-md mx-auto\">\r\n <Heart className=\"w-16 h-16 text-muted-foreground mx-auto mb-6\" />\r\n <h1 className=\"text-3xl font-bold text-foreground mb-4\">\r\n {t(\"noFavoritesYet\", \"No Favorites Yet\")}\r\n </h1>\r\n <p className=\"text-muted-foreground mb-8\">\r\n {t(\r\n \"noFavoritesDescription\",\r\n \"Start browsing our products and add items to your favorites by clicking the heart icon.\"\r\n )}\r\n </p>\r\n <Button asChild size=\"lg\">\r\n <Link to=\"/products\">\r\n <ShoppingBag className=\"w-5 h-5 mr-2\" />\r\n {t(\"browseProducts\", \"Browse Products\")}\r\n </Link>\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </Layout>\r\n );\r\n }\r\n\r\n // Favorites Grid\r\n return (\r\n <Layout>\r\n <div className=\"min-h-screen bg-muted/30 py-12\">\r\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4\">\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between mb-8\">\r\n <div>\r\n <h1 className=\"text-3xl font-bold text-foreground mb-2\">\r\n {t(\"title\", \"My Favorites\")}\r\n </h1>\r\n <p className=\"text-muted-foreground\">\r\n {favorites.length}{\" \"}\r\n {t(\r\n \"itemsInFavorites\",\r\n `item${favorites.length !== 1 ? \"s\" : \"\"} in your favorites`\r\n )}\r\n </p>\r\n </div>\r\n <Button variant=\"outline\" onClick={clearFavorites}>\r\n {t(\"clearAll\", \"Clear All\")}\r\n </Button>\r\n </div>\r\n\r\n {/* Products Grid */}\r\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6\">\r\n {favorites.map((product) => (\r\n <ProductCard key={product.id} product={product} variant=\"grid\" />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </Layout>\r\n );\r\n}\r\n\r\nexport default FavoritesEcommercePage;\r\n"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": "favorites-ecommerce-page/lang/en.json",
|
|
30
|
+
"type": "registry:lang",
|
|
31
|
+
"target": "$modules$/favorites-ecommerce-page/lang/en.json",
|
|
32
|
+
"content": "{\r\n \"title\": \"My Favorites\",\r\n \"noFavoritesYet\": \"No Favorites Yet\",\r\n \"noFavoritesDescription\": \"Start browsing our products and add items to your favorites by clicking the heart icon.\",\r\n \"browseProducts\": \"Browse Products\",\r\n \"itemsInFavorites\": \"items in your favorites\",\r\n \"clearAll\": \"Clear All\"\r\n}\r\n"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"path": "favorites-ecommerce-page/lang/tr.json",
|
|
36
|
+
"type": "registry:lang",
|
|
37
|
+
"target": "$modules$/favorites-ecommerce-page/lang/tr.json",
|
|
38
|
+
"content": "{\r\n \"title\": \"Favorilerim\",\r\n \"noFavoritesYet\": \"Henüz Favori Yok\",\r\n \"noFavoritesDescription\": \"Ürünlerimize göz atın ve kalp ikonuna tıklayarak favorilerinize ekleyin.\",\r\n \"browseProducts\": \"Ürünlere Göz At\",\r\n \"itemsInFavorites\": \"ürün favorilerinizde\",\r\n \"clearAll\": \"Tümünü Temizle\"\r\n}\r\n"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"exports": {
|
|
42
|
+
"types": [],
|
|
43
|
+
"variables": [
|
|
44
|
+
"FavoritesEcommercePage",
|
|
45
|
+
"default"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"path": "feature-section/lang/en.json",
|
|
23
23
|
"type": "registry:lang",
|
|
24
24
|
"target": "$modules$/feature-section/lang/en.json",
|
|
25
|
-
"content": "{\r\n \"heading\": \"Your Site Title Here\",\r\n \"description\": \"This is where your main site description will appear.
|
|
25
|
+
"content": "{\r\n \"heading\": \"Your Site Title Here\",\r\n \"description\": \"This is where your main site description will appear. Use Promake to personalize this content for your audience.\",\r\n \"feature1\": \"Key feature or benefit #1\",\r\n \"feature2\": \"Key feature or benefit #2\",\r\n \"feature3\": \"Key feature or benefit #3\",\r\n \"primaryButton\": \"Learn More\",\r\n \"secondaryButton\": \"Get Started\",\r\n \"imageAlt\": \"Site Preview\"\r\n}\r\n"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "feature-section/lang/tr.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/feature-section/lang/tr.json",
|
|
31
|
-
"content": "{\r\n \"heading\": \"Site Başlığınız\",\r\n \"description\": \"Ana site açıklamanız burada görünecek.
|
|
31
|
+
"content": "{\r\n \"heading\": \"Site Başlığınız\",\r\n \"description\": \"Ana site açıklamanız burada görünecek. Promake kullanarak içeriğinizi hedef kitlenize göre kişiselleştirin.\",\r\n \"feature1\": \"Anahtar özellik veya avantaj #1\",\r\n \"feature2\": \"Anahtar özellik veya avantaj #2\",\r\n \"feature3\": \"Anahtar özellik veya avantaj #3\",\r\n \"primaryButton\": \"Daha Fazla Öğren\",\r\n \"secondaryButton\": \"Başlayın\",\r\n \"imageAlt\": \"Site Önizlemesi\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"path": "footer/lang/en.json",
|
|
23
23
|
"type": "registry:lang",
|
|
24
24
|
"target": "$modules$/footer/lang/en.json",
|
|
25
|
-
"content": "{\r\n \"description\": \"
|
|
25
|
+
"content": "{\r\n \"description\": \"Let Promake personalize this footer description for your brand and purpose.\",\r\n \"quickLinks\": \"Quick Links\",\r\n \"about\": \"About\",\r\n \"contact\": \"Contact\",\r\n \"legal\": \"Legal\",\r\n \"privacy\": \"Privacy Policy\",\r\n \"terms\": \"Terms of Service\",\r\n \"cookies\": \"Cookie Policy\",\r\n \"contactTitle\": \"Contact\",\r\n \"allRightsReserved\": \"All rights reserved.\"\r\n}\r\n"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "footer/lang/tr.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/footer/lang/tr.json",
|
|
31
|
-
"content": "{\r\n \"description\": \"
|
|
31
|
+
"content": "{\r\n \"description\": \"Promake ile bu footer açıklamasını markanız ve amacınız için kişiselleştirin.\",\r\n \"quickLinks\": \"Hızlı Bağlantılar\",\r\n \"about\": \"Hakkımızda\",\r\n \"contact\": \"İletişim\",\r\n \"legal\": \"Yasal\",\r\n \"privacy\": \"Gizlilik Politikası\",\r\n \"terms\": \"Kullanım Şartları\",\r\n \"cookies\": \"Çerez Politikası\",\r\n \"contactTitle\": \"İletişim\",\r\n \"allRightsReserved\": \"Tüm hakları saklıdır.\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|