''
'' lightgray theme - mostly grays
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz

!$THEME = "silver"

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

skinparam backgroundColor $BGCOLOR

!$WHITE = "#FFF"
!$GRAY_DARK = "#4d4d4d"
!$GRAY = "#737373"
!$LIGHT = "#fcfcfc"
!$DARK = "#303030"

'' *_LIGHT = tint (lighter) of the main color of 80%
''          where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
''          and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY = "#e2e2e2"
!$PRIMARY_LIGHT = "#f3f3f3"
!$PRIMARY_DARK = "#888888"
!$PRIMARY_TEXT = "#336699"
!$SECONDARY = "#d2d2d2"
!$SECONDARY_LIGHT = "#dbdbdb"
!$SECONDARY_DARK = "#a8a8a8"
!$SECONDARY_TEXT = "white"
!$INFO = "#336699"
!$INFO_LIGHT = "#5c85ad"
!$INFO_DARK = "#29527a"
!$INFO_TEXT = $WHITE
!$SUCCESS = "#339933"
!$SUCCESS_LIGHT = "#5cad5c"
!$SUCCESS_DARK = "#297a29"
!$SUCCESS_TEXT = $WHITE
!$WARNING = "#ffae42"
!$WARNING_LIGHT = "#ffbe68"
!$WARNING_DARK = "#cc8b35"
!$WARNING_TEXT = $WHITE
!$DANGER = "#ff3333"
!$DANGER_LIGHT = "#ff5c5c"
!$DANGER_DARK = "#cc2929"
!$DANGER_TEXT = $WHITE

!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            15
skinparam ParticipantPadding     30
skinparam BoxPadding             30
skinparam Padding                8
skinparam ArrowColor             $GRAY
skinparam stereotype {
    CBackgroundColor $SECONDARY_LIGHT
    CBorderColor $SECONDARY_DARK
    ABackgroundColor $SUCCESS_LIGHT
    ABorderColor $SUCCESS_DARK
    IBackgroundColor $DANGER_LIGHT
    IBorderColor $DANGER_DARK
    EBackgroundColor $WARNING_LIGHT
    EBorderColor $WARNING_DARK
    NBackgroundColor $INFO_LIGHT
    NBorderColor $INFO_DARK
}
skinparam title {
	FontColor	                 $SECONDARY_TEXT
	BorderColor	                 $SECONDARY
	FontSize	    	         20
	BorderRoundCorner            8
	BorderThickness 	         1
	BackgroundColor              $SECONDARY_LIGHT-$SECONDARY
}


skinparam legend {
	BackgroundColor $PRIMARY
	BorderColor $PRIMARY_DARK
	FontColor $PRIMARY_TEXT
}

!startsub activity
skinparam activity {
	FontColor $PRIMARY_TEXT
	BorderColor $PRIMARY
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
	BarColor $SUCCESS
	StartColor $INFO
	EndColor $INFO
	''
	DiamondBackgroundColor $SECONDARY-$SECONDARY_DARK
  	DiamondBorderColor $SECONDARY_DARK
	DiamondFontColor $SECONDARY_TEXT
}
!endsub

!startsub sequence
skinparam sequence {
	BorderColor $PRIMARY
	' For some reason sequence title font color does not pick up from global
	TitleFontColor $SECONDARY_TEXT
	BackgroundColor $BGCOLOR
	StartColor $PRIMARY
	EndColor $PRIMARY
	''
    ParticipantBackgroundColor $PRIMARY_LIGHT-$PRIMARY
    ParticipantBorderColor $PRIMARY
	ParticipantBorderThickness 0
	ParticipantFontColor $PRIMARY_TEXT
	''
	ActorBackgroundColor $BGCOLOR
    ActorBorderColor $PRIMARY
	ActorFontColor $PRIMARY
	''
	ArrowThickness 3
	ArrowColor $PRIMARY
	ArrowFontColor $FGCOLOR
	''
	BoxBackgroundColor $LIGHT
	BoxBorderColor $GRAY
	BoxFontColor $DARK
	''
	LifeLineBorderColor $SECONDARY_DARK
	LifeLineBorderThickness 2
	LifeLineBackgroundColor $SECONDARY_LIGHT
	''
	GroupBorderColor $GRAY
	GroupFontColor $DARK
	GroupHeaderFontColor $INFO
	''
	DividerBackgroundColor $WHITE-$LIGHT
    DividerBorderColor $GRAY
    DividerBorderThickness 2
    DividerFontColor $DARK
	''
	ReferenceBackgroundColor $BGCOLOR
	ReferenceBorderColor $GRAY
	ReferenceFontColor $DARK
	ReferenceHeaderFontColor $INFO
}
!endsub

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

!startsub collections
skinparam collections {
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
	BorderColor $PRIMARY
}
!endsub

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

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

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

!startsub agent
skinparam agent {
	BackgroundColor #orange
	BorderColor #999999
	FontColor #333333
}
!endsub

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

!startsub artifact
skinparam artifact {
	BackgroundColor white-$LIGHT
	BorderColor $SECONDARY_DARK
	FontColor $SECONDARY_DARK
}
!endsub

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

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

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

!startsub node
skinparam node {
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
	BorderColor $PRIMARY
	FontColor $PRIMARY_TEXT
}
!endsub

!startsub cloud
skinparam cloud {
	BackgroundColor #F2FCFE-#eeeeee
	BorderColor $F2FCFE
	FontColor $PRIMARY_TEXT
}
!endsub

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

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

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

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

!startsub usecase
skinparam usecase {
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
	BorderColor $PRIMARY
	BorderThickness 2
	FontColor $PRIMARY_TEXT
	StereotypeFontColor $PRIMARY
}
!endsub

!startsub rectangle
skinparam rectangle {
	BackgroundColor $BGCOLOR
	BorderColor $PRIMARY
	BorderThickness 2
	FontColor $PRIMARY_DARK
	StereotypeFontColor $PRIMARY
}
!endsub

!startsub package
skinparam package {
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
  	BorderColor $PRIMARY_LIGHT
	FontColor $PRIMARY_TEXT
	BorderThickness 2
}
!endsub

!startsub folder
skinparam folder {
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
  	BorderColor $WARNING
	FontColor $WARNING
	BorderThickness 2
}
!endsub

!startsub frame
skinparam frame {
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
  	BorderColor $INFO
	FontColor $INFO
	BorderThickness 2
}
!endsub

!startsub state
skinparam state {
	StartColor $INFO
	EndColor $INFO
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
	BorderColor $PRIMARY
	FontColor $PRIMARY_TEXT
	AttributeFontColor $SECONDARY_TEXT
	AttributeFontSize 11
}
!endsub

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

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

!startsub file
skinparam file {
	BackgroundColor $SECONDARY_LIGHT-$SECONDARY
	BorderColor $SECONDARY_DARK
	FontColor $SECONDARY_TEXT

}
!endsub

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