Skip to content

Commit

Permalink
Merge pull request #14 from conceptadev/feature/card
Browse files Browse the repository at this point in the history
Added: Card Widget
  • Loading branch information
tilucasoli committed Feb 6, 2024
2 parents 1656701 + 24ba125 commit b52a5b0
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
46 changes: 46 additions & 0 deletions lib/components/card/card.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import 'package:flutter/material.dart';
import 'package:mix/mix.dart';
import 'package:remix_ui/components/card/card.style.dart';

class PresableRemixCard extends RemixCard {
const PresableRemixCard({
super.key,
required super.child,
void Function()? onTap,
super.style,
});
}

class RemixCard extends StatelessWidget {
const RemixCard({
super.key,
required this.child,
CardStyles? style,
}) : _customStyle = style;

final Widget child;

final CardStyles? _customStyle;

factory RemixCard.pressable(
Widget child, {
void Function()? onTap,
CardStyles? style,
}) {
return PresableRemixCard(
style: style,
onTap: onTap,
child: child,
);
}

@override
Widget build(BuildContext context) {
final style = CardStyles.build(_customStyle);

return Box(
style: style.container,
child: child,
);
}
}
51 changes: 51 additions & 0 deletions lib/components/card/card.style.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import 'package:mix/mix.dart';

class CardStyles extends StyleRecipe<CardStyles> {
const CardStyles({
this.container = const Style.empty(),
});

final Style container;

factory CardStyles.build([
CardStyles? other,
List<Variant> variants = const [],
]) {
return CardStyles.defaults().merge(other).applyVariants(variants);
}

factory CardStyles.defaults() {
return CardStyles(
container: Style(
box.padding(16),
box.elevation(1),
box.borderRadius(8),
box.color.white(),
),
);
}

@override
CardStyles applyVariants(List<Variant> variants) {
return CardStyles(
container: container.applyVariants(variants),
);
}

@override
CardStyles merge(CardStyles? other) {
if (other == null) return this;
return copyWith(
container: container.merge(other.container),
);
}

@override
CardStyles copyWith({
Style? container,
}) {
return CardStyles(
container: container ?? this.container,
);
}
}

0 comments on commit b52a5b0

Please sign in to comment.