From bcad2f4e9e6e5a18e441546d2c229369e5ab2710 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 6 Oct 2023 17:07:59 -0400 Subject: [PATCH] Move UI out of `storybook2` and into `ui2` --- crates/storybook2/src/collab_panel.rs | 2 +- .../src/stories/components/panel.rs | 4 +-- .../storybook2/src/stories/elements/avatar.rs | 4 +-- .../storybook2/src/stories/elements/icon.rs | 5 ++-- .../storybook2/src/stories/elements/label.rs | 4 +-- crates/storybook2/src/stories/kitchen_sink.rs | 2 +- crates/storybook2/src/story.rs | 4 +-- crates/storybook2/src/story_selector.rs | 2 +- crates/storybook2/src/storybook2.rs | 6 ++-- crates/storybook2/src/themes/rose_pine.rs | 2 +- crates/storybook2/src/ui.rs | 12 -------- crates/storybook2/src/workspace.rs | 14 +++++----- .../src/ui => ui2/src}/children.rs | 0 .../src/ui => ui2/src}/components.rs | 0 .../src/ui => ui2/src}/components/list.rs | 4 +-- .../src/ui => ui2/src}/components/panel.rs | 7 ++--- .../src/ui => ui2/src}/element_ext.rs | 0 .../src/ui => ui2/src}/elements.rs | 0 .../src/ui => ui2/src}/elements/avatar.rs | 2 +- .../src/ui => ui2/src}/elements/icon.rs | 2 +- .../src/ui => ui2/src}/elements/label.rs | 2 +- .../src/ui => ui2/src}/elements/stack.rs | 2 +- crates/ui2/src/lib.rs | 28 +++++++++++-------- .../{storybook2/src/ui => ui2/src}/prelude.rs | 2 +- crates/{storybook2 => ui2}/src/theme.rs | 19 ++----------- .../{storybook2/src/ui => ui2/src}/tokens.rs | 0 26 files changed, 51 insertions(+), 78 deletions(-) delete mode 100644 crates/storybook2/src/ui.rs rename crates/{storybook2/src/ui => ui2/src}/children.rs (100%) rename crates/{storybook2/src/ui => ui2/src}/components.rs (100%) rename crates/{storybook2/src/ui => ui2/src}/components/list.rs (99%) rename crates/{storybook2/src/ui => ui2/src}/components/panel.rs (96%) rename crates/{storybook2/src/ui => ui2/src}/element_ext.rs (100%) rename crates/{storybook2/src/ui => ui2/src}/elements.rs (100%) rename crates/{storybook2/src/ui => ui2/src}/elements/avatar.rs (97%) rename crates/{storybook2/src/ui => ui2/src}/elements/icon.rs (99%) rename crates/{storybook2/src/ui => ui2/src}/elements/label.rs (99%) rename crates/{storybook2/src/ui => ui2/src}/elements/stack.rs (95%) rename crates/{storybook2/src/ui => ui2/src}/prelude.rs (98%) rename crates/{storybook2 => ui2}/src/theme.rs (89%) rename crates/{storybook2/src/ui => ui2/src}/tokens.rs (100%) diff --git a/crates/storybook2/src/collab_panel.rs b/crates/storybook2/src/collab_panel.rs index 5c16da5f20c2c285bb0cf60267e1f2948d503c18..97dd8e83eddb91b5ede36bde690e2fd4686d2479 100644 --- a/crates/storybook2/src/collab_panel.rs +++ b/crates/storybook2/src/collab_panel.rs @@ -1,8 +1,8 @@ -use crate::theme::{theme, Theme}; use gpui3::{ div, img, svg, view, AppContext, Context, Element, IntoAnyElement, ParentElement, ScrollState, SharedString, StyleHelpers, View, ViewContext, WindowContext, }; +use ui::{theme, Theme}; pub struct CollabPanel { scroll_state: ScrollState, diff --git a/crates/storybook2/src/stories/components/panel.rs b/crates/storybook2/src/stories/components/panel.rs index ed317115fb72f7961ae39d3b28b204b46ae56746..9470bda4bd9847189c250f87fc093c5ea7d18c0d 100644 --- a/crates/storybook2/src/stories/components/panel.rs +++ b/crates/storybook2/src/stories/components/panel.rs @@ -1,7 +1,7 @@ use std::marker::PhantomData; -use crate::ui::prelude::*; -use crate::ui::{Label, Panel}; +use ui::prelude::*; +use ui::{Label, Panel}; use crate::story::Story; diff --git a/crates/storybook2/src/stories/elements/avatar.rs b/crates/storybook2/src/stories/elements/avatar.rs index 0d1fff568f54a9f8307d95909aacac7e29022d61..36fc841b9fbb4e1a5f4c9ff6190787341ae04613 100644 --- a/crates/storybook2/src/stories/elements/avatar.rs +++ b/crates/storybook2/src/stories/elements/avatar.rs @@ -1,7 +1,7 @@ use std::marker::PhantomData; -use crate::ui::prelude::*; -use crate::ui::Avatar; +use ui::prelude::*; +use ui::Avatar; use crate::story::Story; diff --git a/crates/storybook2/src/stories/elements/icon.rs b/crates/storybook2/src/stories/elements/icon.rs index 46073fb394ff677cd774bb4ae183ce857988c1d2..ada454297fd001bf6c34a76b7d63774fad7b416b 100644 --- a/crates/storybook2/src/stories/elements/icon.rs +++ b/crates/storybook2/src/stories/elements/icon.rs @@ -1,9 +1,8 @@ use std::marker::PhantomData; use strum::IntoEnumIterator; - -use crate::ui::prelude::*; -use crate::ui::{Icon, IconElement}; +use ui::prelude::*; +use ui::{Icon, IconElement}; use crate::story::Story; diff --git a/crates/storybook2/src/stories/elements/label.rs b/crates/storybook2/src/stories/elements/label.rs index f4f5649f168752a20a7611818e1801fe787f84c5..0f6ebcc292aae6ba9e2a5da65a61fb4b93171be9 100644 --- a/crates/storybook2/src/stories/elements/label.rs +++ b/crates/storybook2/src/stories/elements/label.rs @@ -1,7 +1,7 @@ use std::marker::PhantomData; -use crate::ui::prelude::*; -use crate::ui::Label; +use ui::prelude::*; +use ui::Label; use crate::story::Story; diff --git a/crates/storybook2/src/stories/kitchen_sink.rs b/crates/storybook2/src/stories/kitchen_sink.rs index c6cc4adcb1e972d650e2c0a58abeb5aeeaada2e6..325e84847f5f8645bcf15c32e3cba74877ee4a7e 100644 --- a/crates/storybook2/src/stories/kitchen_sink.rs +++ b/crates/storybook2/src/stories/kitchen_sink.rs @@ -1,10 +1,10 @@ use std::marker::PhantomData; use strum::IntoEnumIterator; +use ui::prelude::*; use crate::story::Story; use crate::story_selector::{ComponentStory, ElementStory}; -use crate::ui::prelude::*; #[derive(Element)] pub struct KitchenSinkStory { diff --git a/crates/storybook2/src/story.rs b/crates/storybook2/src/story.rs index 2b35274240761e425c6f9b7cab9ef679c63a94f5..3c358f23bac2d8b438aa01949c666eee2e6d4c09 100644 --- a/crates/storybook2/src/story.rs +++ b/crates/storybook2/src/story.rs @@ -1,6 +1,6 @@ -use crate::theme::theme; -use crate::ui::prelude::*; use gpui3::Div; +use ui::prelude::*; +use ui::theme; pub struct Story {} diff --git a/crates/storybook2/src/story_selector.rs b/crates/storybook2/src/story_selector.rs index 289a98c698da59fa09b6556c1c80800f7490a56b..1bf4b8d77a2c5bd5a31e7e0a5ff117e22d235bcc 100644 --- a/crates/storybook2/src/story_selector.rs +++ b/crates/storybook2/src/story_selector.rs @@ -7,7 +7,7 @@ use clap::ValueEnum; use gpui3::AnyElement; use strum::{EnumIter, EnumString, IntoEnumIterator}; -use crate::ui::prelude::*; +use ui::prelude::*; #[derive(Debug, PartialEq, Eq, Clone, Copy, strum::Display, EnumString, EnumIter)] #[strum(serialize_all = "snake_case")] diff --git a/crates/storybook2/src/storybook2.rs b/crates/storybook2/src/storybook2.rs index b10998ae37d6d0b546f6a4428388aca5d697bdcd..e371001d2df7671e0c14fff2c67406982b682a96 100644 --- a/crates/storybook2/src/storybook2.rs +++ b/crates/storybook2/src/storybook2.rs @@ -5,9 +5,7 @@ mod collab_panel; mod stories; mod story; mod story_selector; -mod theme; mod themes; -mod ui; mod workspace; use std::sync::Arc; @@ -18,12 +16,12 @@ use gpui3::{ }; use log::LevelFilter; use simplelog::SimpleLogger; +use ui::prelude::*; +use ui::themed; use crate::assets::Assets; use crate::story_selector::StorySelector; -use crate::theme::themed; use crate::themes::rose_pine_dawn; -use crate::ui::prelude::*; use crate::workspace::workspace; // gpui2::actions! { diff --git a/crates/storybook2/src/themes/rose_pine.rs b/crates/storybook2/src/themes/rose_pine.rs index 74a957f04f893a749364c50b7e88a1f0cc5a4652..1cb45c73ffbdb9a1da17f2ff5aafb2a4e0a2e4c0 100644 --- a/crates/storybook2/src/themes/rose_pine.rs +++ b/crates/storybook2/src/themes/rose_pine.rs @@ -1,5 +1,5 @@ -use crate::theme::Theme; use gpui3::serde_json::{self, json}; +use ui::Theme; pub fn rose_pine() -> Theme { serde_json::from_value(json! { diff --git a/crates/storybook2/src/ui.rs b/crates/storybook2/src/ui.rs deleted file mode 100644 index b74ac0641acc408e636520fd3e1fb0eda5bef9b4..0000000000000000000000000000000000000000 --- a/crates/storybook2/src/ui.rs +++ /dev/null @@ -1,12 +0,0 @@ -mod children; -mod components; -mod element_ext; -mod elements; -pub mod prelude; -mod tokens; - -pub use children::*; -pub use components::*; -pub use element_ext::*; -pub use elements::*; -pub use tokens::*; diff --git a/crates/storybook2/src/workspace.rs b/crates/storybook2/src/workspace.rs index 65e9d82c1a768171adb0bdf1118999ce5e309f27..b0f9c97dc2020ba0967a8bb80ee5d47f170bc49b 100644 --- a/crates/storybook2/src/workspace.rs +++ b/crates/storybook2/src/workspace.rs @@ -1,14 +1,14 @@ -use crate::ui::prelude::*; -use crate::ui::{Panel, Stack}; -use crate::{ - collab_panel::{collab_panel, CollabPanel}, - theme::{theme, themed}, - themes::rose_pine_dawn, -}; use gpui3::{ div, img, svg, view, Context, Element, ParentElement, RootView, StyleHelpers, View, ViewContext, WindowContext, }; +use ui::prelude::*; +use ui::{theme, themed, Panel, Stack}; + +use crate::{ + collab_panel::{collab_panel, CollabPanel}, + themes::rose_pine_dawn, +}; pub struct Workspace { left_panel: View, diff --git a/crates/storybook2/src/ui/children.rs b/crates/ui2/src/children.rs similarity index 100% rename from crates/storybook2/src/ui/children.rs rename to crates/ui2/src/children.rs diff --git a/crates/storybook2/src/ui/components.rs b/crates/ui2/src/components.rs similarity index 100% rename from crates/storybook2/src/ui/components.rs rename to crates/ui2/src/components.rs diff --git a/crates/storybook2/src/ui/components/list.rs b/crates/ui2/src/components/list.rs similarity index 99% rename from crates/storybook2/src/ui/components/list.rs rename to crates/ui2/src/components/list.rs index 02f480c37fbb46cc8c9b91002a872d5dcd5ab536..d6a76d829a19d8f32c6c711be8b528b631fc81d2 100644 --- a/crates/storybook2/src/ui/components/list.rs +++ b/crates/ui2/src/components/list.rs @@ -3,8 +3,8 @@ use std::marker::PhantomData; use gpui3::{div, Div, Hsla, WindowContext}; use crate::theme::theme; -use crate::ui::prelude::*; -use crate::ui::{ +use crate::prelude::*; +use crate::{ h_stack, token, v_stack, Avatar, Icon, IconColor, IconElement, IconSize, Label, LabelColor, LabelSize, }; diff --git a/crates/storybook2/src/ui/components/panel.rs b/crates/ui2/src/components/panel.rs similarity index 96% rename from crates/storybook2/src/ui/components/panel.rs rename to crates/ui2/src/components/panel.rs index e6847fa78b73463f347649b24a558b88c4ef1613..1a6b333a2caa8200eb29aae9ecbf598d3b5720a6 100644 --- a/crates/storybook2/src/ui/components/panel.rs +++ b/crates/ui2/src/components/panel.rs @@ -2,9 +2,8 @@ use std::marker::PhantomData; use gpui3::AbsoluteLength; -use crate::themes::rose_pine_dawn; -use crate::ui::prelude::*; -use crate::ui::{token, v_stack}; +use crate::{prelude::*, theme}; +use crate::{token, v_stack}; #[derive(Default, Debug, PartialEq, Eq, Hash, Clone, Copy)] pub enum PanelAllowedSides { @@ -103,7 +102,7 @@ impl Panel { fn render(&mut self, cx: &mut ViewContext) -> impl Element { let token = token(); - let theme = rose_pine_dawn(); + let theme = theme(cx); let panel_base; let current_width = self.width.unwrap_or(self.initial_width); diff --git a/crates/storybook2/src/ui/element_ext.rs b/crates/ui2/src/element_ext.rs similarity index 100% rename from crates/storybook2/src/ui/element_ext.rs rename to crates/ui2/src/element_ext.rs diff --git a/crates/storybook2/src/ui/elements.rs b/crates/ui2/src/elements.rs similarity index 100% rename from crates/storybook2/src/ui/elements.rs rename to crates/ui2/src/elements.rs diff --git a/crates/storybook2/src/ui/elements/avatar.rs b/crates/ui2/src/elements/avatar.rs similarity index 97% rename from crates/storybook2/src/ui/elements/avatar.rs rename to crates/ui2/src/elements/avatar.rs index e86a0e17105bc3a775cd8e88f18ac0fe73dcb190..efc7462c2f8ac29653309aa3745204c42d7bcfa2 100644 --- a/crates/storybook2/src/ui/elements/avatar.rs +++ b/crates/ui2/src/elements/avatar.rs @@ -3,7 +3,7 @@ use std::marker::PhantomData; use gpui3::{img, ArcCow}; use crate::theme::theme; -use crate::ui::prelude::*; +use crate::prelude::*; #[derive(Element, Clone)] pub struct Avatar { diff --git a/crates/storybook2/src/ui/elements/icon.rs b/crates/ui2/src/elements/icon.rs similarity index 99% rename from crates/storybook2/src/ui/elements/icon.rs rename to crates/ui2/src/elements/icon.rs index 539cb5a227768a1a39f4256d7e1c400a4681fe5a..fd32e36b040d8c9024f968aadabd20dc7e316f11 100644 --- a/crates/storybook2/src/ui/elements/icon.rs +++ b/crates/ui2/src/elements/icon.rs @@ -5,7 +5,7 @@ use gpui3::{svg, Hsla}; use strum::EnumIter; use crate::theme::{theme, Theme}; -use crate::ui::prelude::*; +use crate::prelude::*; #[derive(Default, PartialEq, Copy, Clone)] pub enum IconSize { diff --git a/crates/storybook2/src/ui/elements/label.rs b/crates/ui2/src/elements/label.rs similarity index 99% rename from crates/storybook2/src/ui/elements/label.rs rename to crates/ui2/src/elements/label.rs index d87587a529ae0f180f00bf07dbf99b4273fb6be3..3b1be6fd69702aedc3fba0ae7f3b0abc7fc5d637 100644 --- a/crates/storybook2/src/ui/elements/label.rs +++ b/crates/ui2/src/elements/label.rs @@ -4,7 +4,7 @@ use gpui3::{Hsla, WindowContext}; use smallvec::SmallVec; use crate::theme::theme; -use crate::ui::prelude::*; +use crate::prelude::*; #[derive(Default, PartialEq, Copy, Clone)] pub enum LabelColor { diff --git a/crates/storybook2/src/ui/elements/stack.rs b/crates/ui2/src/elements/stack.rs similarity index 95% rename from crates/storybook2/src/ui/elements/stack.rs rename to crates/ui2/src/elements/stack.rs index e796297159866fc1ee25d59a87477f98f7d22830..e8e547e006d5065d3b9441c120800b71b76e0bdb 100644 --- a/crates/storybook2/src/ui/elements/stack.rs +++ b/crates/ui2/src/elements/stack.rs @@ -1,6 +1,6 @@ use gpui3::{div, Div}; -use crate::ui::prelude::*; +use crate::prelude::*; pub trait Stack: StyleHelpers { /// Horizontally stacks elements. diff --git a/crates/ui2/src/lib.rs b/crates/ui2/src/lib.rs index 7d12d9af8195bf5e19d10c7b592b359ccd014149..1d46b8ba98d8e3d2aa9aaf8b3d826a8a6a7c5956 100644 --- a/crates/ui2/src/lib.rs +++ b/crates/ui2/src/lib.rs @@ -1,14 +1,18 @@ -pub fn add(left: usize, right: usize) -> usize { - left + right -} +#![allow(dead_code, unused_variables)] -#[cfg(test)] -mod tests { - use super::*; +mod children; +mod components; +mod element_ext; +mod elements; +pub mod prelude; +mod theme; +mod tokens; - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +pub use children::*; +pub use components::*; +pub use element_ext::*; +pub use elements::*; +pub use prelude::*; +pub use tokens::*; + +pub use crate::theme::*; diff --git a/crates/storybook2/src/ui/prelude.rs b/crates/ui2/src/prelude.rs similarity index 98% rename from crates/storybook2/src/ui/prelude.rs rename to crates/ui2/src/prelude.rs index 252ef42853b66d3e478af491d1ee9272d242006f..9fab5a42ccc4cc878c41b61bf801b2934533a3e2 100644 --- a/crates/storybook2/src/ui/prelude.rs +++ b/crates/ui2/src/prelude.rs @@ -3,7 +3,7 @@ pub use gpui3::{ WindowContext, }; -pub use crate::ui::{HackyChildren, HackyChildrenPayload, ElementExt}; +pub use crate::{HackyChildren, HackyChildrenPayload, ElementExt}; use gpui3::{hsla, rgb, Hsla}; use strum::EnumIter; diff --git a/crates/storybook2/src/theme.rs b/crates/ui2/src/theme.rs similarity index 89% rename from crates/storybook2/src/theme.rs rename to crates/ui2/src/theme.rs index 785cf05c3b4cfb3a64d69c13f636eb4bacacf223..e8b8b9c2c87e2db770abfbf03367f210987dcb51 100644 --- a/crates/storybook2/src/theme.rs +++ b/crates/ui2/src/theme.rs @@ -1,5 +1,6 @@ +use std::collections::HashMap; +use std::fmt; use std::sync::Arc; -use std::{collections::HashMap, fmt}; use gpui3::{ BorrowAppContext, Bounds, Element, Hsla, LayoutId, Pixels, Result, ViewContext, WindowContext, @@ -176,22 +177,6 @@ impl Element for Themed { } } -// fn preferred_theme(cx: &AppContext) -> Theme { -// settings::get::(cx) -// .theme -// .deserialized_base_theme -// .lock() -// .get_or_insert_with(|| { -// let theme: Theme = -// serde_json::from_value(settings::get::(cx).theme.base_theme.clone()) -// .unwrap(); -// Box::new(theme) -// }) -// .downcast_ref::() -// .unwrap() -// .clone() -// } - pub fn theme(cx: &WindowContext) -> Arc { Arc::new(cx.state::().clone()) } diff --git a/crates/storybook2/src/ui/tokens.rs b/crates/ui2/src/tokens.rs similarity index 100% rename from crates/storybook2/src/ui/tokens.rs rename to crates/ui2/src/tokens.rs