#import "tabler.typ" // Colors used across the template. #let stroke-color = luma(200) #let fill-color = luma(240) #let idState = state("04cb31e7-92f1-4e72-82d8-e5ef190d0745", 0) #let usecase( name: "", diagramm: none, actors: ([],), precondition: [], process: [], acceptanceCriteria: none, offset: 2, ) = { idState.update(s => s + 1) set heading(offset: offset, numbering: none) context [ #figure( none, kind: "usecase", supplement: _ => [UC-#h(-0.25em)], ) #label("usecase-" + str(idState.get())) #figure( tabler.sideways( columns: (auto, 1fr), [Bezeichnung ], [UC-#idState.get(): #name], ..( if diagramm != none { ( [Diagramm], block( inset: (top: 0.5em, left: 0.5em, right: 0.5em), width: 100%, figure( diagramm, caption: [Diagramm für #{ "UC-" + str(idState.get()) }], ), ), ) } else { () } ), [Beteiligte Akteure], actors.join(", "), [Vorbedingungen], precondition, [Ablauf], process, ..( if acceptanceCriteria != none { ( [Akzeptanzkriterien], [ #for criteria in acceptanceCriteria { [+ #criteria] } ], ) } ), ), caption: [Anwendungsfall: #{ "UC-" + str(idState.get()) }], ) ] }