feat(frontend): Add sidebar entries for help and organization
This commit is contained in:
@@ -18,9 +18,7 @@
|
|||||||
<template #default="{ collapsed }">
|
<template #default="{ collapsed }">
|
||||||
<UDashboardSearchButton :collapsed="collapsed" class="bg-transparent ring-(--ui-border)" />
|
<UDashboardSearchButton :collapsed="collapsed" class="bg-transparent ring-(--ui-border)" />
|
||||||
|
|
||||||
<UNavigationMenu :collapsed="collapsed" :items="links[0]" orientation="vertical" />
|
<UNavigationMenu :collapsed="collapsed" :items="links" orientation="vertical" />
|
||||||
|
|
||||||
<UNavigationMenu :collapsed="collapsed" :items="links[1]" orientation="vertical" class="mt-auto" />
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #footer="{ collapsed }">
|
<template #footer="{ collapsed }">
|
||||||
@@ -49,20 +47,50 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useNotificationStore } from '~~/stores/useNotificationStore'
|
import { useNotificationStore } from '~~/stores/useNotificationStore'
|
||||||
import { useSeededSapS4HanaDuplicator } from '~/composables/testing/useSeededSapS4HanaDuplicator'
|
import { useSeededSapS4HanaDuplicator } from '~/composables/testing/useSeededSapS4HanaDuplicator'
|
||||||
|
import { usePermissions } from '~/composables/usePermissions'
|
||||||
|
|
||||||
const { t: $t } = useI18n()
|
const { t: $t } = useI18n()
|
||||||
|
const { hasAnyRole } = usePermissions()
|
||||||
|
|
||||||
const links = [
|
const links = computed(() => {
|
||||||
[
|
const items = [
|
||||||
{
|
{
|
||||||
label: $t('contact.title'),
|
label: $t('contact.title'),
|
||||||
icon: 'i-lucide-mail',
|
icon: 'i-lucide-mail',
|
||||||
to: '/contact',
|
to: '/contact',
|
||||||
exact: true
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('help.title'),
|
||||||
|
icon: 'i-lucide-help-circle',
|
||||||
|
to: '/help',
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('organization.title'),
|
||||||
|
icon: 'i-lucide-building-2',
|
||||||
|
to: '/organization',
|
||||||
|
exact: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('settings.title'),
|
||||||
|
icon: 'i-lucide-settings',
|
||||||
|
to: '/settings',
|
||||||
|
exact: true
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
[]
|
|
||||||
]
|
if (hasAnyRole(['CHIEF_EXECUTIVE_OFFICER', 'IT_DEPARTMENT'])) {
|
||||||
|
items.push({
|
||||||
|
label: $t('administration.title'),
|
||||||
|
icon: 'i-lucide-shield',
|
||||||
|
to: '/administration',
|
||||||
|
exact: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return items
|
||||||
|
})
|
||||||
const open = ref(false)
|
const open = ref(false)
|
||||||
const logger = useLogger().withTag('layout')
|
const logger = useLogger().withTag('layout')
|
||||||
|
|
||||||
|
|||||||
75
legalconsenthub/app/pages/help.vue
Normal file
75
legalconsenthub/app/pages/help.vue
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<template>
|
||||||
|
<UDashboardPanel id="help">
|
||||||
|
<template #header>
|
||||||
|
<UDashboardNavbar :title="$t('help.pageTitle')">
|
||||||
|
<template #leading>
|
||||||
|
<UDashboardSidebarCollapse />
|
||||||
|
</template>
|
||||||
|
</UDashboardNavbar>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #body>
|
||||||
|
<div class="flex flex-col gap-6 w-full lg:max-w-4xl mx-auto p-6">
|
||||||
|
<!-- Introduction Card -->
|
||||||
|
<UCard>
|
||||||
|
<template #header>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-lg font-semibold text-highlighted">{{ $t('help.pageTitle') }}</h3>
|
||||||
|
<p class="text-sm text-muted mt-1">{{ $t('help.description') }}</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</UCard>
|
||||||
|
|
||||||
|
<!-- FAQ Section -->
|
||||||
|
<UCard>
|
||||||
|
<template #header>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-lg font-semibold text-highlighted">{{ $t('help.faq.title') }}</h3>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<UAccordion :items="faqItems" />
|
||||||
|
</UCard>
|
||||||
|
|
||||||
|
<!-- Support Section -->
|
||||||
|
<UCard>
|
||||||
|
<template #header>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-lg font-semibold text-highlighted">{{ $t('help.support.title') }}</h3>
|
||||||
|
<p class="text-sm text-muted mt-1">{{ $t('help.support.description') }}</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<UButton :label="$t('help.support.contactLink')" to="/contact" icon="i-lucide-mail" />
|
||||||
|
</UCard>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</UDashboardPanel>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
definePageMeta({
|
||||||
|
layout: 'default'
|
||||||
|
})
|
||||||
|
|
||||||
|
const { t: $t } = useI18n()
|
||||||
|
|
||||||
|
const faqItems = computed(() => [
|
||||||
|
{
|
||||||
|
label: $t('help.faq.q1.question'),
|
||||||
|
content: $t('help.faq.q1.answer')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('help.faq.q2.question'),
|
||||||
|
content: $t('help.faq.q2.answer')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('help.faq.q3.question'),
|
||||||
|
content: $t('help.faq.q3.answer')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('help.faq.q4.question'),
|
||||||
|
content: $t('help.faq.q4.answer')
|
||||||
|
}
|
||||||
|
])
|
||||||
|
</script>
|
||||||
74
legalconsenthub/app/pages/organization.vue
Normal file
74
legalconsenthub/app/pages/organization.vue
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<template>
|
||||||
|
<UDashboardPanel id="organization">
|
||||||
|
<template #header>
|
||||||
|
<UDashboardNavbar :title="$t('organization.pageTitle')">
|
||||||
|
<template #leading>
|
||||||
|
<UDashboardSidebarCollapse />
|
||||||
|
</template>
|
||||||
|
</UDashboardNavbar>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #body>
|
||||||
|
<div class="flex flex-col gap-6 w-full lg:max-w-4xl mx-auto p-6">
|
||||||
|
<template v-if="selectedOrganization">
|
||||||
|
<!-- Organization Details Card -->
|
||||||
|
<UCard>
|
||||||
|
<template #header>
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<div class="flex items-center justify-center w-12 h-12 rounded-lg bg-primary/10">
|
||||||
|
<UIcon name="i-lucide-building-2" class="w-6 h-6 text-primary" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-lg font-semibold text-highlighted">{{ selectedOrganization.name }}</h3>
|
||||||
|
<p class="text-sm text-muted mt-1">{{ $t('organization.current') }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="space-y-4">
|
||||||
|
<div>
|
||||||
|
<label class="text-sm font-medium text-muted">{{ $t('organization.name') }}</label>
|
||||||
|
<p class="text-base text-highlighted mt-1">{{ selectedOrganization.name }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="text-sm font-medium text-muted">{{ $t('organization.id') }}</label>
|
||||||
|
<p class="text-base text-highlighted mt-1 font-mono text-sm">{{ selectedOrganization.id }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</UCard>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-else>
|
||||||
|
<!-- No Organization Card -->
|
||||||
|
<UCard>
|
||||||
|
<template #header>
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<div class="flex items-center justify-center w-12 h-12 rounded-lg bg-warning/10">
|
||||||
|
<UIcon name="i-lucide-alert-triangle" class="w-6 h-6 text-warning" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-lg font-semibold text-highlighted">{{ $t('organization.noOrganization') }}</h3>
|
||||||
|
<p class="text-sm text-muted mt-1">{{ $t('organization.noOrganizationDescription') }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</UCard>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</UDashboardPanel>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { useUserStore } from '~~/stores/useUserStore'
|
||||||
|
|
||||||
|
definePageMeta({
|
||||||
|
layout: 'default'
|
||||||
|
})
|
||||||
|
|
||||||
|
const { t: $t } = useI18n()
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
const { selectedOrganization } = storeToRefs(userStore)
|
||||||
|
</script>
|
||||||
@@ -189,7 +189,42 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"organization": {
|
"organization": {
|
||||||
"current": "Aktuelle Organisation"
|
"title": "Organisation",
|
||||||
|
"pageTitle": "Organisationsprofil",
|
||||||
|
"current": "Aktuelle Organisation",
|
||||||
|
"name": "Organisationsname",
|
||||||
|
"id": "Organisations-ID",
|
||||||
|
"noOrganization": "Keine Organisation zugewiesen",
|
||||||
|
"noOrganizationDescription": "Sie sind derzeit keiner Organisation zugewiesen. Bitte kontaktieren Sie Ihren Administrator."
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"title": "Hilfe",
|
||||||
|
"pageTitle": "Hilfe & FAQ",
|
||||||
|
"description": "Hier finden Sie Antworten auf häufig gestellte Fragen und Anleitungen zur Nutzung der Plattform.",
|
||||||
|
"faq": {
|
||||||
|
"title": "Häufig gestellte Fragen",
|
||||||
|
"q1": {
|
||||||
|
"question": "Was ist Mitbestimmung?",
|
||||||
|
"answer": "Mitbestimmung bezeichnet das Recht der Arbeitnehmer, an Entscheidungen im Unternehmen mitzuwirken. In Deutschland ist dieses Recht gesetzlich verankert, insbesondere durch das Betriebsverfassungsgesetz."
|
||||||
|
},
|
||||||
|
"q2": {
|
||||||
|
"question": "Wer kann Anträge einreichen?",
|
||||||
|
"answer": "Anträge können von berechtigten Nutzern eingereicht werden, die eine entsprechende Rolle in der Organisation haben. Die genauen Berechtigungen werden von Ihrem Administrator festgelegt."
|
||||||
|
},
|
||||||
|
"q3": {
|
||||||
|
"question": "Wie lange dauert die Bearbeitung eines Antrags?",
|
||||||
|
"answer": "Die Bearbeitungszeit variiert je nach Art des Antrags und der Verfügbarkeit der zuständigen Personen. Sie werden über Statusänderungen per E-Mail benachrichtigt."
|
||||||
|
},
|
||||||
|
"q4": {
|
||||||
|
"question": "Kann ich meine Einstellungen ändern?",
|
||||||
|
"answer": "Ja, unter 'Einstellungen' können Sie Ihre Sprach- und Anzeigeeinstellungen sowie E-Mail-Benachrichtigungen anpassen."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"support": {
|
||||||
|
"title": "Weitere Unterstützung",
|
||||||
|
"description": "Haben Sie weitere Fragen oder benötigen Sie individuelle Unterstützung? Nutzen Sie unser Kontaktformular.",
|
||||||
|
"contactLink": "Zum Kontaktformular"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"auth": {
|
"auth": {
|
||||||
"welcome": "Willkommen",
|
"welcome": "Willkommen",
|
||||||
|
|||||||
@@ -189,7 +189,42 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"organization": {
|
"organization": {
|
||||||
"current": "Current Organization"
|
"title": "Organization",
|
||||||
|
"pageTitle": "Organization Profile",
|
||||||
|
"current": "Current Organization",
|
||||||
|
"name": "Organization Name",
|
||||||
|
"id": "Organization ID",
|
||||||
|
"noOrganization": "No Organization Assigned",
|
||||||
|
"noOrganizationDescription": "You are currently not assigned to any organization. Please contact your administrator."
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"title": "Help",
|
||||||
|
"pageTitle": "Help & FAQ",
|
||||||
|
"description": "Find answers to frequently asked questions and guides on how to use the platform.",
|
||||||
|
"faq": {
|
||||||
|
"title": "Frequently Asked Questions",
|
||||||
|
"q1": {
|
||||||
|
"question": "What is co-determination?",
|
||||||
|
"answer": "Co-determination refers to the right of employees to participate in decisions within the company. In Germany, this right is legally established, particularly through the Works Constitution Act."
|
||||||
|
},
|
||||||
|
"q2": {
|
||||||
|
"question": "Who can submit applications?",
|
||||||
|
"answer": "Applications can be submitted by authorized users who have an appropriate role in the organization. The exact permissions are set by your administrator."
|
||||||
|
},
|
||||||
|
"q3": {
|
||||||
|
"question": "How long does it take to process an application?",
|
||||||
|
"answer": "Processing time varies depending on the type of application and the availability of the responsible parties. You will be notified of status changes by email."
|
||||||
|
},
|
||||||
|
"q4": {
|
||||||
|
"question": "Can I change my settings?",
|
||||||
|
"answer": "Yes, under 'Settings' you can adjust your language and display preferences as well as email notifications."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"support": {
|
||||||
|
"title": "Further Support",
|
||||||
|
"description": "Do you have more questions or need individual support? Use our contact form.",
|
||||||
|
"contactLink": "Go to Contact Form"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"auth": {
|
"auth": {
|
||||||
"welcome": "Welcome",
|
"welcome": "Welcome",
|
||||||
|
|||||||
Reference in New Issue
Block a user