import 'dart:ui';

import 'package:flutter/material.dart';

class AvesBorder {
  static Color _borderColor(BuildContext context) => Theme.of(context).brightness == Brightness.dark ? Colors.white30 : Colors.black26;

  // directly uses `devicePixelRatio` as it never changes, to avoid visiting ancestors via `MediaQuery`

  // 1 device pixel for straight lines is fine
  static double get straightBorderWidth => 1 / window.devicePixelRatio;

  // 1 device pixel for curves is too thin
  static double get curvedBorderWidth => window.devicePixelRatio > 2 ? 0.5 : 1.0;

  static BorderSide straightSide(BuildContext context) => BorderSide(
        color: _borderColor(context),
        width: straightBorderWidth,
      );

  static BorderSide curvedSide(BuildContext context) => BorderSide(
        color: _borderColor(context),
        width: curvedBorderWidth,
      );

  static Border border(BuildContext context) => Border.fromBorderSide(curvedSide(context));
}
