Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/i18n/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ export default {
toggleTheme: 'Toggle theme',
toggleLocale: 'Toggle language',
},
// One-line description shown under each page title.
subtitles: {
users: 'Platform accounts that can sign in and be granted access.',
roles: 'Named bundles of permissions you assign to users and groups.',
permissions: 'Fine-grained capabilities (resource.action) granted through roles.',
groups: 'Collections of users that share a set of roles.',
menus: 'Permission-gated navigation served to your product UI.',
tenants: 'Isolated workspaces — all platform data is scoped to a tenant.',
policies: 'Attribute-based (ABAC) rules on top of roles — dry-run them here.',
diagnostics: 'Probe login, permission checks and menu visibility for any user.',
settings: "A live, read-only view of the kit's effective configuration.",
},
assign: {
available: 'Available',
assigned: 'Assigned',
Expand Down
12 changes: 12 additions & 0 deletions src/i18n/locales/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ export default {
toggleTheme: '테마 전환',
toggleLocale: '언어 전환',
},
// 각 페이지 제목 아래 한 줄 설명.
subtitles: {
users: '로그인하고 접근 권한을 받을 수 있는 플랫폼 계정.',
roles: '사용자·그룹에 부여하는 권한 묶음(역할).',
permissions: '역할을 통해 부여되는 세분화된 권한(resource.action).',
groups: '같은 역할을 공유하는 사용자 모음.',
menus: '제품 UI에 내려주는 권한 필터링 네비게이션.',
tenants: '격리된 작업공간 — 모든 플랫폼 데이터는 테넌트 단위.',
policies: '역할 위에 얹는 속성 기반(ABAC) 규칙 — 여기서 dry-run 테스트.',
diagnostics: '특정 사용자의 로그인·권한·메뉴 가시성을 점검.',
settings: 'kit의 적용된 설정을 읽기 전용으로 보는 화면.',
},
assign: {
available: '가능',
assigned: '할당됨',
Expand Down
7 changes: 5 additions & 2 deletions src/views/GroupsView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('groups.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('groups.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.groups') }}</p>
</div>
<div class="flex items-center gap-2">
<InputText v-model="search" :placeholder="t('common.search')" class="w-56" />
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
Expand Down
7 changes: 5 additions & 2 deletions src/views/MenusView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,11 @@ onMounted(() => {

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('menus.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('menus.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.menus') }}</p>
</div>
<div class="flex items-center gap-2">
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
<Button icon="pi pi-plus" :label="t('menus.addRoot')" @click="openCreate(null)" />
Expand Down
7 changes: 5 additions & 2 deletions src/views/PermissionsView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('permissions.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('permissions.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.permissions') }}</p>
</div>
<div class="flex items-center gap-2">
<InputText v-model="search" :placeholder="t('common.search')" class="w-56" />
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
Expand Down
7 changes: 5 additions & 2 deletions src/views/PoliciesView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('policies.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('policies.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.policies') }}</p>
</div>
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
</div>

Expand Down
7 changes: 5 additions & 2 deletions src/views/RolesView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('roles.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('roles.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.roles') }}</p>
</div>
<div class="flex items-center gap-2">
<InputText v-model="search" :placeholder="t('common.search')" class="w-56" />
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
Expand Down
7 changes: 5 additions & 2 deletions src/views/SettingsView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('settings.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('settings.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.settings') }}</p>
</div>
<Button
icon="pi pi-refresh"
severity="secondary"
Expand Down
7 changes: 5 additions & 2 deletions src/views/TenantsView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('tenants.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('tenants.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.tenants') }}</p>
</div>
<div class="flex items-center gap-2">
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
<Button icon="pi pi-plus" :label="t('common.create')" @click="openCreate" />
Expand Down
7 changes: 5 additions & 2 deletions src/views/UsersView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,11 @@ onMounted(reload)

<template>
<div class="flex flex-col gap-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold">{{ t('users.title') }}</h1>
<div class="flex items-start justify-between gap-4">
<div class="min-w-0">
<h1 class="text-xl font-semibold">{{ t('users.title') }}</h1>
<p class="text-sm text-surface-500 dark:text-surface-400 mt-0.5">{{ t('subtitles.users') }}</p>
</div>
<div class="flex items-center gap-2">
<InputText v-model="search" :placeholder="t('common.search')" class="w-56" />
<Button icon="pi pi-refresh" severity="secondary" outlined v-tooltip.top="t('common.ariaRefresh')" :aria-label="t('common.ariaRefresh')" @click="reload" />
Expand Down
Loading