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

!$THEME = "lightgray"

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

skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false

!$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

!procedure $success($msg)
  <font color=$SUCCESS><b>$msg
!endprocedure

!procedure $failure($msg)
  <font color=$DANGER><b>$msg
!endprocedure

!procedure $warning($msg)
  <font color=$WARNING><b>$msg
!endprocedure

!procedure $primary_scheme()
	FontColor $PRIMARY_TEXT
	BorderColor $PRIMARY_LIGHT
	BackgroundColor $PRIMARY_LIGHT-$PRIMARY
!endprocedure

''
'' 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                10
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 swimlane
skinparam swimlane {
	BorderColor $INFO
	BorderThickness 2
	TitleBackgroundColor  $SECONDARY_LIGHT-$SECONDARY
	TitleFontColor $PRIMARY
}
!endsub

!startsub activity

skinparam activity {
	$primary_scheme()
	BarColor $SUCCESS
	StartColor $INFO
	EndColor $INFO
	''
	DiamondBackgroundColor $SECONDARY-$SECONDARY_DARK
  	DiamondBorderColor $SECONDARY_DARK
	DiamondFontColor $SECONDARY_TEXT
}
!endsub

!startsub participant

skinparam participant {
	$primary_scheme()
	ParticipantBorderThickness 2
}
!endsub

!startsub actor

skinparam actor {
	$primary_scheme()
}
!endsub

!startsub arrow

skinparam arrow {
	Thickness 3
	Color $PRIMARY
	FontColor $FGCOLOR
}
!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
	''
	BoxBackgroundColor $BGCOLOR
	BoxBorderColor $GRAY
	BoxFontColor $DARK
	''
	LifeLineBorderColor $SECONDARY_DARK
	LifeLineBorderThickness 2
	LifeLineBackgroundColor $SECONDARY_LIGHT
	''
	GroupBorderColor $DARK
	GroupFontColor $DARK
	GroupHeaderFontColor $INFO_TEXT
	GroupBackgroundColor $BGCOLOR
	GroupBodyBackgroundColor $BGCOLOR
	GroupHeaderBackgroundColor $BGCOLOR
	''
	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 {
	$primary_scheme()
}
!endsub

!startsub control

skinparam control {
	$primary_scheme()
}
!endsub

!startsub entity

skinparam entity {
	$primary_scheme()
}
!endsub

!startsub boundary

skinparam boundary {
	$primary_scheme()
}
!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 {
	$primary_scheme()
}
!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 $BGCOLOR
	BorderColor $PRIMARY_LIGHT
	FontColor $PRIMARY_TEXT
}
!endsub

!startsub cloud

skinparam cloud {
	BackgroundColor transparent
	BorderColor $F2FCFE
	FontColor $PRIMARY_TEXT
}
!endsub

!startsub database

skinparam database {
	$primary_scheme()
	BackgroundColor  $BGCOLOR
}
!endsub

!startsub class

skinparam class {
	$primary_scheme()
	HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
	StereotypeFontColor $DARK
	StereotypeFontSize 9
	BorderThickness 1
	AttributeFontColor $DARK
	AttributeFontSize 11
}
!endsub

!startsub object

skinparam object {
	$primary_scheme()
	StereotypeFontColor $LIGHT
	BorderThickness 1
	AttributeFontColor $DARK
	AttributeFontSize 11
}
!endsub

!startsub usecase

skinparam usecase {
	$primary_scheme()
	BorderThickness 2
	StereotypeFontColor $PRIMARY
}
!endsub

!startsub rectangle

skinparam rectangle {
	$primary_scheme()
	BackgroundColor $BGCOLOR
	BorderThickness 2
	StereotypeFontColor $PRIMARY
}
!endsub

!startsub package

skinparam package {
	$primary_scheme()
	BackgroundColor $BGCOLOR
	BorderThickness 2
}
!endsub

!startsub folder

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

!startsub frame

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

!startsub state

skinparam state {
	$primary_scheme()
	BorderColor $PRIMARY_DARK
	StartColor $INFO
	EndColor $INFO
	AttributeFontColor $SECONDARY_TEXT
	AttributeFontSize 11
}
!endsub

!startsub queue

skinparam queue {
	$primary_scheme()
}
!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 {
	$primary_scheme()
}
!endsub
