import { VariableUiElement } from "./Base/VariableUIElement" import { OsmConnection } from "../Logic/Osm/OsmConnection" import Svg from "../Svg" import Img from "./Base/Img" import Combine from "./Base/Combine" import { FixedUiElement } from "./Base/FixedUiElement" import BaseUIElement from "./BaseUIElement" export default class LoggedInUserIndicator extends VariableUiElement { constructor( osmConnection: OsmConnection, options?: { size?: "small" | "medium" | "large" firstLine?: BaseUIElement } ) { options = options ?? {} let size = "w-8 h-8 mr-2" if (options.size == "medium") { size = "w-16 h-16 mr-4" } else if (options.size == "large") { size = "w-32 h-32 mr-6" } super( osmConnection.userDetails.mapD((ud) => { let img = Svg.person_svg().SetClass( "rounded-full border border-black overflow-hidden" ) if (ud.img) { img = new Img(ud.img) } let contents: BaseUIElement = new FixedUiElement(ud.name).SetClass("font-bold") if (options?.firstLine) { contents = new Combine([options.firstLine, contents]).SetClass("flex flex-col") } return new Combine([img.SetClass("rounded-full " + size), contents]).SetClass( "flex items-center" ) }) ) } }