Headers and footers#
It is quite common to use a unified header and/or footer for all slides of a slide deck. You can achieve this using Elsie e.g. by creating a factory function for each slide:
def init_slide(slide, header_text: str):
    # Create a header with some background color
    header = slide.box(width="fill", height="10%").rect(bg_color="#23363A")
    # Put some text into the header
    header.box(x=10, padding=10).text(header_text, style=elsie.TextStyle(
        size=30,
        bold=True,
        color="#FFFFFF"
    ))
    # Return the remaining content of the slide 
    return slide.fbox()
And then calling this function on each slide to give it a header.
@slides.slide()
def slide1(slide):
    content = init_slide(slide, "Welcome")
    content.text("Welcome to my presentation")
@slides.slide()
def slide2(slide):
    content = init_slide(slide, "Outline")
    content.text("Here is the outline of my presentation")