about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorSamuel Newman <mozzius@protonmail.com>2025-08-12 02:04:45 +0300
committerGitHub <noreply@github.com>2025-08-11 18:04:45 -0500
commitef171e289234c7439011b68a61e951ab88319d0b (patch)
treed08f56f3edc18156fbf1c9c2c8dd20ce944f258d /src
parent17c5cec3566c591dd3aa1a939d449d8206f91c28 (diff)
downloadvoidsky-ef171e289234c7439011b68a61e951ab88319d0b.tar.zst
Tweak small buttons (#8818)
* set size=small buttons to `text_sm`

* change to `leading_snug`

* add gap to repost buttons

* Add medium-weight font, use for buttons (#8819)

* add medium weight inter

* add medium font to buttons

* Adjust bold weights

* Fix ref

---------

Co-authored-by: Eric Bailey <git@esb.lol>

* Align with designs

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Diffstat (limited to 'src')
-rw-r--r--src/alf/atoms.ts3
-rw-r--r--src/alf/fonts.ts12
-rw-r--r--src/alf/tokens.ts1
-rw-r--r--src/alf/util/unusedUseFonts.android.ts10
-rw-r--r--src/components/Button.tsx32
-rw-r--r--src/components/PostControls/RepostButton.tsx4
-rw-r--r--src/view/screens/Storybook/Typography.tsx15
7 files changed, 49 insertions, 28 deletions
diff --git a/src/alf/atoms.ts b/src/alf/atoms.ts
index fe449c6ee..5b7c5c87e 100644
--- a/src/alf/atoms.ts
+++ b/src/alf/atoms.ts
@@ -332,6 +332,9 @@ export const atoms = {
   font_normal: {
     fontWeight: tokens.fontWeight.normal,
   },
+  font_medium: {
+    fontWeight: tokens.fontWeight.medium,
+  },
   font_bold: {
     fontWeight: tokens.fontWeight.bold,
   },
diff --git a/src/alf/fonts.ts b/src/alf/fonts.ts
index 786916721..7366edef2 100644
--- a/src/alf/fonts.ts
+++ b/src/alf/fonts.ts
@@ -1,7 +1,7 @@
-import {TextStyle} from 'react-native'
+import {type TextStyle} from 'react-native'
 
 import {isAndroid, isWeb} from '#/platform/detection'
-import {Device, device} from '#/storage'
+import {type Device, device} from '#/storage'
 
 const WEB_FONT_FAMILIES = `system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"`
 
@@ -43,11 +43,11 @@ export function applyFonts(style: TextStyle, fontFamily: 'system' | 'theme') {
       style.fontFamily =
         {
           400: 'Inter-Regular',
-          500: 'Inter-Regular',
+          500: 'Inter-Medium',
           600: 'Inter-SemiBold',
-          700: 'Inter-SemiBold',
-          800: 'Inter-ExtraBold',
-          900: 'Inter-ExtraBold',
+          700: 'Inter-Bold',
+          800: 'Inter-Bold',
+          900: 'Inter-Bold',
         }[String(style.fontWeight || '400')] || 'Inter-Regular'
 
       if (style.fontStyle === 'italic') {
diff --git a/src/alf/tokens.ts b/src/alf/tokens.ts
index 576aafe95..74cc160fc 100644
--- a/src/alf/tokens.ts
+++ b/src/alf/tokens.ts
@@ -53,6 +53,7 @@ export const borderRadius = {
  */
 export const fontWeight = {
   normal: '400',
+  medium: '500',
   bold: '600',
   heavy: '800',
 } as const
diff --git a/src/alf/util/unusedUseFonts.android.ts b/src/alf/util/unusedUseFonts.android.ts
index 083c9d4d6..467f3909f 100644
--- a/src/alf/util/unusedUseFonts.android.ts
+++ b/src/alf/util/unusedUseFonts.android.ts
@@ -11,9 +11,11 @@ export function DO_NOT_USE() {
   return useFonts({
     'Inter-Regular': require('../../../assets/fonts/inter/Inter-Regular.otf'),
     'Inter-Italic': require('../../../assets/fonts/inter/Inter-Italic.otf'),
-    'Inter-Bold': require('../../../assets/fonts/inter/Inter-SemiBold.otf'),
-    'Inter-BoldItalic': require('../../../assets/fonts/inter/Inter-SemiBoldItalic.otf'),
-    'Inter-Black': require('../../../assets/fonts/inter/Inter-ExtraBold.otf'),
-    'Inter-BlackItalic': require('../../../assets/fonts/inter/Inter-ExtraBoldItalic.otf'),
+    'Inter-Medium': require('../../../assets/fonts/inter/Inter-Medium.otf'),
+    'Inter-MediumItalic': require('../../../assets/fonts/inter/Inter-MediumItalic.otf'),
+    'Inter-SemiBold': require('../../../assets/fonts/inter/Inter-SemiBold.otf'),
+    'Inter-SemiBoldItalic': require('../../../assets/fonts/inter/Inter-SemiBoldItalic.otf'),
+    'Inter-Bold': require('../../../assets/fonts/inter/Inter-Bold.otf'),
+    'Inter-BoldItalic': require('../../../assets/fonts/inter/Inter-BoldItalic.otf'),
   })
 }
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
index d7bd9a208..fd56a28cf 100644
--- a/src/components/Button.tsx
+++ b/src/components/Button.tsx
@@ -460,22 +460,22 @@ export const Button = React.forwardRef<View, ButtonProps>(
       if (shape === 'default') {
         if (size === 'large') {
           baseStyles.push({
-            paddingVertical: 14,
-            paddingHorizontal: 24,
+            paddingVertical: 12,
+            paddingHorizontal: 25,
             borderRadius: 10,
-            gap: 4,
+            gap: 3,
           })
         } else if (size === 'small') {
           baseStyles.push({
             paddingVertical: 8,
-            paddingHorizontal: 12,
+            paddingHorizontal: 13,
             borderRadius: 8,
             gap: 3,
           })
         } else if (size === 'tiny') {
           baseStyles.push({
-            paddingVertical: 6,
-            paddingHorizontal: 8,
+            paddingVertical: 5,
+            paddingHorizontal: 9,
             borderRadius: 6,
             gap: 2,
           })
@@ -487,9 +487,9 @@ export const Button = React.forwardRef<View, ButtonProps>(
          */
         if (size === 'large') {
           if (shape === 'round') {
-            baseStyles.push({height: 45, width: 45})
+            baseStyles.push({height: 44, width: 44})
           } else {
-            baseStyles.push({height: 45, width: 45})
+            baseStyles.push({height: 44, width: 44})
           }
         } else if (size === 'small') {
           if (shape === 'round') {
@@ -758,11 +758,11 @@ export function useSharedButtonTextStyles() {
     }
 
     if (size === 'large') {
-      baseStyles.push(a.text_md, a.leading_tight)
+      baseStyles.push(a.text_md, a.leading_snug, a.font_medium)
     } else if (size === 'small') {
-      baseStyles.push(a.text_md, a.leading_tight)
+      baseStyles.push(a.text_sm, a.leading_snug, a.font_medium)
     } else if (size === 'tiny') {
-      baseStyles.push(a.text_xs, a.leading_tight)
+      baseStyles.push(a.text_xs, a.leading_snug, a.font_medium)
     }
 
     return StyleSheet.flatten(baseStyles)
@@ -773,7 +773,7 @@ export function ButtonText({children, style, ...rest}: ButtonTextProps) {
   const textStyles = useSharedButtonTextStyles()
 
   return (
-    <Text {...rest} style={[a.font_bold, a.text_center, textStyles, style]}>
+    <Text {...rest} style={[a.text_center, textStyles, style]}>
       {children}
     </Text>
   )
@@ -799,7 +799,7 @@ export function ButtonIcon({
     const iconSizeShorthand =
       size ??
       (({
-        large: 'sm',
+        large: 'md',
         small: 'sm',
         tiny: 'xs',
       }[buttonSize || 'small'] || 'sm') as Exclude<
@@ -814,7 +814,7 @@ export function ButtonIcon({
     const iconSize = {
       xs: 12,
       sm: 16,
-      md: 20,
+      md: 18,
       lg: 24,
       xl: 28,
       '2xl': 32,
@@ -825,9 +825,9 @@ export function ButtonIcon({
      * don't increase button size
      */
     const iconContainerSize = {
-      large: 17,
+      large: 20,
       small: 17,
-      tiny: 13,
+      tiny: 15,
     }[buttonSize || 'small']
 
     return {
diff --git a/src/components/PostControls/RepostButton.tsx b/src/components/PostControls/RepostButton.tsx
index 31438c6bd..e09950b49 100644
--- a/src/components/PostControls/RepostButton.tsx
+++ b/src/components/PostControls/RepostButton.tsx
@@ -145,7 +145,7 @@ let RepostButtonDialogInner = ({
       <View style={a.gap_xl}>
         <View style={a.gap_xs}>
           <Button
-            style={[a.justify_start, a.px_md]}
+            style={[a.justify_start, a.px_md, a.gap_sm]}
             label={
               isReposted
                 ? _(msg`Remove repost`)
@@ -167,7 +167,7 @@ let RepostButtonDialogInner = ({
           <Button
             disabled={embeddingDisabled}
             testID="quoteBtn"
-            style={[a.justify_start, a.px_md]}
+            style={[a.justify_start, a.px_md, a.gap_sm]}
             label={
               embeddingDisabled
                 ? _(msg`Quote posts disabled`)
diff --git a/src/view/screens/Storybook/Typography.tsx b/src/view/screens/Storybook/Typography.tsx
index 9286d4b3d..3f22091e1 100644
--- a/src/view/screens/Storybook/Typography.tsx
+++ b/src/view/screens/Storybook/Typography.tsx
@@ -20,6 +20,21 @@ export function Typography() {
       <Text style={[a.text_xs]}>atoms.text_xs</Text>
       <Text style={[a.text_2xs]}>atoms.text_2xs</Text>
 
+      <Text style={[a.text_xl]}>This is regular text</Text>
+      <Text style={[a.text_xl, a.italic]}>This is regular italic text</Text>
+      <Text style={[a.text_xl, a.font_medium]}>This is medium text</Text>
+      <Text style={[a.text_xl, a.font_medium, a.italic]}>
+        This is medium italic text
+      </Text>
+      <Text style={[a.text_xl, a.font_bold]}>This is bold text</Text>
+      <Text style={[a.text_xl, a.font_bold, a.italic]}>
+        This is bold italic text
+      </Text>
+      <Text style={[a.text_xl, a.font_heavy]}>This is heavy text</Text>
+      <Text style={[a.text_xl, a.font_heavy, a.italic]}>
+        This is heavy italic text
+      </Text>
+
       <RichText
         // TODO: This only supports already resolved facets.
         // Resolving them on read is bad anyway.