initial commit. Cloned timetracker repository
This commit is contained in:
38
bo/src/components/TopBarLogin.vue
Normal file
38
bo/src/components/TopBarLogin.vue
Normal file
@@ -0,0 +1,38 @@
|
||||
<script setup lang="ts">
|
||||
import HomeView from '@/views/HomeView.vue';
|
||||
import LangSwitch from './inner/langSwitch.vue'
|
||||
import ThemeSwitch from './inner/themeSwitch.vue'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
|
||||
const authStore = useAuthStore()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<header
|
||||
class="fixed top-0 left-0 right-0 z-50 bg-white/80 dark:bg-(--black) backdrop-blur-md border-b border-(--border-light) dark:border-(--border-dark)">
|
||||
<div class="container px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex items-center justify-between h-14">
|
||||
<!-- Logo -->
|
||||
<RouterLink :to="{ name: 'home' }" class="flex items-center gap-2">
|
||||
<div class="w-8 h-8 rounded-lg bg-primary text-white flex items-center justify-center">
|
||||
<UIcon name="i-heroicons-clock" class="w-5 h-5" />
|
||||
</div>
|
||||
<span class="font-semibold text-gray-900 dark:text-white">TimeTracker</span>
|
||||
</RouterLink>
|
||||
<!-- Right Side Actions -->
|
||||
<HomeView />
|
||||
<div class="flex items-center gap-2">
|
||||
<!-- Language Switcher -->
|
||||
<LangSwitch />
|
||||
<!-- Theme Switcher -->
|
||||
<ThemeSwitch />
|
||||
<!-- Logout Button (only when authenticated) -->
|
||||
<button v-if="authStore.isAuthenticated" @click="authStore.logout()"
|
||||
class="px-3 py-1.5 text-sm font-medium text-gray-700 dark:text-gray-200 hover:text-primary dark:hover:text-primary hover:bg-gray-100 dark:hover:bg-gray-800 rounded-lg transition-colors">
|
||||
Logout
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
15
bo/src/components/custom/Button.vue
Normal file
15
bo/src/components/custom/Button.vue
Normal file
@@ -0,0 +1,15 @@
|
||||
<template>
|
||||
<button :type="type" :disabled="disabled"
|
||||
:class="['px-[25px] h-[43px] leading-none rounded-md text-[15px] sm:text-[16px] dark:text-white text-black',
|
||||
fillType === 'border' ? 'border border-(--border-light) dark:border-(--border-dark)' : false,]">
|
||||
<slot />
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
withDefaults(defineProps<{ type?: 'button' | 'submit', fillType?: 'border', disabled?: boolean }>(), {
|
||||
type: 'button',
|
||||
fillType: 'border',
|
||||
disabled: false,
|
||||
})
|
||||
</script>
|
||||
0
bo/src/components/custom/Input.vue
Normal file
0
bo/src/components/custom/Input.vue
Normal file
71
bo/src/components/inner/langSwitch.vue
Normal file
71
bo/src/components/inner/langSwitch.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<template>
|
||||
<USelectMenu v-model="locale" :items="langs"
|
||||
class="w-40 bg-white dark:bg-(--black) rounded-md shadow-sm hover:none!"
|
||||
valueKey="iso_code" :searchInput="false">
|
||||
<template #default="{ modelValue }">
|
||||
<div class="flex items-center gap-1">
|
||||
<span class="text-md dark:text-white text-black">{{langs.find(x => x.iso_code == modelValue)?.flag}}</span>
|
||||
<span class="font-medium dark:text-white text-black">{{langs.find(x => x.iso_code == modelValue)?.name}}</span>
|
||||
</div>
|
||||
</template>
|
||||
<template #item-leading="{ item }">
|
||||
<div class="flex items-center rounded-md cursor-pointer transition-colors">
|
||||
<span class="text-md ">{{ item.flag }}</span>
|
||||
<span class="ml-2 dark:text-white text-black font-medium">{{ item.name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</USelectMenu>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { langs, currentLang } from '@/router/langs'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import { useCookie } from '@/composable/useCookie'
|
||||
import { computed, watch } from 'vue'
|
||||
import { i18n } from '@/plugins/i18n'
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
|
||||
const cookie = useCookie()
|
||||
|
||||
const locale = computed({
|
||||
get() {
|
||||
return currentLang.value?.iso_code || i18n.locale.value
|
||||
},
|
||||
set(value: string) {
|
||||
i18n.locale.value = value
|
||||
currentLang.value = langs.find((x) => x.iso_code == value)
|
||||
|
||||
// Update URL to reflect language change
|
||||
const currentPath = route.path
|
||||
const pathParts = currentPath.split('/').filter(Boolean)
|
||||
|
||||
cookie.setCookie('lang_id', `${langs.find((x) => x.iso_code == value)?.id}`, { days: 60, secure: true, sameSite: 'Lax' })
|
||||
|
||||
if (pathParts.length > 0) {
|
||||
// Check if first part is a locale
|
||||
const isLocale = langs.some((l) => l.lang_code === pathParts[0])
|
||||
if (isLocale) {
|
||||
// Replace existing locale
|
||||
pathParts[0] = value
|
||||
router.replace({ path: '/' + pathParts.join('/'), query: route.query })
|
||||
} else {
|
||||
// Add locale to path
|
||||
router.replace({ path: '/' + value + currentPath, query: route.query })
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// Sync i18n locale with router locale on initial load
|
||||
watch(
|
||||
() => route.params.locale,
|
||||
(newLocale) => {
|
||||
if (newLocale && typeof newLocale === 'string') {
|
||||
i18n.locale.value = newLocale
|
||||
currentLang.value = langs.find((x) => x.iso_code == newLocale)
|
||||
}
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
</script>
|
||||
12
bo/src/components/inner/themeSwitch.vue
Normal file
12
bo/src/components/inner/themeSwitch.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<UButton variant="ghost" size="sm" @click="themeStorage.setTheme()">
|
||||
<span class="hidden sm:inline">
|
||||
<UIcon class="size-5" :name="themeStorage.themeIcon" />
|
||||
</span>
|
||||
</UButton>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useThemeStore } from '@/stores/theme'
|
||||
const themeStorage = useThemeStore()
|
||||
</script>
|
||||
124
bo/src/components/terms/cs_PrivacyPolicyView.vue
Normal file
124
bo/src/components/terms/cs_PrivacyPolicyView.vue
Normal file
@@ -0,0 +1,124 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-12">
|
||||
<div class="inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30">
|
||||
<UIcon name="i-heroicons-shield-check" class="w-8 h-8" />
|
||||
</div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-white">Zásady ochrany osobních údajů</h1>
|
||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Poslední aktualizace: březen 2026</p>
|
||||
</div>
|
||||
|
||||
<!-- Content Card -->
|
||||
<UCard class="shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50">
|
||||
<div class="prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6">
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">1. Úvod</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
V TimeTracker bereme vaše soukromí vážně. Tyto Zásady ochrany osobních údajů vysvětlují, jak shromažďujeme, používáme, sdílíme a chráníme vaše
|
||||
informace při používání naší aplikace.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">2. Informace, které shromažďujeme</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Můžeme shromažďovat osobní údaje, které nám dobrovolně poskytujete, když:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Registrujete účet</li>
|
||||
<li>Používáte funkce sledování času</li>
|
||||
<li>Vytváříte nebo spravujete projekty</li>
|
||||
<li>Generujete reporty</li>
|
||||
<li>Kontaktujete naši podporu</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">3. Jak používáme vaše informace</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Shromážděné informace používáme k:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Poskytování a údržbě našich služeb</li>
|
||||
<li>Sledování vašeho času a správě projektů</li>
|
||||
<li>Zlepšování našich služeb a uživatelského zážitku</li>
|
||||
<li>Komunikaci s vámi ohledně aktualizací a podpory</li>
|
||||
<li>Plnění právních povinností</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">4. Ukládání a zabezpečení dat</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Vaše data jsou bezpečně ukládána pomocí šifrování podle průmyslových standardů. Implementujeme vhodná technická a organizační opatření na ochranu
|
||||
vašich osobních údajů před neoprávněným přístupem, změnou, zveřejněním nebo zničením.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">5. Sdílení dat</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Vaše osobní údaje neprodáváme, nevyměňujeme ani jinak nepřevádíme třetím stranám. Můžeme sdílet informace s:
|
||||
</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Poskytovateli služeb, kteří nám pomáhají</li>
|
||||
<li>Právními orgány, když to vyžaduje zákon</li>
|
||||
<li>Obchodními partnery s vaším souhlasem</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">6. Vaše práva</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Máte právo na:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Přístup k vašim osobním údajům</li>
|
||||
<li>Opravu nepřesných údajů</li>
|
||||
<li>Žádost o smazání vašich údajů</li>
|
||||
<li>Export vašich dat v přenosném formátu</li>
|
||||
<li>Odhlášení z marketingových sdělení</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">7. Cookies a sledovací technologie</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Používáme cookies a podobné sledovací technologie pro zlepšení vašeho zážitku. Cookies můžete ovládat prostřednictvím nastavení prohlížeče.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">8. Soukromí dětí</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Naše služba není určena pro děti mladší 13 let. Vědomě neshromažďujeme osobní údaje od dětí mladších 13 let.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">9. Změny těchto zásad</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Tyto Zásady ochrany osobních údajů můžeme čas od času aktualizovat. Jakékoli změny vám oznámíme zveřejněním nových zásad na této stránce a
|
||||
aktualizací data "Poslední aktualizace".
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">10. Kontaktujte nás</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Máte-li jakékoli dotazy ohledně těchto Zásad ochrany osobních údajů, kontaktujte nás na adrese privacy@timetracker.com.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="flex justify-center"></div>
|
||||
</template>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
103
bo/src/components/terms/cs_TermsAndConditionsView.vue
Normal file
103
bo/src/components/terms/cs_TermsAndConditionsView.vue
Normal file
@@ -0,0 +1,103 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-12">
|
||||
<div class="inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30">
|
||||
<UIcon name="i-heroicons-document-text" class="w-8 h-8" />
|
||||
</div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-white">Podmínky použití</h1>
|
||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Poslední aktualizace: březen 2026</p>
|
||||
</div>
|
||||
|
||||
<!-- Content Card -->
|
||||
<UCard class="shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50">
|
||||
<div class="prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6">
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">1. Přijetí podmínek</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Používáním aplikace TimeTracker souhlasíte a zavazujete se dodržovat podmínky a ustanovení této dohody.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">2. Popis služby</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
TimeTracker je aplikace pro sledování času, která uživatelům umožňuje sledovat pracovní hodiny, spravovat projekty a generovat reporty.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">3. Odpovědnosti uživatele</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Souhlasíte s:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Poskytováním přesných a úplných informací</li>
|
||||
<li>Udržováním bezpečnosti svého účtu</li>
|
||||
<li>Nesdílením přihlašovacích údajů s ostatními</li>
|
||||
<li>Používáním služby v souladu s platnými zákony</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">4. Ochrana osobních údajů</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Jsme odhodláni chránit vaše soukromí. Vaše osobní údaje budou zpracovány v souladu s naší Zásadami ochrany osobních údajů a příslušnými zákony o
|
||||
ochraně dat.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">5. Duševní vlastnictví</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Služba TimeTracker a veškerý její obsah, včetně mimo jiné textů, grafiky, loga a softwaru, je majetkem TimeTracker a je chráněn zákony o duševním
|
||||
vlastnictví.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">6. Omezení odpovědnosti</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
TimeTracker neodpovídá za jakékoli nepřímé, náhodné, zvláštní, následné nebo trestné škody vzniklé v důsledku vašeho používání nebo neschopnosti
|
||||
používat službu.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">7. Ukončení</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Vyhrazujeme si právo ukončit nebo pozastavit váš účet kdykoli, bez předchozího upozornění, za chování, které por tyto Podmušujeínky použití nebo
|
||||
je škodlivé pro ostatní uživatele nebo službu.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">8. Změny podmínek</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Vyhrazujeme si právo kdykoli upravit tyto Podmínky použití. Vaše další používání TimeTracker po jakýchkoli změnách znamená přijetí nových
|
||||
podmínek.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">9. Kontaktní informace</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Máte-li jakékoli dotazy ohledně těchto Podmínek použití, kontaktujte nás na adrese support@timetracker.com.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="flex justify-center"></div>
|
||||
</template>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
122
bo/src/components/terms/en_PrivacyPolicyView.vue
Normal file
122
bo/src/components/terms/en_PrivacyPolicyView.vue
Normal file
@@ -0,0 +1,122 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-12">
|
||||
<div class="inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30">
|
||||
<UIcon name="i-heroicons-shield-check" class="w-8 h-8" />
|
||||
</div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-white">Privacy Policy</h1>
|
||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Last updated: March 2026</p>
|
||||
</div>
|
||||
|
||||
<!-- Content Card -->
|
||||
<UCard class="shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50">
|
||||
<div class="prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6">
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">1. Introduction</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
At TimeTracker, we take your privacy seriously. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when
|
||||
you use our application.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">2. Information We Collect</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">We may collect personal information that you voluntarily provide to us when you:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Register for an account</li>
|
||||
<li>Use our time tracking features</li>
|
||||
<li>Create or manage projects</li>
|
||||
<li>Generate reports</li>
|
||||
<li>Contact our support team</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">3. How We Use Your Information</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">We use the information we collect to:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Provide and maintain our services</li>
|
||||
<li>Track your time and manage your projects</li>
|
||||
<li>Improve our services and user experience</li>
|
||||
<li>Communicate with you about updates and support</li>
|
||||
<li>Comply with legal obligations</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">4. Data Storage and Security</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Your data is stored securely using industry-standard encryption. We implement appropriate technical and organizational measures to protect your
|
||||
personal information against unauthorized access, alteration, disclosure, or destruction.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">5. Data Sharing</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
We do not sell, trade, or otherwise transfer your personal information to outside parties. We may share information with:
|
||||
</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Service providers who assist in our operations</li>
|
||||
<li>Legal authorities when required by law</li>
|
||||
<li>Business partners with your consent</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">6. Your Rights</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">You have the right to:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Access your personal information</li>
|
||||
<li>Correct inaccurate data</li>
|
||||
<li>Request deletion of your data</li>
|
||||
<li>Export your data in a portable format</li>
|
||||
<li>Opt-out of marketing communications</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">7. Cookies and Tracking Technologies</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
We use cookies and similar tracking technologies to enhance your experience. You can control cookies through your browser settings.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">8. Children's Privacy</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Our service is not intended for children under 13. We do not knowingly collect personal information from children under 13.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">9. Changes to This Policy</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy on this page and updating the
|
||||
"Last updated" date.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">10. Contact Us</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">If you have any questions about this Privacy Policy, please contact us at privacy@timetracker.com.</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="flex justify-center"></div>
|
||||
</template>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
103
bo/src/components/terms/en_TermsAndConditionsView.vue
Normal file
103
bo/src/components/terms/en_TermsAndConditionsView.vue
Normal file
@@ -0,0 +1,103 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-12">
|
||||
<div class="inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30">
|
||||
<UIcon name="i-heroicons-document-text" class="w-8 h-8" />
|
||||
</div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-white">Terms and Conditions</h1>
|
||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Last updated: March 2026</p>
|
||||
</div>
|
||||
|
||||
<!-- Content Card -->
|
||||
<UCard class="shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50">
|
||||
<div class="prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6">
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">1. Acceptance of Terms</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
By accessing and using TimeTracker, you accept and agree to be bound by the terms and provision of this agreement.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">2. Description of Service</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
TimeTracker is a time tracking application that allows users to track their working hours, manage projects, and generate reports.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">3. User Responsibilities</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">You agree to:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Provide accurate and complete information</li>
|
||||
<li>Maintain the security of your account</li>
|
||||
<li>Not share your login credentials with others</li>
|
||||
<li>Use the service in compliance with applicable laws</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">4. Privacy and Data Protection</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
We are committed to protecting your privacy. Your personal data will be processed in accordance with our Privacy Policy and applicable data
|
||||
protection laws.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">5. Intellectual Property</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
The TimeTracker service and all its contents, including but not limited to text, graphics, logos, and software, are the property of TimeTracker
|
||||
and are protected by intellectual property laws.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">6. Limitation of Liability</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
TimeTracker shall not be liable for any indirect, incidental, special, consequential, or punitive damages resulting from your use of or inability
|
||||
to use the service.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">7. Termination</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
We reserve the right to terminate or suspend your account at any time, without prior notice, for conduct that we believe violates these Terms and
|
||||
Conditions or is harmful to other users or the service.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">8. Changes to Terms</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
We reserve the right to modify these Terms and Conditions at any time. Your continued use of TimeTracker after any changes indicates your
|
||||
acceptance of the new terms.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">9. Contact Information</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
If you have any questions about these Terms and Conditions, please contact us at support@timetracker.com.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="flex justify-center"></div>
|
||||
</template>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
125
bo/src/components/terms/pl_PrivacyPolicyView.vue
Normal file
125
bo/src/components/terms/pl_PrivacyPolicyView.vue
Normal file
@@ -0,0 +1,125 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-12">
|
||||
<div class="inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30">
|
||||
<UIcon name="i-heroicons-shield-check" class="w-8 h-8" />
|
||||
</div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-white">Polityka Prywatności</h1>
|
||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Ostatnia aktualizacja: marzec 2026</p>
|
||||
</div>
|
||||
|
||||
<!-- Content Card -->
|
||||
<UCard class="shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50">
|
||||
<div class="prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6">
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">1. Wprowadzenie</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
W TimeTracker traktujemy Twoją prywatność poważnie. Niniejsza Polityka Prywatności wyjaśnia, jak gromadzimy, wykorzystujemy, udostępniamy i
|
||||
chronimy Twoje informacje podczas korzystania z naszej aplikacji.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">2. Informacje, które gromadzimy</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Możemy gromadzić dane osobowe, które dobrowolnie nam podajesz, gdy:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Rejestrujesz konto</li>
|
||||
<li>Korzystasz z funkcji śledzenia czasu</li>
|
||||
<li>Tworzysz lub zarządzasz projektami</li>
|
||||
<li>Generujesz raporty</li>
|
||||
<li>Kontaktujesz się z naszym zespołem wsparcia</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">3. Jak wykorzystujemy Twoje informacje</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Wykorzystujemy zebrane informacje do:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Świadczenia i utrzymywania naszych usług</li>
|
||||
<li>Śledzenia Twojego czasu i zarządzania projektami</li>
|
||||
<li>Ulepszania naszych usług i doświadczenia użytkownika</li>
|
||||
<li>Komunikowania się z Tobą w sprawach aktualizacji i wsparcia</li>
|
||||
<li>Wypełniania zobowiązań prawnych</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">4. Przechowywanie i bezpieczeństwo danych</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Twoje dane są bezpiecznie przechowywane z wykorzystaniem szyfrowania zgodnego ze standardami branżowymi. Implementujemy odpowiednie środki
|
||||
techniczne i organizacyjne w celu ochrony Twoich danych osobowych przed nieautoryzowanym dostępem, zmianą, ujawnieniem lub zniszczeniem.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">5. Udostępnianie danych</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Nie sprzedajemy, nie wymieniamy ani w inny sposób nie przekazujemy Twoich danych osobowych stronom trzecim. Możemy udostępniać informacje:
|
||||
</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Dostawcom usług wspierającym nasze działania</li>
|
||||
<li>Organom prawnym, gdy wymaga tego prawo</li>
|
||||
<li>Partnerom biznesowym za Twoją zgodą</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">6. Twoje prawa</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Masz prawo do:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Dostępu do swoich danych osobowych</li>
|
||||
<li>Korekty niedokładnych danych</li>
|
||||
<li>Żądania usunięcia swoich danych</li>
|
||||
<li>Eksportu danych w formacie przenośnym</li>
|
||||
<li>Rezygnacji z komunikacji marketingowej</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">7. Pliki cookies i technologie śledzenia</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Wykorzystujemy pliki cookies i podobne technologie śledzące, aby poprawić Twoje doświadczenie. Możesz kontrolować pliki cookies poprzez ustawienia
|
||||
przeglądarki.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">8. Prywatność dzieci</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Nasza usługa nie jest przeznaczona dla dzieci poniżej 13. roku życia. Świadomie nie gromadzimy danych osobowych od dzieci poniżej 13. roku życia.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">9. Zmiany w niniejszej polityce</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Możemy aktualizować niniejszą Politykę Prywatności od czasu do czasu. Powiadomimy Cię o wszelkich zmianach poprzez zamieszczenie nowej polityki na
|
||||
tej stronie i zaktualizowanie daty "Ostatnia aktualizacja".
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">10. Skontaktuj się z nami</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Jeśli masz jakiekolwiek pytania dotyczące niniejszej Polityki Prywatności, skontaktuj się z nami pod adresem privacy@timetracker.com.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="flex justify-center"></div>
|
||||
</template>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
104
bo/src/components/terms/pl_TermsAndConditionsView.vue
Normal file
104
bo/src/components/terms/pl_TermsAndConditionsView.vue
Normal file
@@ -0,0 +1,104 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8"
|
||||
>
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-12">
|
||||
<div class="inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30">
|
||||
<UIcon name="i-heroicons-document-text" class="w-8 h-8" />
|
||||
</div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 dark:text-white">Regulamin</h1>
|
||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Ostatnia aktualizacja: marzec 2026</p>
|
||||
</div>
|
||||
|
||||
<!-- Content Card -->
|
||||
<UCard class="shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50">
|
||||
<div class="prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6">
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">1. Akceptacja Regulaminu</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Korzystając z aplikacji TimeTracker, akceptujesz i zgadzasz się na przestrzeganie warunków i postanowień niniejszej umowy.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">2. Opis Usługi</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
TimeTracker to aplikacja do śledzenia czasu pracy, która umożliwia użytkownikom śledzenie godzin pracy, zarządzanie projektami oraz generowanie
|
||||
raportów.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">3. Obowiązki Użytkownika</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">Zgadzasz się na:</p>
|
||||
<ul class="list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4">
|
||||
<li>Podawanie dokładnych i kompletnych informacji</li>
|
||||
<li>Utrzymywanie bezpieczeństwa swojego konta</li>
|
||||
<li>Nieudostępnianie danych logowania innym osobom</li>
|
||||
<li>Korzystanie z usługi zgodnie z obowiązującymi przepisami prawa</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">4. Prywatność i Ochrona Danych</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Jesteśmy zobowiązani do ochrony Twojej prywatności. Twoje dane osobowe będą przetwarzane zgodnie z naszą Polityką Prywatności oraz obowiązującymi
|
||||
przepisami o ochronie danych.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">5. Własność Intelektualna</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Usługa TimeTracker oraz wszystkie jej treści, w tym między innymi teksty, grafika, logo i oprogramowanie, stanowią własność TimeTracker i są
|
||||
chronione przepisami o własności intelektualnej.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">6. Ograniczenie Odpowiedzialności</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
TimeTracker nie ponosi odpowiedzialności za jakiekolwiek pośrednie, przypadkowe, specjalne, następcze lub karne szkody wynikające z korzystania
|
||||
lub niemożności korzystania z usługi.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">7. Rozwiązanie Umowy</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
zastrzegamy sobie prawo do rozwiązania lub zawieszenia Twojego konta w dowolnym momencie, bez wcześniejszego powiadomienia, za zachowanie, które
|
||||
narusza niniejszy Regulamin lub jest szkodliwe dla innych użytkowników lub usługi.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">8. Zmiany w Regulaminie</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
zastrzegamy sobie prawo do modyfikacji niniejszego Regulaminu w dowolnym momencie. Dalsze korzystanie z TimeTracker po wprowadzeniu zmian oznacza
|
||||
akceptację nowych warunków.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-xl font-semibold text-gray-900 dark:text-white">9. Informacje Kontaktowe</h2>
|
||||
<p class="text-gray-600 dark:text-gray-400">
|
||||
Jeśli masz jakiekolwiek pytania dotyczące niniejszego Regulaminu, skontaktuj się z nami pod adresem support@timetracker.com.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="flex justify-center"></div>
|
||||
</template>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user