System props
This page list all utility props of all Ancestor's components like Base
or Box
.
API
We don't support all CSS props yet. It's still work in progress.
Since all Ancestor's utility props are responsive, they are typed as responsiveProp<'value>
.
If you want to understand more, see the following example:
type responsiveProp = array<breakpoints<'a>>
💡 Check out the module Ancestor_Styles.res.
The breakpoint type is customizable (check out the customization section), by default it has the following type signature:
type breakpoint<'a> = [#xs('value') | #md('a) | #lg('a) | #xl('a)]
Now, see a type signature of a component property:
module Base = {
@react.component
let make = (
~display: option<Ancestor_Styles.responsiveProp<[#flex | #block]>>=?,
// Other props
) => // ...
}
Check out the module Ancestor_Base.res.
Example of usage:
open Ancestor.Default
<Base display=[#xs(#flex)]>
...
</Base>
All utility props are optional.
Properties reference
Spacing
Check out the Config.spacing
type signature.
p
- CSS Key:
padding
- Type:
responsiveProp<Config.spacing>
px
- CSS Key:
padding-left
,padding-right
- Type:
responsiveProp<Config.spacing>
py
- CSS Key:
padding-top
,padding-bottom
- Type:
responsiveProp<Config.spacing>
m
- CSS Key:
padding
- Type:
responsiveProp<Config.spacing>
mx
- CSS Key:
margin-left
,margin-right
- Type:
responsiveProp<Config.spacing>
my
- CSS Key:
margin-top
,margin-bottom
- Type:
responsiveProp<Config.spacing>
Flex
justifyContent
CSS Key:
justify-content
Type:
responsiveProp<[
| #initial
| #"space-between"
| #center
| #"flex-start"
| #"flex-end"
| #"space-around"
| #"space-evenly"
| #start
| #end
| #left
| #right
| #revert
| #unset
]>
alignItems
CSS Key:
align-items
Type:
responsiveProp< [|
| #initial
| #center
| #start
| #end
| #"flex-start"
| #"flex-end"
| #"self-start"
| #"self-end"
]>
flexDirection
CSS Key:
flex-direction
Type:
responsiveProp<[
| #row
| #"row-reverse"
| #column
| #"column-reverse"
| #inherit
| #initial
| #unset
]>
flexBasis
CSS Key:
flex-basis
Type:
responsiveProp<[
| #length(Length.t)
| #auto
| #fill
| #content
| #"max-content"
| #"min-content"
| #"fit-content"
]>
flexWrap
CSS Key:
flex-wrap
Type:
responsiveProp<[
| #nowrap
| #wrap
| #"wrap-reverse"
| #inherit
| #initial
| #unset
]>
flexGrow
- CSS Key:
flex-grow
- Type:
responsiveProp<[
| #num(float)
| #inherit
| #initial
| #revert
| #unset
]>
alignContent
CSS Key:
align-content
Type:
responsiveProp<[
| #center
| #start
| #end
| #"flex-end"
| #normal
| #baseline
| #"first-baseline"
| #"last-baseline"
| #"space-between"
| #"space-around"
| #"space-evenly"
| #stretch
| #"safe-center"
| #"unsafe-center"
| #inherit
| #initial
| #unset
| #"flex-start"
]>
alignSelf
- CSS Key:
align-self
- Type:
AlignContent.t
justifySelf
- CSS Key:
justify-self
- Type:
AlignContent.t
flexFlow
- CSS Key:
flex-flow
- Type:
(FlexDirection.t, FlexWrap.t)
gap
- CSS Key:
gap
- Type:
responsiveProp<[
| #one(Config.spacing)
| #two(Config.t, Config.spacing)
| #inherit
| #initial
| #revert
| #unset
]>
Border
Check out the Config.radius
type signature.
borderRadius
- CSS Key:
border
- Type:
responsiveProp<Config.radius>
borderTLRadius
- CSS Key:
border-top-left-radius
- Type:
responsiveProp<Config.radius>
borderTRRadius
- CSS Key:
border-top-right-radius
- Type:
responsiveProp<Config.radius>
borderBLRadius
- CSS Key:
border-bottom-left-radius
- Type:
responsiveProp<Config.radius>
borderBRRadius
- CSS Key:
border-bottom-right-radius
- Type:
responsiveProp<Config.radius>
Check out the Border.t
and BordeStyle.t
type signature.
border
- CSS Key:
border
- Type:
responsiveProp<Border.t>
borderTop
- CSS Key:
border-top
- Type:
responsiveProp<Border.t>
borderBottom
- CSS Key:
border-bottom
- Type:
responsiveProp<Border.t>
borderLeft
- CSS Key:
border-left
- Type:
responsiveProp<Border.t>
borderRight
- CSS Key:
border-right
- Type:
responsiveProp<Border.t>
borderTopStyle
- CSS Key:
border-top-style
- Type:
responsiveProp<BorderStyle.t>
borderBottomStyle
- CSS Key:
border-bottom-style
- Type:
responsiveProp<BorderStyle.t>
borderLeftStyle
- CSS Key:
border-left-style
- Type:
responsiveProp<BorderStyle.t>
borderRightStyle
- CSS Key:
border-right-style
- Type:
responsiveProp<BorderStyle.t>
borderTopWidth
- CSS Key:
border-top-width
- Type:
responsiveProp<Length.t>
borderBottomWidth
- CSS Key:
border-bottom-width
- Type:
responsiveProp<Length.t>
borderLeftWidth
- CSS Key:
border-left-width
- Type:
responsiveProp<Length.t>
borderRightWidth
- CSS Key:
border-right-width
- Type:
responsiveProp<Length.t>
borderTopColor
- CSS Key:
border-top-color
- Type:
responsiveProp<Color.t>
borderBottomColor
- CSS Key:
border-bottom-color
- Type:
responsiveProp<Color.t>
borderLeftColor
- CSS Key:
border-left-color
- Type:
responsiveProp<Color.t>
borderRightColor
- CSS Key:
border-right-color
- Type:
responsiveProp<Color.t>
Size
width
- CSS Key:
width
- Type:
responsiveProp<Length.t>
height
- CSS Key:
height
- Type:
responsiveProp<Length.t>
maxW
- CSS Key:
max-width
- Type:
responsiveProp<Length.t>
minW
- CSS Key:
min-width
- Type:
responsiveProp<Length.t>
maxH
- CSS Key:
max-width
- Type:
responsiveProp<Length.t>
minH
- CSS Key:
min-width
- Type:
responsiveProp<Length.t>
Check out the Length.t
type signature.
Texts
fontFamily
- CSS Key:
font-family
- Type:
responsiveProp<[
| #custom(array<string>)
| #initial
| #inherit
]>
fontWeight
CSS Key:
font-weight
Type:
responsiveProp<[
| #normal
| #bold
| #bolder
| #lighter
| #100
| #200
| #300
| #400
| #500
| #600
| #700
| #800
| #900
| #initial
| #inherit
]>
textAlign
- CSS Key:
text-align
- Type:
responsiveProp<[#center | #left | #right]>
letterSpacing
- CSS Key:
letter-spacing
- Type:
responsiveProp<Length.t>
lineHeight
- CSS Key:
line-height
- Type:
responsiveProp<Length.t>
Position & Placement
position
- CSS Key:
position
- Type:
responsiveProp<[ | #static | #relative | #absolute | #fixed | #sticky ]>
top
- CSS Key:
top
- Type:
responsiveProp<Length.t>
bottom
- CSS Key:
bottom
- Type:
responsiveProp<Length.t>
left
- CSS Key:
left
- Type:
responsiveProp<Length.t>
right
- CSS Key:
right
- Type:
responsiveProp<Length.t>
zIndex
- CSS Key:
z-index
- Type:
responsiveProp<int>
General
display
CSS Key:
display
Type:
responsiveProp<[|
| #none
| #inline
| #block
| #"list-item"
| #"inline-block"
| #"inline-table"
| #table
| #"table-cell"
| #"table-column"
| #"table-column-group"
| #"table-footer-group"
| #"table-header-group"
| #"table-row"
| #"table-row-group"
| #flex
| #"inline-flex"
| #grid
| #"inline-grid"
| #"run-in"
| #inherit
]>
boxSizing
- CSS Key:
box-sizing
- Type:
responsiveProp<[| #"content-box" | #"border-box" | #initial | #inherit ]>
color
- CSS Key:
color
- Type:
responsiveProp<Color.t>
bgColor
- CSS Key:
background-color
- Type:
responsiveProp<Color.t>
bgSize
- CSS Key:
background-size
- Type:
responsiveProp<[
| #cover
| #contain
| #inherit
| #initial
| #unset
| #auto
| #length(Length.t)
]>
bgPosition
- CSS Key:
background-position
- Type:
responsiveProp<[
-| #top
-| #bottom
-| #left
-| #right
-| #center
-| #inherit
-| #initial
-| #unset
-| #length(Length.t)
]>
bgImage
- CSS Key:
background-image
- Type:
responsiveProp<[
-| #url(string)
-| #initial
-| #inherit
]>
Check out the Color.t
type signature.
overflow
- CSS Key:
overflow
- Type:
responsiveProp<[#hidden | #visible | #scroll | #auto]>
overflowX
- CSS Key:
overflow-x
- Type:
responsiveProp<[#hidden | #visible | #scroll | #auto]>
overflowY
- CSS Key:
overflow-y
- Type:
responsiveProp<[#hidden | #visible | #scroll | #auto]>
cursor
- CSS Key:
cursor
- Type:
responsiveProp<[
| #auto
| #default
| #none
| #"context-menu"
| #help
| #pointer
| #progress
| #wait
| #cell
| #crosshair
| #text
| #"vertical-text"
| #alias
| #copy
| #move
| #"no-drop"
| #"not-allowed"
| #grab
| #grabbing
| #"all-scroll"
| #"col-resize"
| #"row-resize"
| #"n-resize"
| #"e-resize"
| #"s-resize"
| #"w-resize"
| #"ne-resize"
| #"nw-resize"
| #"se-resize"
| #"sw-resize"
| #"ew-resize"
| #"ns-resize"
| #"nesw-resize"
| #"nwse-resize"
| #"zoom-in"
| #"zoom-out"
]>
visibility
- CSS Key:
visibility
- Type:
responsiveProp<[#hidden | #visible | #collapse]>
listStyleType
- CSS Key:
list-style-type
- Type:
responsiveProp<
| #disc
| #circle
| #square
| #decimal
| #"lower-alpha"
| #"upper-alpha"
| #"lower-greek"
| #"lower-latin"
| #"upper-latin"
| #"lower-roman"
| #"upper-roman"
| #none
]>
listStylePosition
CSS Key:
list-style-position
Type:
responsiveProp<
| #inside
| #outside
]>
listStyleImage
CSS Key:
list-style-image
Type:
responsiveProp<
| #url(string)
]>
listStyle
CSS Key:
list-style
Type:
responsiveProp<
| #"type"(ListStyleType.t)
| #position(ListStylePosition.t)
| #image(ListStyleImage.t)
| #short(ListStyleType.t, ListStylePosition.t, ListStyleImage.t)
| #inherit
| #initial
| #revert
| #unset
| #none
]>
outlineStyle
CSS Key:
outline-style
Type:
responsiveProp<
| #none
| #hidden
| #dotted
| #dashed
| #solid
| #double
| #groove
| #ridge
| #inset
| #outset
]>
outline
CSS Key:
outline
Type:
responsiveProp<
| #short(Length.t, OutlineStyle.t, Color.t)
| #inherit
| #initial
| #unset
]>
textDecorationStyle
- CSS Key:
text-decoration-style
- Type:
responsiveProp<[#solid | #double | #dotted | #dashed | #wavy]>
textDecorationLine
- CSS Key:
text-decoration-line
- Type:
responsiveProp<[#none | #underline | #overline | #"line-through" | #blink]>
textDecoration
- CSS Key:
text-decoration
- Type:
responsiveProp<[
| #short(TextDecorationLine.t, Color.t, TextDecorationStyle.t)
| #initial
| #inherit
| #none
]>
transform
- CSS Key:
transform
- Type:
responsiveProp<Transform.t>
Check out the Transform.t
type signature.
Types reference
Config.spacing
The Config.spacing
type is customizable, check out its customization section. By default, it's typed as an int
.
type spacing = int
Config.radius
The Config.radius
type is customizable, check out its customization section. By default, it's typed as an int
.
type radius = int
Length.t
Used by props like width
, height
, line-height
, etc:
type t = [
| #ch(float)
| #em(float)
| #ex(float)
| #rem(float)
| #vh(float)
| #vw(float)
| #vmin(float)
| #vmax(float)
| #px(int)
| #pxFloat(float)
| #cm(float)
| #mm(float)
| #inch(float)
| #pc(float)
| #pt(int)
| #zero
| #pct(float)
| #add(t, t)
| #sub(t, t)
| #mult(t, t)
| #div(t, t)
]
Using CSS calc
<Box width=[xs(#add(1.6->#rem, 10->#px))]>
...
</Box>
The expression #add(1.6->#rem, 10->#px)
is equivalent to calc(1.6rem + 10px)
in plain CSS. You can replace #add
by #sub
, #mult
or #div
to use another calc operator.
BorderStyle.t
Used by props like borderLeftStyle
, borderStyle
, etc:
type t = [
| #none
| #hidden
| #dotted
| #dashed
| #solid
| #double
| #groove
| #ridge
| #inset
| #outset
]
Border.t
Used by props like border
, borderTop
, etc:
type t = (Length.t, BorderStyle.t, Color.t)
Color.t
Used by props like border
, bgColor
, color
, etc:
type t = [
| #rgb(int, int, int)
| #hex(string)
| #transparent
| #currentColor
]
Transform.t
Used by transform
:
type t = [
| #translate(Length.t, Length.t)
| #translate3d(Length.t, Length.t, Length.t)
| #translateX(Length.t)
| #translateY(Length.t)
| #translateZ(Length.t)
| #scale(float, float)
| #scale3d(float, float, float)
| #scaleX(float)
| #scaleY(float)
| #scaleZ(float)
| #rotate(Angle.t)
| #rotate3d(float, float, float, Angle.t)
| #rotateX(Angle.t)
| #rotateY(Angle.t)
| #rotateZ(Angle.t)
| #skew(Angle.t, Angle.t)
| #skewX(Angle.t)
| #skewY(Angle.t)
| #perspective(int)
]