{"version":3,"sources":["../src/button/index.native.tsx"],"names":["spacing","forwardRef","Button","useTheme","radius","jsxs","Pressable","jsx","RNText"],"mappings":"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","file":"button.native.cjs","sourcesContent":["/**\n * Button (native). Same shape, RN Pressable + Text.\n */\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Pressable, Text as RNText, View, type ViewStyle, type TextStyle } from \"react-native\";\nimport { useTheme } from \"@plyxui/styles\";\nimport { radius, spacing } from \"@plyxui/core\";\n\nexport type ButtonVariant = \"primary\" | \"ghost\" | \"link\" | \"danger\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nconst sizeMap: Record<ButtonSize, { h: number; padX: number; fontSize: number }> = {\n  sm: { h: 32, padX: spacing[3], fontSize: 13 },\n  md: { h: 40, padX: spacing[4], fontSize: 14 },\n  lg: { h: 48, padX: spacing[5], fontSize: 15 },\n};\n\nexport interface ButtonProps {\n  variant?: ButtonVariant;\n  size?: ButtonSize;\n  onPress?: () => void;\n  loading?: boolean;\n  disabled?: boolean;\n  iconLeading?: ReactNode;\n  iconTrailing?: ReactNode;\n  fullWidth?: boolean;\n  children?: ReactNode;\n  style?: ViewStyle;\n}\n\nfunction variantStyles(\n  variant: ButtonVariant,\n  colors: { primaryOrange: string; text: string; stroke: string; statusError: string },\n): { container: ViewStyle; text: TextStyle } {\n  switch (variant) {\n    case \"primary\":\n      return { container: { backgroundColor: colors.primaryOrange }, text: { color: \"#FFFFFF\" } };\n    case \"ghost\":\n      return { container: { borderWidth: 1, borderColor: colors.stroke }, text: { color: colors.text } };\n    case \"link\":\n      return { container: {}, text: { color: colors.primaryOrange } };\n    case \"danger\":\n      return { container: { backgroundColor: colors.statusError }, text: { color: \"#FFFFFF\" } };\n  }\n}\n\nexport const Button = forwardRef<View, ButtonProps>(function Button(\n  { variant = \"primary\", size = \"md\", onPress, loading, disabled, iconLeading, iconTrailing, fullWidth, children, style },\n  ref,\n) {\n  const { colors } = useTheme();\n  const dims = sizeMap[size];\n  const { container, text } = variantStyles(variant, colors);\n\n  const composed: ViewStyle = {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    gap: spacing[2],\n    height: variant === \"link\" ? undefined : dims.h,\n    paddingHorizontal: variant === \"link\" ? 0 : dims.padX,\n    borderRadius: variant === \"link\" ? 0 : radius.md,\n    opacity: disabled ? 0.55 : 1,\n    width: fullWidth ? \"100%\" : undefined,\n    ...container,\n    ...style,\n  };\n\n  return (\n    <Pressable\n      ref={ref}\n      onPress={loading || disabled ? undefined : onPress}\n      disabled={loading || disabled}\n      style={({ pressed }) => ({\n        ...composed,\n        opacity: pressed && !disabled ? 0.85 : composed.opacity,\n      })}\n      accessibilityRole=\"button\"\n      accessibilityState={{ disabled: !!disabled, busy: !!loading }}\n    >\n      {iconLeading}\n      <RNText style={{ fontSize: dims.fontSize, fontWeight: \"600\", ...text }}>{children}</RNText>\n      {iconTrailing}\n    </Pressable>\n  );\n});\n"]}