@promakeai/cli 0.0.5
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 +212 -0
- package/dist/registry/about-page.json +45 -0
- package/dist/registry/about-section.json +40 -0
- package/dist/registry/animations.json +69 -0
- package/dist/registry/bento-grid-section.json +42 -0
- package/dist/registry/blog-core.json +74 -0
- package/dist/registry/blog-list-page.json +48 -0
- package/dist/registry/blog-section.json +43 -0
- package/dist/registry/cards-carousel-section.json +46 -0
- package/dist/registry/cart-drawer.json +43 -0
- package/dist/registry/cart-page.json +47 -0
- package/dist/registry/category-section.json +43 -0
- package/dist/registry/checkout-page.json +47 -0
- package/dist/registry/contact-info-grid.json +40 -0
- package/dist/registry/contact-page-centered.json +50 -0
- package/dist/registry/contact-page-map-overlay.json +54 -0
- package/dist/registry/contact-page-map-split.json +54 -0
- package/dist/registry/contact-page-split.json +49 -0
- package/dist/registry/contact-page.json +45 -0
- package/dist/registry/content-section.json +40 -0
- package/dist/registry/cookies-page.json +45 -0
- package/dist/registry/cta-section.json +40 -0
- package/dist/registry/docs/about-page.md +32 -0
- package/dist/registry/docs/about-section.md +33 -0
- package/dist/registry/docs/animations.md +44 -0
- package/dist/registry/docs/bento-grid-section.md +40 -0
- package/dist/registry/docs/blog-core.md +37 -0
- package/dist/registry/docs/blog-list-page.md +38 -0
- package/dist/registry/docs/blog-section.md +39 -0
- package/dist/registry/docs/cards-carousel-section.md +39 -0
- package/dist/registry/docs/cart-drawer.md +42 -0
- package/dist/registry/docs/cart-page.md +37 -0
- package/dist/registry/docs/category-section.md +34 -0
- package/dist/registry/docs/checkout-page.md +38 -0
- package/dist/registry/docs/contact-info-grid.md +33 -0
- package/dist/registry/docs/contact-page-centered.md +41 -0
- package/dist/registry/docs/contact-page-map-overlay.md +44 -0
- package/dist/registry/docs/contact-page-map-split.md +44 -0
- package/dist/registry/docs/contact-page-split.md +40 -0
- package/dist/registry/docs/contact-page.md +33 -0
- package/dist/registry/docs/content-section.md +35 -0
- package/dist/registry/docs/cookies-page.md +32 -0
- package/dist/registry/docs/cta-section.md +32 -0
- package/dist/registry/docs/ecommerce-core.md +41 -0
- package/dist/registry/docs/empty-page.md +31 -0
- package/dist/registry/docs/faq-categorized.md +38 -0
- package/dist/registry/docs/faq-simple.md +38 -0
- package/dist/registry/docs/favorites-blog-block.md +38 -0
- package/dist/registry/docs/favorites-ecommerce-block.md +38 -0
- package/dist/registry/docs/feature-section.md +33 -0
- package/dist/registry/docs/featured-products.md +38 -0
- package/dist/registry/docs/footer-detailed.md +33 -0
- package/dist/registry/docs/footer-minimal.md +32 -0
- package/dist/registry/docs/footer.md +32 -0
- package/dist/registry/docs/google-map.md +36 -0
- package/dist/registry/docs/header-centered-pill.md +37 -0
- package/dist/registry/docs/header-ecommerce.md +38 -0
- package/dist/registry/docs/header-mega.md +40 -0
- package/dist/registry/docs/header-minimal.md +38 -0
- package/dist/registry/docs/header-simple.md +32 -0
- package/dist/registry/docs/hero-cta.md +38 -0
- package/dist/registry/docs/hero-gradient.md +33 -0
- package/dist/registry/docs/hero-grid.md +40 -0
- package/dist/registry/docs/hero-profile.md +33 -0
- package/dist/registry/docs/hero.md +32 -0
- package/dist/registry/docs/login-page-split.md +40 -0
- package/dist/registry/docs/login-page.md +39 -0
- package/dist/registry/docs/newsletter-section.md +40 -0
- package/dist/registry/docs/order-card-compact.md +37 -0
- package/dist/registry/docs/order-detail-block.md +37 -0
- package/dist/registry/docs/orders-list-block.md +40 -0
- package/dist/registry/docs/payment-success-block.md +32 -0
- package/dist/registry/docs/post-card.md +37 -0
- package/dist/registry/docs/post-detail-block.md +37 -0
- package/dist/registry/docs/pricing-card.md +37 -0
- package/dist/registry/docs/pricing-section.md +39 -0
- package/dist/registry/docs/privacy-page.md +32 -0
- package/dist/registry/docs/product-card-detailed.md +42 -0
- package/dist/registry/docs/product-card-hover.md +35 -0
- package/dist/registry/docs/product-card.md +37 -0
- package/dist/registry/docs/product-detail-block.md +37 -0
- package/dist/registry/docs/product-detail-section.md +45 -0
- package/dist/registry/docs/products-page.md +39 -0
- package/dist/registry/docs/related-posts-block.md +38 -0
- package/dist/registry/docs/related-products-block.md +38 -0
- package/dist/registry/docs/service-card.md +34 -0
- package/dist/registry/docs/skill-card.md +33 -0
- package/dist/registry/docs/terms-page.md +32 -0
- package/dist/registry/docs/testimonials-carousel.md +40 -0
- package/dist/registry/docs/testimonials-grid.md +39 -0
- package/dist/registry/ecommerce-core.json +95 -0
- package/dist/registry/empty-page.json +45 -0
- package/dist/registry/faq-categorized.json +42 -0
- package/dist/registry/faq-simple.json +42 -0
- package/dist/registry/favorites-blog-block.json +43 -0
- package/dist/registry/favorites-ecommerce-block.json +43 -0
- package/dist/registry/feature-section.json +40 -0
- package/dist/registry/featured-products.json +43 -0
- package/dist/registry/footer-detailed.json +43 -0
- package/dist/registry/footer-minimal.json +40 -0
- package/dist/registry/footer.json +40 -0
- package/dist/registry/google-map.json +31 -0
- package/dist/registry/header-centered-pill.json +45 -0
- package/dist/registry/header-ecommerce.json +42 -0
- package/dist/registry/header-mega.json +47 -0
- package/dist/registry/header-minimal.json +45 -0
- package/dist/registry/header-simple.json +43 -0
- package/dist/registry/hero-cta.json +42 -0
- package/dist/registry/hero-gradient.json +40 -0
- package/dist/registry/hero-grid.json +42 -0
- package/dist/registry/hero-profile.json +62 -0
- package/dist/registry/hero.json +40 -0
- package/dist/registry/index.json +70 -0
- package/dist/registry/login-page-split.json +47 -0
- package/dist/registry/login-page.json +49 -0
- package/dist/registry/newsletter-section.json +44 -0
- package/dist/registry/order-card-compact.json +42 -0
- package/dist/registry/order-detail-block.json +42 -0
- package/dist/registry/orders-list-block.json +45 -0
- package/dist/registry/payment-success-block.json +40 -0
- package/dist/registry/post-card.json +42 -0
- package/dist/registry/post-detail-block.json +42 -0
- package/dist/registry/pricing-card.json +40 -0
- package/dist/registry/pricing-section.json +43 -0
- package/dist/registry/privacy-page.json +45 -0
- package/dist/registry/product-card-detailed.json +45 -0
- package/dist/registry/product-card-hover.json +40 -0
- package/dist/registry/product-card.json +42 -0
- package/dist/registry/product-detail-block.json +42 -0
- package/dist/registry/product-detail-section.json +46 -0
- package/dist/registry/products-page.json +48 -0
- package/dist/registry/related-posts-block.json +43 -0
- package/dist/registry/related-products-block.json +43 -0
- package/dist/registry/service-card.json +28 -0
- package/dist/registry/skill-card.json +28 -0
- package/dist/registry/terms-page.json +45 -0
- package/dist/registry/testimonials-carousel.json +44 -0
- package/dist/registry/testimonials-grid.json +43 -0
- package/package.json +52 -0
- package/template/.env +6 -0
- package/template/.prettierignore +3 -0
- package/template/.prettierrc +1 -0
- package/template/README.md +73 -0
- package/template/bun.lock +1007 -0
- package/template/components.json +22 -0
- package/template/eslint.config.js +32 -0
- package/template/index.html +285 -0
- package/template/package.json +92 -0
- package/template/promake.json +6 -0
- package/template/public/_redirects +1 -0
- package/template/public/data/database.db +0 -0
- package/template/public/favicon.svg +1 -0
- package/template/public/images/placeholder.png +0 -0
- package/template/public/robots.txt +14 -0
- package/template/scripts/init-db.ts +131 -0
- package/template/src/App.tsx +33 -0
- package/template/src/components/Footer.tsx +100 -0
- package/template/src/components/Header.tsx +79 -0
- package/template/src/components/Hero.tsx +69 -0
- package/template/src/components/LanguageSwitcher.tsx +47 -0
- package/template/src/components/Layout.tsx +25 -0
- package/template/src/components/Logo.tsx +64 -0
- package/template/src/components/ThemeSwitcher.tsx +58 -0
- package/template/src/components/ui/accordion.tsx +64 -0
- package/template/src/components/ui/alert-dialog.tsx +155 -0
- package/template/src/components/ui/alert.tsx +66 -0
- package/template/src/components/ui/aspect-ratio.tsx +11 -0
- package/template/src/components/ui/avatar.tsx +51 -0
- package/template/src/components/ui/badge.tsx +46 -0
- package/template/src/components/ui/breadcrumb.tsx +109 -0
- package/template/src/components/ui/button-group.tsx +83 -0
- package/template/src/components/ui/button.tsx +62 -0
- package/template/src/components/ui/calendar.tsx +220 -0
- package/template/src/components/ui/card.tsx +92 -0
- package/template/src/components/ui/carousel.tsx +239 -0
- package/template/src/components/ui/chart.tsx +357 -0
- package/template/src/components/ui/checkbox.tsx +32 -0
- package/template/src/components/ui/collapsible.tsx +31 -0
- package/template/src/components/ui/command.tsx +182 -0
- package/template/src/components/ui/context-menu.tsx +252 -0
- package/template/src/components/ui/dialog.tsx +141 -0
- package/template/src/components/ui/drawer.tsx +135 -0
- package/template/src/components/ui/dropdown-menu.tsx +255 -0
- package/template/src/components/ui/empty.tsx +104 -0
- package/template/src/components/ui/field.tsx +246 -0
- package/template/src/components/ui/form.tsx +168 -0
- package/template/src/components/ui/hover-card.tsx +44 -0
- package/template/src/components/ui/input-group.tsx +170 -0
- package/template/src/components/ui/input-otp.tsx +75 -0
- package/template/src/components/ui/input.tsx +21 -0
- package/template/src/components/ui/item.tsx +193 -0
- package/template/src/components/ui/kbd.tsx +28 -0
- package/template/src/components/ui/label.tsx +24 -0
- package/template/src/components/ui/menubar.tsx +274 -0
- package/template/src/components/ui/navigation-menu.tsx +168 -0
- package/template/src/components/ui/pagination.tsx +127 -0
- package/template/src/components/ui/popover.tsx +48 -0
- package/template/src/components/ui/progress.tsx +29 -0
- package/template/src/components/ui/radio-group.tsx +45 -0
- package/template/src/components/ui/resizable.tsx +54 -0
- package/template/src/components/ui/scroll-area.tsx +58 -0
- package/template/src/components/ui/select.tsx +188 -0
- package/template/src/components/ui/separator.tsx +28 -0
- package/template/src/components/ui/sheet.tsx +137 -0
- package/template/src/components/ui/sidebar.tsx +726 -0
- package/template/src/components/ui/skeleton.tsx +13 -0
- package/template/src/components/ui/slider.tsx +63 -0
- package/template/src/components/ui/sonner.tsx +38 -0
- package/template/src/components/ui/spinner.tsx +16 -0
- package/template/src/components/ui/switch.tsx +31 -0
- package/template/src/components/ui/table.tsx +114 -0
- package/template/src/components/ui/tabs.tsx +66 -0
- package/template/src/components/ui/textarea.tsx +18 -0
- package/template/src/components/ui/toggle-group.tsx +81 -0
- package/template/src/components/ui/toggle.tsx +45 -0
- package/template/src/components/ui/tooltip.tsx +61 -0
- package/template/src/constants/constants.json +58 -0
- package/template/src/hooks/use-is-mobile.ts +21 -0
- package/template/src/hooks/use-page-title.ts +49 -0
- package/template/src/hooks/use-theme.ts +57 -0
- package/template/src/index.css +128 -0
- package/template/src/lang/en/about.json +4 -0
- package/template/src/lang/en/contact.json +39 -0
- package/template/src/lang/en/cookies.json +4 -0
- package/template/src/lang/en/footer.json +12 -0
- package/template/src/lang/en/forgotPassword.json +37 -0
- package/template/src/lang/en/header.json +10 -0
- package/template/src/lang/en/hero.json +8 -0
- package/template/src/lang/en/index.json +30 -0
- package/template/src/lang/en/login.json +18 -0
- package/template/src/lang/en/notfound.json +7 -0
- package/template/src/lang/en/privacy.json +4 -0
- package/template/src/lang/en/register.json +25 -0
- package/template/src/lang/en/terms.json +4 -0
- package/template/src/lang/index.ts +86 -0
- package/template/src/lang/tr/about.json +4 -0
- package/template/src/lang/tr/contact.json +39 -0
- package/template/src/lang/tr/cookies.json +4 -0
- package/template/src/lang/tr/footer.json +12 -0
- package/template/src/lang/tr/forgotPassword.json +37 -0
- package/template/src/lang/tr/header.json +10 -0
- package/template/src/lang/tr/hero.json +8 -0
- package/template/src/lang/tr/index.json +30 -0
- package/template/src/lang/tr/login.json +18 -0
- package/template/src/lang/tr/notfound.json +7 -0
- package/template/src/lang/tr/privacy.json +4 -0
- package/template/src/lang/tr/register.json +25 -0
- package/template/src/lang/tr/terms.json +4 -0
- package/template/src/lib/api.ts +237 -0
- package/template/src/lib/storage.ts +109 -0
- package/template/src/lib/utils.ts +15 -0
- package/template/src/main.tsx +13 -0
- package/template/src/modules/api/USAGE.md +515 -0
- package/template/src/modules/api/customer-client.ts +20 -0
- package/template/src/modules/api/get-error-message.ts +18 -0
- package/template/src/modules/api/validation/en.json +29 -0
- package/template/src/modules/api/validation/tr.json +29 -0
- package/template/src/modules/auth/USAGE.md +248 -0
- package/template/src/modules/auth/auth-header-menu.tsx +123 -0
- package/template/src/modules/auth/auth-store.ts +57 -0
- package/template/src/modules/auth/forgot-password-page.tsx +371 -0
- package/template/src/modules/auth/login-page.tsx +183 -0
- package/template/src/modules/auth/register-page.tsx +252 -0
- package/template/src/modules/auth/use-auth.ts +273 -0
- package/template/src/modules/db/adapters/IDataAdapter.ts +26 -0
- package/template/src/modules/db/adapters/SqliteAdapter.ts +364 -0
- package/template/src/modules/db/adapters/index.ts +2 -0
- package/template/src/modules/db/config.ts +59 -0
- package/template/src/modules/db/core/DataManager.ts +125 -0
- package/template/src/modules/db/core/types.ts +101 -0
- package/template/src/modules/db/index.ts +42 -0
- package/template/src/modules/db/react/QueryProvider.tsx +16 -0
- package/template/src/modules/db/react/index.ts +23 -0
- package/template/src/modules/db/react/queryClient.ts +64 -0
- package/template/src/modules/db/react/useRepository.ts +400 -0
- package/template/src/modules/db/utils/parsers.ts +96 -0
- package/template/src/pages/Index.tsx +108 -0
- package/template/src/pages/NotFound.tsx +35 -0
- package/template/src/router.tsx +14 -0
- package/template/src/types/index.ts +0 -0
- package/template/src/vite-env.d.ts +1 -0
- package/template/tsconfig.app.json +32 -0
- package/template/tsconfig.json +17 -0
- package/template/tsconfig.node.json +26 -0
- package/template/vite.config.ts +74 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
|
|
3
|
+
export type Theme = "light" | "dark" | "system";
|
|
4
|
+
|
|
5
|
+
const THEME_KEY = "theme-preference";
|
|
6
|
+
|
|
7
|
+
function getSystemTheme(): "light" | "dark" {
|
|
8
|
+
if (typeof window === "undefined") return "light";
|
|
9
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
10
|
+
? "dark"
|
|
11
|
+
: "light";
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getStoredTheme(): Theme {
|
|
15
|
+
if (typeof window === "undefined") return "system";
|
|
16
|
+
const stored = localStorage.getItem(THEME_KEY);
|
|
17
|
+
if (stored === "light" || stored === "dark" || stored === "system") {
|
|
18
|
+
return stored;
|
|
19
|
+
}
|
|
20
|
+
return "system";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function applyTheme(theme: Theme) {
|
|
24
|
+
const root = document.documentElement;
|
|
25
|
+
const effectiveTheme = theme === "system" ? getSystemTheme() : theme;
|
|
26
|
+
|
|
27
|
+
if (effectiveTheme === "dark") {
|
|
28
|
+
root.classList.add("dark");
|
|
29
|
+
} else {
|
|
30
|
+
root.classList.remove("dark");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function useTheme() {
|
|
35
|
+
const [theme, setThemeState] = useState<Theme>(getStoredTheme);
|
|
36
|
+
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
applyTheme(theme);
|
|
39
|
+
localStorage.setItem(THEME_KEY, theme);
|
|
40
|
+
}, [theme]);
|
|
41
|
+
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (theme !== "system") return;
|
|
44
|
+
|
|
45
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
46
|
+
const handleChange = () => applyTheme("system");
|
|
47
|
+
|
|
48
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
49
|
+
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
50
|
+
}, [theme]);
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
theme,
|
|
54
|
+
setTheme: setThemeState,
|
|
55
|
+
effectiveTheme: theme === "system" ? getSystemTheme() : theme,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@import "tw-animate-css";
|
|
3
|
+
|
|
4
|
+
@custom-variant dark (&:is(.dark *));
|
|
5
|
+
|
|
6
|
+
@theme inline {
|
|
7
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
8
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
9
|
+
--radius-lg: var(--radius);
|
|
10
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
11
|
+
--radius-2xl: calc(var(--radius) + 8px);
|
|
12
|
+
--radius-3xl: calc(var(--radius) + 12px);
|
|
13
|
+
--radius-4xl: calc(var(--radius) + 16px);
|
|
14
|
+
--shadow-base: var(--shadow);
|
|
15
|
+
--font-mono: var(--font-mono);
|
|
16
|
+
--color-background: var(--background);
|
|
17
|
+
--color-foreground: var(--foreground);
|
|
18
|
+
--color-card: var(--card);
|
|
19
|
+
--color-card-foreground: var(--card-foreground);
|
|
20
|
+
--color-popover: var(--popover);
|
|
21
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
22
|
+
--color-primary: var(--primary);
|
|
23
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
24
|
+
--color-secondary: var(--secondary);
|
|
25
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
26
|
+
--color-muted: var(--muted);
|
|
27
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
28
|
+
--color-accent: var(--accent);
|
|
29
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
30
|
+
--color-destructive: var(--destructive);
|
|
31
|
+
--color-border: var(--border);
|
|
32
|
+
--color-input: var(--input);
|
|
33
|
+
--color-ring: var(--ring);
|
|
34
|
+
--color-chart-1: var(--chart-1);
|
|
35
|
+
--color-chart-2: var(--chart-2);
|
|
36
|
+
--color-chart-3: var(--chart-3);
|
|
37
|
+
--color-chart-4: var(--chart-4);
|
|
38
|
+
--color-chart-5: var(--chart-5);
|
|
39
|
+
--color-sidebar: var(--sidebar);
|
|
40
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
41
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
42
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
43
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
44
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
45
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
46
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:root {
|
|
50
|
+
--radius: 0.625rem;
|
|
51
|
+
--shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
52
|
+
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
53
|
+
--background: oklch(1 0 0);
|
|
54
|
+
--foreground: oklch(0.145 0 0);
|
|
55
|
+
--card: oklch(1 0 0);
|
|
56
|
+
--card-foreground: oklch(0.145 0 0);
|
|
57
|
+
--popover: oklch(1 0 0);
|
|
58
|
+
--popover-foreground: oklch(0.145 0 0);
|
|
59
|
+
--primary: oklch(0.541 0.281 293.009);
|
|
60
|
+
--primary-foreground: oklch(0.969 0.016 293.756);
|
|
61
|
+
--secondary: oklch(0.97 0 0);
|
|
62
|
+
--secondary-foreground: oklch(0.205 0 0);
|
|
63
|
+
--muted: oklch(0.97 0 0);
|
|
64
|
+
--muted-foreground: oklch(0.556 0 0);
|
|
65
|
+
--accent: oklch(0.97 0 0);
|
|
66
|
+
--accent-foreground: oklch(0.205 0 0);
|
|
67
|
+
--destructive: oklch(0.58 0.22 27);
|
|
68
|
+
--border: oklch(0.922 0 0);
|
|
69
|
+
--input: oklch(0.922 0 0);
|
|
70
|
+
--ring: oklch(0.708 0 0);
|
|
71
|
+
--chart-1: oklch(0.811 0.111 293.571);
|
|
72
|
+
--chart-2: oklch(0.606 0.25 292.717);
|
|
73
|
+
--chart-3: oklch(0.541 0.281 293.009);
|
|
74
|
+
--chart-4: oklch(0.491 0.27 292.581);
|
|
75
|
+
--chart-5: oklch(0.432 0.232 292.759);
|
|
76
|
+
--sidebar: oklch(0.985 0 0);
|
|
77
|
+
--sidebar-foreground: oklch(0.145 0 0);
|
|
78
|
+
--sidebar-primary: oklch(0.541 0.281 293.009);
|
|
79
|
+
--sidebar-primary-foreground: oklch(0.969 0.016 293.756);
|
|
80
|
+
--sidebar-accent: oklch(0.97 0 0);
|
|
81
|
+
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
82
|
+
--sidebar-border: oklch(0.922 0 0);
|
|
83
|
+
--sidebar-ring: oklch(0.708 0 0);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.dark {
|
|
87
|
+
--shadow: 0 1px 3px 0 rgb(0 0 0 / 0.3), 0 1px 2px -1px rgb(0 0 0 / 0.3);
|
|
88
|
+
--background: oklch(0.145 0 0);
|
|
89
|
+
--foreground: oklch(0.985 0 0);
|
|
90
|
+
--card: oklch(0.205 0 0);
|
|
91
|
+
--card-foreground: oklch(0.985 0 0);
|
|
92
|
+
--popover: oklch(0.205 0 0);
|
|
93
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
94
|
+
--primary: oklch(0.606 0.25 292.717);
|
|
95
|
+
--primary-foreground: oklch(0.969 0.016 293.756);
|
|
96
|
+
--secondary: oklch(0.269 0 0);
|
|
97
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
98
|
+
--muted: oklch(0.269 0 0);
|
|
99
|
+
--muted-foreground: oklch(0.708 0 0);
|
|
100
|
+
--accent: oklch(0.371 0 0);
|
|
101
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
102
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
103
|
+
--border: oklch(1 0 0 / 10%);
|
|
104
|
+
--input: oklch(1 0 0 / 15%);
|
|
105
|
+
--ring: oklch(0.556 0 0);
|
|
106
|
+
--chart-1: oklch(0.811 0.111 293.571);
|
|
107
|
+
--chart-2: oklch(0.606 0.25 292.717);
|
|
108
|
+
--chart-3: oklch(0.541 0.281 293.009);
|
|
109
|
+
--chart-4: oklch(0.491 0.27 292.581);
|
|
110
|
+
--chart-5: oklch(0.432 0.232 292.759);
|
|
111
|
+
--sidebar: oklch(0.205 0 0);
|
|
112
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
113
|
+
--sidebar-primary: oklch(0.606 0.25 292.717);
|
|
114
|
+
--sidebar-primary-foreground: oklch(0.969 0.016 293.756);
|
|
115
|
+
--sidebar-accent: oklch(0.269 0 0);
|
|
116
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
117
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
118
|
+
--sidebar-ring: oklch(0.556 0 0);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@layer base {
|
|
122
|
+
* {
|
|
123
|
+
@apply border-border outline-ring/50;
|
|
124
|
+
}
|
|
125
|
+
body {
|
|
126
|
+
@apply bg-background text-foreground;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Contact Us",
|
|
3
|
+
"getInTouch": "Get in Touch",
|
|
4
|
+
"emailUs": "Email Us",
|
|
5
|
+
"callUs": "Call Us",
|
|
6
|
+
"visitUs": "Visit Us",
|
|
7
|
+
"businessHours": "Business Hours",
|
|
8
|
+
"sendMessage": "Send us a Message",
|
|
9
|
+
"formNotAvailable": "Form is not available at the moment.",
|
|
10
|
+
"fullName": "Full Name",
|
|
11
|
+
"emailAddress": "Email Address",
|
|
12
|
+
"phoneNumber": "Phone Number",
|
|
13
|
+
"subject": "Subject",
|
|
14
|
+
"message": "Message",
|
|
15
|
+
"submit": "Send Message",
|
|
16
|
+
"sending": "Sending...",
|
|
17
|
+
"success": "Thank you for your message! We will get back to you soon.",
|
|
18
|
+
"error": "Failed to send message. Please try again later.",
|
|
19
|
+
"description": "Have questions about our content or need support? We're here to help! Get in touch with us through any of the methods below.",
|
|
20
|
+
"email": "Email",
|
|
21
|
+
"phone": "Phone",
|
|
22
|
+
"address": "Address",
|
|
23
|
+
"fullNamePlaceholder": "Your full name",
|
|
24
|
+
"emailPlaceholder": "your@email.com",
|
|
25
|
+
"phonePlaceholder": "+1 (555) 123-4567",
|
|
26
|
+
"subjectPlaceholder": "What is this regarding?",
|
|
27
|
+
"messagePlaceholder": "Tell us how we can help you...",
|
|
28
|
+
"loading": "Loading contact information...",
|
|
29
|
+
"emailResponse": "We typically respond within 24 hours",
|
|
30
|
+
"needSupport": "Need Support?",
|
|
31
|
+
"supportDescription": "For technical support or content inquiries, contact our dedicated support team:",
|
|
32
|
+
"supportEmail": "Support Email",
|
|
33
|
+
"monday_friday": "Monday - Friday",
|
|
34
|
+
"saturday": "Saturday",
|
|
35
|
+
"sunday": "Sunday",
|
|
36
|
+
"closed": "Closed",
|
|
37
|
+
"am": "AM",
|
|
38
|
+
"pm": "PM"
|
|
39
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": "Company",
|
|
3
|
+
"aboutUs": "About Us",
|
|
4
|
+
"contactUs": "Contact Us",
|
|
5
|
+
"getInTouch": "Get in Touch",
|
|
6
|
+
"description": "Discover sustainable, high-quality products that make a difference. Shop with purpose, live with intention.",
|
|
7
|
+
"allRightsReserved": "All rights reserved.",
|
|
8
|
+
"privacyPolicy": "Privacy Policy",
|
|
9
|
+
"termsOfService": "Terms of Service",
|
|
10
|
+
"cookiePolicy": "Cookie Policy",
|
|
11
|
+
"copyright": "© 2026 {{siteName}}. All rights reserved."
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Forgot Password",
|
|
3
|
+
"descriptionRequest": "Enter your username and we'll send you a code to reset your password.",
|
|
4
|
+
"descriptionReset": "Enter the code sent to your email and your new password.",
|
|
5
|
+
"cardTitleRequest": "Request Reset Code",
|
|
6
|
+
"cardTitleReset": "Reset Password",
|
|
7
|
+
"cardDescRequest": "Step 1 of 2: Request a reset code",
|
|
8
|
+
"cardDescReset": "Step 2 of 2: Enter code and new password",
|
|
9
|
+
"username": "Username",
|
|
10
|
+
"usernamePlaceholder": "Enter your username",
|
|
11
|
+
"code": "Reset Code",
|
|
12
|
+
"codePlaceholder": "Enter 6-digit code",
|
|
13
|
+
"newPassword": "New Password",
|
|
14
|
+
"newPasswordPlaceholder": "Enter new password",
|
|
15
|
+
"confirmPassword": "Confirm Password",
|
|
16
|
+
"confirmPasswordPlaceholder": "Confirm new password",
|
|
17
|
+
"passwordRequirements": "At least 8 characters, 1 letter and 1 number",
|
|
18
|
+
"sendCode": "Send Reset Code",
|
|
19
|
+
"sending": "Sending...",
|
|
20
|
+
"resetPassword": "Reset Password",
|
|
21
|
+
"resetting": "Resetting...",
|
|
22
|
+
"backToLogin": "Back to Login",
|
|
23
|
+
"changeUsername": "Change username",
|
|
24
|
+
"resendCode": "Resend code",
|
|
25
|
+
"codeFor": "Reset code for:",
|
|
26
|
+
"codeSentTitle": "Code Sent!",
|
|
27
|
+
"codeSentDesc": "A password reset code has been sent to your email.",
|
|
28
|
+
"resetSuccessTitle": "Password Reset!",
|
|
29
|
+
"resetSuccessDesc": "Your password has been successfully reset.",
|
|
30
|
+
"successTitle": "Password Reset Successfully!",
|
|
31
|
+
"successDescription": "Your password has been changed. You can now login with your new password.",
|
|
32
|
+
"goToLogin": "Go to Login",
|
|
33
|
+
"passwordMismatch": "Passwords do not match",
|
|
34
|
+
"errorTitle": "Error",
|
|
35
|
+
"errorGeneric": "Failed to send reset code. Please try again.",
|
|
36
|
+
"errorResetGeneric": "Failed to reset password. Please try again."
|
|
37
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"discover": "Discover",
|
|
3
|
+
"amazing": "Inspiring",
|
|
4
|
+
"content": "Stories",
|
|
5
|
+
"subtitle": "Dive into a world of captivating narratives, expert insights, and thought-provoking content that inspires and educates.",
|
|
6
|
+
"readLatest": "Start Reading",
|
|
7
|
+
"exploreTopics": "Explore Topics"
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": "Home",
|
|
3
|
+
"ourServices": "Our Services",
|
|
4
|
+
"servicesOverview": "We provide comprehensive solutions to help your business succeed in the digital world.",
|
|
5
|
+
"viewAllServices": "View All Services",
|
|
6
|
+
"aboutCompany": "About Our Company",
|
|
7
|
+
"aboutDescription": "We are a team of passionate professionals dedicated to delivering exceptional digital solutions that drive business growth and success.",
|
|
8
|
+
"readyToStart": "Ready to Start Your Project?",
|
|
9
|
+
"ctaDescription": "Let's discuss your needs and create a solution that drives results for your business.",
|
|
10
|
+
"webDevelopment": "Web Development",
|
|
11
|
+
"webDevelopmentDesc": "Custom websites and applications",
|
|
12
|
+
"digitalMarketing": "Digital Marketing",
|
|
13
|
+
"digitalMarketingDesc": "Grow your online presence",
|
|
14
|
+
"uiuxDesign": "UI/UX Design",
|
|
15
|
+
"uiuxDesignDesc": "Beautiful user experiences",
|
|
16
|
+
"consulting": "Consulting",
|
|
17
|
+
"consultingDesc": "Strategic business guidance",
|
|
18
|
+
"projectsCompleted": "Projects Completed",
|
|
19
|
+
"happyClients": "Happy Clients",
|
|
20
|
+
"yearsExperience": "Years Experience",
|
|
21
|
+
"supportAvailable": "Support Available",
|
|
22
|
+
"learnMore": "Learn More",
|
|
23
|
+
"expertTeam": "Expert team with 5+ years experience",
|
|
24
|
+
"clientSatisfaction": "100% client satisfaction guarantee",
|
|
25
|
+
"modernTech": "Modern technologies and best practices",
|
|
26
|
+
"meetOurTeam": "Meet Our Team",
|
|
27
|
+
"companyImage": "Company Image",
|
|
28
|
+
"getFreeQuote": "Get Free Quote",
|
|
29
|
+
"viewOurWork": "View Our Work"
|
|
30
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Login",
|
|
3
|
+
"description": "Sign in to your account to access your orders, favorites, and more.",
|
|
4
|
+
"cardTitle": "Sign In",
|
|
5
|
+
"username": "Username",
|
|
6
|
+
"usernamePlaceholder": "Enter your username",
|
|
7
|
+
"password": "Password",
|
|
8
|
+
"passwordPlaceholder": "Enter your password",
|
|
9
|
+
"forgotPassword": "Forgot password?",
|
|
10
|
+
"submit": "Sign In",
|
|
11
|
+
"submitting": "Signing in...",
|
|
12
|
+
"noAccount": "Don't have an account?",
|
|
13
|
+
"registerLink": "Create one",
|
|
14
|
+
"toastSuccessTitle": "Welcome back!",
|
|
15
|
+
"toastSuccessDesc": "You have successfully logged in.",
|
|
16
|
+
"toastErrorTitle": "Login failed",
|
|
17
|
+
"errorGeneric": "Login failed. Please try again."
|
|
18
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pageNotFound": "Page Not Found",
|
|
3
|
+
"pageNotFoundDev": "You haven't created this page yet",
|
|
4
|
+
"description": "Sorry, we couldn't find the page you're looking for. It may have been moved or doesn't exist.",
|
|
5
|
+
"descriptionDev": "Use Promake to build this page.",
|
|
6
|
+
"goHome": "Go Home"
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Create Account",
|
|
3
|
+
"description": "Join us today and enjoy exclusive benefits, order tracking, and more.",
|
|
4
|
+
"cardTitle": "Register",
|
|
5
|
+
"username": "Username",
|
|
6
|
+
"usernamePlaceholder": "Choose a username",
|
|
7
|
+
"email": "Email",
|
|
8
|
+
"emailPlaceholder": "Enter your email",
|
|
9
|
+
"password": "Password",
|
|
10
|
+
"passwordPlaceholder": "Create a password",
|
|
11
|
+
"confirmPassword": "Confirm Password",
|
|
12
|
+
"confirmPasswordPlaceholder": "Confirm your password",
|
|
13
|
+
"submit": "Create Account",
|
|
14
|
+
"submitting": "Creating account...",
|
|
15
|
+
"hasAccount": "Already have an account?",
|
|
16
|
+
"loginLink": "Sign in",
|
|
17
|
+
"passwordMismatch": "Passwords do not match",
|
|
18
|
+
"toastSuccessTitle": "Account created!",
|
|
19
|
+
"toastSuccessDesc": "Please check your email to verify your account.",
|
|
20
|
+
"toastErrorTitle": "Registration failed",
|
|
21
|
+
"errorGeneric": "Registration failed. Please try again.",
|
|
22
|
+
"successTitle": "Account Created!",
|
|
23
|
+
"successMessage": "Please check your email to verify your account before logging in.",
|
|
24
|
+
"goToLogin": "Go to Login"
|
|
25
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import i18n from "i18next";
|
|
2
|
+
import { initReactI18next } from "react-i18next";
|
|
3
|
+
import LanguageDetector from "i18next-browser-languagedetector";
|
|
4
|
+
|
|
5
|
+
import constants from "@/constants/constants.json";
|
|
6
|
+
|
|
7
|
+
// Auto-import translations from two locations:
|
|
8
|
+
// 1. Core: @/lang/{lang}/{namespace}.json (e.g., lang/en/header.json)
|
|
9
|
+
// 2. Modules: @/modules/{namespace}/lang/{lang}.json (e.g., modules/about-page/lang/en.json)
|
|
10
|
+
const coreLangs = import.meta.glob("@/lang/*/*.json", { eager: true });
|
|
11
|
+
const moduleLangs = import.meta.glob("@/modules/*/lang/*.json", { eager: true });
|
|
12
|
+
|
|
13
|
+
// Get available languages from config
|
|
14
|
+
const availableLanguages =
|
|
15
|
+
Object.keys(constants?.site?.availableLanguages || {}) || [];
|
|
16
|
+
|
|
17
|
+
// Build resources object: { en: { header: {...}, about-page: {...} }, tr: {...} }
|
|
18
|
+
const resources: Record<string, Record<string, any>> = {};
|
|
19
|
+
|
|
20
|
+
// Process core translations: /lang/{lang}/{namespace}.json
|
|
21
|
+
Object.entries(coreLangs).forEach(([path, module]) => {
|
|
22
|
+
const match = path.match(/\/lang\/([^/]+)\/([^/]+)\.json$/);
|
|
23
|
+
if (match) {
|
|
24
|
+
const [, lang, namespace] = match;
|
|
25
|
+
if (!availableLanguages.includes(lang)) return;
|
|
26
|
+
if (!resources[lang]) resources[lang] = {};
|
|
27
|
+
resources[lang][namespace] = (module as any).default || module;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Process module translations: /modules/{namespace}/lang/{lang}.json
|
|
32
|
+
Object.entries(moduleLangs).forEach(([path, module]) => {
|
|
33
|
+
const match = path.match(/\/modules\/([^/]+)\/lang\/([^/]+)\.json$/);
|
|
34
|
+
if (match) {
|
|
35
|
+
const [, namespace, lang] = match;
|
|
36
|
+
if (!availableLanguages.includes(lang)) return;
|
|
37
|
+
if (!resources[lang]) resources[lang] = {};
|
|
38
|
+
resources[lang][namespace] = (module as any).default || module;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Custom detector for cached settings
|
|
43
|
+
const settingsDetector = {
|
|
44
|
+
name: "settingsDetector",
|
|
45
|
+
lookup() {
|
|
46
|
+
if (constants.site.overrideBrowserLanguage) {
|
|
47
|
+
return constants?.site?.defaultLanguage;
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
},
|
|
51
|
+
cacheUserLanguage() {
|
|
52
|
+
// Don't cache - settings detector is read-only
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Create detector instance and add custom detector
|
|
57
|
+
const languageDetector = new LanguageDetector();
|
|
58
|
+
languageDetector.addDetector(settingsDetector);
|
|
59
|
+
|
|
60
|
+
i18n
|
|
61
|
+
.use(languageDetector)
|
|
62
|
+
.use(initReactI18next)
|
|
63
|
+
.init({
|
|
64
|
+
resources,
|
|
65
|
+
fallbackLng: constants?.site?.defaultLanguage || "en",
|
|
66
|
+
supportedLngs: availableLanguages,
|
|
67
|
+
detection: {
|
|
68
|
+
// Priority: localStorage > settings > browser
|
|
69
|
+
order: ["localStorage", "settingsDetector", "navigator"],
|
|
70
|
+
lookupLocalStorage: "i18nextLng",
|
|
71
|
+
caches: ["localStorage"],
|
|
72
|
+
},
|
|
73
|
+
interpolation: {
|
|
74
|
+
escapeValue: false,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Helper to change language and persist to localStorage
|
|
79
|
+
export const changeLanguage = (lang: string) => {
|
|
80
|
+
if (availableLanguages.includes(lang)) {
|
|
81
|
+
i18n.changeLanguage(lang);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export { availableLanguages };
|
|
86
|
+
export default i18n;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "İletişim",
|
|
3
|
+
"getInTouch": "Bize Ulaşın",
|
|
4
|
+
"emailUs": "E-posta Gönderin",
|
|
5
|
+
"callUs": "Bizi Arayın",
|
|
6
|
+
"visitUs": "Bizi Ziyaret Edin",
|
|
7
|
+
"businessHours": "Çalışma Saatleri",
|
|
8
|
+
"sendMessage": "Bize Mesaj Gönderin",
|
|
9
|
+
"formNotAvailable": "Form şu anda kullanılamıyor.",
|
|
10
|
+
"fullName": "Ad Soyad",
|
|
11
|
+
"emailAddress": "E-posta Adresi",
|
|
12
|
+
"phoneNumber": "Telefon Numarası",
|
|
13
|
+
"subject": "Konu",
|
|
14
|
+
"message": "Mesaj",
|
|
15
|
+
"submit": "Mesaj Gönder",
|
|
16
|
+
"sending": "Gönderiliyor...",
|
|
17
|
+
"success": "Mesajınız için teşekkürler! En kısa sürede size dönüş yapacağız.",
|
|
18
|
+
"error": "Mesaj gönderilemedi. Lütfen tekrar deneyin.",
|
|
19
|
+
"description": "Ürünlerimiz hakkında sorularınız mı var veya desteğe mi ihtiyacınız var? Size yardımcı olmak için buradayız! Aşağıdaki yöntemlerden herhangi biri ile bizimle iletişime geçin.",
|
|
20
|
+
"email": "E-posta",
|
|
21
|
+
"phone": "Telefon",
|
|
22
|
+
"address": "Adres",
|
|
23
|
+
"fullNamePlaceholder": "Adınız ve soyadınız",
|
|
24
|
+
"emailPlaceholder": "eposta@adresiniz.com",
|
|
25
|
+
"phonePlaceholder": "+90 5XX XXX XX XX",
|
|
26
|
+
"subjectPlaceholder": "Konu nedir?",
|
|
27
|
+
"messagePlaceholder": "Size nasıl yardımcı olabiliriz...",
|
|
28
|
+
"loading": "İletişim bilgileri yükleniyor...",
|
|
29
|
+
"emailResponse": "Genellikle 24 saat içinde yanıt veririz",
|
|
30
|
+
"needSupport": "Desteğe İhtiyacınız mı Var?",
|
|
31
|
+
"supportDescription": "Teknik destek veya sipariş sorularınız için özel destek ekibimizle iletişime geçin:",
|
|
32
|
+
"supportEmail": "Destek E-postası",
|
|
33
|
+
"monday_friday": "Pazartesi - Cuma",
|
|
34
|
+
"saturday": "Cumartesi",
|
|
35
|
+
"sunday": "Pazar",
|
|
36
|
+
"closed": "Kapalı",
|
|
37
|
+
"am": "",
|
|
38
|
+
"pm": ""
|
|
39
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": "Şirket",
|
|
3
|
+
"aboutUs": "Hakkımızda",
|
|
4
|
+
"contactUs": "İletişim",
|
|
5
|
+
"getInTouch": "Bize Ulaşın",
|
|
6
|
+
"description": "Fark yaratan sürdürülebilir, yüksek kaliteli ürünleri keşfedin. Bilinçli alışveriş yapın, bilinçli yaşayın.",
|
|
7
|
+
"allRightsReserved": "Tüm hakları saklıdır.",
|
|
8
|
+
"privacyPolicy": "Gizlilik Politikası",
|
|
9
|
+
"termsOfService": "Kullanım Şartları",
|
|
10
|
+
"cookiePolicy": "Çerez Politikası",
|
|
11
|
+
"copyright": "© 2026 {{siteName}}. Tüm hakları saklıdır."
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Şifremi Unuttum",
|
|
3
|
+
"descriptionRequest": "Kullanıcı adınızı girin, şifre sıfırlama kodu göndereceğiz.",
|
|
4
|
+
"descriptionReset": "E-postanıza gönderilen kodu ve yeni şifrenizi girin.",
|
|
5
|
+
"cardTitleRequest": "Sıfırlama Kodu İste",
|
|
6
|
+
"cardTitleReset": "Şifre Sıfırla",
|
|
7
|
+
"cardDescRequest": "Adım 1/2: Sıfırlama kodu isteyin",
|
|
8
|
+
"cardDescReset": "Adım 2/2: Kodu ve yeni şifreyi girin",
|
|
9
|
+
"username": "Kullanıcı Adı",
|
|
10
|
+
"usernamePlaceholder": "Kullanıcı adınızı girin",
|
|
11
|
+
"code": "Sıfırlama Kodu",
|
|
12
|
+
"codePlaceholder": "6 haneli kodu girin",
|
|
13
|
+
"newPassword": "Yeni Şifre",
|
|
14
|
+
"newPasswordPlaceholder": "Yeni şifrenizi girin",
|
|
15
|
+
"confirmPassword": "Şifreyi Onayla",
|
|
16
|
+
"confirmPasswordPlaceholder": "Yeni şifrenizi tekrar girin",
|
|
17
|
+
"passwordRequirements": "En az 8 karakter, 1 harf ve 1 rakam",
|
|
18
|
+
"sendCode": "Sıfırlama Kodu Gönder",
|
|
19
|
+
"sending": "Gönderiliyor...",
|
|
20
|
+
"resetPassword": "Şifreyi Sıfırla",
|
|
21
|
+
"resetting": "Sıfırlanıyor...",
|
|
22
|
+
"backToLogin": "Giriş Sayfasına Dön",
|
|
23
|
+
"changeUsername": "Kullanıcı adını değiştir",
|
|
24
|
+
"resendCode": "Kodu tekrar gönder",
|
|
25
|
+
"codeFor": "Sıfırlama kodu:",
|
|
26
|
+
"codeSentTitle": "Kod Gönderildi!",
|
|
27
|
+
"codeSentDesc": "Şifre sıfırlama kodu e-posta adresinize gönderildi.",
|
|
28
|
+
"resetSuccessTitle": "Şifre Sıfırlandı!",
|
|
29
|
+
"resetSuccessDesc": "Şifreniz başarıyla sıfırlandı.",
|
|
30
|
+
"successTitle": "Şifre Başarıyla Sıfırlandı!",
|
|
31
|
+
"successDescription": "Şifreniz değiştirildi. Artık yeni şifrenizle giriş yapabilirsiniz.",
|
|
32
|
+
"goToLogin": "Giriş Yap",
|
|
33
|
+
"passwordMismatch": "Şifreler eşleşmiyor",
|
|
34
|
+
"errorTitle": "Hata",
|
|
35
|
+
"errorGeneric": "Sıfırlama kodu gönderilemedi. Lütfen tekrar deneyin.",
|
|
36
|
+
"errorResetGeneric": "Şifre sıfırlanamadı. Lütfen tekrar deneyin."
|
|
37
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"discover": "Keşfedin",
|
|
3
|
+
"amazing": "İlham Verici",
|
|
4
|
+
"content": "Hikayeler",
|
|
5
|
+
"subtitle": "Büyüleyici anlatılar, uzman görüşleri ve ilham veren, eğiten düşündürücü içeriklerle dolu bir dünyaya dalın.",
|
|
6
|
+
"readLatest": "Okumaya Başlayın",
|
|
7
|
+
"exploreTopics": "Konuları Keşfedin"
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": "Ana Sayfa",
|
|
3
|
+
"ourServices": "Hizmetlerimiz",
|
|
4
|
+
"servicesOverview": "İşletmenizin günümüzün rekabetçi dünyasında başarılı olması için kapsamlı çözümler sunuyoruz.",
|
|
5
|
+
"viewAllServices": "Tüm Hizmetleri Görüntüle",
|
|
6
|
+
"aboutCompany": "Şirketimiz Hakkında",
|
|
7
|
+
"aboutDescription": "İş büyümesi ve başarısını destekleyen istisnai dijital çözümler sunmaya odaklanmış tutkulu profesyonellerden oluşan bir ekibiz.",
|
|
8
|
+
"readyToStart": "Projenizi Başlatmaya Hazır mısınız?",
|
|
9
|
+
"ctaDescription": "İhtiyaçlarınızı görüşelim ve işletmeniz için sonuç getiren bir çözüm oluşturalım.",
|
|
10
|
+
"webDevelopment": "Web Geliştirme",
|
|
11
|
+
"webDevelopmentDesc": "Özel web siteleri ve uygulamalar",
|
|
12
|
+
"digitalMarketing": "Dijital Pazarlama",
|
|
13
|
+
"digitalMarketingDesc": "Online varlığınızı büyütün",
|
|
14
|
+
"uiuxDesign": "UI/UX Tasarım",
|
|
15
|
+
"uiuxDesignDesc": "Güzel kullanıcı deneyimleri",
|
|
16
|
+
"consulting": "Danışmanlık",
|
|
17
|
+
"consultingDesc": "Stratejik iş rehberliği",
|
|
18
|
+
"projectsCompleted": "Tamamlanan Proje",
|
|
19
|
+
"happyClients": "Mutlu Müşteri",
|
|
20
|
+
"yearsExperience": "Yıllık Deneyim",
|
|
21
|
+
"supportAvailable": "Destek Mevcut",
|
|
22
|
+
"learnMore": "Daha Fazla Öğren",
|
|
23
|
+
"expertTeam": "5+ yıllık deneyime sahip uzman ekip",
|
|
24
|
+
"clientSatisfaction": "%100 müşteri memnuniyeti garantisi",
|
|
25
|
+
"modernTech": "Modern teknolojiler ve en iyi uygulamalar",
|
|
26
|
+
"meetOurTeam": "Ekibimizle Tanışın",
|
|
27
|
+
"companyImage": "Şirket Görseli",
|
|
28
|
+
"getFreeQuote": "Ücretsiz Teklif Al",
|
|
29
|
+
"viewOurWork": "Çalışmalarımızı Gör"
|
|
30
|
+
}
|