Skip to main content

gpui_component/
lib.rs

1use gpui::App;
2use std::ops::Deref;
3
4mod component_traits;
5mod element_ext;
6pub mod global_state;
7mod icon;
8mod index_path;
9#[cfg(any(feature = "inspector", debug_assertions))]
10mod inspector;
11mod root;
12mod sizing;
13mod styled;
14mod time;
15mod title_bar;
16mod touch_selection;
17mod virtual_list;
18mod window_border;
19mod window_ext;
20
21pub(crate) mod actions {
22    pub use gpui_base::actions::*;
23}
24
25pub mod accordion;
26pub mod alert;
27pub mod attachment;
28pub mod avatar;
29pub mod badge;
30pub mod breadcrumb;
31pub mod bubble;
32pub mod button;
33pub mod carousel;
34pub mod chart;
35pub mod checkbox;
36pub mod clipboard;
37pub mod collapsible;
38pub mod color_picker;
39pub mod combobox;
40pub mod command;
41pub mod description_list;
42pub mod dialog;
43pub mod dock;
44pub mod empty;
45pub mod form;
46pub mod group_box;
47pub mod highlighter;
48pub mod history;
49pub mod hover_card;
50pub mod input;
51pub mod kbd;
52pub mod label;
53pub mod link;
54pub mod list;
55pub mod marker;
56pub mod menu;
57pub mod message;
58pub mod message_scroller;
59pub mod native_menu;
60pub mod notification;
61pub mod pagination;
62pub mod plot;
63pub mod popover;
64pub mod progress;
65pub mod radio;
66pub mod rating;
67/// Backwards-compatible resizable component paths.
68pub mod resizable {
69    pub use super::{
70        ResizablePanel, ResizablePanelEvent, ResizablePanelGroup, ResizableState, h_resizable,
71        resizable_panel, v_resizable,
72    };
73}
74pub mod scroll;
75pub mod searchable_list;
76pub mod select;
77pub mod separator;
78pub mod setting;
79pub mod sheet;
80pub mod shimmer;
81pub mod sidebar;
82pub mod skeleton;
83pub mod slider;
84pub mod spinner;
85pub mod status_bar;
86pub mod stepper;
87pub mod switch;
88pub mod tab;
89pub mod table;
90pub mod tag;
91pub mod text;
92pub mod theme;
93pub mod tooltip;
94pub mod tree;
95
96pub use crate::Disableable;
97pub use element_ext::*;
98pub use global_state::GlobalState;
99pub use gpui_base::animation;
100pub(crate) use gpui_base::measurement_enabled as measure_enable;
101#[doc(hidden)]
102pub(crate) use gpui_base::resize_handle;
103pub use gpui_base::{
104    AxisExt, Edges, FocusTrapElement, InteractiveElementExt, LengthExt, Measure, OngoingScrollExt,
105    Placement, Side, measure, measure_if,
106};
107pub use gpui_base::{
108    ResizablePanel, ResizablePanelEvent, ResizablePanelGroup, ResizableState, h_resizable,
109    resizable_panel, v_resizable,
110};
111pub use gpui_component_macros::icon_named;
112pub use icon::*;
113pub use index_path::IndexPath;
114pub use input::{Rope, RopeExt, RopeLines};
115#[cfg(any(feature = "inspector", debug_assertions))]
116pub use inspector::*;
117pub use root::Root;
118pub use styled::*;
119pub use theme::*;
120pub use time::{calendar, date_picker};
121pub use title_bar::*;
122pub use virtual_list::{VirtualList, VirtualListScrollHandle, h_virtual_list, v_virtual_list};
123pub use window_border::{WindowBorder, window_border, window_paddings};
124pub use window_ext::WindowExt;
125
126rust_i18n::i18n!("locales", fallback = "en");
127
128/// Initialize the components.
129///
130/// You must initialize the components at your application's entry point.
131pub fn init(cx: &mut App) {
132    theme::init(cx);
133    global_state::init(cx);
134    #[cfg(any(feature = "inspector", debug_assertions))]
135    inspector::init(cx);
136    root::init(cx);
137    gpui_base::init(cx);
138    input::init(cx);
139    date_picker::init(cx);
140    dock::init(cx);
141    sheet::init(cx);
142    list::init(cx);
143    command::init(cx);
144    carousel::init(cx);
145    notification::init(cx);
146    popover::init(cx);
147    menu::init(cx);
148    table::init(cx);
149    tooltip::init(cx);
150}
151
152#[inline]
153pub fn locale() -> impl Deref<Target = str> {
154    rust_i18n::locale()
155}
156
157#[inline]
158pub fn set_locale(locale: &str) {
159    rust_i18n::set_locale(locale)
160}