{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "amount-input",
  "title": "Amount input",
  "description": "hero money field · `editable={false}` with keypad",
  "dependencies": [
    "lucide-react-native@^1.21.0"
  ],
  "registryDependencies": [
    "@kit-native/icon",
    "@kit-native/lib-haptics",
    "@kit-native/lib-utils",
    "@kit-native/text"
  ],
  "files": [
    {
      "path": "components/kit/amount-input.tsx",
      "content": "import { Icon } from '@/components/ui/icon';\nimport { Text } from '@/components/ui/text';\nimport { haptic } from '@/lib/haptics';\nimport { cn } from '@/lib/utils';\nimport { ArrowUpDownIcon } from 'lucide-react-native';\nimport { Pressable, TextInput, View } from 'react-native';\n\ntype Props = {\n  value: string;\n  onChangeText: (next: string) => void;\n  /** \"$\", \"€\", \"BTC\"… */\n  symbol: string;\n  symbolPosition?: 'leading' | 'trailing';\n  /** Line under the field: conversion, balance. */\n  helper?: string;\n  onMax?: () => void;\n  onToggleCurrency?: () => void;\n  error?: string;\n  placeholder?: string;\n  /** Set false when a NumericKeypad drives the value (hides the system keyboard). */\n  editable?: boolean;\n  className?: string;\n};\n\n/** Hero amount field for send / trade / deposit screens. */\nexport function AmountInput({\n  value,\n  onChangeText,\n  symbol,\n  symbolPosition = 'leading',\n  helper,\n  onMax,\n  onToggleCurrency,\n  error,\n  placeholder = '0',\n  editable = true,\n  className,\n}: Props) {\n  const symbolEl = <Text className=\"text-muted-foreground text-3xl font-semibold\">{symbol}</Text>;\n  return (\n    <View className={className}>\n      <View className={cn('bg-card flex-row items-center gap-2 rounded-lg border px-4 py-3', error ? 'border-destructive' : 'border-border')}>\n        {symbolPosition === 'leading' ? symbolEl : null}\n        <TextInput\n          value={value}\n          onChangeText={onChangeText}\n          placeholder={placeholder}\n          keyboardType=\"decimal-pad\"\n          editable={editable}\n          showSoftInputOnFocus={editable}\n          accessibilityLabel=\"Amount\"\n          className=\"text-foreground placeholder:text-muted-foreground flex-1 p-0 text-3xl font-semibold\"\n        />\n        {symbolPosition === 'trailing' ? symbolEl : null}\n        {onToggleCurrency ? (\n          <Pressable accessibilityRole=\"button\" accessibilityLabel=\"Switch currency\" onPress={onToggleCurrency} hitSlop={8} className=\"bg-muted size-9 items-center justify-center rounded-full\">\n            <Icon as={ArrowUpDownIcon} size={16} />\n          </Pressable>\n        ) : null}\n        {onMax ? (\n          <Pressable\n            accessibilityRole=\"button\"\n            accessibilityLabel=\"Use maximum\"\n            onPress={() => {\n              haptic('selection');\n              onMax();\n            }}\n            hitSlop={8}\n            className=\"bg-muted h-8 justify-center rounded-full px-3\">\n            <Text className=\"text-primary text-xs font-bold\">MAX</Text>\n          </Pressable>\n        ) : null}\n      </View>\n      {error || helper ? (\n        <Text className={cn('mt-2 text-sm', error ? 'text-destructive' : 'text-muted-foreground text-right')}>\n          {error ?? helper}\n        </Text>\n      ) : null}\n    </View>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/kit/amount-input.tsx"
    }
  ],
  "meta": {
    "exports": [
      "AmountInput"
    ],
    "api": "<AmountInput value onChangeText symbol helper? onMax? onToggleCurrency? error? editable? />"
  },
  "docs": "Run `npx expo install --fix` afterwards so Expo SDK packages match your SDK. Needs the kit theme (`@kit-native/theme`) and `KitThemeProvider` from `@kit-native/lib-theme-context` at the root.",
  "categories": [
    "inputs"
  ],
  "type": "registry:component"
}