inou/app/lib/design/widgets/inou_message.dart

71 lines
1.8 KiB
Dart

// AUTO-GENERATED widget — matches web .error/.info/.success
import 'package:flutter/material.dart';
import 'package:inou_app/design/inou_theme.dart';
import 'package:inou_app/design/inou_text.dart';
enum MessageType { error, info, success }
class InouMessage extends StatelessWidget {
final String message;
final MessageType type;
const InouMessage({
super.key,
required this.message,
this.type = MessageType.info,
});
@override
Widget build(BuildContext context) {
final style = _getStyle();
return Container(
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10),
decoration: BoxDecoration(
color: style.background,
border: Border.all(color: style.border),
borderRadius: BorderRadius.circular(InouTheme.radiusMd),
),
child: Text(
message,
style: InouText.body.copyWith(color: style.foreground),
),
);
}
_MessageStyle _getStyle() {
switch (type) {
case MessageType.error:
return _MessageStyle(
background: InouTheme.dangerLight,
foreground: InouTheme.danger,
border: InouTheme.errorBorder,
);
case MessageType.info:
return _MessageStyle(
background: InouTheme.accentLight,
foreground: InouTheme.accent,
border: InouTheme.infoBorder,
);
case MessageType.success:
return _MessageStyle(
background: InouTheme.successLight,
foreground: InouTheme.success,
border: InouTheme.successBorder,
);
}
}
}
class _MessageStyle {
final Color background;
final Color foreground;
final Color border;
_MessageStyle({
required this.background,
required this.foreground,
required this.border,
});
}