From 1745b36c27c016afb95fe26eab34a98241700fb7 Mon Sep 17 00:00:00 2001 From: John Date: Sun, 28 Dec 2025 20:56:07 +0800 Subject: [PATCH 1/3] feat(button): add support for custom text sizes in button component --- crates/story/src/stories/button_story.rs | 42 +++++++++++++++++++++++- crates/ui/src/button/button.rs | 3 +- crates/ui/src/styled.rs | 4 ++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/crates/story/src/stories/button_story.rs b/crates/story/src/stories/button_story.rs index a977f72d8..95a82494c 100644 --- a/crates/story/src/stories/button_story.rs +++ b/crates/story/src/stories/button_story.rs @@ -4,7 +4,8 @@ use gpui::{ }; use gpui_component::{ - ActiveTheme, Disableable as _, Icon, IconName, Selectable as _, Sizable as _, Theme, + ActiveTheme, Disableable as _, Icon, IconName, Selectable as _, Sizable as _, Size, StyleSized, + Theme, button::{Button, ButtonCustomVariant, ButtonGroup, ButtonVariants as _}, checkbox::Checkbox, h_flex, v_flex, @@ -906,5 +907,44 @@ impl Render for ButtonStory { .on_click(Self::on_click), ), ) + .child( + section("Button with different text size") + .child( + Button::new("button-custom-text-large") + .primary() + .label("Large") + .button_text_size(Size::Large), + ) + .child( + Button::new("button-custom-text-medium") + .primary() + .label("Medium") + .button_text_size(Size::Medium), + ) + .child( + Button::new("button-custom-text-small") + .primary() + .label("Small") + .button_text_size(Size::Small), + ) + .child( + Button::new("button-custom-text-xsmall") + .primary() + .label("XSmall") + .button_text_size(Size::XSmall), + ) + .child( + Button::new("button-custom-text-35") + .primary() + .label("35 px") + .button_text_size(Size::Size(px(35.0))), + ) + .child( + Button::new("button-custom-text-8") + .primary() + .label("8 px") + .button_text_size(Size::Size(px(8.0))), + ), + ) } } diff --git a/crates/ui/src/button/button.rs b/crates/ui/src/button/button.rs index 60d1266d6..9a0e77048 100644 --- a/crates/ui/src/button/button.rs +++ b/crates/ui/src/button/button.rs @@ -2,7 +2,7 @@ use std::rc::Rc; use crate::{ ActiveTheme, Colorize as _, Disableable, FocusableExt as _, Icon, IconName, Selectable, - Sizable, Size, StyleSized, StyledExt, h_flex, spinner::Spinner, tooltip::Tooltip, + Sizable, Size, StyledExt, h_flex, spinner::Spinner, tooltip::Tooltip, }; use gpui::{ Action, AnyElement, App, ClickEvent, Corners, Div, Edges, ElementId, Hsla, InteractiveElement, @@ -572,7 +572,6 @@ impl RenderOnce for Button { .w_full() .items_center() .justify_center() - .button_text_size(self.size) .map(|this| match self.size { Size::XSmall => this.gap_1(), Size::Small => this.gap_1(), diff --git a/crates/ui/src/styled.rs b/crates/ui/src/styled.rs index 93a4b0da0..953de007f 100644 --- a/crates/ui/src/styled.rs +++ b/crates/ui/src/styled.rs @@ -531,7 +531,9 @@ impl StyleSized for T { match size { Size::XSmall => self.text_xs(), Size::Small => self.text_sm(), - _ => self.text_base(), + Size::Medium => self.text_base(), + Size::Large => self.text_lg(), + Size::Size(size) => self.text_size(size), } } } From ea75212b80391548f2422c9f66d8ce949db765cd Mon Sep 17 00:00:00 2001 From: John Date: Sun, 28 Dec 2025 21:12:17 +0800 Subject: [PATCH 2/3] feat(ButtonStory): add button component with custom text size story --- crates/story/src/stories/button_story.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/story/src/stories/button_story.rs b/crates/story/src/stories/button_story.rs index 95a82494c..727f142cd 100644 --- a/crates/story/src/stories/button_story.rs +++ b/crates/story/src/stories/button_story.rs @@ -944,6 +944,11 @@ impl Render for ButtonStory { .primary() .label("8 px") .button_text_size(Size::Size(px(8.0))), + ) + .child( + Button::new("button-custom-text-8") + .primary() + .label("Not Specified"), ), ) } From 83ff7045201286a99b176919daa29419d3a514c8 Mon Sep 17 00:00:00 2001 From: John Date: Sun, 28 Dec 2025 22:14:59 +0800 Subject: [PATCH 3/3] refactor: update button text size method calls to use text_lg, text_sm, text_size --- crates/story/src/stories/button_story.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/story/src/stories/button_story.rs b/crates/story/src/stories/button_story.rs index 727f142cd..fb68325f0 100644 --- a/crates/story/src/stories/button_story.rs +++ b/crates/story/src/stories/button_story.rs @@ -913,7 +913,7 @@ impl Render for ButtonStory { Button::new("button-custom-text-large") .primary() .label("Large") - .button_text_size(Size::Large), + .text_lg(), ) .child( Button::new("button-custom-text-medium") @@ -925,7 +925,7 @@ impl Render for ButtonStory { Button::new("button-custom-text-small") .primary() .label("Small") - .button_text_size(Size::Small), + .text_sm(), ) .child( Button::new("button-custom-text-xsmall") @@ -943,7 +943,7 @@ impl Render for ButtonStory { Button::new("button-custom-text-8") .primary() .label("8 px") - .button_text_size(Size::Size(px(8.0))), + .text_size(px(8.0)), ) .child( Button::new("button-custom-text-8")