ContentList.re (1322B)
1 module Styles = { 2 open Css; 3 4 let ul = 5 style([ 6 marginLeft(`em(2.5)), 7 marginTop(`em(0.8)), 8 paddingLeft(`px(0)), 9 listStyle(`none, `inside, `none), 10 ]); 11 12 let pDefault = 13 style([ 14 before([ 15 position(`absolute), 16 marginLeft(`em(-1.5)), 17 contentRule({j|•|j}), 18 ]), 19 ]); 20 21 let pDone = 22 style([ 23 before([ 24 position(`absolute), 25 marginLeft(`em(-1.5)), 26 contentRule({j|⊗|j}), 27 ]), 28 ]); 29 30 let pProgress = 31 style([ 32 before([ 33 position(`absolute), 34 marginLeft(`em(-1.5)), 35 contentRule({j|⊙|j}), 36 ]), 37 ]); 38 }; 39 40 type listType = 41 | Default 42 | Progress 43 | Done; 44 type listContent = { 45 text: ReasonReact.reactElement, 46 variant: listType, 47 }; 48 49 [@react.component] 50 let make = (~content: array(listContent)) => { 51 let contentMapped = 52 Array.mapi( 53 (key, item: listContent) => { 54 let listPointType = 55 switch (item.variant) { 56 | Progress => Styles.pProgress 57 | Done => Styles.pDone 58 | Default => Styles.pDefault 59 }; 60 <li key={string_of_int(key)}> 61 <p className=listPointType> {item.text} </p> 62 </li>; 63 }, 64 content, 65 ); 66 67 <ul className=Styles.ul> {ReasonReact.array(contentMapped)} </ul>; 68 };