''
'' Cerulean theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/cerulean/
''
'' Author: Brett Schwarz

!$THEME = "cyborg"

!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "black"
!endif

skinparam backgroundColor $BGCOLOR

''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#DF691A"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#d9534f"
!$ORANGE = "#f0ad4e"
!$YELLOW = "#f0ad4e"
!$GREEN = "#5cb85c"
!$TEAL = "#20c997"
!$CYAN = "#5bc0de"
!$WHITE = "#FFF"
!$GRAY_LIGHT = "#222"
!$GRAY = "#868e96"
!$PRIMARY = "#DF691A"
!$SECONDARY = "#4E5D6C"
!$SUCCESS = "#5cb85c"
!$INFO = "#5bc0de"
!$WARNING = "#f0ad4e"
!$DANGER = "#d9534f"
!$LIGHT = "#abb6c2"
!$DARK = "#4E5D6C"

'' *_DARK = tint (lighter) of the main color of 80%
''          where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
''          and SHADE is calculated by clr * (1 - shade_factor)
''
!$PRIMARY_DARK = "#e58748"
!$PRIMARY_LIGHT = "#b25415"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#717d89"
!$SECONDARY_LIGHT = "#3e4a56"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#7ccde5"
!$INFO_LIGHT = "#499AB2"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#4a934a"
!$SUCCESS_LIGHT = "#5F8F00"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#f3bd71"
!$WARNING_LIGHT = "#C08A3E"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#e17572"
!$DANGER_LIGHT = "#AE423F"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#717d89"
!$DARK_LIGHT = "#3e4a56"
!$LIGHT_DARK = "#bcc5ce"
!$LIGHT_LIGHT = "#89929b"

!function $success($msg)
  <font color=$SUCCESS><b>$msg
!endfunction

!function $failure($msg)
  <font color=$DANGER><b>$msg
!endfunction

!function $warning($msg)
  <font color=$WARNING><b>$msg
!endfunction

''
'' Global Default Values
''
skinparam defaultFontName       "Verdana"
skinparam defaultFontSize       12
skinparam dpi                   100
skinparam shadowing             false
skinparam roundcorner           8
skinparam ParticipantPadding    10
skinparam BoxPadding            2
skinparam Padding               2
skinparam TitleFontColor	    $DARK
skinparam TitleFontSize	    	20
skinparam TitleBorderThickness 	0
skinparam ArrowColor            $DARK


skinparam legend {
	BackgroundColor $SECONDARY
	BorderColor $SECONDARY_DARK
	FontColor $LIGHT
}

!startsub activity
skinparam activity {
	TitleFontSize 20
	TitleFontColor $DARK
	FontColor $PRIMARY_TEXT
	BorderColor $PRIMARY
	BackgroundColor $PRIMARY
	BarColor $SUCCESS
	StartColor $INFO
	EndColor $INFO
	''
	DiamondBackgroundColor $SECONDARY_LIGHT
  	DiamondBorderColor $SECONDARY_DARK
  	DiamondFontColor $SECONDARY_TEXT
}
!endsub

!startsub sequence
skinparam sequence {
	BorderColor $PRIMARY
	TitleFontSize 20
	TitleFontColor $DARK
	BackgroundColor $BGCOLOR
	StartColor $PRIMARY
	EndColor $PRIMARY
	''
    ParticipantBackgroundColor $PRIMARY
    ParticipantBorderColor $PRIMARY
	ParticipantBorderThickness 0
	ParticipantFontColor $PRIMARY_TEXT
	''
	ActorBackgroundColor $BGCOLOR
    ActorBorderColor $PRIMARY
	ActorFontColor $PRIMARY
	''
	ArrowThickness 3
	ArrowColor $PRIMARY
	''
	BoxBackgroundColor $BGCOLOR
	BoxBorderColor $DARK
	BoxFontColor $DARk
	''
	LifeLineBorderColor $SECONDARY
	LifeLineBorderThickness 0
	LifeLineBackgroundColor $SECONDARY_DARK
	''
	GroupBorderColor $DARK
	GroupFontColor $DARK
	GroupHeaderFontColor $INFO
	''
	DividerBackgroundColor $DARK
    DividerBorderColor $DARK
    DividerBorderThickness 2
    DividerFontColor $LIGHT
	''
	ReferenceBackgroundColor $BGCOLOR
	ReferenceBorderColor $DARK
	ReferenceFontColor $DARK
	ReferenceHeaderFontColor $INFO
}
!endsub

!startsub partition
skinparam partition {
	BorderColor $PRIMARY
	FontColor $PRIMARY
	BackgroundColor $BGCOLOR
}
!endsub

!startsub collections
skinparam collections {
	BackgroundColor $PRIMARY
	BorderColor $PRIMARY_DARK
}
!endsub

!startsub control
skinparam control {
	BackgroundColor  $PRIMARY
	BorderColor $PRIMARY_DARK
	FontColor $DARK
}
!endsub

!startsub entity
skinparam entity {
	BackgroundColor  $PRIMARY
	BorderColor $PRIMARY_DARK
	FontColor $DARK
}
!endsub

!startsub boundary
skinparam boundary {
	BackgroundColor  $PRIMARY
	BorderColor $PRIMARY_DARK
	FontColor $DARK
}
!endsub

!startsub agent
skinparam agent {
	BackgroundColor $WARNING
	BorderColor $WARNING_LIGHT
	FontColor $DARK
}
!endsub

!startsub note
skinparam note {
	BorderThickness 1
	BackgroundColor $INFO
	BorderColor $INFO_DARK
	FontColor $WHITE
}
!endsub

!startsub artifact
skinparam artifact {
	BackgroundColor $DARK
	BorderColor $DARK_DARK
	FontColor $LIGHT
}
!endsub

!startsub component
skinparam component {
	BackgroundColor  $SUCCESS
	BorderColor  $SUCCESS_DARK
	FontColor $SUCCESS_TEXT
}
!endsub

!startsub interface
skinparam interface {
	BackgroundColor  $DANGER_DARK
	BorderColor  $DANGER
	FontColor $DARK
}
!endsub

!startsub storage
skinparam storage {
	BackgroundColor $WARNING
  	BorderColor $WARNING_DARK
	FontColor $WARNING_TEXT
}
!endsub

!startsub node
skinparam node {
	BackgroundColor  $SECONDARY
	BorderColor $LIGHT
	FontColor $LIGHT
}
!endsub

!startsub cloud
skinparam cloud {
	BackgroundColor white-lightskyblue
	BorderColor $BGCOLOR
	FontColor $DARK
}
!endsub

!startsub database
skinparam database {
	BackgroundColor  $PRIMARY
	BorderColor $PRIMARY_DARK
	FontColor $DARK
}
!endsub

!startsub actor
skinparam actor {
	FontColor $DARK
}
!endsub

!startsub class
skinparam class {
	HeaderBackgroundColor $PRIMARY_LIGHT
	FontColor $PRIMARY_TEXT
	BackgroundColor $PRIMARY
	BorderColor $PRIMARY_DARK
	StereotypeFontColor $DARK
	BorderThickness 1
	AttributeFontColor $LIGHT
	AttributeFontSize 11
}
!endsub

!startsub object
skinparam object {
	FontColor $SUCCESS
	BackgroundColor $SECONDARY
	BorderColor $SECONDARY_DARK
	StereotypeFontColor $DARK
	BorderThickness 1
	AttributeFontColor $SECONDARY_TEXT
	AttributeFontSize 11
}
!endsub

!startsub usecase
skinparam usecase {
	BackgroundColor $SECONDARY
	BorderColor $SECONDARY
	BorderThickness 2
	FontColor $SECONDARY_TEXT
	StereotypeFontColor $PRIMARY
}
!endsub

!startsub rectangle
skinparam rectangle {
	BackgroundColor $SECONDARY_LIGHT
	BorderColor $PRIMARY_LIGHT
	BorderThickness 2
	FontColor $PRIMARY
	StereotypeFontColor $PRIMARY
}
!endsub

!startsub package
skinparam package {
	BackgroundColor $SECONDARY
  	BorderColor $PRIMARY
	FontColor $PRIMARY
	BorderThickness 2
}
!endsub

!startsub folder
skinparam folder {
	BackgroundColor $SECONDARY_LIGHT
  	BorderColor $WARNING
	FontColor $WARNING
	BorderThickness 2
}
!endsub

!startsub frame
skinparam frame {
	BackgroundColor $SECONDARY_LIGHT
  	BorderColor $INFO
	FontColor $INFO
	BorderThickness 2
}
!endsub

!startsub state
skinparam state {
	StartColor $INFO
	EndColor $INFO
	BackgroundColor $SECONDARY
	BorderColor $SECONDARY_DARK
	FontColor $INFO
	AttributeFontColor $SECONDARY_TEXT
	AttributeFontSize 11
}
!endsub

!startsub queue
skinparam queue {
	BackgroundColor $WARNING_LIGHT
  	BorderColor $WARNING
	FontColor $WARNING_TEXT
}
!endsub

!startsub card
skinparam card {
	BackgroundColor $INFO
	BorderColor $INFO_DARK
	FontColor $INFO_TEXT
}
!endsub

!startsub file
skinparam file {
	BackgroundColor $SECONDARY_DARK
	BorderColor $LIGHT
	FontColor $LIGHT
}
!endsub

!startsub stack
skinparam stack {
	BackgroundColor $PRIMARY_DARK-$PRIMARY_LIGHT
	BorderColor $PRIMARY_DARK
	FontColor $PRIMARY_TEXT
}
!endsub