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