···11-import React, {createContext, ReactNode, useContext} from 'react'
22-import {TextStyle, ViewStyle} from 'react-native'
11+import {type ReactNode} from 'react'
22+import {createContext, useContext} from 'react'
33+import {type TextStyle, type ViewStyle} from 'react-native'
3444-import {ThemeName} from '#/alf/types'
55+import {type ThemeName} from '#/alf/types'
56import {darkTheme, defaultTheme, dimTheme} from './themes'
6778export type ColorScheme = 'light' | 'dark'
···2930export type ShapeName = 'button' | 'bigButton' | 'smallButton'
3031export type Shapes = Record<ShapeName, ViewStyle>
31323333+/**
3434+ * @deprecated use typography atoms from `#/alf`
3535+ */
3236export type TypographyVariant =
3337 | '2xl-thin'
3438 | '2xl'
+10-2
src/lib/hooks/usePalette.ts
···11import {useMemo} from 'react'
22-import {TextStyle, ViewStyle} from 'react-native'
22+import {type TextStyle, type ViewStyle} from 'react-native'
3344-import {PaletteColor, PaletteColorName, useTheme} from '../ThemeContext'
44+import {
55+ type PaletteColor,
66+ type PaletteColorName,
77+ useTheme,
88+} from '../ThemeContext'
59610export interface UsePaletteValue {
711 colors: PaletteColor
···1620 link: TextStyle
1721 icon: TextStyle
1822}
2323+2424+/**
2525+ * @deprecated use `useTheme` from `#/alf`
2626+ */
1927export function usePalette(color: PaletteColorName): UsePaletteValue {
2028 const theme = useTheme()
2129 return useMemo(() => {
+13-2
src/lib/styles.ts
···11-import {Dimensions, StyleProp, StyleSheet, TextStyle} from 'react-native'
11+import {
22+ Dimensions,
33+ type StyleProp,
44+ StyleSheet,
55+ type TextStyle,
66+} from 'react-native'
2738import {isWeb} from '#/platform/detection'
44-import {Theme, TypographyVariant} from './ThemeContext'
99+import {type Theme, type TypographyVariant} from './ThemeContext'
510611// 1 is lightest, 2 is light, 3 is mid, 4 is dark, 5 is darkest
1212+/**
1313+ * @deprecated use ALF colors instead
1414+ */
715export const colors = {
816 white: '#ffffff',
917 black: '#000000',
···6371 blueDark: {start: '#5F45E0', end: colors.blue3}, // avis, banner
6472}
65737474+/**
7575+ * @deprecated use atoms from `#/alf`
7676+ */
6677export const s = StyleSheet.create({
6778 // helpers
6879 footerSpacer: {height: 100},
+9
src/state/modals/index.tsx
···4343 name: 'change-password'
4444}
45454646+/**
4747+ * @deprecated DO NOT ADD NEW MODALS
4848+ */
4649export type Modal =
4750 // Account
4851 | DeleteAccountModal
···125128 )
126129}
127130131131+/**
132132+ * @deprecated use the dialog system from `#/components/Dialog.tsx`
133133+ */
128134export function useModals() {
129135 return React.useContext(ModalContext)
130136}
131137138138+/**
139139+ * @deprecated use the dialog system from `#/components/Dialog.tsx`
140140+ */
132141export function useModalControls() {
133142 return React.useContext(ModalControlContext)
134143}
+9
src/view/com/util/Link.tsx
···5656 onBeforePress?: () => void
5757}
58585959+/**
6060+ * @deprecated use Link from `#/components/Link.tsx` instead
6161+ */
5962export const Link = memo(function Link({
6063 testID,
6164 style,
···156159 )
157160})
158161162162+/**
163163+ * @deprecated use InlineLinkText from `#/components/Link.tsx` instead
164164+ */
159165export const TextLink = memo(function TextLink({
160166 testID,
161167 type = 'md',
···301307 onPointerEnter?: () => void
302308 anchorNoUnderline?: boolean
303309}
310310+/**
311311+ * @deprecated use WebOnlyInlineLinkText from `#/components/Link.tsx` instead
312312+ */
304313export const TextLinkOnWebOnly = memo(function DesktopWebTextLink({
305314 testID,
306315 type = 'md',
+1-1
src/view/com/util/ViewHeader.tsx
···33/**
44 * Legacy ViewHeader component. Use Layout.Header going forward.
55 *
66- * @deprecated
66+ * @deprecated use `Layout.Header` from `#/components/Layout.tsx`
77 */
88export function ViewHeader({
99 title,
+10-8
src/view/com/util/forms/Button.tsx
···11import React from 'react'
22import {
33 ActivityIndicator,
44- GestureResponderEvent,
55- NativeSyntheticEvent,
66- NativeTouchEvent,
44+ type GestureResponderEvent,
55+ type NativeSyntheticEvent,
66+ type NativeTouchEvent,
77 Pressable,
88- PressableStateCallbackType,
99- StyleProp,
88+ type PressableStateCallbackType,
99+ type StyleProp,
1010 StyleSheet,
1111- TextStyle,
1111+ type TextStyle,
1212 View,
1313- ViewStyle,
1313+ type ViewStyle,
1414} from 'react-native'
15151616import {choose} from '#/lib/functions'
···3737 }
3838}
39394040-// TODO: Enforce that button always has a label
4040+/**
4141+ * @deprecated use Button from `#/components/Button.tsx` instead
4242+ */
4143export function Button({
4244 type = 'primary',
4345 label,
+12-7
src/view/com/util/forms/DropdownButton.tsx
···11-import React, {PropsWithChildren, useMemo, useRef} from 'react'
11+import {type PropsWithChildren} from 'react'
22+import {useMemo, useRef} from 'react'
23import {
34 Dimensions,
44- GestureResponderEvent,
55- Insets,
66- StyleProp,
55+ type GestureResponderEvent,
66+ type Insets,
77+ type StyleProp,
78 StyleSheet,
89 TouchableOpacity,
910 TouchableWithoutFeedback,
1011 useWindowDimensions,
1112 View,
1212- ViewStyle,
1313+ type ViewStyle,
1314} from 'react-native'
1415import Animated, {FadeIn, FadeInDown, FadeInUp} from 'react-native-reanimated'
1516import RootSiblings from 'react-native-root-siblings'
1616-import {IconProp} from '@fortawesome/fontawesome-svg-core'
1717+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
1718import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
1819import {msg} from '@lingui/macro'
1920import {useLingui} from '@lingui/react'
2121+import type React from 'react'
20222123import {HITSLOP_10} from '#/lib/constants'
2224import {usePalette} from '#/lib/hooks/usePalette'
···2628import {native} from '#/alf'
2729import {FullWindowOverlay} from '#/components/FullWindowOverlay'
2830import {Text} from '../text/Text'
2929-import {Button, ButtonType} from './Button'
3131+import {Button, type ButtonType} from './Button'
30323133const ESTIMATED_BTN_HEIGHT = 50
3234const ESTIMATED_SEP_HEIGHT = 16
···7072 accessibilityHint?: string
7173}
72747575+/**
7676+ * @deprecated use Menu from `#/components/Menu.tsx` instead
7777+ */
7378export function DropdownButton({
7479 testID,
7580 type = 'bare',
+34-4
src/view/com/util/forms/NativeDropdown.tsx
···11import React from 'react'
22-import {Platform, Pressable, StyleSheet, View, ViewStyle} from 'react-native'
33-import {IconProp} from '@fortawesome/fontawesome-svg-core'
22+import {
33+ Platform,
44+ Pressable,
55+ StyleSheet,
66+ View,
77+ type ViewStyle,
88+} from 'react-native'
99+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
410import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
511import * as DropdownMenu from 'zeego/dropdown-menu'
66-import {MenuItemCommonProps} from 'zeego/lib/typescript/menu'
1212+import {type MenuItemCommonProps} from 'zeego/lib/typescript/menu'
713814import {usePalette} from '#/lib/hooks/usePalette'
915import {useTheme} from '#/lib/ThemeContext'
···12181319// Custom Dropdown Menu Components
1420// ==
2121+/**
2222+ * @deprecated use Menu from `#/components/Menu.tsx` instead
2323+ */
1524export const DropdownMenuRoot = DropdownMenu.Root
1625// export const DropdownMenuTrigger = DropdownMenu.Trigger
2626+/**
2727+ * @deprecated use Menu from `#/components/Menu.tsx` instead
2828+ */
1729export const DropdownMenuContent = DropdownMenu.Content
18301931type TriggerProps = Omit<
···2537 accessibilityLabel?: string
2638 accessibilityHint?: string
2739 }>
4040+/**
4141+ * @deprecated use Menu from `#/components/Menu.tsx` instead
4242+ */
2843export const DropdownMenuTrigger = DropdownMenu.create(
2944 (props: TriggerProps) => {
3045 const theme = useTheme()
···5974)
60756176type ItemProps = React.ComponentProps<(typeof DropdownMenu)['Item']>
7777+/**
7878+ * @deprecated use Menu from `#/components/Menu.tsx` instead
7979+ */
6280export const DropdownMenuItem = DropdownMenu.create(
6381 (props: ItemProps & {testID?: string}) => {
6482 const theme = useTheme()
···84102)
8510386104type TitleProps = React.ComponentProps<(typeof DropdownMenu)['ItemTitle']>
105105+/**
106106+ * @deprecated use Menu from `#/components/Menu.tsx` instead
107107+ */
87108export const DropdownMenuItemTitle = DropdownMenu.create(
88109 (props: TitleProps) => {
89110 const pal = usePalette('default')
···98119)
99120100121type IconProps = React.ComponentProps<(typeof DropdownMenu)['ItemIcon']>
122122+/**
123123+ * @deprecated use Menu from `#/components/Menu.tsx` instead
124124+ */
101125export const DropdownMenuItemIcon = DropdownMenu.create((props: IconProps) => {
102126 return <DropdownMenu.ItemIcon {...props} />
103127}, 'ItemIcon')
104128105129type SeparatorProps = React.ComponentProps<(typeof DropdownMenu)['Separator']>
130130+/**
131131+ * @deprecated use Menu from `#/components/Menu.tsx` instead
132132+ */
106133export const DropdownMenuSeparator = DropdownMenu.create(
107134 (props: SeparatorProps) => {
108135 const pal = usePalette('default')
···142169 triggerStyle?: ViewStyle
143170}
144171145145-/* The `NativeDropdown` function uses native iOS and Android dropdown menus.
172172+/**
173173+ * The `NativeDropdown` function uses native iOS and Android dropdown menus.
146174 * It also creates a animated custom dropdown for web that uses
147175 * Radix UI primitives under the hood
148176 * @prop {DropdownItem[]} items - An array of dropdown items
149177 * @prop {React.ReactNode} children - A custom dropdown trigger
178178+ *
179179+ * @deprecated use Menu from `#/components/Menu.tsx` instead
150180 */
151181export function NativeDropdown({
152182 items,
+3
src/view/com/util/forms/NativeDropdown.web.tsx
···6363 triggerStyle?: ViewStyle
6464}
65656666+/**
6767+ * @deprecated use Menu from `#/components/Menu.tsx` instead
6868+ */
6669export function NativeDropdown({
6770 items,
6871 children,
+12-3
src/view/com/util/forms/ToggleButton.tsx
···11-import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native'
11+import {
22+ type StyleProp,
33+ StyleSheet,
44+ type TextStyle,
55+ View,
66+ type ViewStyle,
77+} from 'react-native'
2839import {choose} from '#/lib/functions'
410import {colors} from '#/lib/styles'
511import {useTheme} from '#/lib/ThemeContext'
66-import {TypographyVariant} from '#/lib/ThemeContext'
1212+import {type TypographyVariant} from '#/lib/ThemeContext'
713import {Text} from '../text/Text'
88-import {Button, ButtonType} from './Button'
1414+import {Button, type ButtonType} from './Button'
9151616+/**
1717+ * @deprecated use Toggle from `#/components/form/Toggle.tsx` instead
1818+ */
1019export function ToggleButton({
1120 testID,
1221 type = 'default-light',
+4-4
src/view/com/util/text/Text.tsx
···11import React from 'react'
22-import {StyleSheet, TextProps} from 'react-native'
22+import {StyleSheet, type TextProps} from 'react-native'
33import {UITextView} from 'react-native-uitextview'
4455import {lh, s} from '#/lib/styles'
66-import {TypographyVariant, useTheme} from '#/lib/ThemeContext'
66+import {type TypographyVariant, useTheme} from '#/lib/ThemeContext'
77import {logger} from '#/logger'
88import {isIOS, isWeb} from '#/platform/detection'
99import {applyFonts, useAlf} from '#/alf'
1010import {
1111 childHasEmoji,
1212 renderChildrenWithEmoji,
1313- StringChild,
1313+ type StringChild,
1414} from '#/alf/typography'
15151616export type CustomTextProps = Omit<TextProps, 'children'> & {
···32323333export {Text_DEPRECATED as Text}
3434/**
3535- * @deprecated use Text from Typography instead.
3535+ * @deprecated use Text from `#/components/Typography.tsx` instead
3636 */
3737function Text_DEPRECATED({
3838 type = 'md',