@promakeai/cli 0.2.6 → 0.2.8
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 +234 -234
- package/dist/registry/about-page.json +2 -2
- package/dist/registry/about-section.json +2 -2
- package/dist/registry/announcement-bar.json +2 -2
- package/dist/registry/blog-list-page.json +1 -1
- package/dist/registry/blog-section.json +2 -2
- package/dist/registry/coming-soon-page.json +2 -2
- 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/faq-categorized.json +2 -2
- package/dist/registry/faq-simple.json +2 -2
- package/dist/registry/header-mega.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/landing-page-app.json +2 -2
- package/dist/registry/landing-page-saas.json +2 -2
- package/dist/registry/pricing-section.json +2 -2
- package/dist/registry/products-page.json +1 -1
- package/dist/registry/testimonials-carousel.json +2 -2
- package/dist/registry/testimonials-grid.json +2 -2
- package/dist/registry/video-hero.json +2 -2
- package/package.json +1 -2
- package/template/.env +3 -2
- package/template/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\": \"Customize this about page subtitle with Promake.
|
|
31
|
+
"content": "{\r\n \"title\": \"About Us\",\r\n \"subtitle\": \"Customize this about page subtitle with Promake Chat. Tell your brand's story, vision, and the value you offer in a few sentences.\",\r\n \"storyTitle\": \"Our Story\",\r\n \"storyP1\": \"This section is designed to tell the story of your brand's origins, initial motivation, and where it stands today. Use Promake to easily adapt your real background, turning points, and journey to this space.\",\r\n \"storyP2\": \"This section is designed to continue your story. Deepen and detail the journey you mentioned in the first paragraph.\",\r\n \"missionTitle\": \"Our Mission\",\r\n \"missionDesc\": \"This section is designed to describe your brand's core purpose and the value you provide to your users.\",\r\n \"valuesTitle\": \"Our Values\",\r\n \"valuesDesc\": \"In this section, you can share the core values that define your brand and your working principles.\",\r\n \"teamTitle\": \"Our Team\",\r\n \"teamDesc\": \"This section is designed to describe your team structure, culture, and how you work together.\",\r\n \"qualityTitle\": \"Quality First\",\r\n \"qualityDesc\": \"In this section, you can emphasize your quality standards, production approach, and the importance you place on user experience.\",\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 based on your goals using Promake.\"\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\": \"Bu hakkımızda sayfası alt başlığını Promake ile özelleştirin.
|
|
37
|
+
"content": "{\r\n \"title\": \"Hakkımızda\",\r\n \"subtitle\": \"Bu hakkımızda sayfası alt başlığını Promake Chat ile özelleştirin. Markanızın hikâyesini, vizyonunu ve sunduğunuz değeri birkaç cümleyle anlatın.\",\r\n \"storyTitle\": \"Hikayemiz\",\r\n \"storyP1\": \"Bu alan, markanızın doğuşunu, ilk motivasyonunu ve bugün geldiği noktayı anlatmanız için tasarlanmıştır. Promake ile gerçek geçmişinizi, yaşadığınız dönüm noktalarını ve yolculuğunuzu bu alana kolayca uyarlayabilirsiniz.\",\r\n \"storyP2\": \"Bu alan hikayenizin devamını anlatmanız için tasarlanmıştır. İlk paragrafta bahsettiğiniz yolculuğu derinleştirin, detaylandırın.\",\r\n \"missionTitle\": \"Misyonumuz\",\r\n \"missionDesc\": \"Bu alan, markanızın temel amacını ve kullanıcılarınıza sunduğunuz değeri anlatmanız için tasarlanmıştır.\",\r\n \"valuesTitle\": \"Değerlerimiz\",\r\n \"valuesDesc\": \"Bu bölümde, markanızı tanımlayan temel değerleri ve çalışma prensiplerinizi paylaşabilirsiniz.\",\r\n \"teamTitle\": \"Ekibimiz\",\r\n \"teamDesc\": \"Bu alan, ekip yapınızı, kültürünüzü ve birlikte çalışma biçiminizi anlatmanız için tasarlanmıştır.\",\r\n \"qualityTitle\": \"Önce Kalite\",\r\n \"qualityDesc\": \"Bu bölümde, kalite standartlarınızı, üretim anlayışınızı ve kullanıcı deneyimine verdiğiniz önemi vurgulayabilirsiniz.\",\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.\"\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\": \"This is your main about section description. Explain who you are, what you do, and why it matters to your audience. Share your story, values, or unique approach. Use Promake to create an authentic, engaging description that helps visitors connect with your brand.\",\r\n \"mainImageAlt\": \"Our team\",\r\n \"secondaryImageAlt\": \"Our office\",\r\n \"cardTitle\": \"Our Mission\",\r\n \"cardDescription\": \"This card highlights a key aspect of your mission, vision, or values. Be specific about your purpose and what drives you. Use Promake to articulate what makes your approach unique and meaningful to your audience.\",\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\": \"Bu ana hakkımızda bölümü açıklamanızdır. Kim olduğunuzu, ne yaptığınızı ve hedef kitleniz için neden önemli olduğunu açıklayın. Hikayenizi, değerlerinizi veya benzersiz yaklaşımınızı paylaşın. Promake ile ziyaretçilerin markanızla bağlantı kurmasına yardımcı olan özgün ve ilgi çekici bir açıklama oluşturun.\",\r\n \"mainImageAlt\": \"Ekibimiz\",\r\n \"secondaryImageAlt\": \"Ofisimiz\",\r\n \"cardTitle\": \"Misyonumuz\",\r\n \"cardDescription\": \"Bu kart misyonunuzun, vizyonunuzun veya değerlerinizin önemli bir yönünü vurgular. Amacınız ve sizi neyin harekete geçirdiği konusunda spesifik olun. Promake ile yaklaşımınızı hedef kitleniz için benzersiz ve anlamlı kılan şeyi ifade edin.\",\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,13 +25,13 @@
|
|
|
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\": \"This top bar displays important announcements, promotions, or updates. Keep it concise and actionable. Use it for limited-time offers, new features, or critical information. Customize with Promake to capture attention with timely, relevant messages.\",\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",
|
|
32
32
|
"type": "registry:lang",
|
|
33
33
|
"target": "$modules$/announcement-bar/lang/tr.json",
|
|
34
|
-
"content": "{\r\n \"message\": \"
|
|
34
|
+
"content": "{\r\n \"message\": \"Bu üst çubuk önemli duyuruları, promosyonları veya güncellemeleri gösterir. Kısa ve eyleme dönük tutun. Sınırlı süreli teklifler, yeni özellikler veya kritik bilgiler için kullanın. Promake ile zamanlı ve alakalı mesajlarla dikkat çekmek için özelleştirin.\",\r\n \"linkText\": \"Daha fazla\",\r\n \"dismiss\": \"Kapat\"\r\n}\r\n"
|
|
35
35
|
}
|
|
36
36
|
],
|
|
37
37
|
"exports": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"path": "blog-list-page/blog-list-page.tsx",
|
|
25
25
|
"type": "registry:page",
|
|
26
26
|
"target": "$modules$/blog-list-page/blog-list-page.tsx",
|
|
27
|
-
"content": "import { useState, useEffect } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport { usePageTitle } from \"@/hooks/use-page-title\";\nimport { useTranslation } from \"react-i18next\";\nimport { Layout } from \"@/components/Layout\";\nimport { Search, Filter } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { FadeIn } from \"@/modules/animations\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { PostCard } from \"@/modules/post-card/post-card\";\nimport { usePosts, useBlogCategories, type BlogCategory } from \"@/modules/blog-core\";\n\ninterface FilterSectionProps {\n t: (key: string, fallback?: string) => string;\n searchTerm: string;\n setSearchTerm: (term: string) => void;\n categories: BlogCategory[];\n selectedCategories: string[];\n handleCategoryChange: (slug: string, checked: boolean) => void;\n allTags: string[];\n selectedTags: string[];\n handleTagChange: (tag: string, checked: boolean) => void;\n clearFilters: () => void;\n}\n\nfunction FilterSection({\n t,\n searchTerm,\n setSearchTerm,\n categories,\n selectedCategories,\n handleCategoryChange,\n allTags,\n selectedTags,\n handleTagChange,\n clearFilters,\n}: FilterSectionProps) {\n return (\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"font-semibold mb-3 flex items-center gap-2\">\n <Search className=\"h-4 w-4\" />\n {t(\"search\")}\n </h3>\n <Input\n placeholder={t(\"searchPlaceholder\")}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n />\n </div>\n\n <div>\n <h3 className=\"font-semibold mb-3\">{t(\"categories\")}</h3>\n <div className=\"space-y-2\">\n {categories.map((category) => (\n <div key={category.slug} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`category-${category.slug}`}\n checked={selectedCategories.includes(category.slug)}\n onCheckedChange={(checked) =>\n handleCategoryChange(category.slug, checked as boolean)\n }\n />\n <label\n htmlFor={`category-${category.slug}`}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {category.name}\n </label>\n </div>\n ))}\n </div>\n </div>\n\n {allTags.length > 0 && (\n <div>\n <h3 className=\"font-semibold mb-3\">{t(\"tags\")}</h3>\n <div className=\"space-y-2 max-h-48 overflow-y-auto\">\n {allTags.slice(0, 20).map((tag) => (\n <div key={tag} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`tag-${tag}`}\n checked={selectedTags.includes(tag)}\n onCheckedChange={(checked) =>\n handleTagChange(tag, checked as boolean)\n }\n />\n <label\n htmlFor={`tag-${tag}`}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {tag}\n </label>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {(searchTerm ||\n selectedCategories.length > 0 ||\n selectedTags.length > 0) && (\n <Button variant=\"outline\" onClick={clearFilters} className=\"w-full\">\n {t(\"clearFilters\")}\n </Button>\n )}\n </div>\n );\n}\n\nexport function BlogListPage() {\n const { t } = useTranslation(\"blog-list-page\");\n usePageTitle({ title: t(\"title\") });\n\n const [searchParams, setSearchParams] = useSearchParams();\n const [searchTerm, setSearchTerm] = useState(\n searchParams.get(\"search\") || \"\"\n );\n const [selectedCategories, setSelectedCategories] = useState<string[]>(\n searchParams.get(\"categories\")?.split(\",\").filter(Boolean) || []\n );\n const [selectedTags, setSelectedTags] = useState<string[]>(\n searchParams.get(\"tags\")?.split(\",\").filter(Boolean) || []\n );\n const [sortBy, setSortBy] = useState(searchParams.get(\"sort\") || \"newest\");\n const [viewMode, _setViewMode] = useState<\"grid\" | \"list\">(\"grid\");\n\n const { posts, loading, error } = usePosts();\n const { categories } = useBlogCategories();\n\n const filteredPosts = posts.filter((post) => {\n if (searchTerm) {\n const searchLower = searchTerm.toLowerCase();\n if (\n !post.title.toLowerCase().includes(searchLower) &&\n !post.excerpt.toLowerCase().includes(searchLower) &&\n !post.content.toLowerCase().includes(searchLower)\n ) {\n return false;\n }\n }\n\n if (selectedCategories.length > 0) {\n const hasMatchingCategory = selectedCategories.some(\n (categorySlug) =>\n post.category === categorySlug ||\n post.categories?.some((cat) => cat.slug === categorySlug)\n );\n if (!hasMatchingCategory) return false;\n }\n\n if (selectedTags.length > 0) {\n const hasMatchingTag = selectedTags.some((tag) =>\n post.tags.includes(tag)\n );\n if (!hasMatchingTag) return false;\n }\n\n return true;\n });\n\n const sortedPosts = [...filteredPosts].sort((a, b) => {\n switch (sortBy) {\n case \"oldest\":\n return (\n new Date(a.published_at).getTime() -\n new Date(b.published_at).getTime()\n );\n case \"popular\":\n return (b.view_count || 0) - (a.view_count || 0);\n case \"reading-time\":\n return (a.read_time || 0) - (b.read_time || 0);\n case \"newest\":\n default:\n return (\n new Date(b.published_at).getTime() -\n new Date(a.published_at).getTime()\n );\n }\n });\n\n useEffect(() => {\n const params = new URLSearchParams();\n if (searchTerm) params.set(\"search\", searchTerm);\n if (selectedCategories.length)\n params.set(\"categories\", selectedCategories.join(\",\"));\n if (selectedTags.length) params.set(\"tags\", selectedTags.join(\",\"));\n if (sortBy !== \"newest\") params.set(\"sort\", sortBy);\n\n setSearchParams(params);\n }, [searchTerm, selectedCategories, selectedTags, sortBy, setSearchParams]);\n\n const handleCategoryChange = (categorySlug: string, checked: boolean) => {\n if (checked) {\n setSelectedCategories([...selectedCategories, categorySlug]);\n } else {\n setSelectedCategories(\n selectedCategories.filter((c) => c !== categorySlug)\n );\n }\n };\n\n const handleTagChange = (tag: string, checked: boolean) => {\n if (checked) {\n setSelectedTags([...selectedTags, tag]);\n } else {\n setSelectedTags(selectedTags.filter((t) => t !== tag));\n }\n };\n\n const allTags = Array.from(new Set(posts.flatMap((post) => post.tags)));\n\n const clearFilters = () => {\n setSearchTerm(\"\");\n setSelectedCategories([]);\n setSelectedTags([]);\n setSortBy(\"newest\");\n };\n\n const filterProps: FilterSectionProps = {\n t,\n searchTerm,\n setSearchTerm,\n categories,\n selectedCategories,\n handleCategoryChange,\n allTags,\n selectedTags,\n handleTagChange,\n clearFilters,\n };\n\n if (loading) {\n return (\n <Layout>\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4 py-8\">\n <div className=\"animate-pulse space-y-4\">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className=\"h-48 bg-muted rounded-lg\"></div>\n ))}\n </div>\n </div>\n </Layout>\n );\n }\n\n if (error) {\n return (\n <Layout>\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4 py-8 text-center\">\n <p className=\"text-destructive\">{t(\"error\")}</p>\n </div>\n </Layout>\n );\n }\n\n return (\n <Layout>\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4 py-8\">\n <FadeIn className=\"flex flex-col lg:flex-row justify-between items-start lg:items-center gap-4 mb-8\">\n <div>\n <h1 className=\"text-3xl font-bold mb-2\">{t(\"title\")}</h1>\n <p className=\"text-muted-foreground\">{t(\"subtitle\")}</p>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <Select value={sortBy} onValueChange={setSortBy}>\n <SelectTrigger className=\"w-[180px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"newest\">{t(\"sortNewest\")}</SelectItem>\n <SelectItem value=\"oldest\">{t(\"sortOldest\")}</SelectItem>\n <SelectItem value=\"popular\">{t(\"sortPopular\")}</SelectItem>\n <SelectItem value=\"reading-time\">\n {t(\"sortReadingTime\")}\n </SelectItem>\n </SelectContent>\n </Select>\n\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"lg:hidden\">\n <Filter className=\"h-4 w-4 mr-2\" />\n {t(\"filters\")}\n </Button>\n </SheetTrigger>\n <SheetContent>\n <SheetHeader>\n <SheetTitle>{t(\"filters\")}</SheetTitle>\n <SheetDescription>{t(\"filterDescription\")}</SheetDescription>\n </SheetHeader>\n <div className=\"mt-6\">\n <FilterSection {...filterProps} />\n </div>\n </SheetContent>\n </Sheet>\n </div>\n </FadeIn>\n\n <div className=\"flex flex-col lg:flex-row gap-8\">\n <div className=\"hidden lg:block w-64 flex-shrink-0\">\n <div className=\"sticky top-4\">\n <FilterSection {...filterProps} />\n </div>\n </div>\n\n <div className=\"flex-1\">\n <div className=\"flex items-center justify-between mb-6\">\n <p className=\"text-sm text-muted-foreground\">\n {t(\"showing\")} {sortedPosts.length} {t(\"of\")} {posts.length}{\" \"}\n {t(\"posts\")}\n {searchTerm && (\n <span className=\"ml-1\">\n {t(\"for\")} \"<strong>{searchTerm}</strong>\"\n </span>\n )}\n </p>\n </div>\n\n {sortedPosts.length > 0 ? (\n <div\n className={`grid gap-6 ${\n viewMode === \"grid\"\n ? \"grid-cols-1 md:grid-cols-2 xl:grid-cols-3\"\n : \"grid-cols-1\"\n }`}\n >\n {sortedPosts.map((post) => (\n <PostCard key={post.id} post={post} layout={viewMode} />\n ))}\n </div>\n ) : (\n <div className=\"text-center py-12\">\n <p className=\"text-muted-foreground mb-4\">\n {t(\"noPostsFound\")}\n </p>\n <Button onClick={clearFilters} variant=\"outline\">\n {t(\"clearFilters\")}\n </Button>\n </div>\n )}\n </div>\n </div>\n </div>\n </Layout>\n );\n}\n\nexport default BlogListPage;\n"
|
|
27
|
+
"content": "import { useState, useEffect } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport { usePageTitle } from \"@/hooks/use-page-title\";\nimport { useTranslation } from \"react-i18next\";\nimport { Layout } from \"@/components/Layout\";\nimport { Search, Filter } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { FadeIn } from \"@/modules/animations\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { PostCard } from \"@/modules/post-card/post-card\";\nimport { usePosts, useBlogCategories, type BlogCategory } from \"@/modules/blog-core\";\n\ninterface FilterSectionProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: (key: string, options?: any) => string;\n searchTerm: string;\n setSearchTerm: (term: string) => void;\n categories: BlogCategory[];\n selectedCategories: string[];\n handleCategoryChange: (slug: string, checked: boolean) => void;\n allTags: string[];\n selectedTags: string[];\n handleTagChange: (tag: string, checked: boolean) => void;\n clearFilters: () => void;\n}\n\nfunction FilterSection({\n t,\n searchTerm,\n setSearchTerm,\n categories,\n selectedCategories,\n handleCategoryChange,\n allTags,\n selectedTags,\n handleTagChange,\n clearFilters,\n}: FilterSectionProps) {\n return (\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"font-semibold mb-3 flex items-center gap-2\">\n <Search className=\"h-4 w-4\" />\n {t(\"search\")}\n </h3>\n <Input\n placeholder={t(\"searchPlaceholder\")}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n />\n </div>\n\n <div>\n <h3 className=\"font-semibold mb-3\">{t(\"categories\")}</h3>\n <div className=\"space-y-2\">\n {categories.map((category) => (\n <div key={category.slug} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`category-${category.slug}`}\n checked={selectedCategories.includes(category.slug)}\n onCheckedChange={(checked) =>\n handleCategoryChange(category.slug, checked as boolean)\n }\n />\n <label\n htmlFor={`category-${category.slug}`}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {category.name}\n </label>\n </div>\n ))}\n </div>\n </div>\n\n {allTags.length > 0 && (\n <div>\n <h3 className=\"font-semibold mb-3\">{t(\"tags\")}</h3>\n <div className=\"space-y-2 max-h-48 overflow-y-auto\">\n {allTags.slice(0, 20).map((tag) => (\n <div key={tag} className=\"flex items-center space-x-2\">\n <Checkbox\n id={`tag-${tag}`}\n checked={selectedTags.includes(tag)}\n onCheckedChange={(checked) =>\n handleTagChange(tag, checked as boolean)\n }\n />\n <label\n htmlFor={`tag-${tag}`}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {tag}\n </label>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {(searchTerm ||\n selectedCategories.length > 0 ||\n selectedTags.length > 0) && (\n <Button variant=\"outline\" onClick={clearFilters} className=\"w-full\">\n {t(\"clearFilters\")}\n </Button>\n )}\n </div>\n );\n}\n\nexport function BlogListPage() {\n const { t } = useTranslation(\"blog-list-page\");\n usePageTitle({ title: t(\"title\") });\n\n const [searchParams, setSearchParams] = useSearchParams();\n const [searchTerm, setSearchTerm] = useState(\n searchParams.get(\"search\") || \"\"\n );\n const [selectedCategories, setSelectedCategories] = useState<string[]>(\n searchParams.get(\"categories\")?.split(\",\").filter(Boolean) || []\n );\n const [selectedTags, setSelectedTags] = useState<string[]>(\n searchParams.get(\"tags\")?.split(\",\").filter(Boolean) || []\n );\n const [sortBy, setSortBy] = useState(searchParams.get(\"sort\") || \"newest\");\n const [viewMode, _setViewMode] = useState<\"grid\" | \"list\">(\"grid\");\n\n const { posts, loading, error } = usePosts();\n const { categories } = useBlogCategories();\n\n const filteredPosts = posts.filter((post) => {\n if (searchTerm) {\n const searchLower = searchTerm.toLowerCase();\n if (\n !post.title.toLowerCase().includes(searchLower) &&\n !post.excerpt.toLowerCase().includes(searchLower) &&\n !post.content.toLowerCase().includes(searchLower)\n ) {\n return false;\n }\n }\n\n if (selectedCategories.length > 0) {\n const hasMatchingCategory = selectedCategories.some(\n (categorySlug) =>\n post.category === categorySlug ||\n post.categories?.some((cat) => cat.slug === categorySlug)\n );\n if (!hasMatchingCategory) return false;\n }\n\n if (selectedTags.length > 0) {\n const hasMatchingTag = selectedTags.some((tag) =>\n post.tags.includes(tag)\n );\n if (!hasMatchingTag) return false;\n }\n\n return true;\n });\n\n const sortedPosts = [...filteredPosts].sort((a, b) => {\n switch (sortBy) {\n case \"oldest\":\n return (\n new Date(a.published_at).getTime() -\n new Date(b.published_at).getTime()\n );\n case \"popular\":\n return (b.view_count || 0) - (a.view_count || 0);\n case \"reading-time\":\n return (a.read_time || 0) - (b.read_time || 0);\n case \"newest\":\n default:\n return (\n new Date(b.published_at).getTime() -\n new Date(a.published_at).getTime()\n );\n }\n });\n\n useEffect(() => {\n const params = new URLSearchParams();\n if (searchTerm) params.set(\"search\", searchTerm);\n if (selectedCategories.length)\n params.set(\"categories\", selectedCategories.join(\",\"));\n if (selectedTags.length) params.set(\"tags\", selectedTags.join(\",\"));\n if (sortBy !== \"newest\") params.set(\"sort\", sortBy);\n\n setSearchParams(params);\n }, [searchTerm, selectedCategories, selectedTags, sortBy, setSearchParams]);\n\n const handleCategoryChange = (categorySlug: string, checked: boolean) => {\n if (checked) {\n setSelectedCategories([...selectedCategories, categorySlug]);\n } else {\n setSelectedCategories(\n selectedCategories.filter((c) => c !== categorySlug)\n );\n }\n };\n\n const handleTagChange = (tag: string, checked: boolean) => {\n if (checked) {\n setSelectedTags([...selectedTags, tag]);\n } else {\n setSelectedTags(selectedTags.filter((t) => t !== tag));\n }\n };\n\n const allTags = Array.from(new Set(posts.flatMap((post) => post.tags)));\n\n const clearFilters = () => {\n setSearchTerm(\"\");\n setSelectedCategories([]);\n setSelectedTags([]);\n setSortBy(\"newest\");\n };\n\n const filterProps: FilterSectionProps = {\n t,\n searchTerm,\n setSearchTerm,\n categories,\n selectedCategories,\n handleCategoryChange,\n allTags,\n selectedTags,\n handleTagChange,\n clearFilters,\n };\n\n if (loading) {\n return (\n <Layout>\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4 py-8\">\n <div className=\"animate-pulse space-y-4\">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className=\"h-48 bg-muted rounded-lg\"></div>\n ))}\n </div>\n </div>\n </Layout>\n );\n }\n\n if (error) {\n return (\n <Layout>\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4 py-8 text-center\">\n <p className=\"text-destructive\">{t(\"error\")}</p>\n </div>\n </Layout>\n );\n }\n\n return (\n <Layout>\n <div className=\"w-full max-w-[var(--container-max-width)] mx-auto px-4 py-8\">\n <FadeIn className=\"flex flex-col lg:flex-row justify-between items-start lg:items-center gap-4 mb-8\">\n <div>\n <h1 className=\"text-3xl font-bold mb-2\">{t(\"title\")}</h1>\n <p className=\"text-muted-foreground\">{t(\"subtitle\")}</p>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <Select value={sortBy} onValueChange={setSortBy}>\n <SelectTrigger className=\"w-[180px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"newest\">{t(\"sortNewest\")}</SelectItem>\n <SelectItem value=\"oldest\">{t(\"sortOldest\")}</SelectItem>\n <SelectItem value=\"popular\">{t(\"sortPopular\")}</SelectItem>\n <SelectItem value=\"reading-time\">\n {t(\"sortReadingTime\")}\n </SelectItem>\n </SelectContent>\n </Select>\n\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"lg:hidden\">\n <Filter className=\"h-4 w-4 mr-2\" />\n {t(\"filters\")}\n </Button>\n </SheetTrigger>\n <SheetContent>\n <SheetHeader>\n <SheetTitle>{t(\"filters\")}</SheetTitle>\n <SheetDescription>{t(\"filterDescription\")}</SheetDescription>\n </SheetHeader>\n <div className=\"mt-6\">\n <FilterSection {...filterProps} />\n </div>\n </SheetContent>\n </Sheet>\n </div>\n </FadeIn>\n\n <div className=\"flex flex-col lg:flex-row gap-8\">\n <div className=\"hidden lg:block w-64 flex-shrink-0\">\n <div className=\"sticky top-4\">\n <FilterSection {...filterProps} />\n </div>\n </div>\n\n <div className=\"flex-1\">\n <div className=\"flex items-center justify-between mb-6\">\n <p className=\"text-sm text-muted-foreground\">\n {t(\"showing\")} {sortedPosts.length} {t(\"of\")} {posts.length}{\" \"}\n {t(\"posts\")}\n {searchTerm && (\n <span className=\"ml-1\">\n {t(\"for\")} \"<strong>{searchTerm}</strong>\"\n </span>\n )}\n </p>\n </div>\n\n {sortedPosts.length > 0 ? (\n <div\n className={`grid gap-6 ${\n viewMode === \"grid\"\n ? \"grid-cols-1 md:grid-cols-2 xl:grid-cols-3\"\n : \"grid-cols-1\"\n }`}\n >\n {sortedPosts.map((post) => (\n <PostCard key={post.id} post={post} layout={viewMode} />\n ))}\n </div>\n ) : (\n <div className=\"text-center py-12\">\n <p className=\"text-muted-foreground mb-4\">\n {t(\"noPostsFound\")}\n </p>\n <Button onClick={clearFilters} variant=\"outline\">\n {t(\"clearFilters\")}\n </Button>\n </div>\n )}\n </div>\n </div>\n </div>\n </Layout>\n );\n}\n\nexport default BlogListPage;\n"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "blog-list-page/lang/en.json",
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
"path": "blog-section/lang/en.json",
|
|
28
28
|
"type": "registry:lang",
|
|
29
29
|
"target": "$modules$/blog-section/lang/en.json",
|
|
30
|
-
"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\": \"This introduces your blog section and sets expectations for your content. Explain what topics you cover, how often you publish, or the value readers will get from your articles. Use Promake to craft an engaging introduction that encourages visitors to explore your content.\",\r\n \"viewAll\": \"View all articles\",\r\n \"readMore\": \"Read more\",\r\n \"post1Title\": \"Customize this blog post title with Promake\",\r\n \"post1Summary\": \"Write a compelling summary that captures the key points and value of your blog post. This should entice readers to click and learn more. Include the main benefit or takeaway. Use Promake to create engaging summaries that drive readership.\",\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\": \"Craft a summary that highlights what makes this post valuable. Focus on the problem it solves or insight it provides. Keep it concise yet compelling. Use Promake to write summaries that convert browsers into readers.\",\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\": \"Create a summary that showcases the unique angle or valuable information in this post. Make readers curious to learn more. Use Promake to write descriptions that effectively promote your content.\",\r\n \"post3Category\": \"Design\",\r\n \"post3Author\": \"Emily Davis\",\r\n \"post3Date\": \"Jan 5, 2024\"\r\n}\r\n"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"path": "blog-section/lang/tr.json",
|
|
34
34
|
"type": "registry:lang",
|
|
35
35
|
"target": "$modules$/blog-section/lang/tr.json",
|
|
36
|
-
"content": "{\r\n \"tagline\": \"Son Güncellemeler\",\r\n \"title\": \"Blogumuzdan\",\r\n \"subtitle\": \"Bu
|
|
36
|
+
"content": "{\r\n \"tagline\": \"Son Güncellemeler\",\r\n \"title\": \"Blogumuzdan\",\r\n \"subtitle\": \"Bu, blog bölümünüzü tanıtır ve içeriğiniz için beklentiler oluşturur. Hangi konuları ele aldığınızı, ne sıklıkla yayınladığınızı veya okuyucuların makalelerinizden alacağı değeri açıklayın. Promake ile ziyaretçileri içeriğinizi keşfetmeye teşvik eden ilgi çekici bir giriş oluşturun.\",\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\": \"Blog yazınızın ana noktalarını ve değerini yakalayan ilgi çekici bir özet yazın. Bu, okuyucuları tıklamaya ve daha fazlasını öğrenmeye teşvik etmelidir. Ana faydayı veya çıkarımı ekleyin. Promake ile okuyucu sayısını artıran ilgi çekici özetler oluşturun.\",\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\": \"Bu yazıyı değerli kılan şeyi vurgulayan bir özet oluşturun. Çözdüğü soruna veya sağladığı içgörüye odaklanın. Kısa ama ikna edici tutun. Promake ile tarayıcıları okuyuculara dönüştüren özetler yazın.\",\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 yazıdaki benzersiz açıyı veya değerli bilgileri sergileyen bir özet oluşturun. Okuyucuları daha fazlasını öğrenmeye meraklı hale getirin. Promake ile içeriğinizi etkili bir şekilde tanıtan açıklamalar yazın.\",\r\n \"post3Category\": \"Tasarım\",\r\n \"post3Author\": \"Emily Davis\",\r\n \"post3Date\": \"5 Ocak 2024\"\r\n}\r\n"
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
39
|
"exports": {
|
|
@@ -28,13 +28,13 @@
|
|
|
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\": \"This text builds anticipation for your upcoming launch. Explain what's coming, why it's exciting, and what makes it worth waiting for. Create intrigue and encourage email signups. Use Promake to craft a message that generates excitement and captures leads before launch.\",\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",
|
|
35
35
|
"type": "registry:lang",
|
|
36
36
|
"target": "$modules$/coming-soon-page/lang/tr.json",
|
|
37
|
-
"content": "{\r\n \"title\": \"Yakında\",\r\n \"heading\": \"Harika Bir Şey Geliyor\",\r\n \"description\": \"
|
|
37
|
+
"content": "{\r\n \"title\": \"Yakında\",\r\n \"heading\": \"Harika Bir Şey Geliyor\",\r\n \"description\": \"Bu metin yaklaşan lansmanınız için heyecan yaratır. Nelerin geleceğini, neden heyecan verici olduğunu ve beklemeye değer kılan şeyi açıklayın. Merak uyandırın ve e-posta kayıtlarını teşvik edin. Promake ile heyecan yaratan ve lansmandan önce potansiyel müşteri toplayan bir mesaj oluşturun.\",\r\n \"days\": \"Gün\",\r\n \"hours\": \"Saat\",\r\n \"minutes\": \"Dakika\",\r\n \"seconds\": \"Saniye\",\r\n \"emailPlaceholder\": \"E-posta adresiniz\",\r\n \"notify\": \"Beni Bilgilendir\",\r\n \"success\": \"Teşekkürler! Lansman yapıldığında sizi bilgilendireceğiz.\",\r\n \"followUs\": \"Güncellemeler için bizi takip edin\"\r\n}\r\n"
|
|
38
38
|
}
|
|
39
39
|
],
|
|
40
40
|
"exports": {
|
|
@@ -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\": \"This text introduces your contact information grid. Explain the different ways visitors can reach you and any important details about your contact preferences or availability. Use Promake to provide clear, helpful guidance for getting in touch.\",\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\": \"Bu metin iletişim bilgileri tablosunu tanıtır. Ziyaretçilerin size ulaşabilecekleri farklı yolları ve iletişim tercihleriniz veya müsaitliğinizle ilgili önemli detayları açıklayın. Promake ile iletişime geçmek için açık ve faydalı rehberlik sağlayın.\",\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\": \"This subtitle appears below your contact page heading. Use it to encourage visitors to reach out, explain your availability, or highlight your commitment to customer service. Customize with Promake to reflect your brand's communication style.\",\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\": \"Bu
|
|
40
|
+
"content": "{\r\n \"title\": \"İletişim\",\r\n \"subtitle\": \"Bu alt başlık iletişim sayfası başlığınızın altında görünür. Ziyaretçileri iletişime geçmeye teşvik etmek, müsaitliğinizi açıklamak veya müşteri hizmetlerine olan bağlılığınızı vurgulamak için kullanın. Promake ile markanızın iletişim tarzını yansıtacak şekilde özelleştirin.\",\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\": \"This welcoming message sets the tone for visitor communication. Explain why they should contact you, what kind of help you can provide, or your typical response time. Use Promake to create an inviting message that encourages engagement.\",\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\": \"Bu karşılama mesajı ziyaretçi iletişimi için tonu belirler. Neden sizinle iletişime geçmeleri gerektiğini, ne tür yardım sağlayabileceğinizi veya tipik yanıt sürenizi açıklayın. Promake ile etkileşimi teşvik eden davetkar bir mesaj oluşturun.\",\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\": \"This introductory text explains your contact options and availability. Let visitors know how they can reach you, expected response times, and what kind of inquiries you handle. Use Promake to customize with your specific contact preferences and support hours.\",\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\": \"Bu giriş metni iletişim seçeneklerinizi ve müsaitliğinizi açıklar. Ziyaretçilere nasıl ulaşabileceklerini, beklenen yanıt sürelerini ve ne tür sorular yönettiğinizi bildirin. Promake ile özel iletişim tercihleriniz ve destek saatlerinizle özelleştirin.\",\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\": \"This text supports your call-to-action and motivates visitors to take the next step. Explain the benefit they'll get, address any hesitation, or create urgency. Use Promake to craft compelling CTA copy that drives conversions and clearly communicates the value of taking action.\",\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\": \"Promake ile
|
|
31
|
+
"content": "{\r\n \"title\": \"Projenizi Başlatmaya Hazır mısınız?\",\r\n \"description\": \"Bu metin harekete geçirici mesajınızı destekler ve ziyaretçileri bir sonraki adımı atmaya motive eder. Alacakları faydayı açıklayın, herhangi bir tereddütü ele alın veya aciliyet yaratın. Promake ile dönüşümleri artıran ve harekete geçmenin değerini net bir şekilde ileten ikna edici CTA metni oluşturun.\",\r\n \"primaryButton\": \"Ücretsiz Teklif Al\",\r\n \"secondaryButton\": \"Hakkımızda\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|
|
@@ -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\": \"Promake
|
|
27
|
+
"content": "{\r\n \"title\": \"Frequently Asked Questions\",\r\n \"subtitle\": \"This introductory text helps visitors navigate your categorized FAQs. Explain how the categories are organized, encourage visitors to explore relevant sections, or mention that you're available for additional questions. Use Promake to create a helpful guide to your FAQ structure.\",\r\n \"generalTitle\": \"General\",\r\n \"general1Q\": \"Replace this with your first general question\",\r\n \"general1A\": \"Provide a comprehensive answer to this general question. Include key information that helps visitors understand your offering at a high level. Use Promake to customize with specific details that address common initial questions about what you do and how it works.\",\r\n \"general2Q\": \"This is a placeholder question that needs customization\",\r\n \"general2A\": \"Give a clear, informative answer that provides value to visitors with general questions. Be thorough but accessible. Use Promake to add information that helps newcomers understand your offering and its benefits.\",\r\n \"general3Q\": \"Customize this question for your FAQ section\",\r\n \"general3A\": \"Offer a detailed response that addresses this general aspect of your offering. Include relevant context and examples. Use Promake to ensure this answer helps visitors understand the fundamentals of what you provide.\"\r\n \"billingTitle\": \"Billing\",\r\n \"billing1Q\": \"Replace with your billing-related question\",\r\n \"billing1A\": \"Provide clear information about your billing practices, payment methods, or pricing structure. Be transparent and specific about costs, payment terms, and any relevant policies. Use Promake to add details that help customers understand your billing process.\",\r\n \"billing2Q\": \"This question should be replaced with real billing FAQ\",\r\n \"billing2A\": \"Explain billing-related policies, procedures, or options in detail. Address common concerns about payments, refunds, or invoicing. Use Promake to provide accurate information that builds trust in your billing practices.\",\r\n \"billing3Q\": \"Customize this billing question\",\r\n \"billing3A\": \"Give a thorough answer about billing or payment matters. Include important details about pricing tiers, payment schedules, or billing support. Use Promake to ensure customers have all the billing information they need.\"\r\n \"technicalTitle\": \"Technical\",\r\n \"technical1Q\": \"Replace with your technical question\",\r\n \"technical1A\": \"Provide technical information that helps users understand system requirements, compatibility, or implementation details. Be specific but avoid unnecessary jargon. Use Promake to add technical details that are relevant and helpful to your users.\",\r\n \"technical2Q\": \"This is a placeholder technical question\",\r\n \"technical2A\": \"Explain technical aspects in a way that's accessible to your audience. Include specific details about features, integrations, or technical capabilities. Use Promake to customize with technical information that addresses common questions.\",\r\n \"technical3Q\": \"Customize this final technical question\",\r\n \"technical3A\": \"Give a detailed technical answer that provides the specific information users need. Include relevant specifications, limitations, or technical support options. Use Promake to ensure technical questions are answered thoroughly and accurately.\"\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\": \"Bu giriş metni ziyaretçilerin kategorize edilmiş SSS'lerinizde gezinmesine yardımcı olur. Kategorilerin nasıl düzenlendiğini açıklayın, ziyaretçileri ilgili bölümleri keşfetmeye teşvik edin veya ek sorular için müsait olduğunuzdan bahsedin. Promake ile SSS yapınıza yardımcı bir rehber oluşturun.\",\r\n \"generalTitle\": \"Genel\",\r\n \"general1Q\": \"Bunu ilk genel sorunuzla değiştirin\",\r\n \"general1A\": \"Bu genel soruya kapsamlı bir cevap verin. Ziyaretçilerin teklifinizi genel düzeyde anlamalarına yardımcı olacak temel bilgileri ekleyin. Promake ile ne yaptığınız ve nasıl çalıştığı hakkındaki yaygın başlangıç sorularını ele alan özel detaylarla özelleştirin.\",\r\n \"general2Q\": \"Bu özelleştirilmesi gereken bir placeholder sorudur\",\r\n \"general2A\": \"Genel sorular olan ziyaretçilere değer sağlayan açık ve bilgilendirici bir cevap verin. Kapsamlı ama anlaşılır olun. Promake ile yeni gelenlerin teklifinizi ve faydalarını anlamalarına yardımcı olan bilgiler ekleyin.\",\r\n \"general3Q\": \"Bu soruyu SSS bölümünüz için özelleştirin\",\r\n \"general3A\": \"Teklifinizin bu genel yönünü ele alan detaylı bir yanıt sunun. İlgili bağlam ve örnekler ekleyin. Promake ile bu cevabın ziyaretçilerin sağladığınız şeyin temellerini anlamalarına yardımcı olduğundan emin olun.\"\r\n \"billingTitle\": \"Faturalama\",\r\n \"billing1Q\": \"Faturalama ile ilgili sorunuzla değiştirin\",\r\n \"billing1A\": \"Faturalama uygulamalarınız, ödeme yöntemleriniz veya fiyatlandırma yapınız hakkında açık bilgi sağlayın. Maliyetler, ödeme koşulları ve ilgili politikalar konusunda şeffaf ve spesifik olun. Promake ile müşterilerin faturalama sürecinizi anlamalarına yardımcı olan detaylar ekleyin.\",\r\n \"billing2Q\": \"Bu soru gerçek faturalama SSS'si ile değiştirilmelidir\",\r\n \"billing2A\": \"Faturalandırmayla ilgili politikaları, prosedürleri veya seçenekleri detaylı açıklayın. Ödemeler, iadeler veya faturalandırma hakkındaki yaygın endişeleri ele alın. Promake ile faturalama uygulamalarınıza güven oluşturan doğru bilgiler sağlayın.\",\r\n \"billing3Q\": \"Bu faturalama sorusunu özelleştirin\",\r\n \"billing3A\": \"Faturalama veya ödeme konuları hakkında kapsamlı bir cevap verin. Fiyatlandırma katmanları, ödeme programları veya faturalama desteği hakkında önemli detayları ekleyin. Promake ile müşterilerin ihtiyaç duydukları tüm faturalama bilgilerine sahip olduklarından emin olun.\"\r\n \"technicalTitle\": \"Teknik\",\r\n \"technical1Q\": \"Teknik sorunuzla değiştirin\",\r\n \"technical1A\": \"Kullanıcıların sistem gereksinimlerini, uyumluluğu veya uygulama detaylarını anlamalarına yardımcı olan teknik bilgiler sağlayın. Spesifik olun ama gereksiz jargondan kaçının. Promake ile kullanıcılarınız için alakalı ve yardımcı olan teknik detaylar ekleyin.\",\r\n \"technical2Q\": \"Bu bir placeholder teknik sorudur\",\r\n \"technical2A\": \"Teknik yönleri hedef kitlenize erişilebilir bir şekilde açıklayın. Özellikler, entegrasyonlar veya teknik yetenekler hakkında özel detaylar ekleyin. Promake ile yaygın soruları ele alan teknik bilgilerle özelleştirin.\",\r\n \"technical3Q\": \"Bu son teknik soruyu özelleştirin\",\r\n \"technical3A\": \"Kullanıcıların ihtiyaç duyduğu özel bilgiyi sağlayan detaylı bir teknik cevap verin. İlgili özellikleri, sınırlamaları veya teknik destek seçeneklerini ekleyin. Promake ile teknik soruların kapsamlı ve doğru şekilde yanıtlandığından emin olun.\"\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\": \"This text introduces your FAQ section. Explain how these answers can help visitors, encourage them to reach out if they need more information, or highlight your commitment to transparency. Use Promake to set a helpful, welcoming tone.\",\r\n \"q1\": \"Replace this question with your first FAQ\",\r\n \"a1\": \"Provide a clear, comprehensive answer that directly addresses the question. Include specific details, examples, or steps when relevant. Use Promake to customize this with information specific to your product, service, or policies that helps visitors make informed decisions.\",\r\n \"q2\": \"This is a placeholder question that needs to be customized\",\r\n \"a2\": \"Write a helpful answer that provides value to your visitors. Be specific, accurate, and complete. Address common concerns or clarify important details. Use Promake to add information that builds trust and confidence in your offering.\",\r\n \"q3\": \"Customize this question to match your service\",\r\n \"a3\": \"Give a detailed response that eliminates confusion and provides clarity. Include relevant information about features, pricing, policies, or processes. Use Promake to customize with details that answer this question thoroughly and helpfully.\",\r\n \"q4\": \"Replace with your actual frequently asked question\",\r\n \"a4\": \"Offer a clear explanation that helps visitors understand this aspect of your offering. Include practical information they can act on. Use Promake to provide an answer that addresses real customer concerns and questions.\",\r\n \"q5\": \"This question should be replaced with real FAQ content\",\r\n \"a5\": \"Provide an informative answer that gives visitors the information they need. Be transparent and specific. Use Promake to customize this with details about your unique offerings, policies, or processes.\",\r\n \"q6\": \"Customize this final question for your FAQ section\",\r\n \"a6\": \"Give a complete answer that leaves no ambiguity. Include any important caveats, conditions, or additional context. Use Promake to ensure this answer fully addresses the question and helps visitors feel confident about your offering.\"\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\": \"Bu
|
|
33
|
+
"content": "{\r\n \"title\": \"Sıkça Sorulan Sorular\",\r\n \"subtitle\": \"Bu metin SSS bölümünüzü tanıtır. Bu cevapların ziyaretçilere nasıl yardımcı olabileceğini açıklayın, daha fazla bilgiye ihtiyaçları olursa iletişime geçmeye teşvik edin veya şeffaflık taahhüdünüzü vurgulayın. Promake ile yardımsever ve davetkar bir ton oluşturun.\",\r\n \"q1\": \"Bu soruyu ilk SSS'nizle değiştirin\",\r\n \"a1\": \"Soruyu doğrudan ele alan açık ve kapsamlı bir cevap verin. İlgili olduğunda özel detaylar, örnekler veya adımlar ekleyin. Promake ile bunu ürününüz, hizmetiniz veya politikalarınıza özel bilgilerle özelleştirerek ziyaretçilerin bilinçli kararlar almasına yardımcı olun.\",\r\n \"q2\": \"Bu özelleştirilmesi gereken bir placeholder sorudur\",\r\n \"a2\": \"Ziyaretçilerinize değer sağlayan yardımcı bir cevap yazın. Spesifik, doğru ve eksiksiz olun. Yaygın endişeleri ele alın veya önemli detayları netleştirin. Promake ile teklifinize güven ve inanç oluşturan bilgiler ekleyin.\",\r\n \"q3\": \"Bu soruyu hizmetinize uyacak şekilde özelleştirin\",\r\n \"a3\": \"Kafa karışıklığını ortadan kaldıran ve netlik sağlayan detaylı bir yanıt verin. Özellikler, fiyatlandırma, politikalar veya süreçler hakkında ilgili bilgileri ekleyin. Promake ile bu soruyu kapsamlı ve yardımcı şekilde yanıtlayan detaylarla özelleştirin.\",\r\n \"q4\": \"Gerçek sık sorulan sorunuzla değiştirin\",\r\n \"a4\": \"Ziyaretçilerin teklifinizin bu yönünü anlamalarına yardımcı olan açık bir açıklama sunun. Üzerinde hareket edebilecekleri pratik bilgiler ekleyin. Promake ile gerçek müşteri endişelerini ve sorularını ele alan bir cevap sağlayın.\",\r\n \"q5\": \"Bu soru gerçek SSS içeriğiyle değiştirilmelidir\",\r\n \"a5\": \"Ziyaretçilere ihtiyaç duydukları bilgiyi veren bilgilendirici bir cevap sağlayın. Şeffaf ve spesifik olun. Promake ile bunu benzersiz teklifleriniz, politikalarınız veya süreçleriniz hakkındaki detaylarla özelleştirin.\",\r\n \"q6\": \"SSS bölümünüz için bu son soruyu özelleştirin\",\r\n \"a6\": \"Belirsizlik bırakmayan eksiksiz bir cevap verin. Önemli uyarıları, koşulları veya ek bağlamı ekleyin. Promake ile bu cevabın soruyu tam olarak ele aldığından ve ziyaretçilerin teklifiniz konusunda kendilerini güvende hissetmelerine yardımcı olduğundan emin olun.\"\r\n}\r\n"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
36
|
"exports": {
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"path": "header-mega/lang/en.json",
|
|
30
30
|
"type": "registry:lang",
|
|
31
31
|
"target": "$modules$/header-mega/lang/en.json",
|
|
32
|
-
"content": "{\r\n \"home\": \"Home\",\r\n \"products\": \"Products\",\r\n \"allProducts\": \"All Products\",\r\n \"allProductsDesc\": \"
|
|
32
|
+
"content": "{\r\n \"home\": \"Home\",\r\n \"products\": \"Products\",\r\n \"allProducts\": \"All Products\",\r\n \"allProductsDesc\": \"Brief description that appears in the mega menu. Explain what visitors will find in your full product catalog. Use Promake to customize this menu text to guide navigation.\",\r\n \"featured\": \"Featured\",\r\n \"featuredDesc\": \"Menu description for your featured or highlighted products. Explain what makes these items special or recommended. Customize with Promake.\",\r\n \"newArrivals\": \"New Arrivals\",\r\n \"newArrivalsDesc\": \"Menu text describing your latest products. Create interest in what's new. Use Promake to customize this navigation description.\",\r\n \"onSale\": \"On Sale\",\r\n \"onSaleDesc\": \"Menu description for sale or discounted items. Highlight current promotions or deals. Customize with Promake to drive interest.\",\r\n \"company\": \"About\",\r\n \"aboutUs\": \"About Us\",\r\n \"aboutUsDesc\": \"Brief menu description of your about page. Tease what visitors will learn about your company, mission, or story. Customize with Promake.\",\r\n \"contact\": \"Contact\",\r\n \"contactDesc\": \"Menu text that encourages visitors to get in touch. Mention how you can help or your availability. Use Promake to create inviting contact text.\",\r\n \"blog\": \"Blog\",\r\n \"blogDesc\": \"Menu description for your blog section. Explain what type of content you publish or topics you cover. Customize with Promake.\",\r\n \"login\": \"Login\",\r\n \"signup\": \"Sign up\"\r\n}\r\n"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "header-mega/lang/tr.json",
|
|
36
36
|
"type": "registry:lang",
|
|
37
37
|
"target": "$modules$/header-mega/lang/tr.json",
|
|
38
|
-
"content": "{\r\n \"home\": \"Ana Sayfa\",\r\n \"products\": \"Ürünler\",\r\n \"allProducts\": \"Tüm Ürünler\",\r\n \"allProductsDesc\": \"
|
|
38
|
+
"content": "{\r\n \"home\": \"Ana Sayfa\",\r\n \"products\": \"Ürünler\",\r\n \"allProducts\": \"Tüm Ürünler\",\r\n \"allProductsDesc\": \"Mega menüde görünen kısa açıklama. Ziyaretçilerin tam ürün kataloğunuzda neleri bulacağını açıklayın. Promake ile bu menü metnini navigasyonu yönlendirmek için özelleştirin.\",\r\n \"featured\": \"Öne Çıkanlar\",\r\n \"featuredDesc\": \"Öne çıkan veya önerilen ürünleriniz için menü açıklaması. Bu ürünleri özel veya önerilen yapan şeyi açıklayın. Promake ile özelleştirin.\",\r\n \"newArrivals\": \"Yeni Gelenler\",\r\n \"newArrivalsDesc\": \"En son ürünlerinizi açıklayan menü metni. Yeni olanda ilgi yaratın. Promake ile bu navigasyon açıklamasını özelleştirin.\",\r\n \"onSale\": \"İndirimde\",\r\n \"onSaleDesc\": \"İndirimli veya promosyonlu ürünler için menü açıklaması. Güncel promosyonları veya fırsatları vurgulayın. Promake ile ilgi uyandırmak için özelleştirin.\",\r\n \"company\": \"Hakkında\",\r\n \"aboutUs\": \"Hakkımızda\",\r\n \"aboutUsDesc\": \"Hakkımızda sayfanızın kısa menü açıklaması. Ziyaretçilerin şirketiniz, misyonunuz veya hikayeniz hakkında ne öğreneceklerini vurgulayın. Promake ile özelleştirin.\",\r\n \"contact\": \"İletişim\",\r\n \"contactDesc\": \"Ziyaretçileri iletişime geçmeye teşvik eden menü metni. Nasıl yardımcı olabileceğinizden veya müsaitliğinizden bahsedin. Promake ile davetkar iletişim metni oluşturun.\",\r\n \"blog\": \"Blog\",\r\n \"blogDesc\": \"Blog bölümünüz için menü açıklaması. Ne tür içerik yayınladığınızı veya hangi konuları ele aldığınızı açıklayın. Promake ile özelleştirin.\",\r\n \"login\": \"Giriş Yap\",\r\n \"signup\": \"Kayıt Ol\"\r\n}\r\n"
|
|
39
39
|
}
|
|
40
40
|
],
|
|
41
41
|
"exports": {
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"path": "hero-cta/lang/en.json",
|
|
25
25
|
"type": "registry:lang",
|
|
26
26
|
"target": "$modules$/hero-cta/lang/en.json",
|
|
27
|
-
"content": "{\r\n \"heading\": \"
|
|
27
|
+
"content": "{\r\n \"heading\": \"Your main hero headline goes here. This should be attention-grabbing and clearly communicate your unique value. Use Promake to create a headline that speaks directly to your audience's needs.\",\r\n \"description\": \"This section provides supporting details for your hero headline. Explain what you offer, who it's for, and why it matters. Use Promake to customize this with your specific value proposition and key benefits.\",\r\n \"reviews\": \"Display social proof here - customer count, review ratings, or success metrics. This builds trust and credibility. Use Promake to add your authentic numbers or testimonials count.\",\r\n \"primaryCta\": \"Get Started\",\r\n \"secondaryCta\": \"Learn More\",\r\n \"imageAlt\": \"Hero image\"\r\n}\r\n"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "hero-cta/lang/tr.json",
|
|
31
31
|
"type": "registry:lang",
|
|
32
32
|
"target": "$modules$/hero-cta/lang/tr.json",
|
|
33
|
-
"content": "{\r\n \"heading\": \"
|
|
33
|
+
"content": "{\r\n \"heading\": \"Ana hero başlığınız buraya gelir. Bu dikkat çekici olmalı ve benzersiz değerinizi açıkça iletmelidir. Promake ile hedef kitlenizin ihtiyaçlarına doğrudan hitap eden bir başlık oluşturun.\",\r\n \"description\": \"Bu bölüm hero başlığınız için destekleyici detaylar sağlar. Ne sunduğunuzu, kimin için olduğunu ve neden önemli olduğunu açıklayın. Promake ile bunu özel değer öneriniz ve ana faydalarınızla özelleştirin.\",\r\n \"reviews\": \"Sosyal kanıtı burada gösterin - müşteri sayısı, yorum puanları veya başarı metrikleri. Bu güven ve itibar oluşturur. Promake ile özgün rakamlarınızı veya referans sayınızı ekleyin.\",\r\n \"primaryCta\": \"Başlayın\",\r\n \"secondaryCta\": \"Daha Fazla Bilgi\",\r\n \"imageAlt\": \"Hero görseli\"\r\n}\r\n"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
36
|
"exports": {
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"path": "hero-gradient/lang/en.json",
|
|
23
23
|
"type": "registry:lang",
|
|
24
24
|
"target": "$modules$/hero-gradient/lang/en.json",
|
|
25
|
-
"content": "{\r\n \"badge\": \"
|
|
25
|
+
"content": "{\r\n \"badge\": \"This badge highlights a key announcement, new feature, or achievement. Use it to draw attention to something timely and important. Customize with Promake to showcase what's new or noteworthy.\",\r\n \"headingLine1\": \"This is the first line of your main headline. Make it powerful and attention-grabbing. Use Promake to craft a message that immediately captures interest and communicates your core offering.\",\r\n \"headingLine2\": \"with your site headline\",\r\n \"description\": \"This supporting text expands on your headline and provides key details about your offering. Explain the main benefits and what makes you different. Use Promake to customize with your specific value proposition.\",\r\n \"primaryCta\": \"Get Started\",\r\n \"secondaryCta\": \"Contact Sales\",\r\n \"users\": \"Active Users\",\r\n \"uptime\": \"Uptime\",\r\n \"support\": \"Support\"\r\n}\r\n"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "hero-gradient/lang/tr.json",
|
|
29
29
|
"type": "registry:lang",
|
|
30
30
|
"target": "$modules$/hero-gradient/lang/tr.json",
|
|
31
|
-
"content": "{\r\n \"badge\": \"Promake ile
|
|
31
|
+
"content": "{\r\n \"badge\": \"Bu rozet önemli bir duyuruyu, yeni özelliği veya başarıyı vurgular. Zamana duyarlı ve önemli bir şeye dikkat çekmek için kullanın. Promake ile yeni veya dikkat çekici olanı sergileyecek şekilde özelleştirin.\",\r\n \"headingLine1\": \"Ana başlığınızın ilk satırıdır. Güçlü ve dikkat çekici olmalıdır. Promake ile hemen ilgi çeken ve temel teklifinizi ileten bir mesaj oluşturun.\",\r\n \"headingLine2\": \"site başlığınızla güncellemesini isteyin\",\r\n \"description\": \"Bu destekleyici metin başlığınızı genişletir ve teklifiniz hakkında önemli detaylar sağlar. Ana faydaları ve sizi farklı kılan özellikleri açıklayın. Promake ile özel değer önerinizle özelleştirin.\",\r\n \"primaryCta\": \"Başlayın\",\r\n \"secondaryCta\": \"Satış ile İletişim\",\r\n \"users\": \"Aktif Kullanıcı\",\r\n \"uptime\": \"Çalışma Süresi\",\r\n \"support\": \"Destek\"\r\n}\r\n"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"exports": {
|