@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowColor UI_COLOR_T4
skinparam classBackgroundColor UI_COLOR

package UI <<Rectangle>>{
Class "<<interface>>\nUi" as Ui
Class "{abstract}\nUiPart" as UiPart
Class UiManager
Class MainWindow
Class HelpWindow
Class ResultDisplay
Class ClientListPanel
Class ClientListCard
Class ClientDetailsCard
Class ClientViewPanel
Class ClientPolicyTable
Class RemindersPanel
Class RemindersCard
Class StatusBarFooter
Class CommandBox
}

package Model <<Rectangle>> {
Class HiddenModel #FFFFFF
}

package Logic <<Rectangle>> {
Class HiddenLogic #FFFFFF
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Ui

UiManager .left.|> Ui
UiManager -down-> "1" MainWindow
MainWindow *-down->  "1" CommandBox
MainWindow *-down-> "1" ResultDisplay
MainWindow *-down-> "1" ClientListPanel
MainWindow *-down-> "1" ClientViewPanel
MainWindow *-down-> "1" RemindersPanel
MainWindow *-down-> "1" StatusBarFooter
MainWindow --> "0..1" HelpWindow

ClientListPanel *-down-> "*" ClientListCard

ClientViewPanel *-down-> "1" ClientDetailsCard
ClientViewPanel *-down-> "1" ClientPolicyTable

RemindersPanel *-down-> "2" RemindersCard

MainWindow -left-|> UiPart

ResultDisplay --|> UiPart
CommandBox --|> UiPart
ClientListPanel --|> UiPart
ClientListCard --|> UiPart
ClientDetailsCard --|> UiPart
ClientPolicyTable --|> UiPart
RemindersCard --|> UiPart
StatusBarFooter --|> UiPart
HelpWindow --|> UiPart

ClientListCard ..> Model
ClientDetailsCard ..> Model
ClientPolicyTable ..> Model
RemindersCard ..> Model
UiManager -right-> Logic
MainWindow -left-> Logic

ClientListPanel -[hidden]left- HelpWindow
HelpWindow -[hidden]left- CommandBox
CommandBox -[hidden]left- ResultDisplay
ResultDisplay -[hidden]left- StatusBarFooter

MainWindow -[hidden]-|> UiPart
@enduml
