feat(proj): init

This commit is contained in:
vl.arkhangelskii
2026-09-21 04:06:43 +03:00
commit c956b94983
1076 changed files with 50876 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
import 'package:flutter/cupertino.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:please_pay_me/theme/tokens.dart';
/// Semantic text following the iOS type scale.
class AppText extends StatelessWidget {
const AppText(
this.data, {
super.key,
this.style = AppTypography.body,
this.color = AppColors.label,
this.maxLines,
this.overflow,
this.textAlign,
});
const AppText.largeTitle(this.data, {super.key, this.color = AppColors.label, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.largeTitle;
const AppText.title(this.data, {super.key, this.color = AppColors.label, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.title2;
const AppText.headline(this.data, {super.key, this.color = AppColors.label, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.headline;
const AppText.body(this.data, {super.key, this.color = AppColors.label, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.body;
const AppText.callout(this.data, {super.key, this.color = AppColors.secondaryLabel, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.callout;
const AppText.subhead(this.data, {super.key, this.color = AppColors.secondaryLabel, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.subhead;
const AppText.footnote(this.data, {super.key, this.color = AppColors.secondaryLabel, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.footnote;
const AppText.caption(this.data, {super.key, this.color = AppColors.tertiaryLabel, this.maxLines, this.overflow, this.textAlign})
: style = AppTypography.caption1;
final String data;
final TextStyle style;
final Color color;
final int? maxLines;
final TextOverflow? overflow;
final TextAlign? textAlign;
@override
Widget build(BuildContext context) {
return Text(
data,
maxLines: maxLines,
overflow: overflow,
textAlign: textAlign,
style: GoogleFonts.inter(
textStyle: style,
color: AppColors.of(context, color),
),
);
}
}
/// Uppercase grouped-list header, e.g. `НАСТРОЙКИ`.
class AppSectionHeader extends StatelessWidget {
const AppSectionHeader(this.text, {super.key, this.padding});
final String text;
final EdgeInsetsGeometry? padding;
@override
Widget build(BuildContext context) {
return Padding(
padding: padding ??
const EdgeInsets.fromLTRB(
AppSpacing.gutter,
AppSpacing.s4,
AppSpacing.gutter,
AppSpacing.s2,
),
child: Text(
text.toUpperCase(),
style: GoogleFonts.inter(
textStyle: AppTypography.footnote,
color: AppColors.of(context, AppColors.secondaryLabel),
letterSpacing: 0.4,
),
),
);
}
}