feat(fe): standardize loading UI using shimmer SkeletonLoader across QueryStateBoundary and AGENTS.md
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import KsButton from './components/KsButton.vue'
|
||||
import KsInlineMessage from './components/KsInlineMessage.vue'
|
||||
import SkeletonLoader from './components/SkeletonLoader.vue'
|
||||
const props = defineProps<{
|
||||
loading: boolean
|
||||
processing?: boolean
|
||||
@@ -16,12 +17,14 @@ const props = defineProps<{
|
||||
expired?: boolean
|
||||
readonly?: boolean
|
||||
correlationId?: string
|
||||
skeletonType?: 'text' | 'card' | 'avatar' | 'table' | 'list'
|
||||
skeletonRows?: number
|
||||
}>()
|
||||
const emit = defineEmits<{ retry: [] }>()
|
||||
</script>
|
||||
<template>
|
||||
<section class="ks-query-boundary" :aria-busy="props.loading || props.processing">
|
||||
<KsInlineMessage v-if="props.loading" severity="info" message="불러오는 중입니다." />
|
||||
<SkeletonLoader v-if="props.loading" :type="props.skeletonType ?? 'table'" :rows="props.skeletonRows ?? 6" />
|
||||
<KsInlineMessage v-else-if="props.unauthorized" severity="warning" title="로그인 필요" message="로그인 후 다시 시도하세요." />
|
||||
<KsInlineMessage v-else-if="props.forbidden" severity="danger" title="권한 없음" message="이 작업을 수행할 권한이 없습니다." />
|
||||
<KsInlineMessage v-else-if="props.conflict" severity="warning" title="변경 충돌" message="다른 사용자가 먼저 변경했습니다. 최신 버전을 확인하세요." />
|
||||
|
||||
Reference in New Issue
Block a user