$color-primary: #1976D2;
$color-secondary: #378FE7;
$color-accent: #009688;
$color-primary-text: #212121;
$color-secondary-text: #757575;
$color-text-icons: #FFFFFF;
$color-divider: #BDBDBD;
$color-background: #E5E5E5;
$color-secondary-background: #607D8B;
$color-ok: #00FF00;
$color-error: #FF0000;

$color-darkening-perc: 15%;
$color-lightening-perc: 15%;

$colors: (
    primary: (
        base: $color-primary,
        lighter: lighten($color-primary, $color-lightening-perc),
        darker: darken($color-primary, $color-darkening-perc)
    ),
    secondary: (
        base: $color-secondary,
        lighter: lighten($color-secondary, $color-lightening-perc),
        darker: darken($color-primary, $color-darkening-perc)
    ),
    text-icons: (
        base: $color-text-icons,
        lighter: lighten($color-text-icons, $color-lightening-perc),
        darker: darken($color-text-icons, $color-darkening-perc)
    ),
    accent: (
        base: $color-accent,
        lighter: lighten($color-accent, $color-lightening-perc),
        darker: darken($color-accent, $color-darkening-perc)
    ),
    primary-text: (
        base: $color-primary-text,
        lighter: lighten($color-primary-text, $color-lightening-perc),
        darker: darken($color-primary-text, $color-darkening-perc)
    ),
    secondary-text: (
        base: $color-secondary-text,
        lighter: lighten($color-secondary-text, $color-lightening-perc),
        darker: darken($color-secondary-text, $color-darkening-perc)
    ),
    divider: (
        base: $color-divider,
        lighter: lighten($color-divider, $color-lightening-perc),
        darker: darken($color-divider, $color-darkening-perc)
    ),
    color-background: (
        base: $color-background,
        lighter: lighten($color-background, $color-lightening-perc),
        darker: darken($color-background, $color-darkening-perc)
    ),
    secondary-background: (
        base: $color-secondary-background,
        lighter: lighten($color-secondary-background, $color-lightening-perc),
        darker: darken($color-secondary-background, $color-darkening-perc)
    ),
    ok: (
        base: $color-ok,
        lighter: lighten($color-ok, $color-lightening-perc),
        darker: darken($color-ok, $color-darkening-perc)
    ),
    error: (
        base: $color-error,
        lighter: lighten($color-error, $color-lightening-perc),
        darker: darken($color-error, $color-darkening-perc)
    )
);

@function color($color-name, $color-variant:base, $transparency:1.0) {
    // map inception
    @return rgba(map-get(map-get($colors, $color-name), $color-variant), $transparency);
}