@@ -6,16 +6,26 @@ import Color (cssStringHSLA)
66import Lumi.Components.Color (colors )
77import JSS (JSS , jss )
88import React.Basic (Component , JSX , createComponent , element , makeStateless )
9- import React.Basic.DOM (CSS , unsafeCreateDOMComponent )
10- import React.Basic.DOM as R
9+ import React.Basic.DOM (unsafeCreateDOMComponent )
10+
11+ data BorderStyle
12+ = Top
13+ | Bottom
14+ | Round
15+ | Square
16+
17+ toStyle :: BorderStyle -> String
18+ toStyle Top = " top"
19+ toStyle Bottom = " bottom"
20+ toStyle Round = " round"
21+ toStyle Square = " square"
1122
1223component :: Component BorderProps
1324component = createComponent " Border"
1425
1526type BorderProps =
1627 { children :: JSX
17- , roundedBorders :: Boolean
18- , style :: CSS
28+ , borderStyle :: BorderStyle
1929 }
2030
2131border :: BorderProps -> JSX
@@ -25,27 +35,61 @@ border = makeStateless component render
2535
2636 render props =
2737 lumiBorderElement
28- { " data-rounded-borders " : props.roundedBorders
38+ { " data-border-style " : toStyle props.borderStyle
2939 , children: props.children
30- , style: props.style
3140 }
3241
33- border_ :: JSX -> JSX
34- border_ children =
42+ borderSquare :: JSX -> JSX
43+ borderSquare children =
44+ border
45+ { children
46+ , borderStyle: Square
47+ }
48+
49+ borderRound :: JSX -> JSX
50+ borderRound children =
3551 border
3652 { children
37- , style: R .css {}
38- , roundedBorders: true
53+ , borderStyle: Round
3954 }
4055
56+ borderTop :: JSX -> JSX
57+ borderTop children =
58+ border
59+ { children
60+ , borderStyle: Top
61+ }
62+
63+ borderBottom :: JSX -> JSX
64+ borderBottom children =
65+ border
66+ { children
67+ , borderStyle: Bottom
68+ }
69+
70+
4171styles :: JSS
4272styles = jss
4373 { " @global" :
4474 { " lumi-border" :
4575 { border: " 1px solid " <> cssStringHSLA colors.black3
4676 , overflow: " hidden"
47- , " &[data-rounded-borders=true ]" :
77+ , " &[data-border-style='round' ]" :
4878 { borderRadius: " 5px" }
79+ , " &[data-border-style='square']" :
80+ { borderRadius: " 0px" }
81+ , " &[data-border-style='top']" :
82+ { borderTopRightRadius: " 5px"
83+ , borderTopLeftRadius: " 5px"
84+ , borderBottomRightRadius: " 0px"
85+ , borderBottomLeftRadius: " 0px"
86+ }
87+ , " &[data-border-style='bottom']" :
88+ { borderTopRightRadius: " 0px"
89+ , borderTopLeftRadius: " 0px"
90+ , borderBottomRightRadius: " 5px"
91+ , borderBottomLeftRadius: " 5px"
92+ }
4993 }
5094 }
5195 }
0 commit comments