mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Continue styling new story components
This commit is contained in:
parent
c041799c6a
commit
63c3edfb83
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -9211,6 +9211,7 @@ name = "story"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gpui2",
|
"gpui2",
|
||||||
|
"itertools 0.10.5",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -9,3 +9,4 @@ publish = false
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
gpui = { package = "gpui2", path = "../gpui2" }
|
gpui = { package = "gpui2", path = "../gpui2" }
|
||||||
smallvec.workspace = true
|
smallvec.workspace = true
|
||||||
|
itertools = {package = "itertools", version = "0.10"}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
use gpui::{div, hsla, AnyElement, Div, ElementId, Hsla, SharedString, Stateful, WindowContext};
|
use gpui::{
|
||||||
use gpui::{prelude::*, px};
|
div, hsla, prelude::*, px, rems, AnyElement, Div, ElementId, Hsla, SharedString, WindowContext,
|
||||||
|
};
|
||||||
|
use itertools::Itertools;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
@ -37,7 +39,7 @@ impl StoryColor {
|
|||||||
border: hsla(216. / 360., 11. / 100., 91. / 100., 1.),
|
border: hsla(216. / 360., 11. / 100., 91. / 100., 1.),
|
||||||
background: hsla(0. / 360., 0. / 100., 100. / 100., 1.),
|
background: hsla(0. / 360., 0. / 100., 100. / 100., 1.),
|
||||||
card_background: hsla(0. / 360., 0. / 100., 96. / 100., 1.),
|
card_background: hsla(0. / 360., 0. / 100., 96. / 100., 1.),
|
||||||
divider: hsla(216. / 360., 11. / 100., 91. / 100., 1.),
|
divider: hsla(216. / 360., 11. / 100., 86. / 100., 1.),
|
||||||
link: hsla(206. / 360., 100. / 100., 50. / 100., 1.),
|
link: hsla(206. / 360., 100. / 100., 50. / 100., 1.),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -112,7 +114,11 @@ impl Story {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn section() -> Div {
|
pub fn section() -> Div {
|
||||||
div().mt_4().mb_2()
|
div()
|
||||||
|
.p_4()
|
||||||
|
.m_4()
|
||||||
|
.border()
|
||||||
|
.border_color(story_color().border)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn section_title() -> Div {
|
pub fn section_title() -> Div {
|
||||||
@ -127,12 +133,12 @@ impl Story {
|
|||||||
div()
|
div()
|
||||||
.size_full()
|
.size_full()
|
||||||
.p_2()
|
.p_2()
|
||||||
|
.max_w(rems(36.))
|
||||||
.bg(gpui::black())
|
.bg(gpui::black())
|
||||||
.border()
|
|
||||||
.border_color(story_color().border)
|
|
||||||
.rounded_md()
|
.rounded_md()
|
||||||
.text_sm()
|
.text_sm()
|
||||||
.text_color(gpui::white())
|
.text_color(gpui::white())
|
||||||
|
.overflow_hidden()
|
||||||
.child(code.into())
|
.child(code.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,20 +212,23 @@ impl RenderOnce for StoryItem {
|
|||||||
div()
|
div()
|
||||||
.my_2()
|
.my_2()
|
||||||
.flex()
|
.flex()
|
||||||
|
.gap_4()
|
||||||
.w_full()
|
.w_full()
|
||||||
.child(
|
.child(
|
||||||
Story::v_stack()
|
Story::v_stack()
|
||||||
.px_2()
|
.px_2()
|
||||||
.flex_none()
|
|
||||||
.w_1_2()
|
.w_1_2()
|
||||||
.min_h_px()
|
.min_h_px()
|
||||||
.child(Story::label(self.label))
|
.child(Story::label(self.label))
|
||||||
.child(
|
.child(
|
||||||
div()
|
div()
|
||||||
.rounded_sm()
|
.rounded_md()
|
||||||
.bg(story_color().card_background)
|
.bg(story_color().card_background)
|
||||||
.border()
|
.border()
|
||||||
.border_color(story_color().border)
|
.border_color(story_color().border)
|
||||||
|
.py_1()
|
||||||
|
.px_2()
|
||||||
|
.overflow_hidden()
|
||||||
.child(self.item),
|
.child(self.item),
|
||||||
)
|
)
|
||||||
.when_some(self.description, |this, description| {
|
.when_some(self.description, |this, description| {
|
||||||
@ -233,7 +242,7 @@ impl RenderOnce for StoryItem {
|
|||||||
.w_1_2()
|
.w_1_2()
|
||||||
.min_h_px()
|
.min_h_px()
|
||||||
.when_some(self.usage, |this, usage| {
|
.when_some(self.usage, |this, usage| {
|
||||||
this.child(Story::label("Usage"))
|
this.child(Story::label("Example Usage"))
|
||||||
.child(Story::code_block(usage))
|
.child(Story::code_block(usage))
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
@ -264,6 +273,11 @@ impl RenderOnce for StorySection {
|
|||||||
type Rendered = Div;
|
type Rendered = Div;
|
||||||
|
|
||||||
fn render(self, _cx: &mut WindowContext) -> Self::Rendered {
|
fn render(self, _cx: &mut WindowContext) -> Self::Rendered {
|
||||||
|
let children: SmallVec<[AnyElement; 2]> = SmallVec::from_iter(Itertools::intersperse_with(
|
||||||
|
self.children.into_iter(),
|
||||||
|
|| Story::divider().into_any_element(),
|
||||||
|
));
|
||||||
|
|
||||||
Story::section()
|
Story::section()
|
||||||
// Section title
|
// Section title
|
||||||
.py_2()
|
.py_2()
|
||||||
@ -271,7 +285,7 @@ impl RenderOnce for StorySection {
|
|||||||
.when_some(self.description.clone(), |section, description| {
|
.when_some(self.description.clone(), |section, description| {
|
||||||
section.child(Story::description(description))
|
section.child(Story::description(description))
|
||||||
})
|
})
|
||||||
.child(div().flex().flex_col().gap_2().children(self.children))
|
.child(div().flex().flex_col().gap_2().children(children))
|
||||||
.child(Story::divider())
|
.child(Story::divider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use gpui::{div, Div, ParentElement, Render, Styled, View, VisualContext, WindowContext};
|
use gpui::{div, red, Div, ParentElement, Render, Styled, View, VisualContext, WindowContext};
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use story::*;
|
use story::*;
|
||||||
|
|
||||||
@ -13,22 +13,64 @@ impl TextStory {
|
|||||||
impl Render for TextStory {
|
impl Render for TextStory {
|
||||||
type Element = Div;
|
type Element = Div;
|
||||||
|
|
||||||
fn render(&mut self, cx: &mut gpui::ViewContext<Self>) -> Self::Element {
|
fn render(&mut self, _cx: &mut gpui::ViewContext<Self>) -> Self::Element {
|
||||||
// let # = "The quick brown fox jumps over the lazy dog. Meanwhile, the lazy dog decided it was time for a change. He started daily workout routines, ate healthier and became the fastest dog in town.";
|
|
||||||
|
|
||||||
Story::container2::<TextStory>("crates/storybook2/src/stories/text.rs").child(
|
Story::container2::<TextStory>("crates/storybook2/src/stories/text.rs").child(
|
||||||
StorySection::new().child(
|
StorySection::new()
|
||||||
StoryItem::new(
|
.child(
|
||||||
"Default Text",
|
StoryItem::new("Default", div().bg(gpui::blue()).child("Hello World!"))
|
||||||
div().flex().child(div().max_w_96().child("foo")),
|
.usage(indoc! {r##"
|
||||||
|
div()
|
||||||
|
.child("Hello World!")
|
||||||
|
"##
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.child(
|
||||||
|
StoryItem::new("Wrapping Text",
|
||||||
|
div().max_w_96()
|
||||||
|
.child(
|
||||||
|
concat!(
|
||||||
|
"The quick brown fox jumps over the lazy dog. ",
|
||||||
|
"Meanwhile, the lazy dog decided it was time for a change. ",
|
||||||
|
"He started daily workout routines, ate healthier and became the fastest dog in town.",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.description("Set a width or max-width to enable text wrapping.")
|
||||||
|
.usage(indoc! {r##"
|
||||||
|
div()
|
||||||
|
.max_w_96()
|
||||||
|
.child("Some text that you want to wrap.")
|
||||||
|
"##
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.child(
|
||||||
|
StoryItem::new("tbd",
|
||||||
|
div().flex().w_96().child(div().overflow_hidden().child(concat!(
|
||||||
|
"flex-row. width 96. overflow-hidden. The quick brown fox jumps over the lazy dog. ",
|
||||||
|
"Meanwhile, the lazy dog decided it was time for a change. ",
|
||||||
|
"He started daily workout routines, ate healthier and became the fastest dog in town.",
|
||||||
|
)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.child(
|
||||||
|
StoryItem::new("Text in Horizontal Flex",
|
||||||
|
div().flex().w_96().bg(red()).child(concat!(
|
||||||
|
"flex-row. width 96. The quick brown fox jumps over the lazy dog. ",
|
||||||
|
"Meanwhile, the lazy dog decided it was time for a change. ",
|
||||||
|
"He started daily workout routines, ate healthier and became the fastest dog in town.",
|
||||||
|
))
|
||||||
|
)
|
||||||
|
.usage(indoc! {r##"
|
||||||
|
// NOTE: When rendering text in a horizonal flex container,
|
||||||
|
// Taffy will not pass width constraints down from the parent.
|
||||||
|
// To fix this, render text in a parent with overflow: hidden
|
||||||
|
|
||||||
|
div()
|
||||||
|
.max_w_96()
|
||||||
|
.child("Some text that you want to wrap.")
|
||||||
|
"##
|
||||||
|
})
|
||||||
)
|
)
|
||||||
.description("Text with a max-width. Wraps based on set max-width.")
|
|
||||||
.usage(indoc! {r##"
|
|
||||||
div().max_w_96()
|
|
||||||
.child("Some text that you want to wrap.")
|
|
||||||
"##
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user