@import 'nib'

primary-color ?= purple success-color ?= green danger-color ?= red

button-default-color ?= primary-color button-success-color ?= success-color button-danger-color ?= danger-color button-disabled-color ?= grey

button-gradient-background(color, reverse = false)

if reverse
  background-image linear-gradient(top, lighten(color,10%) 100%, darken(color,10%) 0%)
  up-light                   = 0 2px 6px 0px rgba(#FFF,0.15) inset
else
  background-image linear-gradient(top, lighten(color,10%) 0%, darken(color,10%) 100%)
  up-light                   = 0 2px 6px 0px rgba(#FFF,0.25) inset

bevel                      = 0 3px 0px 0px darken(color,50%)
soft-drop-shadow           = 0 4px 2px 0px rgba(#000,1)
engrave-light              = 0 4px 0px 2px rgba(#FFF,0.25)
hard-drop-shadow           = 0 3px 0px 2px rgba(#000,1)

box-shadow up-light, bevel, soft-drop-shadow, engrave-light, hard-drop-shadow

button-is-light(color)

return (lightness(color) > 30%)

button-text(button-color)

if button-is-light(button-color)
  color darken(button-color,60%)
  text-shadow 0 1px 1px rgba(#FFF,0.3)
else
  color lighten(button-color,70%)
  text-shadow 0 -1px 1px rgba(#000,0.9)

default-button-hover-state(background-color)

button-gradient-background(lighten(background-color,10%))
button-text(background-color)

default-button-active-state(background-color)

button-gradient-background(darken(background-color,10%), true)
button-text(background-color)

default-button-disabled-state(background-color)

button-gradient-background(darken(background-color,10%))
button-text(background-color)

default-button-states(background-color)

button-gradient-background(background-color)
button-text(background-color)
&:hover
  default-button-hover-state(background-color)
&:active
  default-button-active-state(background-color)
&[disabled]
  default-button-disabled-state(background-color)