@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
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"path": "about-page/lang/en.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/about-page/lang/en.json",
|
|
31
|
-
"content": "{\r\n \"title\": \"About Us\",\r\n \"subtitle\": \"
|
|
31
|
+
"content": "{\r\n \"title\": \"About Us\",\r\n \"subtitle\": \"Customize this about page subtitle with Promake. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"storyTitle\": \"Our Story\",\r\n \"storyP1\": \"This is placeholder text for your story. Let Promake tailor this with your actual background and journey. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"storyP2\": \"Placeholder text for the second paragraph of your story. Work with Promake to personalize this based on your journey. Sed do eiusmod tempor incididunt ut labore.\",\r\n \"missionTitle\": \"Our Mission\",\r\n \"missionDesc\": \"Use Promake to update this mission description for your goals. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"valuesTitle\": \"Our Values\",\r\n \"valuesDesc\": \"Have Promake replace this description with your actual values. Duis aute irure dolor in reprehenderit.\",\r\n \"teamTitle\": \"Our Team\",\r\n \"teamDesc\": \"Placeholder team description. Promake can help tailor this to your team culture.\",\r\n \"qualityTitle\": \"Quality First\",\r\n \"qualityDesc\": \"Edit this quality description via Promake with details about your standards.\",\r\n \"customersValue\": \"500+\",\r\n \"customersLabel\": \"Happy Customers\",\r\n \"projectsValue\": \"1000+\",\r\n \"projectsLabel\": \"Projects Completed\",\r\n \"experienceValue\": \"10+\",\r\n \"experienceLabel\": \"Years Experience\",\r\n \"satisfactionValue\": \"99%\",\r\n \"satisfactionLabel\": \"Client Satisfaction\",\r\n \"ctaTitle\": \"Ready to Work Together?\",\r\n \"ctaDesc\": \"Update this CTA description using Promake based on your goals. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\"\r\n}\r\n"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"path": "about-page/lang/tr.json",
|
|
35
35
|
"type": "registry:lang",
|
|
36
36
|
"target": "$modules$/about-page/lang/tr.json",
|
|
37
|
-
"content": "{\r\n \"title\": \"Hakkımızda\",\r\n \"subtitle\": \"
|
|
37
|
+
"content": "{\r\n \"title\": \"Hakkımızda\",\r\n \"subtitle\": \"Bu hakkımızda sayfası alt başlığını Promake ile özelleştirin. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"storyTitle\": \"Hikayemiz\",\r\n \"storyP1\": \"Bu hikayeniz için placeholder metindir. Promake ile gerçek geçmişiniz ve yolculuğunuzla uyarlayın. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"storyP2\": \"Hikayenin ikinci paragrafı için placeholder metin. Promake ile yolculuğunuza göre kişiselleştirin. Sed do eiusmod tempor incididunt ut labore.\",\r\n \"missionTitle\": \"Misyonumuz\",\r\n \"missionDesc\": \"Bu misyon açıklamasını hedeflerinize göre güncellemek için Promake kullanın. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"valuesTitle\": \"Değerlerimiz\",\r\n \"valuesDesc\": \"Promake'ten bu açıklamayı gerçek değerlerinizle değiştirmesini isteyin. Duis aute irure dolor in reprehenderit.\",\r\n \"teamTitle\": \"Ekibimiz\",\r\n \"teamDesc\": \"Placeholder ekip açıklaması. Promake bunu ekip kültürünüze göre uyarlamanıza yardımcı olabilir.\",\r\n \"qualityTitle\": \"Önce Kalite\",\r\n \"qualityDesc\": \"Bu kalite açıklamasını standartlarınızla ilgili detaylarla Promake üzerinden düzenleyin.\",\r\n \"customersValue\": \"500+\",\r\n \"customersLabel\": \"Mutlu Müşteri\",\r\n \"projectsValue\": \"1000+\",\r\n \"projectsLabel\": \"Tamamlanan Proje\",\r\n \"experienceValue\": \"10+\",\r\n \"experienceLabel\": \"Yıllık Deneyim\",\r\n \"satisfactionValue\": \"%99\",\r\n \"satisfactionLabel\": \"Müşteri Memnuniyeti\",\r\n \"ctaTitle\": \"Birlikte Çalışmaya Hazır mısınız?\",\r\n \"ctaDesc\": \"Bu CTA açıklamasını hedeflerinize göre Promake kullanarak güncelleyin. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\"\r\n}\r\n"
|
|
38
38
|
}
|
|
39
39
|
],
|
|
40
40
|
"exports": {
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"path": "about-section/lang/en.json",
|
|
23
23
|
"type": "registry:lang",
|
|
24
24
|
"target": "$modules$/about-section/lang/en.json",
|
|
25
|
-
"content": "{\r\n \"title\": \"About Us\",\r\n \"description\": \"
|
|
25
|
+
"content": "{\r\n \"title\": \"About Us\",\r\n \"description\": \"Let Promake personalize this description for your brand and audience. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.\",\r\n \"mainImageAlt\": \"Our team\",\r\n \"secondaryImageAlt\": \"Our office\",\r\n \"cardTitle\": \"Our Mission\",\r\n \"cardDescription\": \"Work with Promake to tailor this mission statement to your goals and values. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"cardButton\": \"Learn More\",\r\n \"companiesTitle\": \"Customize this section title with Promake\",\r\n \"statsTitle\": \"Our Achievements\",\r\n \"statsDescription\": \"Have Promake update this with key information about your milestones.\",\r\n \"stat1Value\": \"500+\",\r\n \"stat1Label\": \"Happy Clients\",\r\n \"stat2Value\": \"1000+\",\r\n \"stat2Label\": \"Projects Completed\",\r\n \"stat3Value\": \"99%\",\r\n \"stat3Label\": \"Satisfaction Rate\",\r\n \"stat4Value\": \"15+\",\r\n \"stat4Label\": \"Years Experience\"\r\n}\r\n"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "about-section/lang/tr.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/about-section/lang/tr.json",
|
|
31
|
-
"content": "{\r\n \"title\": \"Hakkımızda\",\r\n \"description\": \"
|
|
31
|
+
"content": "{\r\n \"title\": \"Hakkımızda\",\r\n \"description\": \"Promake ile bu açıklamayı markanıza ve hedef kitlenize göre kişiselleştirin. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.\",\r\n \"mainImageAlt\": \"Ekibimiz\",\r\n \"secondaryImageAlt\": \"Ofisimiz\",\r\n \"cardTitle\": \"Misyonumuz\",\r\n \"cardDescription\": \"Promake ile bu misyon metnini hedeflerinize ve değerlerinize göre uyarlayın. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"cardButton\": \"Daha Fazla\",\r\n \"companiesTitle\": \"Bu bölüm başlığını Promake kullanarak özelleştirin\",\r\n \"statsTitle\": \"Başarılarımız\",\r\n \"statsDescription\": \"Promake'ten önemli kilometre taşlarınızla ilgili bilgilerle güncellemesini isteyin.\",\r\n \"stat1Value\": \"500+\",\r\n \"stat1Label\": \"Mutlu Müşteri\",\r\n \"stat2Value\": \"1000+\",\r\n \"stat2Label\": \"Tamamlanan Proje\",\r\n \"stat3Value\": \"%99\",\r\n \"stat3Label\": \"Memnuniyet Oranı\",\r\n \"stat4Value\": \"15+\",\r\n \"stat4Label\": \"Yıllık Deneyim\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"path": "announcement-bar/lang/en.json",
|
|
26
26
|
"type": "registry:lang",
|
|
27
27
|
"target": "$modules$/announcement-bar/lang/en.json",
|
|
28
|
-
"content": "{\r\n \"message\": \"
|
|
28
|
+
"content": "{\r\n \"message\": \"Customize this announcement with Promake for your news or promotion.\",\r\n \"linkText\": \"Learn more\",\r\n \"dismiss\": \"Dismiss\"\r\n}\r\n"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"path": "announcement-bar/lang/tr.json",
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
"name": "blog-section",
|
|
3
3
|
"type": "registry:component",
|
|
4
4
|
"title": "Blog Section",
|
|
5
|
-
"description": "Blog posts preview section with 3-column card grid. Features tagline badge, heading, subtitle, and 'view all' link. Each card shows image, category badge, date, title, summary, and 'read more' link.
|
|
5
|
+
"description": "Blog posts preview section with 3-column card grid. Features tagline badge, heading, subtitle, and 'view all' link. Each card shows image, category badge, date, title, summary, and 'read more' link. Integrated with blog-core for data fetching.",
|
|
6
6
|
"registryDependencies": [
|
|
7
7
|
"card",
|
|
8
|
-
"badge"
|
|
8
|
+
"badge",
|
|
9
|
+
"button",
|
|
10
|
+
"blog-core"
|
|
9
11
|
],
|
|
10
12
|
"usage": "import { BlogSection } from '@/modules/blog-section';\n\n<BlogSection />\n\n- 3-column post cards\n- Category badges and dates\n- Hover effects on images\n- Customize posts via lang files",
|
|
11
13
|
"files": [
|
|
@@ -25,13 +27,13 @@
|
|
|
25
27
|
"path": "blog-section/lang/en.json",
|
|
26
28
|
"type": "registry:lang",
|
|
27
29
|
"target": "$modules$/blog-section/lang/en.json",
|
|
28
|
-
"content": "{\r\n \"tagline\": \"Latest Updates\",\r\n \"title\": \"From Our Blog\",\r\n \"subtitle\": \"
|
|
30
|
+
"content": "{\r\n \"tagline\": \"Latest Updates\",\r\n \"title\": \"From Our Blog\",\r\n \"subtitle\": \"Use Promake to personalize this subtitle for your content strategy. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"viewAll\": \"View all articles\",\r\n \"readMore\": \"Read more\",\r\n \"post1Title\": \"Customize this blog post title with Promake\",\r\n \"post1Summary\": \"This is placeholder blog post summary text. Let Promake tailor this to your actual blog content. Lorem ipsum dolor sit amet.\",\r\n \"post1Category\": \"Tutorial\",\r\n \"post1Author\": \"Sarah Chen\",\r\n \"post1Date\": \"Jan 15, 2024\",\r\n \"post2Title\": \"Update this with your second blog post title\",\r\n \"post2Summary\": \"Placeholder summary text. Have Promake generate relevant summaries for your posts. Sed do eiusmod tempor.\",\r\n \"post2Category\": \"Best Practices\",\r\n \"post2Author\": \"Michael Park\",\r\n \"post2Date\": \"Jan 10, 2024\",\r\n \"post3Title\": \"Work with Promake to customize this post title\",\r\n \"post3Summary\": \"Edit this summary via Promake based on your blog posts. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"post3Category\": \"Design\",\r\n \"post3Author\": \"Emily Davis\",\r\n \"post3Date\": \"Jan 5, 2024\"\r\n}\r\n"
|
|
29
31
|
},
|
|
30
32
|
{
|
|
31
33
|
"path": "blog-section/lang/tr.json",
|
|
32
34
|
"type": "registry:lang",
|
|
33
35
|
"target": "$modules$/blog-section/lang/tr.json",
|
|
34
|
-
"content": "{\r\n \"tagline\": \"Son Güncellemeler\",\r\n \"title\": \"Blogumuzdan\",\r\n \"subtitle\": \"
|
|
36
|
+
"content": "{\r\n \"tagline\": \"Son Güncellemeler\",\r\n \"title\": \"Blogumuzdan\",\r\n \"subtitle\": \"Bu alt başlığı içerik stratejinize göre Promake kullanarak kişiselleştirin. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"viewAll\": \"Tüm makaleleri görüntüle\",\r\n \"readMore\": \"Devamını oku\",\r\n \"post1Title\": \"Bu blog yazısı başlığını Promake ile özelleştirin\",\r\n \"post1Summary\": \"Bu placeholder blog yazısı özet metnidir. Promake ile gerçek blog içeriğinize göre uyarlayın. Lorem ipsum dolor sit amet.\",\r\n \"post1Category\": \"Eğitim\",\r\n \"post1Author\": \"Sarah Chen\",\r\n \"post1Date\": \"15 Ocak 2024\",\r\n \"post2Title\": \"Bunu ikinci blog yazınızın başlığıyla güncelleyin\",\r\n \"post2Summary\": \"Placeholder özet metni. Promake'ten yazılarınız için uygun özetler üretmesini isteyin. Sed do eiusmod tempor.\",\r\n \"post2Category\": \"En İyi Uygulamalar\",\r\n \"post2Author\": \"Michael Park\",\r\n \"post2Date\": \"10 Ocak 2024\",\r\n \"post3Title\": \"Bu yazı başlığını Promake ile kişiselleştirin\",\r\n \"post3Summary\": \"Bu özeti blog yazılarınıza göre Promake üzerinden düzenleyin. Ut enim ad minim veniam, quis nostrud exercitation.\",\r\n \"post3Category\": \"Tasarım\",\r\n \"post3Author\": \"Emily Davis\",\r\n \"post3Date\": \"5 Ocak 2024\"\r\n}\r\n"
|
|
35
37
|
}
|
|
36
38
|
],
|
|
37
39
|
"exports": {
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
"name": "cart-drawer",
|
|
3
3
|
"type": "registry:component",
|
|
4
4
|
"title": "Cart Drawer",
|
|
5
|
-
"description": "Shopping cart drawer that slides in from the right. Displays cart items with images, prices,
|
|
5
|
+
"description": "Shopping cart drawer that slides in from the right. Integrated with ecommerce-core store. Displays cart items with images, prices, quantity controls, remove buttons, subtotal calculation, and checkout button.",
|
|
6
6
|
"registryDependencies": [
|
|
7
7
|
"sheet",
|
|
8
|
-
"button"
|
|
8
|
+
"button",
|
|
9
|
+
"ecommerce-core"
|
|
9
10
|
],
|
|
10
|
-
"usage": "import { CartDrawer } from '@/modules/cart-drawer';\n\
|
|
11
|
+
"usage": "import { CartDrawer } from '@/modules/cart-drawer';\n\n// Cart state is managed by ecommerce-core store\n<CartDrawer checkoutHref=\"/checkout\" />\n\n// The drawer opens automatically when items are added to cart\n// Or use useCart hook to control it:\nimport { useCart } from '@/modules/ecommerce-core';\nconst { setDrawerOpen } = useCart();\nsetDrawerOpen(true);",
|
|
11
12
|
"files": [
|
|
12
13
|
{
|
|
13
14
|
"path": "cart-drawer/index.ts",
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
"path": "cart-drawer/cart-drawer.tsx",
|
|
20
21
|
"type": "registry:component",
|
|
21
22
|
"target": "$modules$/cart-drawer/cart-drawer.tsx",
|
|
22
|
-
"content": "import { Link } from \"react-router\";\r\nimport { ShoppingCart, Minus, Plus } from \"lucide-react\";\r\nimport { Button } from \"@/components/ui/button\";\r\nimport {\r\n Sheet,\r\n SheetContent,\r\n SheetHeader,\r\n SheetTitle,\r\n SheetTrigger,\r\n} from \"@/components/ui/sheet\";\r\nimport { useTranslation } from \"react-i18next\";\r\
|
|
23
|
+
"content": "import { Link } from \"react-router\";\r\nimport { ShoppingCart, Minus, Plus } from \"lucide-react\";\r\nimport { Button } from \"@/components/ui/button\";\r\nimport {\r\n Sheet,\r\n SheetContent,\r\n SheetHeader,\r\n SheetTitle,\r\n SheetTrigger,\r\n} from \"@/components/ui/sheet\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useCart, formatPrice } from \"@/modules/ecommerce-core\";\r\nimport constants from \"@/constants/constants.json\";\r\n\r\ninterface CartDrawerProps {\r\n checkoutHref?: string;\r\n showTrigger?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function CartDrawer({\r\n checkoutHref = \"/checkout\",\r\n showTrigger = true,\r\n className,\r\n}: CartDrawerProps) {\r\n const { t } = useTranslation(\"cart-drawer\");\r\n const {\r\n state,\r\n removeItem,\r\n updateQuantity,\r\n itemCount,\r\n isDrawerOpen,\r\n setDrawerOpen,\r\n } = useCart();\r\n const { items, total } = state;\r\n const currency = (constants.site as any).currency || \"USD\";\r\n\r\n const getProductPrice = (product: {\r\n price: number;\r\n sale_price?: number;\r\n on_sale?: boolean;\r\n }) => {\r\n return product.on_sale && product.sale_price\r\n ? product.sale_price\r\n : product.price;\r\n };\r\n\r\n const handleQuantityChange = (id: string | number, newQuantity: number) => {\r\n if (newQuantity <= 0) {\r\n removeItem(id);\r\n } else {\r\n updateQuantity(id, newQuantity);\r\n }\r\n };\r\n\r\n return (\r\n <Sheet open={isDrawerOpen} onOpenChange={setDrawerOpen}>\r\n {showTrigger && (\r\n <SheetTrigger asChild>\r\n <Button variant=\"ghost\" size=\"icon\" className=\"relative\">\r\n <ShoppingCart className=\"h-5 w-5\" />\r\n {itemCount > 0 && (\r\n <span className=\"absolute -top-1 -right-1 h-5 w-5 rounded-full bg-primary text-primary-foreground text-xs flex items-center justify-center\">\r\n {itemCount}\r\n </span>\r\n )}\r\n </Button>\r\n </SheetTrigger>\r\n )}\r\n <SheetContent className=\"w-full sm:max-w-md flex flex-col px-6 pb-8\">\r\n <SheetHeader>\r\n <SheetTitle>{t(\"title\", \"Shopping cart\")}</SheetTitle>\r\n </SheetHeader>\r\n\r\n <div className=\"flex-1 overflow-y-auto mt-8\">\r\n {items.length === 0 ? (\r\n <p className=\"text-center text-muted-foreground py-8\">\r\n {t(\"empty\", \"Your cart is empty\")}\r\n </p>\r\n ) : (\r\n <ul className=\"-my-6 divide-y divide-border\">\r\n {items.map((item) => (\r\n <li key={item.id} className=\"flex py-6\">\r\n <div className=\"size-24 shrink-0 overflow-hidden rounded-md border border-border\">\r\n <img\r\n alt={item.product.name}\r\n src={item.product.images[0] || \"/images/placeholder.png\"}\r\n className=\"size-full object-cover\"\r\n />\r\n </div>\r\n\r\n <div className=\"ml-4 flex flex-1 flex-col\">\r\n <div>\r\n <div className=\"flex justify-between text-base font-medium\">\r\n <h3>\r\n <Link to={`/products/${item.product.slug}`}>\r\n {item.product.name}\r\n </Link>\r\n </h3>\r\n <p className=\"ml-4\">\r\n {formatPrice(getProductPrice(item.product), currency)}\r\n </p>\r\n </div>\r\n {item.product.category_name && (\r\n <p className=\"mt-1 text-sm text-muted-foreground\">\r\n {item.product.category_name}\r\n </p>\r\n )}\r\n </div>\r\n <div className=\"flex flex-1 items-end justify-between text-sm\">\r\n <div className=\"flex items-center gap-1\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon\"\r\n className=\"h-6 w-6\"\r\n onClick={() =>\r\n handleQuantityChange(item.id, item.quantity - 1)\r\n }\r\n >\r\n <Minus className=\"h-3 w-3\" />\r\n </Button>\r\n <span className=\"w-8 text-center text-sm\">\r\n {item.quantity}\r\n </span>\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon\"\r\n className=\"h-6 w-6\"\r\n onClick={() =>\r\n handleQuantityChange(item.id, item.quantity + 1)\r\n }\r\n >\r\n <Plus className=\"h-3 w-3\" />\r\n </Button>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={() => removeItem(item.id)}\r\n className=\"font-medium text-primary hover:text-primary/80\"\r\n >\r\n {t(\"remove\", \"Remove\")}\r\n </button>\r\n </div>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n\r\n <div className=\"border-t border-border pt-6 mt-6\">\r\n <div className=\"flex justify-between text-base font-medium\">\r\n <p>{t(\"subtotal\", \"Subtotal\")}</p>\r\n <p>{formatPrice(total, currency)}</p>\r\n </div>\r\n <p className=\"mt-0.5 text-sm text-muted-foreground\">\r\n {t(\"shippingNote\", \"Shipping and taxes calculated at checkout.\")}\r\n </p>\r\n <div className=\"mt-6\">\r\n <Button asChild className=\"w-full\" disabled={items.length === 0}>\r\n <Link to={checkoutHref}>{t(\"checkout\", \"Checkout\")}</Link>\r\n </Button>\r\n </div>\r\n </div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n}\r\n"
|
|
23
24
|
},
|
|
24
25
|
{
|
|
25
26
|
"path": "cart-drawer/lang/en.json",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"path": "case-study-page/lang/en.json",
|
|
30
30
|
"type": "registry:lang",
|
|
31
31
|
"target": "$modules$/case-study-page/lang/en.json",
|
|
32
|
-
"content": "{\r\n \"pageTitle\": \"Case Study\",\r\n \"title\": \"E-commerce Platform Redesign\",\r\n \"subtitle\": \"
|
|
32
|
+
"content": "{\r\n \"pageTitle\": \"Case Study\",\r\n \"title\": \"E-commerce Platform Redesign\",\r\n \"subtitle\": \"Let Promake tailor this case study to your actual project.\",\r\n \"sections\": {\r\n \"challenge\": {\r\n \"title\": \"The Challenge\",\r\n \"content\": \"The client needed a complete overhaul of their e-commerce platform to improve user experience, increase conversion rates, and modernize their brand presence. The existing platform was outdated, had poor mobile support, and suffered from slow load times that were affecting sales.\"\r\n },\r\n \"solution\": {\r\n \"title\": \"Our Solution\",\r\n \"content\": \"We designed and developed a modern, responsive e-commerce platform with a focus on performance and user experience. Key improvements included a streamlined checkout process, advanced product filtering, personalized recommendations, and a complete visual redesign that aligned with the client's evolved brand identity.\"\r\n },\r\n \"results\": {\r\n \"title\": \"The Results\",\r\n \"content\": \"After launch, the client saw a 45% increase in conversion rates, 60% improvement in page load times, and a 35% increase in mobile sales. Customer satisfaction scores improved by 28%, and the average order value increased by 22%.\"\r\n }\r\n },\r\n \"gallery\": \"Project Gallery\",\r\n \"projectDetails\": \"Project Details\",\r\n \"labels\": {\r\n \"client\": \"Client\",\r\n \"date\": \"Date\",\r\n \"category\": \"Category\",\r\n \"services\": \"Services\"\r\n },\r\n \"details\": {\r\n \"client\": \"Acme Corporation\",\r\n \"date\": \"January 2024\",\r\n \"category\": \"Web Design\",\r\n \"services\": [\"UX Design\", \"UI Design\", \"Development\"]\r\n },\r\n \"visitWebsite\": \"Visit Website\",\r\n \"share\": \"Share This Project\",\r\n \"navigation\": {\r\n \"prev\": \"Previous Project\",\r\n \"next\": \"Next Project\"\r\n },\r\n \"prev\": \"Prev\",\r\n \"next\": \"Next\",\r\n \"allProjects\": \"All Projects\"\r\n}\r\n"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "case-study-page/lang/tr.json",
|
|
36
36
|
"type": "registry:lang",
|
|
37
37
|
"target": "$modules$/case-study-page/lang/tr.json",
|
|
38
|
-
"content": "{\r\n \"pageTitle\": \"Vaka Çalışması\",\r\n \"title\": \"E-ticaret Platformu Yenileme\",\r\n \"subtitle\": \"
|
|
38
|
+
"content": "{\r\n \"pageTitle\": \"Vaka Çalışması\",\r\n \"title\": \"E-ticaret Platformu Yenileme\",\r\n \"subtitle\": \"Promake ile bu vaka çalışmasını gerçek projenize göre uyarlayın.\",\r\n \"sections\": {\r\n \"challenge\": {\r\n \"title\": \"Zorluk\",\r\n \"content\": \"Müşteri, kullanıcı deneyimini iyileştirmek, dönüşüm oranlarını artırmak ve marka varlığını modernize etmek için e-ticaret platformunun tamamen yenilenmesini istedi. Mevcut platform eskimişti, mobil desteği zayıftı ve satışları etkileyen yavaş yükleme süreleri yaşıyordu.\"\r\n },\r\n \"solution\": {\r\n \"title\": \"Çözümümüz\",\r\n \"content\": \"Performans ve kullanıcı deneyimine odaklanan modern, duyarlı bir e-ticaret platformu tasarladık ve geliştirdik. Temel iyileştirmeler arasında basitleştirilmiş ödeme süreci, gelişmiş ürün filtreleme, kişiselleştirilmiş öneriler ve müşterinin gelişen marka kimliğiyle uyumlu tam bir görsel yenileme yer aldı.\"\r\n },\r\n \"results\": {\r\n \"title\": \"Sonuçlar\",\r\n \"content\": \"Lansmandan sonra müşteri, dönüşüm oranlarında %45 artış, sayfa yükleme sürelerinde %60 iyileşme ve mobil satışlarda %35 artış gördü. Müşteri memnuniyeti puanları %28 iyileşti ve ortalama sipariş değeri %22 arttı.\"\r\n }\r\n },\r\n \"gallery\": \"Proje Galerisi\",\r\n \"projectDetails\": \"Proje Detayları\",\r\n \"labels\": {\r\n \"client\": \"Müşteri\",\r\n \"date\": \"Tarih\",\r\n \"category\": \"Kategori\",\r\n \"services\": \"Hizmetler\"\r\n },\r\n \"details\": {\r\n \"client\": \"Acme Corporation\",\r\n \"date\": \"Ocak 2024\",\r\n \"category\": \"Web Tasarımı\",\r\n \"services\": [\"UX Tasarımı\", \"UI Tasarımı\", \"Geliştirme\"]\r\n },\r\n \"visitWebsite\": \"Web Sitesini Ziyaret Et\",\r\n \"share\": \"Bu Projeyi Paylaş\",\r\n \"navigation\": {\r\n \"prev\": \"Önceki Proje\",\r\n \"next\": \"Sonraki Proje\"\r\n },\r\n \"prev\": \"Önceki\",\r\n \"next\": \"Sonraki\",\r\n \"allProjects\": \"Tüm Projeler\"\r\n}\r\n"
|
|
39
39
|
}
|
|
40
40
|
],
|
|
41
41
|
"exports": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"path": "coming-soon-page-minimal/lang/en.json",
|
|
27
27
|
"type": "registry:lang",
|
|
28
28
|
"target": "$modules$/coming-soon-page-minimal/lang/en.json",
|
|
29
|
-
"content": "{\r\n \"title\": \"Coming Soon\",\r\n \"daysLeft\": \"days until launch\",\r\n \"heading\": \"Coming Soon\",\r\n \"description\": \"
|
|
29
|
+
"content": "{\r\n \"title\": \"Coming Soon\",\r\n \"daysLeft\": \"days until launch\",\r\n \"heading\": \"Coming Soon\",\r\n \"description\": \"Use Promake to personalize this description. We're crafting something beautiful.\",\r\n \"emailPlaceholder\": \"your@email.com\",\r\n \"success\": \"We'll be in touch!\"\r\n}\r\n"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"path": "coming-soon-page-minimal/lang/tr.json",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"path": "coming-soon-page/lang/en.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/coming-soon-page/lang/en.json",
|
|
31
|
-
"content": "{\r\n \"title\": \"Coming Soon\",\r\n \"heading\": \"Something Amazing is Coming\",\r\n \"description\": \"
|
|
31
|
+
"content": "{\r\n \"title\": \"Coming Soon\",\r\n \"heading\": \"Something Amazing is Coming\",\r\n \"description\": \"Let Promake tailor this description to your upcoming launch. Lorem ipsum dolor sit amet.\",\r\n \"days\": \"Days\",\r\n \"hours\": \"Hours\",\r\n \"minutes\": \"Minutes\",\r\n \"seconds\": \"Seconds\",\r\n \"emailPlaceholder\": \"Enter your email\",\r\n \"notify\": \"Notify Me\",\r\n \"success\": \"Thank you! We'll notify you when we launch.\",\r\n \"followUs\": \"Follow us for updates\"\r\n}\r\n"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"path": "coming-soon-page/lang/tr.json",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"path": "contact-info-grid/lang/en.json",
|
|
23
23
|
"type": "registry:lang",
|
|
24
24
|
"target": "$modules$/contact-info-grid/lang/en.json",
|
|
25
|
-
"content": "{\r\n \"title\": \"Get in Touch\",\r\n \"subtitle\": \"
|
|
25
|
+
"content": "{\r\n \"title\": \"Get in Touch\",\r\n \"subtitle\": \"Let Promake personalize this contact subtitle for your brand. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"emailLabel\": \"Email\",\r\n \"emailDesc\": \"We respond to all emails within 24 hours.\",\r\n \"officeLabel\": \"Office\",\r\n \"officeDesc\": \"Drop by our office for a chat.\",\r\n \"phoneLabel\": \"Phone\",\r\n \"phoneDesc\": \"We're available Mon-Fri, 9am-5pm.\",\r\n \"chatLabel\": \"Live Chat\",\r\n \"chatDesc\": \"Get instant help from our support team.\",\r\n \"startChat\": \"Start Chat\"\r\n}\r\n"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "contact-info-grid/lang/tr.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/contact-info-grid/lang/tr.json",
|
|
31
|
-
"content": "{\r\n \"title\": \"İletişime Geçin\",\r\n \"subtitle\": \"
|
|
31
|
+
"content": "{\r\n \"title\": \"İletişime Geçin\",\r\n \"subtitle\": \"Promake ile bu iletişim alt başlığını markanız için kişiselleştirin. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"emailLabel\": \"E-posta\",\r\n \"emailDesc\": \"Tüm e-postalara 24 saat içinde yanıt veriyoruz.\",\r\n \"officeLabel\": \"Ofis\",\r\n \"officeDesc\": \"Sohbet etmek için ofisimize uğrayın.\",\r\n \"phoneLabel\": \"Telefon\",\r\n \"phoneDesc\": \"Pazartesi-Cuma, 9:00-17:00 arası müsaitiz.\",\r\n \"chatLabel\": \"Canlı Sohbet\",\r\n \"chatDesc\": \"Destek ekibimizden anında yardım alın.\",\r\n \"startChat\": \"Sohbet Başlat\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
"path": "contact-page-centered/lang/en.json",
|
|
32
32
|
"type": "registry:lang",
|
|
33
33
|
"target": "$modules$/contact-page-centered/lang/en.json",
|
|
34
|
-
"content": "{\r\n \"title\": \"Contact Us\",\r\n \"subtitle\": \"
|
|
34
|
+
"content": "{\r\n \"title\": \"Contact Us\",\r\n \"subtitle\": \"Use Promake to personalize this contact subtitle. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor.\",\r\n \"emailTitle\": \"Email\",\r\n \"phoneTitle\": \"Phone\",\r\n \"addressTitle\": \"Address\",\r\n \"nameLabel\": \"Name\",\r\n \"namePlaceholder\": \"Your name\",\r\n \"emailLabel\": \"Email\",\r\n \"emailPlaceholder\": \"your@email.com\",\r\n \"messageLabel\": \"Message\",\r\n \"messagePlaceholder\": \"How can we help you?\",\r\n \"submit\": \"Send Message\",\r\n \"sending\": \"Sending...\",\r\n \"success\": \"Message sent successfully! We'll get back to you soon.\",\r\n \"error\": \"Something went wrong. Please try again.\"\r\n}\r\n"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "contact-page-centered/lang/tr.json",
|
|
38
38
|
"type": "registry:lang",
|
|
39
39
|
"target": "$modules$/contact-page-centered/lang/tr.json",
|
|
40
|
-
"content": "{\r\n \"title\": \"İletişim\",\r\n \"subtitle\": \"
|
|
40
|
+
"content": "{\r\n \"title\": \"İletişim\",\r\n \"subtitle\": \"Bu iletişim alt başlığını kişiselleştirmek için Promake kullanın. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor.\",\r\n \"emailTitle\": \"E-posta\",\r\n \"phoneTitle\": \"Telefon\",\r\n \"addressTitle\": \"Adres\",\r\n \"nameLabel\": \"İsim\",\r\n \"namePlaceholder\": \"Adınız\",\r\n \"emailLabel\": \"E-posta\",\r\n \"emailPlaceholder\": \"email@adresiniz.com\",\r\n \"messageLabel\": \"Mesaj\",\r\n \"messagePlaceholder\": \"Size nasıl yardımcı olabiliriz?\",\r\n \"submit\": \"Mesaj Gönder\",\r\n \"sending\": \"Gönderiliyor...\",\r\n \"success\": \"Mesajınız başarıyla gönderildi! En kısa sürede size döneceğiz.\",\r\n \"error\": \"Bir şeyler yanlış gitti. Lütfen tekrar deneyin.\"\r\n}\r\n"
|
|
41
41
|
}
|
|
42
42
|
],
|
|
43
43
|
"exports": {
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
"path": "contact-page-split/lang/en.json",
|
|
31
31
|
"type": "registry:lang",
|
|
32
32
|
"target": "$modules$/contact-page-split/lang/en.json",
|
|
33
|
-
"content": "{\r\n \"pageTitle\": \"Contact Us\",\r\n \"title\": \"Let's Start a Conversation\",\r\n \"subtitle\": \"
|
|
33
|
+
"content": "{\r\n \"pageTitle\": \"Contact Us\",\r\n \"title\": \"Let's Start a Conversation\",\r\n \"subtitle\": \"Work with Promake to personalize this subtitle for your contact page. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"emailLabel\": \"Email\",\r\n \"phoneLabel\": \"Phone\",\r\n \"addressLabel\": \"Address\",\r\n \"hoursLabel\": \"Hours\",\r\n \"hours\": \"Mon - Fri: 9:00 AM - 6:00 PM\",\r\n \"formTitle\": \"Send us a message\",\r\n \"formSubtitle\": \"Fill out the form below and we'll get back to you as soon as possible.\",\r\n \"nameLabel\": \"Full Name\",\r\n \"namePlaceholder\": \"John Doe\",\r\n \"emailInputLabel\": \"Email\",\r\n \"emailPlaceholder\": \"john@example.com\",\r\n \"phoneInputLabel\": \"Phone\",\r\n \"phonePlaceholder\": \"+1 234 567 890\",\r\n \"messageLabel\": \"Message\",\r\n \"messagePlaceholder\": \"Tell us about your project...\",\r\n \"submit\": \"Send Message\",\r\n \"sending\": \"Sending...\",\r\n \"success\": \"Message sent! We'll be in touch soon.\",\r\n \"error\": \"Something went wrong. Please try again.\"\r\n}\r\n"
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"path": "contact-page-split/lang/tr.json",
|
|
37
37
|
"type": "registry:lang",
|
|
38
38
|
"target": "$modules$/contact-page-split/lang/tr.json",
|
|
39
|
-
"content": "{\r\n \"pageTitle\": \"İletişim\",\r\n \"title\": \"Bir Sohbet Başlatalım\",\r\n \"subtitle\": \"
|
|
39
|
+
"content": "{\r\n \"pageTitle\": \"İletişim\",\r\n \"title\": \"Bir Sohbet Başlatalım\",\r\n \"subtitle\": \"Promake ile bu alt başlığı iletişim sayfanıza göre kişiselleştirin. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"emailLabel\": \"E-posta\",\r\n \"phoneLabel\": \"Telefon\",\r\n \"addressLabel\": \"Adres\",\r\n \"hoursLabel\": \"Çalışma Saatleri\",\r\n \"hours\": \"Pazartesi - Cuma: 09:00 - 18:00\",\r\n \"formTitle\": \"Bize mesaj gönderin\",\r\n \"formSubtitle\": \"Aşağıdaki formu doldurun, en kısa sürede size döneceğiz.\",\r\n \"nameLabel\": \"Ad Soyad\",\r\n \"namePlaceholder\": \"Ahmet Yılmaz\",\r\n \"emailInputLabel\": \"E-posta\",\r\n \"emailPlaceholder\": \"ahmet@ornek.com\",\r\n \"phoneInputLabel\": \"Telefon\",\r\n \"phonePlaceholder\": \"+90 532 123 4567\",\r\n \"messageLabel\": \"Mesaj\",\r\n \"messagePlaceholder\": \"Projeniz hakkında bize bilgi verin...\",\r\n \"submit\": \"Mesaj Gönder\",\r\n \"sending\": \"Gönderiliyor...\",\r\n \"success\": \"Mesaj gönderildi! En kısa sürede iletişime geçeceğiz.\",\r\n \"error\": \"Bir şeyler yanlış gitti. Lütfen tekrar deneyin.\"\r\n}\r\n"
|
|
40
40
|
}
|
|
41
41
|
],
|
|
42
42
|
"exports": {
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"path": "contact-page/lang/en.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/contact-page/lang/en.json",
|
|
31
|
-
"content": "{\r\n \"title\": \"Contact Us\",\r\n \"getInTouch\": \"Get in Touch\",\r\n \"emailUs\": \"Email Us\",\r\n \"callUs\": \"Call Us\",\r\n \"visitUs\": \"Visit Us\",\r\n \"businessHours\": \"Hours\",\r\n \"sendMessage\": \"Send us a Message\",\r\n \"formNotAvailable\": \"Form is not available at the moment.\",\r\n \"fullName\": \"Full Name\",\r\n \"emailAddress\": \"Email Address\",\r\n \"phoneNumber\": \"Phone Number\",\r\n \"subject\": \"Subject\",\r\n \"message\": \"Message\",\r\n \"submit\": \"Send Message\",\r\n \"sending\": \"Sending...\",\r\n \"success\": \"Thank you for your message! We will get back to you soon.\",\r\n \"error\": \"Failed to send message. Please try again later.\",\r\n \"description\": \"
|
|
31
|
+
"content": "{\r\n \"title\": \"Contact Us\",\r\n \"getInTouch\": \"Get in Touch\",\r\n \"emailUs\": \"Email Us\",\r\n \"callUs\": \"Call Us\",\r\n \"visitUs\": \"Visit Us\",\r\n \"businessHours\": \"Hours\",\r\n \"sendMessage\": \"Send us a Message\",\r\n \"formNotAvailable\": \"Form is not available at the moment.\",\r\n \"fullName\": \"Full Name\",\r\n \"emailAddress\": \"Email Address\",\r\n \"phoneNumber\": \"Phone Number\",\r\n \"subject\": \"Subject\",\r\n \"message\": \"Message\",\r\n \"submit\": \"Send Message\",\r\n \"sending\": \"Sending...\",\r\n \"success\": \"Thank you for your message! We will get back to you soon.\",\r\n \"error\": \"Failed to send message. Please try again later.\",\r\n \"description\": \"Let Promake tailor this contact page description to your support options. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"email\": \"Email\",\r\n \"phone\": \"Phone\",\r\n \"address\": \"Address\",\r\n \"fullNamePlaceholder\": \"Your full name\",\r\n \"emailPlaceholder\": \"your@email.com\",\r\n \"phonePlaceholder\": \"+1 (555) 123-4567\",\r\n \"subjectPlaceholder\": \"What is this regarding?\",\r\n \"messagePlaceholder\": \"Tell us how we can help you...\",\r\n \"loading\": \"Loading contact information...\",\r\n \"emailResponse\": \"We typically respond within 24 hours\",\r\n \"needSupport\": \"Need Support?\",\r\n \"supportDescription\": \"For technical support or general inquiries, contact our dedicated support team:\",\r\n \"supportEmail\": \"Support Email\",\r\n \"monday_friday\": \"Monday - Friday\",\r\n \"saturday\": \"Saturday\",\r\n \"sunday\": \"Sunday\",\r\n \"closed\": \"Closed\",\r\n \"am\": \"AM\",\r\n \"pm\": \"PM\"\r\n}\r\n"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"path": "contact-page/lang/tr.json",
|
|
35
35
|
"type": "registry:lang",
|
|
36
36
|
"target": "$modules$/contact-page/lang/tr.json",
|
|
37
|
-
"content": "{\r\n \"title\": \"İletişim\",\r\n \"getInTouch\": \"Bize Ulaşın\",\r\n \"emailUs\": \"E-posta Gönderin\",\r\n \"callUs\": \"Bizi Arayın\",\r\n \"visitUs\": \"Bizi Ziyaret Edin\",\r\n \"businessHours\": \"Çalışma Saatleri\",\r\n \"sendMessage\": \"Bize Mesaj Gönderin\",\r\n \"formNotAvailable\": \"Form şu anda kullanılamıyor.\",\r\n \"fullName\": \"Ad Soyad\",\r\n \"emailAddress\": \"E-posta Adresi\",\r\n \"phoneNumber\": \"Telefon Numarası\",\r\n \"subject\": \"Konu\",\r\n \"message\": \"Mesaj\",\r\n \"submit\": \"Mesaj Gönder\",\r\n \"sending\": \"Gönderiliyor...\",\r\n \"success\": \"Mesajınız için teşekkürler! En kısa sürede size dönüş yapacağız.\",\r\n \"error\": \"Mesaj gönderilemedi. Lütfen tekrar deneyin.\",\r\n \"description\": \"
|
|
37
|
+
"content": "{\r\n \"title\": \"İletişim\",\r\n \"getInTouch\": \"Bize Ulaşın\",\r\n \"emailUs\": \"E-posta Gönderin\",\r\n \"callUs\": \"Bizi Arayın\",\r\n \"visitUs\": \"Bizi Ziyaret Edin\",\r\n \"businessHours\": \"Çalışma Saatleri\",\r\n \"sendMessage\": \"Bize Mesaj Gönderin\",\r\n \"formNotAvailable\": \"Form şu anda kullanılamıyor.\",\r\n \"fullName\": \"Ad Soyad\",\r\n \"emailAddress\": \"E-posta Adresi\",\r\n \"phoneNumber\": \"Telefon Numarası\",\r\n \"subject\": \"Konu\",\r\n \"message\": \"Mesaj\",\r\n \"submit\": \"Mesaj Gönder\",\r\n \"sending\": \"Gönderiliyor...\",\r\n \"success\": \"Mesajınız için teşekkürler! En kısa sürede size dönüş yapacağız.\",\r\n \"error\": \"Mesaj gönderilemedi. Lütfen tekrar deneyin.\",\r\n \"description\": \"Promake ile bu iletişim sayfası açıklamasını destek seçeneklerinize göre uyarlayın. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"email\": \"E-posta\",\r\n \"phone\": \"Telefon\",\r\n \"address\": \"Adres\",\r\n \"fullNamePlaceholder\": \"Adınız ve soyadınız\",\r\n \"emailPlaceholder\": \"eposta@adresiniz.com\",\r\n \"phonePlaceholder\": \"+90 5XX XXX XX XX\",\r\n \"subjectPlaceholder\": \"Konu nedir?\",\r\n \"messagePlaceholder\": \"Size nasıl yardımcı olabiliriz...\",\r\n \"loading\": \"İletişim bilgileri yükleniyor...\",\r\n \"emailResponse\": \"Genellikle 24 saat içinde yanıt veririz\",\r\n \"needSupport\": \"Desteğe İhtiyacınız mı Var?\",\r\n \"supportDescription\": \"Teknik destek veya sipariş sorularınız için özel destek ekibimizle iletişime geçin:\",\r\n \"supportEmail\": \"Destek E-postası\",\r\n \"monday_friday\": \"Pazartesi - Cuma\",\r\n \"saturday\": \"Cumartesi\",\r\n \"sunday\": \"Pazar\",\r\n \"closed\": \"Kapalı\",\r\n \"am\": \"\",\r\n \"pm\": \"\"\r\n}\r\n"
|
|
38
38
|
}
|
|
39
39
|
],
|
|
40
40
|
"exports": {
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"path": "cta-section/lang/en.json",
|
|
23
23
|
"type": "registry:lang",
|
|
24
24
|
"target": "$modules$/cta-section/lang/en.json",
|
|
25
|
-
"content": "{\r\n \"title\": \"Ready to Start Your Project?\",\r\n \"description\": \"
|
|
25
|
+
"content": "{\r\n \"title\": \"Ready to Start Your Project?\",\r\n \"description\": \"Let Promake tailor this CTA description to your site goals. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"primaryButton\": \"Get Free Quote\",\r\n \"secondaryButton\": \"Learn About Us\"\r\n}\r\n"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "cta-section/lang/tr.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/cta-section/lang/tr.json",
|
|
31
|
-
"content": "{\r\n \"title\": \"Projenizi Başlatmaya Hazır mısınız?\",\r\n \"description\": \"
|
|
31
|
+
"content": "{\r\n \"title\": \"Projenizi Başlatmaya Hazır mısınız?\",\r\n \"description\": \"Promake ile bu CTA açıklamasını hedeflerinize göre uyarlayın. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\",\r\n \"primaryButton\": \"Ücretsiz Teklif Al\",\r\n \"secondaryButton\": \"Hakkımızda\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Blog Section
|
|
2
2
|
|
|
3
|
-
Blog posts preview section with 3-column card grid. Features tagline badge, heading, subtitle, and 'view all' link. Each card shows image, category badge, date, title, summary, and 'read more' link.
|
|
3
|
+
Blog posts preview section with 3-column card grid. Features tagline badge, heading, subtitle, and 'view all' link. Each card shows image, category badge, date, title, summary, and 'read more' link. Integrated with blog-core for data fetching.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -37,3 +37,5 @@ import { BlogSection } from '@/modules/blog-section';
|
|
|
37
37
|
This component requires:
|
|
38
38
|
- `card`
|
|
39
39
|
- `badge`
|
|
40
|
+
- `button`
|
|
41
|
+
- `blog-core`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cart Drawer
|
|
2
2
|
|
|
3
|
-
Shopping cart drawer that slides in from the right. Displays cart items with images, prices,
|
|
3
|
+
Shopping cart drawer that slides in from the right. Integrated with ecommerce-core store. Displays cart items with images, prices, quantity controls, remove buttons, subtotal calculation, and checkout button.
|
|
4
4
|
|
|
5
5
|
## Files
|
|
6
6
|
|
|
@@ -24,15 +24,14 @@ import { CartDrawer } from '@/modules/cart-drawer';
|
|
|
24
24
|
```
|
|
25
25
|
import { CartDrawer } from '@/modules/cart-drawer';
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
// Cart state is managed by ecommerce-core store
|
|
28
|
+
<CartDrawer checkoutHref="/checkout" />
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
checkoutHref="/checkout"
|
|
35
|
-
/>
|
|
30
|
+
// The drawer opens automatically when items are added to cart
|
|
31
|
+
// Or use useCart hook to control it:
|
|
32
|
+
import { useCart } from '@/modules/ecommerce-core';
|
|
33
|
+
const { setDrawerOpen } = useCart();
|
|
34
|
+
setDrawerOpen(true);
|
|
36
35
|
```
|
|
37
36
|
|
|
38
37
|
## Dependencies
|
|
@@ -40,3 +39,4 @@ const [open, setOpen] = useState(false);
|
|
|
40
39
|
This component requires:
|
|
41
40
|
- `sheet`
|
|
42
41
|
- `button`
|
|
42
|
+
- `ecommerce-core`
|
|
@@ -23,12 +23,19 @@ import { FavoritesBlogBlock } from '@/modules/favorites-blog-block';
|
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
import { FavoritesBlogBlock } from '@/modules/favorites-blog-block';
|
|
26
|
+
import type { Post } from '@/modules/blog-core/types';
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
const favorites: Post[] = [...];
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
<FavoritesBlogBlock
|
|
31
|
+
favorites={favorites}
|
|
32
|
+
onClearAll={() => clearFavorites()}
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
• Receives favorites as prop (reusable block)
|
|
36
|
+
• Optional onClearAll callback
|
|
31
37
|
• Empty state: "No saved posts" with blog link
|
|
38
|
+
• Use favorites-blog-page for full page with hooks
|
|
32
39
|
```
|
|
33
40
|
|
|
34
41
|
## Dependencies
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Favorites Blog Page
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| Target | Type |
|
|
8
|
+
|--------|------|
|
|
9
|
+
| `$modules$/favorites-blog-page/index.ts` | index |
|
|
10
|
+
| `$modules$/favorites-blog-page/favorites-blog-page.tsx` | page |
|
|
11
|
+
| `$modules$/favorites-blog-page/lang/en.json` | lang |
|
|
12
|
+
| `$modules$/favorites-blog-page/lang/tr.json` | lang |
|
|
13
|
+
|
|
14
|
+
## Exports
|
|
15
|
+
|
|
16
|
+
**Components/Functions:** `FavoritesBlogPage`, `default`
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { FavoritesBlogPage, default } from '@/modules/favorites-blog-page';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
import FavoritesBlogPage from '@/modules/favorites-blog-page';
|
|
26
|
+
|
|
27
|
+
<Route path="/favorites-blog" element={<FavoritesBlogPage />} />
|
|
28
|
+
|
|
29
|
+
• Uses useBlog() from blog-core
|
|
30
|
+
• Shows empty state when no favorites
|
|
31
|
+
• Grid layout with PostCard components
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Dependencies
|
|
35
|
+
|
|
36
|
+
This component requires:
|
|
37
|
+
- `blog-core`
|
|
38
|
+
- `post-card`
|
|
@@ -23,12 +23,19 @@ import { FavoritesEcommerceBlock } from '@/modules/favorites-ecommerce-block';
|
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
import { FavoritesEcommerceBlock } from '@/modules/favorites-ecommerce-block';
|
|
26
|
+
import type { Product } from '@/modules/ecommerce-core/types';
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
const favorites: Product[] = [...];
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
<FavoritesEcommerceBlock
|
|
31
|
+
favorites={favorites}
|
|
32
|
+
onClearAll={() => clearFavorites()}
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
• Receives favorites as prop (reusable block)
|
|
36
|
+
• Optional onClearAll callback
|
|
31
37
|
• Empty state: "No favorites yet" with shop link
|
|
38
|
+
• Use favorites-ecommerce-page for full page with hooks
|
|
32
39
|
```
|
|
33
40
|
|
|
34
41
|
## Dependencies
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Favorites Ecommerce Page
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| Target | Type |
|
|
8
|
+
|--------|------|
|
|
9
|
+
| `$modules$/favorites-ecommerce-page/index.ts` | index |
|
|
10
|
+
| `$modules$/favorites-ecommerce-page/favorites-ecommerce-page.tsx` | page |
|
|
11
|
+
| `$modules$/favorites-ecommerce-page/lang/en.json` | lang |
|
|
12
|
+
| `$modules$/favorites-ecommerce-page/lang/tr.json` | lang |
|
|
13
|
+
|
|
14
|
+
## Exports
|
|
15
|
+
|
|
16
|
+
**Components/Functions:** `FavoritesEcommercePage`, `default`
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { FavoritesEcommercePage, default } from '@/modules/favorites-ecommerce-page';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
import FavoritesEcommercePage from '@/modules/favorites-ecommerce-page';
|
|
26
|
+
|
|
27
|
+
<Route path="/favorites" element={<FavoritesEcommercePage />} />
|
|
28
|
+
|
|
29
|
+
• Uses useFavorites() from ecommerce-core
|
|
30
|
+
• Shows empty state when no favorites
|
|
31
|
+
• Grid layout with ProductCard components
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Dependencies
|
|
35
|
+
|
|
36
|
+
This component requires:
|
|
37
|
+
- `ecommerce-core`
|
|
38
|
+
- `product-card`
|