fhdaisy.xtras

Convenience functions that combine components with their needed parts
p = mk_previewer()

Chat bubbles

p(Chat(
    ChatBubble('Hi, what is 2+2?'),
    cls='-start')
)

source

ChatTurn


def ChatTurn(
    msg, # Text to display
    cls:str='', # Class of the `Chat`
    bubblecls:str='', # Class of the `ChatBubble`
    kw:VAR_KEYWORD
):

A ChatBubble in a Chat, representing one turn in a chat

p(
    ChatTurn('Hi, what is 2+2?', cls='-start'),
    ChatTurn('The answer is 4', cls='-end', bubblecls='-primary'),
)

source

ChatPair


def ChatPair(
    q, # Question text
    a, # Answer text
):

A question and answer pair as chat bubbles

c = Div(
    ChatPair('Hi, what is 2+2?', 'The answer is 4'),
    ChatPair('And what about 5*6?', 'That equals 30'),
    Div(cls='mt-4 flex gap-2')(
        Input(placeholder='Type your question...', cls='flex-1'),
        Btn('Send')
    )
)
p(c)

Actions

mk_dropdown


def mk_dropdown(
    summary, items, summcls:str='', cls:str='', kw:VAR_KEYWORD
):
c = mk_dropdown('Click me',
    [Li(A('Item 1')), Li(A('Item 2'))],
    summcls="btn m-1",
    cls='bg-base-100 rounded-box w-52 p-2 shadow')

source

mk_dropdown


def mk_dropdown(
    summary, # Text for the summary/button
    items, # List of items to display in dropdown
    summcls:str='', # Class for the summary element
    cls:str='', # Class for the dropdown content
    kw:VAR_KEYWORD
):

A dropdown menu with summary and content

p(c, height=150)

FAB


source

mk_fab


def mk_fab(
    txt, main, items, maincls:str='-success', btncls:str='-lg -circle', cls:str='', kw:VAR_KEYWORD
):
c = mk_fab('➕', 'M', ['A', 'B', 'C'], cls='-flower')
p(c, height=200)

Swap


source

mk_swap


def mk_swap(
    on, off, cls:str='', kw:VAR_KEYWORD
):
c = mk_swap('ON', 'OFF')
print(c)
<label class="swap  "><input type="checkbox"><div class="swap-on  ">ON</div><div class="swap-off  ">OFF</div></label>
p(c)
c = mk_swap('😀', '😪', cls='-rotate text-9xl')
p(c)

Data display

Accordian


source

mk_accordion_item


def mk_accordion_item(
    title, content, name:str='accordion', checked:bool=False, cls:str='', titlecls:str='', contentcls:str='',
    kw:VAR_KEYWORD
):
accitems = [
    ('How do I create an account?', 'Click the "Sign Up" button in the top right corner.'),
    ('I forgot my password', 'Click on "Forgot Password" on the login page.'),
    ('How do I update my profile?', 'Go to "My Account" settings and select "Edit Profile".')
]
ais = [
    mk_accordion_item(*o, name='acc1', checked=i==0, cls='-arrow border border-base-300', titlecls='font-semibold')
    for i,o in enumerate(accitems)
]
p( Join(*ais, cls='-vertical min-w-md') )

source

mk_accordion


def mk_accordion(
    items:VAR_POSITIONAL, name:NoneType=None, cls:str='', itemcls:str='', titlecls:str='', contentcls:str='',
    itemkw:NoneType=None, kw:VAR_KEYWORD
):
c = mk_accordion(*accitems,
        titlecls='font-semibold', contentcls='text-sm',
        itemcls='-arrow border border-base-300',
        cls='-vertical min-w-md')
p(c)