From da0fd28743d435963ce787d24327a178f698dcb5 Mon Sep 17 00:00:00 2001 From: PixeledCode Date: Thu, 10 Apr 2025 13:10:11 +0530 Subject: [PATCH 01/32] feat(button): update loading state styling --- .../components/button/src/DestructiveButton.tsx | 4 ++-- .../components/button/src/DestructiveIconButton.tsx | 2 +- .../components/button/src/DestructiveLinkButton.tsx | 8 ++++---- .../components/button/src/DestructiveSecondaryButton.tsx | 4 ++-- .../paste-core/components/button/src/InverseButton.tsx | 4 ++-- .../components/button/src/InverseLinkButton.tsx | 2 +- packages/paste-core/components/button/src/LinkButton.tsx | 2 +- .../paste-core/components/button/src/PrimaryButton.tsx | 4 ++-- .../components/button/src/PrimaryIconButton.tsx | 2 +- .../paste-core/components/button/src/SecondaryButton.tsx | 4 ++-- .../components/button/src/SecondaryIconButton.tsx | 2 +- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/paste-core/components/button/src/DestructiveButton.tsx b/packages/paste-core/components/button/src/DestructiveButton.tsx index c599564e2a..746c5f9e8a 100644 --- a/packages/paste-core/components/button/src/DestructiveButton.tsx +++ b/packages/paste-core/components/button/src/DestructiveButton.tsx @@ -30,9 +30,9 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextDestructive", + color: "colorTextWeaker", backgroundColor: "colorBackgroundBody", - boxShadow: "shadowBorderWeak", + boxShadow: "shadowBorderWeaker", }); const disabledStyles: BoxStyleProps = merge(BaseStyles.disabled, { diff --git a/packages/paste-core/components/button/src/DestructiveIconButton.tsx b/packages/paste-core/components/button/src/DestructiveIconButton.tsx index d047a1ca66..e0982670ee 100644 --- a/packages/paste-core/components/button/src/DestructiveIconButton.tsx +++ b/packages/paste-core/components/button/src/DestructiveIconButton.tsx @@ -21,7 +21,7 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextDestructive", + color: "colorTextWeaker", }); const disabledStyles = merge(BaseStyles.disabled, { diff --git a/packages/paste-core/components/button/src/DestructiveLinkButton.tsx b/packages/paste-core/components/button/src/DestructiveLinkButton.tsx index 698cb6f4c6..e80247afaa 100644 --- a/packages/paste-core/components/button/src/DestructiveLinkButton.tsx +++ b/packages/paste-core/components/button/src/DestructiveLinkButton.tsx @@ -15,11 +15,11 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextLinkDestructive", + color: "colorTextWeaker", textAlign: "left", - _hover: { color: "colorTextLinkDestructiveStronger" }, - _active: { color: "colorTextLinkDestructiveStronger" }, - _focus: { color: "colorTextLinkDestructiveStronger" }, + _hover: { color: "colorTextWeaker" }, + _active: { color: "colorTextWeaker" }, + _focus: { color: "colorTextWeaker" }, }); const disabledStyles: BoxStyleProps = merge(BaseStyles.disabled, { diff --git a/packages/paste-core/components/button/src/DestructiveSecondaryButton.tsx b/packages/paste-core/components/button/src/DestructiveSecondaryButton.tsx index 6a50ab28d8..8387c903ea 100644 --- a/packages/paste-core/components/button/src/DestructiveSecondaryButton.tsx +++ b/packages/paste-core/components/button/src/DestructiveSecondaryButton.tsx @@ -30,9 +30,9 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const baseLoadingStyles: BoxStyleProps = { - color: "colorTextDestructive", + color: "colorTextWeaker", backgroundColor: "colorBackgroundBody", - boxShadow: "shadowBorderWeak", + boxShadow: "shadowBorderWeaker", }; const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { diff --git a/packages/paste-core/components/button/src/InverseButton.tsx b/packages/paste-core/components/button/src/InverseButton.tsx index 4c33592ecd..6b8be46e1b 100644 --- a/packages/paste-core/components/button/src/InverseButton.tsx +++ b/packages/paste-core/components/button/src/InverseButton.tsx @@ -30,9 +30,9 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextInverse", + color: "colorTextInverseWeakest", backgroundColor: "colorBackgroundInverseStrong", - boxShadow: "shadowBorderInverseWeaker", + boxShadow: "shadowBorderInverseWeakest", }); const disabledStyles = merge(BaseStyles.disabled, { diff --git a/packages/paste-core/components/button/src/InverseLinkButton.tsx b/packages/paste-core/components/button/src/InverseLinkButton.tsx index d17ab0a93c..0c3991d1d2 100644 --- a/packages/paste-core/components/button/src/InverseLinkButton.tsx +++ b/packages/paste-core/components/button/src/InverseLinkButton.tsx @@ -16,7 +16,7 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextInverse", + color: "colorTextInverseWeakest", textAlign: "left", }); diff --git a/packages/paste-core/components/button/src/LinkButton.tsx b/packages/paste-core/components/button/src/LinkButton.tsx index 73b2ba6b28..1985e18a99 100644 --- a/packages/paste-core/components/button/src/LinkButton.tsx +++ b/packages/paste-core/components/button/src/LinkButton.tsx @@ -15,7 +15,7 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextPrimary", + color: "colorTextWeaker", textAlign: "left", }); diff --git a/packages/paste-core/components/button/src/PrimaryButton.tsx b/packages/paste-core/components/button/src/PrimaryButton.tsx index b4a09b3e0c..ac0233dc2c 100644 --- a/packages/paste-core/components/button/src/PrimaryButton.tsx +++ b/packages/paste-core/components/button/src/PrimaryButton.tsx @@ -30,9 +30,9 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextPrimary", + color: "colorTextWeaker", backgroundColor: "colorBackgroundBody", - boxShadow: "shadowBorderWeak", + boxShadow: "shadowBorderWeaker", }); const disabledStyles = merge(BaseStyles.disabled, { diff --git a/packages/paste-core/components/button/src/PrimaryIconButton.tsx b/packages/paste-core/components/button/src/PrimaryIconButton.tsx index 5b32015e20..08d423ea47 100644 --- a/packages/paste-core/components/button/src/PrimaryIconButton.tsx +++ b/packages/paste-core/components/button/src/PrimaryIconButton.tsx @@ -21,7 +21,7 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextPrimary", + color: "colorTextWeaker", }); const disabledStyles = merge(BaseStyles.disabled, { diff --git a/packages/paste-core/components/button/src/SecondaryButton.tsx b/packages/paste-core/components/button/src/SecondaryButton.tsx index 8012a4903c..b2818522cb 100644 --- a/packages/paste-core/components/button/src/SecondaryButton.tsx +++ b/packages/paste-core/components/button/src/SecondaryButton.tsx @@ -30,9 +30,9 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const baseLoadingStyles: BoxStyleProps = { - color: "colorTextPrimary", + color: "colorTextWeaker", backgroundColor: "colorBackgroundBody", - boxShadow: "shadowBorderWeak", + boxShadow: "shadowBorderWeaker", }; const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { diff --git a/packages/paste-core/components/button/src/SecondaryIconButton.tsx b/packages/paste-core/components/button/src/SecondaryIconButton.tsx index 56c92f2c36..536fdbc836 100644 --- a/packages/paste-core/components/button/src/SecondaryIconButton.tsx +++ b/packages/paste-core/components/button/src/SecondaryIconButton.tsx @@ -21,7 +21,7 @@ const defaultStyles: BoxStyleProps = merge(BaseStyles.default, { }); const loadingStyles: BoxStyleProps = merge(BaseStyles.loading, { - color: "colorTextPrimary", + color: "colorTextWeaker", }); const disabledStyles = merge(BaseStyles.disabled, { From c388bc446caf2348436d26d574f96fccf38b7412 Mon Sep 17 00:00:00 2001 From: PixeledCode Date: Thu, 10 Apr 2025 13:13:12 +0530 Subject: [PATCH 02/32] feat(tokens): update aliases and tokens --- packages/paste-design-tokens/tokens/aliases/color-palette.yml | 2 +- packages/paste-design-tokens/tokens/global/border-color.yml | 2 +- packages/paste-design-tokens/tokens/global/box-shadow.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/paste-design-tokens/tokens/aliases/color-palette.yml b/packages/paste-design-tokens/tokens/aliases/color-palette.yml index 38937153f1..60185325db 100644 --- a/packages/paste-design-tokens/tokens/aliases/color-palette.yml +++ b/packages/paste-design-tokens/tokens/aliases/color-palette.yml @@ -32,7 +32,7 @@ aliases: palette-gray-15: "#edeef2" palette-gray-20: "#e1e3ea" palette-gray-30: "#cacdd8" - palette-gray-40: "#8e96ae" + palette-gray-40: "#8B93AA" palette-gray-50: "#8891aa" palette-gray-55: "#67728e" palette-gray-60: "#606b85" diff --git a/packages/paste-design-tokens/tokens/global/border-color.yml b/packages/paste-design-tokens/tokens/global/border-color.yml index d8781a7fa0..a772c06685 100644 --- a/packages/paste-design-tokens/tokens/global/border-color.yml +++ b/packages/paste-design-tokens/tokens/global/border-color.yml @@ -29,7 +29,7 @@ props: - color-background-destructive-weaker - color-background-destructive-weakest color-border: - value: "{!palette-gray-50}" + value: "{!palette-gray-40}" comment: Default border color uicontrol_contrast_pairing: # - color-background diff --git a/packages/paste-design-tokens/tokens/global/box-shadow.yml b/packages/paste-design-tokens/tokens/global/box-shadow.yml index 45a424d480..050bc20423 100644 --- a/packages/paste-design-tokens/tokens/global/box-shadow.yml +++ b/packages/paste-design-tokens/tokens/global/box-shadow.yml @@ -39,7 +39,7 @@ props: value: "{!offset-0} {!offset-0} {!offset-0} {!offset-05} {!palette-gray-30}" comment: Weak shadow border for disabled inputs. shadow-border: - value: "{!offset-0} {!offset-0} {!offset-0} {!offset-05} {!palette-gray-50}" + value: "{!offset-0} {!offset-0} {!offset-0} {!offset-05} {!palette-gray-40}" comment: Shadow border for inputs. shadow-border-strong: value: "{!offset-0} {!offset-0} {!offset-0} {!offset-05} {!palette-gray-60}" From 83e3877ab5e332eadf684fef441ae56f8e23fe84 Mon Sep 17 00:00:00 2001 From: PixeledCode Date: Thu, 10 Apr 2025 13:32:39 +0530 Subject: [PATCH 03/32] feat(button): update border radius based on size --- .../components/button/src/DestructiveLinkButton.tsx | 8 +++++++- .../components/button/src/InverseLinkButton.tsx | 7 ++++++- packages/paste-core/components/button/src/LinkButton.tsx | 7 ++++++- packages/paste-core/components/button/src/styles.ts | 8 ++++---- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/paste-core/components/button/src/DestructiveLinkButton.tsx b/packages/paste-core/components/button/src/DestructiveLinkButton.tsx index e80247afaa..2a0f9cc072 100644 --- a/packages/paste-core/components/button/src/DestructiveLinkButton.tsx +++ b/packages/paste-core/components/button/src/DestructiveLinkButton.tsx @@ -30,6 +30,12 @@ const disabledStyles: BoxStyleProps = merge(BaseStyles.disabled, { _focus: { color: "colorTextLinkDestructiveWeak" }, }); +const linkSizeStyles = (size: keyof typeof SizeStyles): BoxStyleProps => + merge(SizeStyles[size], { + borderRadius: "borderRadius20", + }); + + const ButtonStyleMapping = { default: defaultStyles, loading: loadingStyles, @@ -45,7 +51,7 @@ const DestructiveLinkButton = React.forwardRef ); }, diff --git a/packages/paste-core/components/button/src/InverseLinkButton.tsx b/packages/paste-core/components/button/src/InverseLinkButton.tsx index 0c3991d1d2..7813ef99e0 100644 --- a/packages/paste-core/components/button/src/InverseLinkButton.tsx +++ b/packages/paste-core/components/button/src/InverseLinkButton.tsx @@ -25,6 +25,11 @@ const disabledStyles: BoxStyleProps = merge(BaseStyles.disabled, { textAlign: "left", }); +const linkSizeStyles = (size: keyof typeof SizeStyles): BoxStyleProps => + merge(SizeStyles[size], { + borderRadius: "borderRadius20", + }); + const ButtonStyleMapping = { default: defaultStyles, loading: loadingStyles, @@ -40,7 +45,7 @@ const InverseLinkButton = React.forwardRef width={fullWidth ? "100%" : "auto"} {...safelySpreadBoxProps({ as, ...props })} {...ButtonStyleMapping[buttonState]} - {...SizeStyles[size]} + {...linkSizeStyles(size)} /> ); }, diff --git a/packages/paste-core/components/button/src/LinkButton.tsx b/packages/paste-core/components/button/src/LinkButton.tsx index 1985e18a99..cd96c68bdb 100644 --- a/packages/paste-core/components/button/src/LinkButton.tsx +++ b/packages/paste-core/components/button/src/LinkButton.tsx @@ -24,6 +24,11 @@ const disabledStyles: BoxStyleProps = merge(BaseStyles.disabled, { textAlign: "left", }); +const linkSizeStyles = (size: keyof typeof SizeStyles): BoxStyleProps => + merge(SizeStyles[size], { + borderRadius: "borderRadius20", + }); + const ButtonStyleMapping = { default: defaultStyles, loading: loadingStyles, @@ -39,7 +44,7 @@ const LinkButton = React.forwardRef( width={fullWidth ? "100%" : "auto"} {...safelySpreadBoxProps({ as, ...props })} {...ButtonStyleMapping[buttonState]} - {...SizeStyles[size]} + {...linkSizeStyles(size)} /> ); }, diff --git a/packages/paste-core/components/button/src/styles.ts b/packages/paste-core/components/button/src/styles.ts index ed8a628e65..2e1669aab0 100644 --- a/packages/paste-core/components/button/src/styles.ts +++ b/packages/paste-core/components/button/src/styles.ts @@ -44,7 +44,7 @@ export const SizeStyles: { [key in ButtonSizes]: BoxStyleProps } = { paddingBottom: "space30", paddingLeft: "space40", paddingRight: "space40", - borderRadius: "borderRadius20", + borderRadius: "borderRadius30", fontSize: "fontSize30", lineHeight: "lineHeight20", }, @@ -53,17 +53,17 @@ export const SizeStyles: { [key in ButtonSizes]: BoxStyleProps } = { paddingBottom: "space20", paddingLeft: "space30", paddingRight: "space30", - borderRadius: "borderRadius10", + borderRadius: "borderRadius30", fontSize: "fontSize30", lineHeight: "lineHeight20", }, icon: { padding: "space30", - borderRadius: "borderRadius20", + borderRadius: "borderRadius30", }, icon_small: { padding: "space20", - borderRadius: "borderRadius20", + borderRadius: "borderRadius30", }, reset: { paddingTop: "space0", From 31ddc63f098256c8fb8f953fab43751fba58c5ca Mon Sep 17 00:00:00 2001 From: PixeledCode Date: Thu, 10 Apr 2025 15:24:19 +0530 Subject: [PATCH 04/32] feat(checkbox): update styles --- .../base-radio-checkbox/src/BaseRadioCheckbox.tsx | 14 +++++++------- .../button/src/DestructiveLinkButton.tsx | 1 - .../components/checkbox/src/Checkbox.tsx | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/paste-core/components/base-radio-checkbox/src/BaseRadioCheckbox.tsx b/packages/paste-core/components/base-radio-checkbox/src/BaseRadioCheckbox.tsx index 9a8d0ee4cf..ea6e7ce402 100644 --- a/packages/paste-core/components/base-radio-checkbox/src/BaseRadioCheckbox.tsx +++ b/packages/paste-core/components/base-radio-checkbox/src/BaseRadioCheckbox.tsx @@ -55,8 +55,8 @@ const BaseRadioCheckboxControl = React.forwardRef borderRadius: "borderRadius20", }); - const ButtonStyleMapping = { default: defaultStyles, loading: loadingStyles, diff --git a/packages/paste-core/components/checkbox/src/Checkbox.tsx b/packages/paste-core/components/checkbox/src/Checkbox.tsx index 69eb55a8c5..e3b6cdad41 100644 --- a/packages/paste-core/components/checkbox/src/Checkbox.tsx +++ b/packages/paste-core/components/checkbox/src/Checkbox.tsx @@ -21,7 +21,7 @@ const selectAllStyleProps = { paddingRight: "space30", paddingBottom: "space20", paddingLeft: "space30", - borderRadius: "borderRadius10", + borderRadius: "borderRadius20", backgroundColor: "colorBackground", }; From 59fab9070757f609797f185cfec61fbe76a64174 Mon Sep 17 00:00:00 2001 From: PixeledCode Date: Thu, 10 Apr 2025 15:48:00 +0530 Subject: [PATCH 05/32] feat(label): add optional prop --- .../paste-core/components/label/package.json | 2 ++ .../paste-core/components/label/src/Label.tsx | 21 +++++++++++++++++-- .../label/stories/label.stories.tsx | 19 +++++++++++++++++ yarn.lock | 2 ++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/packages/paste-core/components/label/package.json b/packages/paste-core/components/label/package.json index 42f6a478d2..cafcd6a351 100644 --- a/packages/paste-core/components/label/package.json +++ b/packages/paste-core/components/label/package.json @@ -35,6 +35,7 @@ "@twilio-paste/screen-reader-only": "^14.0.0", "@twilio-paste/style-props": "^10.0.0", "@twilio-paste/styling-library": "^4.0.0", + "@twilio-paste/text": "^11.0.1", "@twilio-paste/theme": "^12.0.0", "@twilio-paste/types": "^7.0.0", "@twilio-paste/uid-library": "^3.0.0", @@ -54,6 +55,7 @@ "@twilio-paste/screen-reader-only": "^14.0.1", "@twilio-paste/style-props": "^10.0.1", "@twilio-paste/styling-library": "^4.0.1", + "@twilio-paste/text": "^11.0.1", "@twilio-paste/theme": "^12.0.1", "@twilio-paste/types": "^7.0.1", "@twilio-paste/uid-library": "^3.0.1", diff --git a/packages/paste-core/components/label/src/Label.tsx b/packages/paste-core/components/label/src/Label.tsx index 08dc46676c..4d3336b318 100644 --- a/packages/paste-core/components/label/src/Label.tsx +++ b/packages/paste-core/components/label/src/Label.tsx @@ -2,6 +2,7 @@ import { Box, safelySpreadBoxProps } from "@twilio-paste/box"; import type { BoxProps } from "@twilio-paste/box"; import { MediaBody, MediaFigure, MediaObject } from "@twilio-paste/media-object"; import type { TextColor } from "@twilio-paste/style-props"; +import { Text } from "@twilio-paste/text"; import type { HTMLPasteProps } from "@twilio-paste/types"; import * as React from "react"; @@ -31,6 +32,13 @@ type LabelBaseProps = { * @memberof LabelBaseProps */ required?: boolean; + /** + * Shows the input is optional. + * + * @type {boolean} + * @memberof LabelBaseProps + */ + optional?: boolean; /** * * @type {LabelVariants} @@ -83,6 +91,7 @@ const Label = React.forwardRef( as = "label", marginBottom, required, + optional, disabled, children, variant, @@ -124,7 +133,7 @@ const Label = React.forwardRef( textTransform="none" element={element} fontSize="fontSize30" - fontWeight="fontWeightSemibold" + fontWeight="fontWeightMedium" lineHeight="lineHeight30" color={textColor} cursor={cursor} @@ -136,7 +145,15 @@ const Label = React.forwardRef( )} - {children} + + {children} + {optional && ( + + {" "} + (optional) + + )} + ); diff --git a/packages/paste-core/components/label/stories/label.stories.tsx b/packages/paste-core/components/label/stories/label.stories.tsx index 3c8d577f8e..e712116883 100644 --- a/packages/paste-core/components/label/stories/label.stories.tsx +++ b/packages/paste-core/components/label/stories/label.stories.tsx @@ -22,6 +22,9 @@ export const Default = (): React.ReactNode => { + ); }; @@ -35,6 +38,9 @@ export const Disabled = (): React.ReactNode => { + ); }; @@ -48,6 +54,9 @@ export const Inverse = (): React.ReactNode => { + ); }; @@ -78,6 +87,9 @@ export const Customized: Story = () => { + @@ -100,6 +112,9 @@ export const Customized: Story = () => { + @@ -114,6 +129,7 @@ export const Customized: Story = () => { FOO_REQUIRED_DOT: { backgroundColor: "colorBackgroundDestructiveStrong" }, BAR: { backgroundColor: "colorBackgroundDestructiveStrong" }, BAR_WRAPPER: { cursor: "help" }, + TAR_OPTIONAL_TEXT: { fontStyle: "normal", color: "colorTextWarningStrong" }, }} >