use std::sync::Arc; use gpui::prelude::*; use gpui::{Corner, anchored, deferred, point, px}; use crate::components::button::Button; use crate::components::label::Label; use crate::theme::ActiveTheme; use crate::ui::{clickable_control_style, disabled_control_style}; #[derive(Clone, Debug)] pub struct DropdownItem { pub label: gpui::SharedString, pub value: gpui::SharedString, } impl DropdownItem { pub fn new(label: impl Into) -> Self { let label = label.into(); Self { value: label.clone(), label, } } pub fn with_value( label: impl Into, value: impl Into, ) -> Self { Self { label: label.into(), value: value.into(), } } } pub struct Dropdown { id: gpui::ElementId, button: Option