@use "sass:map" as map;
@use "../values" as vals;
@use "color" as func;

// ----------------------------------------
// Get a valid FDS border
// ----------------------------------------

@function border($value) {

    @if map.has-key(vals.$fds-border, $value) {
        $border-map: map.get(vals.$fds-border, $value);
        $border-width: map.get($border-map, 'width');
        $border-style: map.get($border-map, 'style');
        $border-color: map.get($border-map, 'color');
        @return $border-width $border-style func.color($border-color);
    }

    @error '#{$value} is not a valid FDS border token.';

}


// ----------------------------------------
// Get a valid FDS border-width
// ----------------------------------------

@function border-width($value) {

    @if map.has-key(vals.$fds-border, $value) {
        $border-map: map.get(vals.$fds-border, $value);
        @return map.get($border-map, 'width');
    }

    @error '#{$value} is not a valid FDS border token.';

}

// ----------------------------------------
// Get a valid FDS border-style
// ----------------------------------------

@function border-style($value) {

    @if map.has-key(vals.$fds-border, $value) {
        $border-map: map.get(vals.$fds-border, $value);
        @return map.get($border-map, 'style');
    }

    @error '#{$value} is not a valid FDS border token.';

}

// ----------------------------------------
// Get a valid FDS border-color
// ----------------------------------------

@function border-color($value) {

    @if map.has-key(vals.$fds-border, $value) {
        $border-map: map.get(vals.$fds-border, $value);
        @return func.color(map.get($border-map, 'color'));
    }

    @error '#{$value} is not a valid FDS border token.';

}
