Files
superport_v2/lib/widgets/components/feature_disabled_placeholder.dart

67 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart' as lucide;
import 'package:shadcn_ui/shadcn_ui.dart';
/// 기능이 비활성화된 상태에서 안내 메시지를 보여주는 공통 플레이스홀더.
///
/// - 기능 플래그나 서버 준비 상태 등으로 화면을 대신할 때 사용한다.
/// - 사용자가 다음 액션을 쉽게 파악할 수 있도록 제목/설명을 함께 제공한다.
class FeatureDisabledPlaceholder extends StatelessWidget {
const FeatureDisabledPlaceholder({
super.key,
required this.title,
required this.description,
this.icon,
this.hints = const <Widget>[],
});
final String title;
final String description;
final IconData? icon;
final List<Widget> hints;
@override
Widget build(BuildContext context) {
final theme = ShadTheme.of(context);
return Center(
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 560),
child: ShadCard(
title: Row(
children: [
Icon(
icon ?? lucide.LucideIcons.info,
size: 18,
color: theme.colorScheme.mutedForeground,
),
const SizedBox(width: 10),
Text(title, style: theme.textTheme.h3),
],
),
description: Text(description, style: theme.textTheme.muted),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (hints.isNotEmpty) ...[
for (final hint in hints)
Padding(
padding: const EdgeInsets.only(bottom: 12),
child: hint,
),
] else
Padding(
padding: const EdgeInsets.symmetric(vertical: 12),
child: Text(
'기능이 활성화되면 이 영역에서 실제 데이터를 확인할 수 있습니다.',
style: theme.textTheme.small,
),
),
],
),
),
),
);
}
}