experiments/arena/components/dialog.py (43 lines of code) (raw):

# Copyright 2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Dialog mesop component """ from typing import Callable import mesop as me @me.content_component def dialog( *, is_open: bool, on_click_background: Callable | None = None ): # pylint: disable=not-context-manager """renders a dialog component""" with me.box( style=me.Style( background=( "rgba(0, 0, 0, 0.4)" if me.theme_brightness() == "light" else "rgba(255, 255, 255, 0.4)" ), display="block" if is_open else "none", height="100%", width="100%", overflow_x="auto", overflow_y="auto", position="fixed", z_index=1000, ), ): with me.box( on_click=on_click_background, style=me.Style( place_items="center", display="grid", height="50vh", ), ): with me.box( style=me.Style( background=me.theme_var("surface-container-lowest"), border_radius=20, box_sizing="content-box", box_shadow=( "0 3px 1px -2px #0003, 0 2px 2px #00000024, 0 1px 5px #0000001f" ), margin=me.Margin.symmetric(vertical="0", horizontal="auto"), padding=me.Padding.all(20), ) ): me.slot()