11import  'package:flutter/material.dart' ;
22import  'package:freezed_annotation/freezed_annotation.dart' ;
3+ import  'package:stac/src/parsers/widgets/stac_border_side/stac_border_side.dart' ;
34import  'package:stac/src/parsers/widgets/stac_double/stac_double.dart' ;
45import  'package:stac/src/utils/color_utils.dart' ;
56
@@ -9,10 +10,16 @@ part 'stac_border.g.dart';
910@freezed 
1011abstract  class  StacBorder  with  _$StacBorder  {
1112  const  factory  StacBorder ({
13+     // Uniform border properties (applies to all sides) 
1214    String ?  color,
1315    @Default (BorderStyle .solid) BorderStyle  borderStyle,
1416    @Default (StacDouble (1.0 )) StacDouble  width,
1517    @Default (StacDouble (BorderSide .strokeAlignInside)) StacDouble  strokeAlign,
18+     // Individual border sides 
19+     StacBorderSide ?  top,
20+     StacBorderSide ?  right,
21+     StacBorderSide ?  bottom,
22+     StacBorderSide ?  left,
1623  }) =  _StacBorder ;
1724
1825  factory  StacBorder .fromJson (Map <String , dynamic > json) => 
@@ -21,11 +28,26 @@ abstract class StacBorder with _$StacBorder {
2128
2229extension  StacBorderParser  on  StacBorder  {
2330  Border  parse (BuildContext  context) {
24-     return  Border .all (
25-       color:  color.toColor (context) ??  const  Color (0xFF000000 ),
26-       width:  width.parse,
27-       style:  borderStyle,
28-       strokeAlign:  strokeAlign.parse,
29-     );
31+     // Check if individual border sides are specified 
32+     final  hasIndividualSides = 
33+         top !=  null  ||  right !=  null  ||  bottom !=  null  ||  left !=  null ;
34+ 
35+     if  (hasIndividualSides) {
36+       // Use individual border sides 
37+       return  Border (
38+         top:  top.parse (context),
39+         right:  right.parse (context),
40+         bottom:  bottom.parse (context),
41+         left:  left.parse (context),
42+       );
43+     } else  {
44+       // Fall back to uniform border behavior for all sides 
45+       return  Border .all (
46+         color:  color.toColor (context) ??  const  Color (0xFF000000 ),
47+         width:  width.parse,
48+         style:  borderStyle,
49+         strokeAlign:  strokeAlign.parse,
50+       );
51+     }
3052  }
3153}
0 commit comments