@rehagro/ui 1.0.64 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider/theme.native.ts","../src/provider/RehagroNativeContext.ts","../src/provider/RehagroNativeProvider.tsx","../src/components/Button/Button.native.tsx","../src/components/IconButton/IconButton.native.tsx","../src/components/TextInput/TextInput.native.tsx","../src/components/Checkbox/Checkbox.native.tsx","../src/components/Avatar/Avatar.native.tsx","../src/components/ActivityIndicator/ActivityIndicator.native.tsx","../src/components/Text/Text.native.tsx","../src/components/Tag/Tag.native.tsx","../src/components/Card/Card.native.tsx","../src/components/Select/Select.native.tsx","../src/components/Radio/Radio.native.tsx","../src/components/ProgressBar/ProgressBar.native.tsx"],"names":["Button","jsx","darkenColor","PRESET_COLORS","isPresetColor","forwardRef","IconButton","Pressable","ActivityIndicator","View","TextInput","paddingMap","radiusMap","jsxs","Text","RNTextInput","Checkbox","useState","Avatar","useMemo","RNActivityIndicator","RNText","Tag","Fragment","CardHeader","CardContent","CardFooter","Card","CheckIcon","Select","useCallback","createContext","useContext","Radio","RadioOption","RadioGroup","resolveColor","ProgressBar"],"mappings":"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","file":"native.mjs","sourcesContent":["import type { RehagroTheme } from \"./theme\";\r\n\r\n/** React Native theme — reuses the same token names as the web theme.\r\n * Color values are plain CSS hex strings (e.g. \"#16a34a\").\r\n * Spacing/radius/border values are numbers (device-independent pixels).\r\n */\r\nexport type RehagroNativeTheme = {\r\n // Brand colors\r\n primary?: string;\r\n primaryHover?: string;\r\n secondary?: string;\r\n secondaryHover?: string;\r\n danger?: string;\r\n dangerHover?: string;\r\n warning?: string;\r\n success?: string;\r\n info?: string;\r\n infoHover?: string;\r\n\r\n // Semantic colors\r\n text?: string;\r\n textMuted?: string;\r\n surface?: string;\r\n background?: string;\r\n border?: string;\r\n\r\n // Border radius (numbers = dp)\r\n radiusXxs?: number;\r\n radiusXs?: number;\r\n radiusSm?: number;\r\n radiusMd?: number;\r\n radiusLg?: number;\r\n radiusXl?: number;\r\n\r\n // Border width\r\n borderWidthSm?: number;\r\n borderWidthMd?: number;\r\n borderWidthLg?: number;\r\n\r\n // Input sizes\r\n inputHeightSm?: number;\r\n inputHeightMd?: number;\r\n inputHeightLg?: number;\r\n\r\n // Button heights\r\n buttonHeightXxs?: number;\r\n buttonHeightXs?: number;\r\n buttonHeightSm?: number;\r\n buttonHeightMd?: number;\r\n buttonHeightLg?: number;\r\n buttonHeightXl?: number;\r\n\r\n // Typography — must be loaded by the app (e.g. via expo-font / useFonts)\r\n // Inter for body/labels, Sora for headings/display\r\n fontFamilyBody?: string;\r\n fontFamilyDisplay?: string;\r\n\r\n // Text size scale (font size in dp)\r\n fontSizeXs?: number;\r\n fontSizeSm?: number;\r\n fontSizeMd?: number;\r\n fontSizeLg?: number;\r\n fontSizeXl?: number;\r\n fontSizeXxl?: number;\r\n fontSizeXxl2?: number;\r\n\r\n // Text line height scale (in dp)\r\n lineHeightXs?: number;\r\n lineHeightSm?: number;\r\n lineHeightMd?: number;\r\n lineHeightLg?: number;\r\n lineHeightXl?: number;\r\n lineHeightXxl?: number;\r\n lineHeightXxl2?: number;\r\n};\r\n\r\nexport type RehagroNativeProviderProps = {\r\n /** Theme overrides — any token not provided keeps the default value */\r\n theme: RehagroNativeTheme;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport const DEFAULT_NATIVE_THEME: RehagroNativeTheme = {\r\n primary: \"#16a34a\",\r\n secondary: \"#6b7280\",\r\n danger: \"#dc2626\",\r\n warning: \"#d97706\",\r\n success: \"#16a34a\",\r\n info: \"#0284c7\",\r\n infoHover: \"#0369a1\",\r\n\r\n text: \"#111827\",\r\n textMuted: \"#6b7280\",\r\n surface: \"#ffffff\",\r\n background: \"#f9fafb\",\r\n border: \"#d1d5db\",\r\n\r\n radiusXxs: 4,\r\n radiusXs: 8,\r\n radiusSm: 12,\r\n radiusMd: 16,\r\n radiusLg: 24,\r\n radiusXl: 32,\r\n\r\n borderWidthSm: 1,\r\n borderWidthMd: 2,\r\n borderWidthLg: 3,\r\n\r\n inputHeightSm: 36,\r\n inputHeightMd: 44,\r\n inputHeightLg: 52,\r\n\r\n buttonHeightXxs: 16,\r\n buttonHeightXs: 24,\r\n buttonHeightSm: 36,\r\n buttonHeightMd: 44,\r\n buttonHeightLg: 52,\r\n buttonHeightXl: 60,\r\n\r\n fontFamilyBody: \"\",\r\n fontFamilyDisplay: \"\",\r\n\r\n fontSizeXs: 12,\r\n fontSizeSm: 14,\r\n fontSizeMd: 16,\r\n fontSizeLg: 18,\r\n fontSizeXl: 20,\r\n fontSizeXxl: 24,\r\n fontSizeXxl2: 32,\r\n\r\n lineHeightXs: 16,\r\n lineHeightSm: 20,\r\n lineHeightMd: 24,\r\n lineHeightLg: 26,\r\n lineHeightXl: 28,\r\n lineHeightXxl: 32,\r\n lineHeightXxl2: 40,\r\n};\r\n\r\n// Ensures RehagroNativeTheme color keys stay in sync with RehagroTheme\r\ntype _ColorKeysMatch = Pick<\r\n RehagroTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\ntype _NativeColorKeys = Pick<\r\n RehagroNativeTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\n// This line will error at compile time if the color keys diverge:\r\ntype _ColorKeysCheck = _ColorKeysMatch extends _NativeColorKeys ? true : never;\r\n","import { createContext, useContext } from \"react\";\r\nimport type { RehagroNativeTheme } from \"./theme.native\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\n\r\nexport const RehagroNativeContext = createContext<RehagroNativeTheme>(DEFAULT_NATIVE_THEME);\r\n\r\nexport function useRehagroTheme(): RehagroNativeTheme {\r\n return useContext(RehagroNativeContext);\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { RehagroNativeContext } from \"./RehagroNativeContext\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\nimport type { RehagroNativeProviderProps, RehagroNativeTheme } from \"./theme.native\";\r\n\r\nexport function RehagroNativeProvider({ theme, children }: RehagroNativeProviderProps) {\r\n const resolvedTheme = useMemo<RehagroNativeTheme>(\r\n () => ({ ...DEFAULT_NATIVE_THEME, ...theme }),\r\n [theme],\r\n );\r\n\r\n return (\r\n <RehagroNativeContext.Provider value={resolvedTheme}>\r\n {children}\r\n </RehagroNativeContext.Provider>\r\n );\r\n}\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type { ButtonColor };\r\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type ButtonSize = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: ButtonVariant;\r\n /** Button size */\r\n size?: ButtonSize;\r\n /** Border radius */\r\n radius?: ButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: ButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon rendered to the left of children (hidden when loading) */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of children (hidden when loading) */\r\n rightIcon?: React.ReactNode;\r\n /** Label text */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n /** Custom style applied to the inner text label (string children only) */\r\n labelStyle?: StyleProp<TextStyle>;\r\n /** Background color when the button is pressed (overrides default pressed color) */\r\n pressedColor?: string;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport const Button = forwardRef<View, ButtonProps>(function Button(\r\n {\r\n variant = \"solid\",\r\n size = \"md\",\r\n radius = \"sm\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n leftIcon,\r\n rightIcon,\r\n children,\r\n style,\r\n labelStyle,\r\n pressedColor,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n const preset = isPresetColor(color);\r\n\r\n const presetBase: Record<PresetColor, string> = {\r\n primary: theme.primary ?? \"#15607A\",\r\n secondary: theme.secondary ?? \"#718D44\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n warning: theme.warning ?? \"#d97706\",\r\n success: theme.success ?? \"#16a34a\",\r\n info: theme.info ?? \"#0284c7\",\r\n neutral: theme.textMuted ?? \"#6b7280\",\r\n };\r\n\r\n const presetHover: Record<PresetColor, string> = {\r\n primary: theme.primaryHover ?? darkenColor(presetBase.primary),\r\n secondary: theme.secondaryHover ?? darkenColor(presetBase.secondary),\r\n danger: theme.dangerHover ?? darkenColor(presetBase.danger),\r\n warning: theme.warning ?? darkenColor(presetBase.warning),\r\n success: theme.success ?? darkenColor(presetBase.success),\r\n info: theme.infoHover ?? darkenColor(presetBase.info),\r\n neutral: theme.text ?? darkenColor(presetBase.neutral),\r\n };\r\n\r\n const colorBase = preset ? presetBase[color as PresetColor] : color;\r\n const colorHover = preset ? presetHover[color as PresetColor] : darkenColor(color);\r\n\r\n const sizeStyleMap: Record<ButtonSize, ViewStyle> = {\r\n xxs: { paddingHorizontal: 6, height: theme.buttonHeightXxs ?? 16, gap: 4 },\r\n xs: { paddingHorizontal: 8, height: theme.buttonHeightXs ?? 24, gap: 4 },\r\n sm: { paddingHorizontal: 12, height: theme.buttonHeightSm ?? 36 },\r\n md: { paddingHorizontal: 16, height: theme.buttonHeightMd ?? 44 },\r\n lg: { paddingHorizontal: 20, height: theme.buttonHeightLg ?? 52 },\r\n xl: { paddingHorizontal: 24, height: theme.buttonHeightXl ?? 60 },\r\n };\r\n\r\n const fontSizeMap: Record<ButtonSize, number> = {\r\n xxs: 10,\r\n xs: 12,\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n xl: 18,\r\n };\r\n\r\n const radiusStyleMap: Record<ButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 8,\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n borderRadius: radiusStyleMap[radius],\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n const bg = isDisabled ? colorBase : pressed ? colorHover : colorBase;\r\n return { backgroundColor: bg, borderColor: bg };\r\n }\r\n if (variant === \"outline\") {\r\n const bg = pressed ? colorBase : \"transparent\";\r\n return {\r\n borderColor: isDisabled ? bg : colorBase,\r\n backgroundColor: bg,\r\n };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: \"transparent\" };\r\n };\r\n\r\n const textColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : colorBase;\r\n return colorBase;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={\r\n accessibilityLabel ?? (typeof children === \"string\" ? children : undefined)\r\n }\r\n android_ripple={{ color: pressedColor ?? colorHover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {loading && (\r\n <ActivityIndicator\r\n size=\"small\"\r\n color={variant === \"solid\" ? (theme.surface ?? \"#ffffff\") : colorBase}\r\n />\r\n )}\r\n {!loading && leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n {typeof children === \"string\" ? (\r\n <Text\r\n style={[{ color: textColor(pressed), fontSize: fontSizeMap[size], fontWeight: \"500\", ...(theme.fontFamilyDisplay ? { fontFamily: theme.fontFamilyDisplay } : {}) }, labelStyle]}\r\n >\r\n {children}\r\n </Text>\r\n ) : (\r\n children\r\n )}\r\n {!loading && rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type IconButtonSize = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\";\r\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type IconButtonColor = ButtonColor;\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport type IconButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: IconButtonVariant;\r\n /** Button size */\r\n size?: IconButtonSize;\r\n /** Border radius */\r\n radius?: IconButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: IconButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon content */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const IconButton = forwardRef<View, IconButtonProps>(function IconButton(\r\n {\r\n variant = \"ghost\",\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n children,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n\r\n const sizePxMap: Record<IconButtonSize, number> = {\r\n xxs: 16,\r\n xs: 24,\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n };\r\n\r\n const radiusPxMap: Record<IconButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#15607A\", hover: theme.primaryHover ?? darkenColor(theme.primary ?? \"#15607A\") },\r\n secondary: { main: theme.secondary ?? \"#718D44\", hover: theme.secondaryHover ?? darkenColor(theme.secondary ?? \"#718D44\") },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? darkenColor(theme.danger ?? \"#dc2626\") },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: darkenColor(theme.warning ?? \"#d97706\") },\r\n success: { main: theme.success ?? \"#16a34a\", hover: darkenColor(theme.success ?? \"#16a34a\") },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? darkenColor(theme.info ?? \"#0284c7\") },\r\n neutral: { main: theme.textMuted ?? \"#6b7280\", hover: theme.text ?? darkenColor(theme.textMuted ?? \"#6b7280\") },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const main = preset ? presetTokens[color as PresetColor].main : color;\r\n const hover = preset ? presetTokens[color as PresetColor].hover : darkenColor(color);\r\n const boxSize = sizePxMap[size];\r\n\r\n const baseStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: radiusPxMap[radius],\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n return { backgroundColor: pressed ? hover : main, borderColor: pressed ? hover : main };\r\n }\r\n if (variant === \"outline\") {\r\n return { borderColor: main, backgroundColor: pressed ? main : \"transparent\" };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: pressed ? `${main}1a` : \"transparent\" };\r\n };\r\n\r\n const iconColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : main;\r\n return main;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={accessibilityLabel}\r\n android_ripple={{ color: hover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) =>\r\n loading ? (\r\n <ActivityIndicator size=\"small\" color={variant === \"solid\" ? theme.surface : main} />\r\n ) : (\r\n <View style={{ tintColor: iconColor(pressed) } as ViewStyle}>\r\n {children}\r\n </View>\r\n )\r\n }\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState } from \"react\";\r\nimport {\r\n TextInput as RNTextInput,\r\n Text,\r\n View,\r\n type TextInputProps as RNTextInputProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\r\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type TextInputBorderWidth = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TextInputProps = Omit<RNTextInputProps, \"style\"> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Validation status */\r\n status?: TextInputStatus;\r\n /** Input size */\r\n size?: TextInputSize;\r\n /** Border radius */\r\n radius?: TextInputRadius;\r\n /** Icon rendered to the left of the input */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of the input */\r\n rightIcon?: React.ReactNode;\r\n /** Helper/error message displayed below the input */\r\n helperText?: React.ReactNode;\r\n /** Custom style for the outermost wrapper */\r\n wrapperStyle?: StyleProp<ViewStyle>;\r\n /** Custom style for the input container */\r\n style?: StyleProp<ViewStyle>;\r\n /**\r\n * Custom border color for the input container. When provided,\r\n * overrides the resting border color from `status`/`focused`.\r\n * Mirrors the web `TextInput#borderColor` prop. Useful for\r\n * highlighting cells in tables or custom themed states.\r\n */\r\n borderColor?: string;\r\n /**\r\n * Border width token for the input container.\r\n *\r\n * - `sm`: default 1px border.\r\n * - `md`: default 2px border.\r\n * - `lg`: default 3px border.\r\n */\r\n borderWidth?: TextInputBorderWidth;\r\n};\r\n\r\nexport const TextInput = forwardRef<RNTextInput, TextInputProps>(function TextInput(\r\n {\r\n label,\r\n subtitle,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n leftIcon,\r\n rightIcon,\r\n helperText,\r\n editable = true,\r\n wrapperStyle,\r\n style,\r\n borderColor,\r\n borderWidth = \"sm\",\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [focused, setFocused] = useState(false);\r\n\r\n const isDisabled = editable === false;\r\n\r\n const heightMap: Record<TextInputSize, number> = {\r\n sm: theme.inputHeightSm ?? 36,\r\n md: theme.inputHeightMd ?? 44,\r\n lg: theme.inputHeightLg ?? 52,\r\n // `xl` (44) sits between md/lg — same height as web. Native\r\n // theme doesn't expose a token for it, so we fall back to a\r\n // hard-coded value matching the CSS `--rh-input-height-xl`.\r\n xl: 44,\r\n };\r\n\r\n const paddingMap: Record<TextInputSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 16,\r\n xl: 14,\r\n };\r\n\r\n const fontSizeMap: Record<TextInputSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n xl: 14,\r\n };\r\n\r\n const radiusMap: Record<TextInputRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusSm ?? 12,\r\n md: theme.radiusMd ?? 16,\r\n lg: theme.radiusLg ?? 24,\r\n xl: theme.radiusXl ?? 32,\r\n full: 9999,\r\n };\r\n\r\n const borderWidthMap: Record<TextInputBorderWidth, number> = {\r\n sm: theme.borderWidthSm ?? 1,\r\n md: theme.borderWidthMd ?? 2,\r\n lg: theme.borderWidthLg ?? 3,\r\n };\r\n\r\n const hasError = status === \"error\" || !!helperText;\r\n\r\n // Resting border color hierarchy: error > custom (`borderColor` prop) >\r\n // focused > theme default. Custom border color is honored only when\r\n // there's no error and the field is not focused, matching the web\r\n // behavior where focus ring keeps theming control.\r\n const effectiveBorderColor = hasError\r\n ? theme.danger\r\n : focused\r\n ? theme.primary\r\n : (borderColor ?? theme.border);\r\n\r\n const containerStyle: ViewStyle = {\r\n height: heightMap[size],\r\n paddingHorizontal: paddingMap[size],\r\n borderRadius: radiusMap[radius],\r\n borderWidth: borderWidthMap[borderWidth],\r\n borderColor: effectiveBorderColor,\r\n backgroundColor: isDisabled ? theme.background : theme.surface,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const inputId = accessibilityLabel ?? label;\r\n\r\n return (\r\n <View style={[{ gap: 4 }, wrapperStyle]}>\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\r\n <Text style={{ fontSize: 14, fontWeight: \"500\", color: theme.text }}>\r\n {label}\r\n </Text>\r\n {subtitle && (\r\n <Text\r\n style={{\r\n fontSize: 14,\r\n // Required-marker convention (matches web): a lone\r\n // `*` is rendered in danger color; any other text\r\n // stays muted.\r\n color: subtitle.trim() === \"*\" ? theme.danger : theme.textMuted,\r\n }}\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {/* Input container */}\r\n <View style={[containerStyle, style]}>\r\n {leftIcon && (\r\n <View accessibilityElementsHidden>\r\n {leftIcon}\r\n </View>\r\n )}\r\n\r\n <RNTextInput\r\n ref={ref}\r\n editable={editable}\r\n accessibilityLabel={inputId}\r\n accessibilityState={{ disabled: isDisabled }}\r\n aria-invalid={status === \"error\"}\r\n onFocus={(e) => {\r\n setFocused(true);\r\n rest.onFocus?.(e);\r\n }}\r\n onBlur={(e) => {\r\n setFocused(false);\r\n rest.onBlur?.(e);\r\n }}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n }}\r\n placeholderTextColor={theme.textMuted}\r\n {...rest}\r\n />\r\n\r\n {rightIcon && (\r\n <View accessibilityElementsHidden>\r\n {rightIcon}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <Text\r\n style={{\r\n fontSize: 12,\r\n color: hasError ? theme.danger : theme.textMuted,\r\n }}\r\n >\r\n {helperText}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef, useCallback, useState } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CheckboxProps = Omit<PressableProps, \"style\" | \"onPress\"> & {\r\n /** Checkbox size */\r\n size?: CheckboxSize;\r\n /** Label text displayed next to the checkbox */\r\n label?: string;\r\n /** Controlled checked state */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Indeterminate state (partially checked) */\r\n indeterminate?: boolean;\r\n /** Callback fired when the value changes */\r\n onChange?: (checked: boolean) => void;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst CheckIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {/* Simple checkmark drawn with two Views rotated — no SVG dep needed */}\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n width: size * 0.55,\r\n height: size * 0.3,\r\n borderLeftWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [{ rotate: \"-45deg\" }, { translateY: -size * 0.05 }],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nconst MinusIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size * 0.7,\r\n height: 2,\r\n backgroundColor: color,\r\n }}\r\n />\r\n);\r\n\r\nexport const Checkbox = forwardRef<View, CheckboxProps>(function Checkbox(\r\n {\r\n size = \"md\",\r\n label,\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n indeterminate = false,\r\n disabled,\r\n onChange,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isControlled = controlledChecked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n const isActive = isChecked || indeterminate;\r\n\r\n const handlePress = useCallback(() => {\r\n if (disabled) return;\r\n const next = !isChecked;\r\n if (!isControlled) setInternalChecked(next);\r\n onChange?.(next);\r\n }, [disabled, isChecked, isControlled, onChange]);\r\n\r\n const boxSizeMap: Record<CheckboxSize, number> = {\r\n sm: 16,\r\n md: 20,\r\n lg: 24,\r\n };\r\n\r\n const iconSizeMap: Record<CheckboxSize, number> = {\r\n sm: 10,\r\n md: 12,\r\n lg: 14,\r\n };\r\n\r\n const fontSizeMap: Record<CheckboxSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const boxSize = boxSizeMap[size];\r\n const iconSize = iconSizeMap[size];\r\n\r\n const boxStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: theme.radiusXxs,\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: isActive ? theme.primary : theme.border,\r\n backgroundColor: isActive ? theme.primary : theme.surface,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n onPress={handlePress}\r\n disabled={disabled}\r\n accessibilityRole=\"checkbox\"\r\n accessibilityState={{ checked: indeterminate ? \"mixed\" : isChecked, disabled: !!disabled }}\r\n accessibilityLabel={accessibilityLabel ?? label}\r\n style={[\r\n { flexDirection: \"row\", alignItems: \"center\", gap: 8, opacity: disabled ? 0.5 : 1 },\r\n style,\r\n ]}\r\n {...rest}\r\n >\r\n <View style={boxStyle}>\r\n {indeterminate ? (\r\n <MinusIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : isChecked ? (\r\n <CheckIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : null}\r\n </View>\r\n\r\n {label && (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState, useMemo } from \"react\";\r\nimport { Image, Text, View, type StyleProp, type ViewStyle, type ViewProps } from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type AvatarVariant = \"circle\" | \"square\";\r\n\r\n// Paleta de cores para avatares\r\nconst AVATAR_COLORS = [\r\n { bg: \"#FBF1E6\", text: \"#D6822D\" }, // Laranja\r\n { bg: \"#EDF3FA\", text: \"#538CC6\" }, // Azul\r\n { bg: \"#F3E5F5\", text: \"#9C27B0\" }, // Roxo\r\n { bg: \"#E8F5E9\", text: \"#4CAF50\" }, // Verde\r\n { bg: \"#FFF3E0\", text: \"#FF9800\" }, // Amarelo\r\n { bg: \"#FFEBEE\", text: \"#F44336\" }, // Vermelho\r\n { bg: \"#E3F2FD\", text: \"#2196F3\" }, // Azul claro\r\n { bg: \"#F3E5F5\", text: \"#673AB7\" }, // Violeta\r\n { bg: \"#E0F2F1\", text: \"#009688\" }, // Teal\r\n { bg: \"#FBE9E7\", text: \"#FF5722\" }, // Deep Orange\r\n];\r\n\r\n/**\r\n * Gera cores de avatar baseadas em uma string (nome)\r\n * Usa hash simples para garantir consistência\r\n */\r\nfunction getAvatarColors(name: string): { bg: string; text: string } {\r\n const hash = name.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\r\n const index = hash % AVATAR_COLORS.length;\r\n return AVATAR_COLORS[index];\r\n}\r\n\r\nexport type AvatarProps = Omit<ViewProps, \"style\"> & {\r\n /** Image source URL */\r\n src?: string;\r\n /** Alt text (used as accessibility label and initials fallback) */\r\n alt?: string;\r\n /** Fallback initials shown when image is unavailable */\r\n initials?: string;\r\n /** Avatar size */\r\n size?: AvatarSize;\r\n /** Shape variant */\r\n variant?: AvatarVariant;\r\n /** Generate background and text color automatically based on name/alt */\r\n colorFromName?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const Avatar = forwardRef<View, AvatarProps>(function Avatar(\r\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", colorFromName = false, style, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [imgError, setImgError] = useState(false);\r\n const showImage = !!src && !imgError;\r\n\r\n // Gera cores baseadas no nome se colorFromName estiver ativo\r\n const avatarColors = useMemo(() => {\r\n if (!colorFromName) return null;\r\n const name = initials || alt || \"\";\r\n return name ? getAvatarColors(name) : null;\r\n }, [colorFromName, initials, alt]);\r\n\r\n const fallbackLabel = initials\r\n ? initials.slice(0, 2).toUpperCase()\r\n : alt\r\n ? alt\r\n .split(\" \")\r\n .slice(0, 2)\r\n .map((w) => w[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n : \"?\";\r\n\r\n const sizePxMap: Record<AvatarSize, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n xl: 64,\r\n };\r\n\r\n const fontSizeMap: Record<AvatarSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 18,\r\n xl: 20,\r\n };\r\n\r\n const boxSize = sizePxMap[size];\r\n const borderRadius = variant === \"circle\" ? boxSize / 2 : theme.radiusSm;\r\n\r\n const containerStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius,\r\n backgroundColor: avatarColors?.bg ?? theme.primary,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n };\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"image\"\r\n accessibilityLabel={alt || initials || fallbackLabel}\r\n style={[containerStyle, style]}\r\n {...rest}\r\n >\r\n {showImage ? (\r\n <Image\r\n source={{ uri: src }}\r\n style={{ width: boxSize, height: boxSize, borderRadius }}\r\n onError={() => setImgError(true)}\r\n accessibilityLabel={alt}\r\n />\r\n ) : (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n color: avatarColors?.text ?? theme.surface,\r\n }}\r\n accessibilityElementsHidden\r\n >\r\n {fallbackLabel}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator as RNActivityIndicator,\r\n View,\r\n type StyleProp,\r\n type ViewStyle,\r\n type ViewProps,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type ActivityIndicatorSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ActivityIndicatorColor = \"primary\" | \"surface\" | \"custom\";\r\n\r\nexport type ActivityIndicatorProps = Omit<ViewProps, \"style\"> & {\r\n /** Spinner size */\r\n size?: ActivityIndicatorSize;\r\n /** Color preset — use \"custom\" to provide a raw color via `color` prop */\r\n colorVariant?: ActivityIndicatorColor;\r\n /** Raw color value (used when colorVariant is \"custom\") */\r\n color?: string;\r\n /** Whether the indicator is visible */\r\n animating?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst sizeMap: Record<ActivityIndicatorSize, number | \"small\" | \"large\"> = {\r\n sm: \"small\",\r\n md: \"large\",\r\n lg: 48,\r\n};\r\n\r\nexport const ActivityIndicator = forwardRef<View, ActivityIndicatorProps>(\r\n function ActivityIndicator(\r\n {\r\n size = \"md\",\r\n colorVariant = \"primary\",\r\n color,\r\n animating = true,\r\n style,\r\n accessibilityLabel = \"Carregando\",\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n const theme = useRehagroTheme();\r\n\r\n const resolvedColor =\r\n colorVariant === \"custom\" && color\r\n ? color\r\n : colorVariant === \"surface\"\r\n ? theme.surface\r\n : theme.primary;\r\n\r\n const spinnerSize = sizeMap[size];\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"progressbar\"\r\n accessibilityLabel={accessibilityLabel}\r\n accessibilityState={{ busy: animating }}\r\n style={style}\r\n {...rest}\r\n >\r\n <RNActivityIndicator\r\n animating={animating}\r\n size={spinnerSize as \"small\" | \"large\"}\r\n color={resolvedColor}\r\n />\r\n </View>\r\n );\r\n },\r\n);\r\n","import { forwardRef } from \"react\";\r\nimport {\r\n Text as RNText,\r\n type TextProps as RNTextProps,\r\n type StyleProp,\r\n type TextStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | \"xxl2\";\r\n\r\nexport type TextColor = \"default\" | \"muted\" | \"primary\" | \"danger\" | \"success\" | \"warning\";\r\n\r\nexport type TextProps = Omit<RNTextProps, \"style\"> & {\r\n /** Font size scale */\r\n size?: TextSize;\r\n /** Color preset */\r\n color?: TextColor;\r\n /** Bold weight */\r\n bold?: boolean;\r\n /** Custom style */\r\n style?: StyleProp<TextStyle>;\r\n};\r\n\r\n\r\nexport const Text = forwardRef<RNText, TextProps>(function Text(\r\n { size = \"sm\", color = \"default\", bold = false, style, children, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const colorMap: Record<TextColor, string> = {\r\n default: theme.text ?? \"#111827\",\r\n muted: theme.textMuted ?? \"#6b7280\",\r\n primary: theme.primary ?? \"#16a34a\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n success: theme.success ?? \"#16a34a\",\r\n warning: theme.warning ?? \"#d97706\",\r\n };\r\n\r\n const isDisplaySize = size === \"lg\" || size === \"xl\" || size === \"xxl\" || size === \"xxl2\";\r\n const fontFamily = isDisplaySize ? theme.fontFamilyDisplay : theme.fontFamilyBody;\r\n\r\n const fontSizeMap: Record<TextSize, number> = {\r\n xs: theme.fontSizeXs ?? 12,\r\n sm: theme.fontSizeSm ?? 14,\r\n md: theme.fontSizeMd ?? 16,\r\n lg: theme.fontSizeLg ?? 18,\r\n xl: theme.fontSizeXl ?? 20,\r\n xxl: theme.fontSizeXxl ?? 24,\r\n xxl2: theme.fontSizeXxl2 ?? 32,\r\n };\r\n\r\n const lineHeightMap: Record<TextSize, number> = {\r\n xs: theme.lineHeightXs ?? 16,\r\n sm: theme.lineHeightSm ?? 20,\r\n md: theme.lineHeightMd ?? 24,\r\n lg: theme.lineHeightLg ?? 26,\r\n xl: theme.lineHeightXl ?? 28,\r\n xxl: theme.lineHeightXxl ?? 32,\r\n xxl2: theme.lineHeightXxl2 ?? 40,\r\n };\r\n\r\n const resolvedStyle: TextStyle = {\r\n fontSize: fontSizeMap[size],\r\n lineHeight: lineHeightMap[size],\r\n color: colorMap[color],\r\n ...(fontFamily ? { fontFamily } : {}),\r\n ...(bold && !fontFamily ? { fontWeight: \"700\" } : {}),\r\n };\r\n\r\n return (\r\n <RNText ref={ref} style={[resolvedStyle, style]} {...rest}>\r\n {children}\r\n </RNText>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type TagColor = PresetColor | (string & {});\r\nexport type TagSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TagProps = Omit<PressableProps, \"style\"> & {\r\n /** Tag color — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\") */\r\n color?: TagColor;\r\n /** Tag size */\r\n size?: TagSize;\r\n /** Active (selected) state */\r\n active?: boolean;\r\n /** Disabled state */\r\n disabled?: boolean;\r\n /** Tag label text */\r\n title: string;\r\n /** Optional icon rendered on the left side */\r\n leftIcon?: React.ReactNode;\r\n /** Optional icon rendered on the right side */\r\n rightIcon?: React.ReactNode;\r\n /** Custom style for the outer container */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\n/** Appends a two-digit hex alpha to a 6-digit hex color string. */\r\nfunction hexAlpha(hex: string, alpha: string): string {\r\n return `${hex}${alpha}`;\r\n}\r\n\r\nexport const Tag = forwardRef<View, TagProps>(function Tag(\r\n {\r\n color = \"primary\",\r\n size = \"md\",\r\n active = false,\r\n disabled = false,\r\n title,\r\n leftIcon,\r\n rightIcon,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const clickable = !!rest.onPress && !disabled;\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#16a34a\", hover: theme.primaryHover ?? \"#15803d\" },\r\n secondary: { main: theme.secondary ?? \"#6b7280\", hover: theme.secondaryHover ?? \"#4b5563\" },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? \"#b91c1c\" },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: theme.warning ?? \"#d97706\" },\r\n success: { main: theme.success ?? \"#16a34a\", hover: theme.success ?? \"#16a34a\" },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? \"#0369a1\" },\r\n neutral: { main: theme.textMuted ?? \"#6b7280\", hover: theme.text ?? \"#374151\" },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const mainColor = preset ? presetTokens[color as PresetColor].main : color;\r\n const hoverColor = preset ? presetTokens[color as PresetColor].hover : color;\r\n\r\n const sizeStyleMap: Record<TagSize, ViewStyle> = {\r\n sm: { paddingHorizontal: 8, paddingVertical: 2, gap: 4 },\r\n md: { paddingHorizontal: 10, paddingVertical: 4, gap: 6 },\r\n lg: { paddingHorizontal: 12, paddingVertical: 6, gap: 6 },\r\n };\r\n\r\n const fontSizeMap: Record<TagSize, number> = {\r\n sm: 11,\r\n md: 12,\r\n lg: 13,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n alignSelf: \"flex-start\",\r\n borderRadius: 9999,\r\n borderWidth: 1,\r\n opacity: disabled ? 0.5 : 1,\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n function containerStyle(pressed: boolean): ViewStyle {\r\n const resolvedColor = pressed && clickable ? hoverColor : mainColor;\r\n\r\n if (active) {\r\n return {\r\n backgroundColor: resolvedColor,\r\n borderColor: resolvedColor,\r\n };\r\n }\r\n\r\n // inactive\r\n const bg = pressed && clickable\r\n ? hexAlpha(mainColor, \"33\") // ~20% on press\r\n : hexAlpha(mainColor, \"1a\"); // ~10% resting\r\n const border = hexAlpha(mainColor, \"4d\"); // ~30%\r\n\r\n return { backgroundColor: bg, borderColor: border };\r\n }\r\n\r\n function resolvedTextColor(pressed: boolean): string {\r\n if (active) return theme.surface ?? \"#ffffff\";\r\n return pressed && clickable ? hoverColor : mainColor;\r\n }\r\n\r\n const textStyle = (pressed: boolean): TextStyle => ({\r\n color: resolvedTextColor(pressed),\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n });\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"text\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={[baseStyle, containerStyle(false), style]}\r\n >\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(false)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled, selected: active }}\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n style={({ pressed }) => [baseStyle, containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(pressed)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\r\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CardProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: CardVariant;\r\n /** Border radius */\r\n radius?: CardRadius;\r\n /** Internal padding */\r\n padding?: CardPadding;\r\n /** Makes the card clickable with press effects */\r\n clickable?: boolean;\r\n /** Disabled state (only applies when clickable) */\r\n disabled?: boolean;\r\n /** Children content */\r\n children?: React.ReactNode;\r\n /** Custom style */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst radiusMap: Record<CardRadius, number> = {\r\n none: 0,\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nconst paddingMap: Record<CardPadding, number> = {\r\n none: 0,\r\n sm: 12,\r\n md: 16,\r\n lg: 24,\r\n};\r\n\r\nconst CardRoot = forwardRef<View, CardProps>(function Card(\r\n {\r\n variant = \"outlined\",\r\n radius = \"sm\",\r\n padding = \"md\",\r\n clickable = false,\r\n disabled = false,\r\n children,\r\n style,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const baseStyle: ViewStyle = {\r\n borderRadius: radiusMap[radius],\r\n padding: paddingMap[padding],\r\n opacity: disabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyles: Record<CardVariant, ViewStyle> = {\r\n elevated: {\r\n backgroundColor: theme.surface,\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 8,\r\n elevation: 4,\r\n },\r\n outlined: {\r\n backgroundColor: theme.surface,\r\n borderWidth: 1,\r\n borderColor: theme.border,\r\n },\r\n filled: {\r\n backgroundColor: theme.background,\r\n },\r\n };\r\n\r\n const containerStyle = (pressed: boolean): ViewStyle[] => {\r\n const styles: ViewStyle[] = [baseStyle, variantStyles[variant]];\r\n\r\n if (clickable && pressed) {\r\n styles.push({\r\n opacity: 0.8,\r\n transform: [{ scale: 0.99 }],\r\n });\r\n }\r\n\r\n return styles;\r\n };\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n style={[baseStyle, variantStyles[variant], style]}\r\n accessibilityRole=\"none\"\r\n >\r\n {children}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }) => [containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {children}\r\n </Pressable>\r\n );\r\n});\r\n\r\nexport type CardHeaderProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardHeader = forwardRef<View, CardHeaderProps>(function CardHeader(\r\n { children, style },\r\n ref,\r\n) {\r\n return (\r\n <View\r\n ref={ref}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 16,\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport type CardContentProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardContent = forwardRef<View, CardContentProps>(function CardContent(\r\n { children, style },\r\n ref,\r\n) {\r\n return (\r\n <View ref={ref} style={[{ marginTop: 8 }, style]}>\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport type CardFooterProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardFooter = forwardRef<View, CardFooterProps>(function CardFooter(\r\n { children, style },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n gap: 8,\r\n marginTop: 16,\r\n paddingTop: 16,\r\n borderTopWidth: 1,\r\n borderTopColor: theme.border,\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport const Card = Object.assign(CardRoot, {\r\n Header: CardHeader,\r\n Content: CardContent,\r\n Footer: CardFooter,\r\n});\r\n","import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\r\nimport {\r\n FlatList,\r\n Modal,\r\n Pressable,\r\n Text,\r\n View,\r\n type LayoutChangeEvent,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\r\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type SelectStatus = \"default\" | \"error\";\r\n\r\nexport type SelectOption = {\r\n /** Unique value for the option */\r\n value: string;\r\n /** Display label */\r\n label: string;\r\n /** Whether the option is disabled */\r\n disabled?: boolean;\r\n};\r\n\r\ntype SelectBaseProps = {\r\n /** List of available options */\r\n options: SelectOption[];\r\n /** Label text displayed above the select */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Placeholder text when no option is selected */\r\n placeholder?: string;\r\n /** Validation status */\r\n status?: SelectStatus;\r\n /** Select size */\r\n size?: SelectSize;\r\n /** Border radius */\r\n radius?: SelectRadius;\r\n /** Helper/error message displayed below the select */\r\n helperText?: React.ReactNode;\r\n /** Whether the select is disabled */\r\n disabled?: boolean;\r\n /** Custom style for the trigger container */\r\n style?: StyleProp<ViewStyle>;\r\n /** Custom style for the outermost wrapper */\r\n wrapperStyle?: StyleProp<ViewStyle>;\r\n /** Accessibility label */\r\n accessibilityLabel?: string;\r\n};\r\n\r\nexport type SelectSingleProps = SelectBaseProps & {\r\n /** Enables multi-select mode */\r\n multiple?: false;\r\n /** Currently selected value (single mode) */\r\n value?: string;\r\n /** Default selected value (single mode, uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes (single mode) */\r\n onChange?: (value: string) => void;\r\n};\r\n\r\nexport type SelectMultipleProps = SelectBaseProps & {\r\n /** Enables multi-select mode */\r\n multiple: true;\r\n /** Currently selected values (multi mode) */\r\n value?: string[];\r\n /** Default selected values (multi mode, uncontrolled) */\r\n defaultValue?: string[];\r\n /** Called when selection changes (multi mode) */\r\n onChange?: (value: string[]) => void;\r\n};\r\n\r\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\r\n\r\nconst ChevronIcon = ({ size, color, open }: { size: number; color: string; open: boolean }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n width: size * 0.5,\r\n height: size * 0.5,\r\n borderRightWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [\r\n { rotate: open ? \"225deg\" : \"45deg\" },\r\n { translateY: open ? size * 0.1 : -size * 0.1 },\r\n ],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nconst CheckIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n width: size * 0.55,\r\n height: size * 0.3,\r\n borderLeftWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [{ rotate: \"-45deg\" }, { translateY: -size * 0.05 }],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nexport const Select = forwardRef<View, SelectProps>(function Select(props, ref) {\r\n const {\r\n options,\r\n label,\r\n subtitle,\r\n placeholder = \"Selecione\",\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n helperText,\r\n disabled = false,\r\n style,\r\n wrapperStyle,\r\n accessibilityLabel,\r\n multiple = false,\r\n } = props;\r\n\r\n const theme = useRehagroTheme();\r\n\r\n const triggerRef = useRef<View | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [triggerLayout, setTriggerLayout] = useState<{\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n } | null>(null);\r\n\r\n const [internalValue, setInternalValue] = useState<string[]>(() => {\r\n if (props.defaultValue !== undefined) {\r\n return Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue];\r\n }\r\n return [];\r\n });\r\n\r\n const isControlled = props.value !== undefined;\r\n const selectedValues: string[] = isControlled\r\n ? Array.isArray(props.value)\r\n ? props.value\r\n : props.value !== undefined\r\n ? [props.value]\r\n : []\r\n : internalValue;\r\n\r\n const heightMap: Record<SelectSize, number> = {\r\n sm: theme.inputHeightSm ?? 36,\r\n md: theme.inputHeightMd ?? 44,\r\n lg: theme.inputHeightLg ?? 52,\r\n };\r\n\r\n const paddingMap: Record<SelectSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const fontSizeMap: Record<SelectSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const optionPaddingMap: Record<SelectSize, number> = {\r\n sm: 8,\r\n md: 10,\r\n lg: 12,\r\n };\r\n\r\n const radiusMap: Record<SelectRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusSm ?? 12,\r\n md: theme.radiusMd ?? 16,\r\n lg: theme.radiusLg ?? 24,\r\n xl: theme.radiusXl ?? 32,\r\n full: 9999,\r\n };\r\n\r\n const dropdownRadiusMap: Record<SelectRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusXs ?? 8,\r\n md: theme.radiusXs ?? 8,\r\n lg: theme.radiusXs ?? 8,\r\n xl: theme.radiusXs ?? 8,\r\n full: theme.radiusXs ?? 8,\r\n };\r\n\r\n const hasError = status === \"error\";\r\n const borderColor = hasError ? theme.danger : isOpen ? theme.primary : theme.border;\r\n\r\n const containerStyle: ViewStyle = {\r\n height: heightMap[size],\r\n paddingHorizontal: paddingMap[size],\r\n borderRadius: radiusMap[radius],\r\n borderWidth: theme.borderWidthSm,\r\n borderColor,\r\n backgroundColor: disabled ? theme.background : theme.surface,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 8,\r\n opacity: disabled ? 0.5 : 1,\r\n };\r\n\r\n const displayText = useMemo(() => {\r\n if (selectedValues.length === 0) return null;\r\n\r\n if (!multiple) {\r\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\r\n }\r\n\r\n const selectedLabels = selectedValues\r\n .map((v) => options.find((o) => o.value === v)?.label)\r\n .filter(Boolean) as string[];\r\n\r\n if (selectedLabels.length === 0) return null;\r\n if (selectedLabels.length === 1) return selectedLabels[0];\r\n return `${selectedLabels.length} selecionados`;\r\n }, [selectedValues, options, multiple]);\r\n\r\n const handleSelect = useCallback(\r\n (optionValue: string) => {\r\n if (multiple) {\r\n const next = selectedValues.includes(optionValue)\r\n ? selectedValues.filter((v) => v !== optionValue)\r\n : [...selectedValues, optionValue];\r\n\r\n if (!isControlled) setInternalValue(next);\r\n (props as SelectMultipleProps).onChange?.(next);\r\n } else {\r\n const next = [optionValue];\r\n if (!isControlled) setInternalValue(next);\r\n (props as SelectSingleProps).onChange?.(optionValue);\r\n setIsOpen(false);\r\n }\r\n },\r\n [multiple, selectedValues, isControlled, props],\r\n );\r\n\r\n const openDropdown = useCallback(() => {\r\n if (disabled) return;\r\n triggerRef.current?.measureInWindow((x, y, width, height) => {\r\n setTriggerLayout({ x, y, width, height });\r\n setIsOpen(true);\r\n });\r\n }, [disabled]);\r\n\r\n const closeDropdown = useCallback(() => {\r\n setIsOpen(false);\r\n }, []);\r\n\r\n const handleTriggerLayout = (_e: LayoutChangeEvent) => {\r\n // triggers remeasure on layout change while open\r\n if (isOpen) {\r\n triggerRef.current?.measureInWindow((x, y, width, height) => {\r\n setTriggerLayout({ x, y, width, height });\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <View style={[{ gap: 4 }, wrapperStyle]}>\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\r\n <Text\r\n style={{\r\n fontSize: 14,\r\n fontWeight: \"500\",\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n {subtitle && (\r\n <Text\r\n style={{\r\n fontSize: 14,\r\n color: theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {/* Trigger */}\r\n <Pressable\r\n ref={(node) => {\r\n triggerRef.current = node as View | null;\r\n if (typeof ref === \"function\") ref(node as View);\r\n else if (ref) (ref as React.MutableRefObject<View | null>).current = node as View | null;\r\n }}\r\n onPress={openDropdown}\r\n onLayout={handleTriggerLayout}\r\n disabled={disabled}\r\n accessibilityRole=\"combobox\"\r\n accessibilityState={{ disabled, expanded: isOpen }}\r\n accessibilityLabel={accessibilityLabel ?? label}\r\n style={[containerStyle, style]}\r\n >\r\n <Text\r\n numberOfLines={1}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: displayText ? theme.text : theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {displayText ?? placeholder}\r\n </Text>\r\n\r\n <ChevronIcon size={18} color={theme.textMuted ?? \"#6b7280\"} open={isOpen} />\r\n </Pressable>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <Text\r\n style={{\r\n fontSize: 12,\r\n color: hasError ? theme.danger : theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {helperText}\r\n </Text>\r\n )}\r\n\r\n {/* Dropdown modal */}\r\n <Modal\r\n visible={isOpen}\r\n transparent\r\n animationType=\"fade\"\r\n onRequestClose={closeDropdown}\r\n statusBarTranslucent\r\n >\r\n <Pressable style={{ flex: 1, backgroundColor: \"transparent\" }} onPress={closeDropdown}>\r\n {triggerLayout && (\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n top: triggerLayout.y + triggerLayout.height + 36,\r\n left: triggerLayout.x,\r\n width: triggerLayout.width,\r\n maxHeight: 240,\r\n borderRadius: dropdownRadiusMap[radius],\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: theme.border,\r\n backgroundColor: theme.surface,\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 8,\r\n elevation: 4,\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <FlatList\r\n data={options}\r\n keyExtractor={(item) => item.value}\r\n keyboardShouldPersistTaps=\"handled\"\r\n renderItem={({ item }) => {\r\n const isSelected = selectedValues.includes(item.value);\r\n const isDisabled = !!item.disabled;\r\n\r\n return (\r\n <Pressable\r\n onPress={() => {\r\n if (!isDisabled) handleSelect(item.value);\r\n }}\r\n disabled={isDisabled}\r\n accessibilityRole=\"menuitem\"\r\n accessibilityState={{ selected: isSelected, disabled: isDisabled }}\r\n style={({ pressed }) => ({\r\n paddingHorizontal: paddingMap[size],\r\n paddingVertical: optionPaddingMap[size],\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 8,\r\n backgroundColor: pressed && !isDisabled ? theme.background : \"transparent\",\r\n opacity: isDisabled ? 0.5 : 1,\r\n })}\r\n >\r\n <Text\r\n numberOfLines={1}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {item.label}\r\n </Text>\r\n\r\n {multiple ? (\r\n <View\r\n style={{\r\n width: 18,\r\n height: 18,\r\n borderRadius: theme.radiusXxs,\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: isSelected ? theme.primary : theme.border,\r\n backgroundColor: isSelected ? theme.primary : theme.surface,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {isSelected && <CheckIcon size={12} color={theme.surface ?? \"#ffffff\"} />}\r\n </View>\r\n ) : (\r\n isSelected && <CheckIcon size={14} color={theme.primary ?? \"#16a34a\"} />\r\n )}\r\n </Pressable>\r\n );\r\n }}\r\n />\r\n </View>\r\n )}\r\n </Pressable>\r\n </Modal>\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef, createContext, useCallback, useContext, useState } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { RehagroNativeTheme } from \"../../provider/theme.native\";\r\n\r\nexport type RadioSize = \"sm\" | \"md\" | \"lg\";\r\nexport type RadioOrientation = \"horizontal\" | \"vertical\";\r\nexport type RadioColor = \"primary\" | \"secondary\" | \"danger\" | \"warning\" | \"success\" | \"info\";\r\n\r\ntype RadioBaseProps = Omit<PressableProps, \"style\" | \"onPress\"> & {\r\n /** Radio size */\r\n size?: RadioSize;\r\n /** Label text displayed next to the radio */\r\n label?: React.ReactNode;\r\n /** Description text below the label */\r\n description?: React.ReactNode;\r\n /** Color scheme for checked state — preset name or custom color string */\r\n color?: RadioColor | (string & {});\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport type RadioProps = RadioBaseProps & {\r\n /** Controlled checked state */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Callback fired when the value changes */\r\n onChange?: (checked: boolean) => void;\r\n};\r\n\r\nexport type RadioOptionProps = RadioBaseProps & {\r\n /** Unique value for this option */\r\n value: string;\r\n};\r\n\r\nexport type RadioGroupProps = {\r\n children?: React.ReactNode;\r\n /** Currently selected value */\r\n value?: string;\r\n /** Default value (uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes */\r\n onChange?: (value: string) => void;\r\n /** Radio size for all items */\r\n size?: RadioSize;\r\n /** Layout orientation */\r\n orientation?: RadioOrientation;\r\n /** Color scheme for checked state */\r\n color?: RadioColor | (string & {});\r\n /** Whether the entire group is disabled */\r\n disabled?: boolean;\r\n /** Gap between items */\r\n gap?: \"sm\" | \"md\" | \"lg\";\r\n /** Custom style for the group wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\n// ============================================\r\n// CONTEXT\r\n// ============================================\r\n\r\ntype RadioGroupContextType = {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n size?: RadioSize;\r\n color?: RadioColor | (string & {});\r\n disabled?: boolean;\r\n};\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextType | null>(null);\r\nconst useRadioGroup = () => useContext(RadioGroupContext);\r\n\r\n// ============================================\r\n// COLOR RESOLUTION\r\n// ============================================\r\n\r\nconst PRESET_COLORS = new Set<RadioColor>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (color: string): color is RadioColor =>\r\n PRESET_COLORS.has(color as RadioColor);\r\n\r\nconst resolveColor = (color: string, theme: RehagroNativeTheme): string => {\r\n if (isPresetColor(color)) {\r\n return theme[color] ?? \"#16a34a\";\r\n }\r\n return color;\r\n};\r\n\r\n// ============================================\r\n// SIZE MAPS\r\n// ============================================\r\n\r\nconst outerSizeMap: Record<RadioSize, number> = {\r\n sm: 16,\r\n md: 20,\r\n lg: 24,\r\n};\r\n\r\nconst innerSizeMap: Record<RadioSize, number> = {\r\n sm: 8,\r\n md: 10,\r\n lg: 12,\r\n};\r\n\r\nconst labelSizeMap: Record<RadioSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n};\r\n\r\nconst descriptionSizeMap: Record<RadioSize, number> = {\r\n sm: 12,\r\n md: 12,\r\n lg: 14,\r\n};\r\n\r\nconst gapMap: Record<\"sm\" | \"md\" | \"lg\", number> = {\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n};\r\n\r\n// ============================================\r\n// RADIO COMPONENT\r\n// ============================================\r\n\r\nexport const Radio = forwardRef<View, RadioProps>(function Radio(\r\n {\r\n size = \"md\",\r\n label,\r\n description,\r\n color = \"primary\",\r\n disabled,\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n onChange,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isControlled = controlledChecked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n const resolvedColor = resolveColor(color, theme);\r\n\r\n const handlePress = useCallback(() => {\r\n if (disabled) return;\r\n if (!isControlled) setInternalChecked(true);\r\n onChange?.(true);\r\n }, [disabled, isControlled, onChange]);\r\n\r\n const outerSize = outerSizeMap[size];\r\n const innerSize = innerSizeMap[size];\r\n\r\n const outerStyle: ViewStyle = {\r\n width: outerSize,\r\n height: outerSize,\r\n borderRadius: outerSize / 2,\r\n borderWidth: theme.borderWidthSm ?? 1,\r\n borderColor: isChecked ? resolvedColor : (theme.border ?? \"#d1d5db\"),\r\n backgroundColor: theme.surface ?? \"#ffffff\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n };\r\n\r\n const innerStyle: ViewStyle = {\r\n width: innerSize,\r\n height: innerSize,\r\n borderRadius: innerSize / 2,\r\n backgroundColor: resolvedColor,\r\n };\r\n\r\n const accessibilityText = accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n onPress={handlePress}\r\n disabled={disabled}\r\n accessibilityRole=\"radio\"\r\n accessibilityState={{ checked: isChecked, disabled: !!disabled }}\r\n accessibilityLabel={accessibilityText}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n opacity: disabled ? 0.5 : 1,\r\n },\r\n style,\r\n ]}\r\n {...rest}\r\n >\r\n <View style={outerStyle}>{isChecked && <View style={innerStyle} />}</View>\r\n\r\n {(label || description) && (\r\n <View style={{ flex: 1, gap: 2 }}>\r\n {label && (\r\n <Text\r\n style={{\r\n fontSize: labelSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n {description && (\r\n <Text\r\n style={{\r\n fontSize: descriptionSizeMap[size],\r\n color: theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {description}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO OPTION (for use inside RadioGroup)\r\n// ============================================\r\n\r\nexport const RadioOption = forwardRef<View, RadioOptionProps>(function RadioOption(\r\n { value, size, color, disabled, ...rest },\r\n ref,\r\n) {\r\n const group = useRadioGroup();\r\n\r\n const mergedSize = size ?? group?.size ?? \"md\";\r\n const mergedColor = color ?? group?.color ?? \"primary\";\r\n const mergedDisabled = disabled ?? group?.disabled ?? false;\r\n const isChecked = group?.value === value;\r\n\r\n const handleChange = () => {\r\n group?.onChange?.(value);\r\n };\r\n\r\n return (\r\n <Radio\r\n ref={ref}\r\n size={mergedSize}\r\n color={mergedColor}\r\n disabled={mergedDisabled}\r\n checked={isChecked}\r\n onChange={handleChange}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO GROUP COMPONENT\r\n// ============================================\r\n\r\nexport const RadioGroup = forwardRef<View, RadioGroupProps>(function RadioGroup(\r\n {\r\n children,\r\n value,\r\n defaultValue,\r\n onChange,\r\n size = \"md\",\r\n orientation = \"vertical\",\r\n color = \"primary\",\r\n disabled = false,\r\n gap = \"md\",\r\n style,\r\n },\r\n ref,\r\n) {\r\n const [internalValue, setInternalValue] = useState<string | undefined>(defaultValue);\r\n const isControlled = value !== undefined;\r\n const currentValue = isControlled ? value : internalValue;\r\n\r\n const handleChange = useCallback(\r\n (newValue: string) => {\r\n if (!isControlled) setInternalValue(newValue);\r\n onChange?.(newValue);\r\n },\r\n [isControlled, onChange],\r\n );\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n value: currentValue,\r\n onChange: handleChange,\r\n size,\r\n color,\r\n disabled,\r\n }}\r\n >\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"radiogroup\"\r\n style={[\r\n {\r\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\r\n flexWrap: orientation === \"horizontal\" ? \"wrap\" : \"nowrap\",\r\n gap: gapMap[gap],\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n </RadioGroupContext.Provider>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport { Text, View, type StyleProp, type ViewStyle } from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { RehagroNativeTheme } from \"../../provider/theme.native\";\r\n\r\nexport type ProgressBarVariant = \"inline\" | \"stacked\";\r\nexport type ProgressBarThickness = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type ProgressBarColor =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"danger\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\";\r\n\r\nconst THICKNESS_MAP: Record<ProgressBarThickness, number> = {\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nconst PRESET_COLORS = new Set<ProgressBarColor>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (color: string): color is ProgressBarColor =>\r\n PRESET_COLORS.has(color as ProgressBarColor);\r\n\r\nconst resolveColor = (color: string, theme: RehagroNativeTheme): string => {\r\n if (isPresetColor(color)) {\r\n return theme[color] ?? \"#538CC6\";\r\n }\r\n return color;\r\n};\r\n\r\nconst resolveThickness = (thickness: ProgressBarThickness | number): number =>\r\n typeof thickness === \"number\" ? thickness : THICKNESS_MAP[thickness];\r\n\r\nexport type ProgressBarProps = {\r\n /** Progress value from 0 to 100 */\r\n value: number;\r\n /** Label text (only shown in stacked variant) */\r\n label?: string;\r\n /** Layout variant */\r\n variant?: ProgressBarVariant;\r\n /** Bar thickness — preset token or custom value in dp */\r\n thickness?: ProgressBarThickness | number;\r\n /** Whether to show percentage text */\r\n showPercentage?: boolean;\r\n /** Bar color — preset name or custom color string */\r\n color?: ProgressBarColor | (string & {});\r\n /** Custom background color */\r\n bgColor?: string;\r\n /** Custom style for the wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const ProgressBar = forwardRef<View, ProgressBarProps>(function ProgressBar(\r\n {\r\n value,\r\n label,\r\n variant = \"inline\",\r\n thickness = \"sm\",\r\n showPercentage = true,\r\n color = \"primary\",\r\n bgColor,\r\n style,\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const clampedValue = Math.min(100, Math.max(0, value));\r\n const heightPx = resolveThickness(thickness);\r\n const resolvedBarColor = resolveColor(color, theme);\r\n const resolvedBgColor = bgColor ?? theme.border ?? \"#E5E7EB\";\r\n\r\n const trackStyle: ViewStyle = {\r\n width: \"100%\",\r\n height: heightPx,\r\n borderRadius: 40,\r\n overflow: \"hidden\",\r\n backgroundColor: resolvedBgColor,\r\n };\r\n\r\n const fillStyle: ViewStyle = {\r\n width: `${clampedValue}%`,\r\n height: \"100%\",\r\n borderRadius: 40,\r\n backgroundColor: resolvedBarColor,\r\n };\r\n\r\n const percentageTextStyle = {\r\n fontSize: theme.fontSizeSm ?? 14,\r\n color: theme.textMuted ?? \"#9CA3AF\",\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n };\r\n\r\n if (variant === \"stacked\") {\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"progressbar\"\r\n accessibilityValue={{ now: clampedValue, min: 0, max: 100 }}\r\n style={[{ flexDirection: \"column\", alignItems: \"stretch\", gap: 8 }, style]}\r\n >\r\n {(label || showPercentage) && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {label ? (\r\n <Text\r\n style={{\r\n flex: 1,\r\n fontSize: theme.fontSizeMd ?? 16,\r\n fontWeight: \"700\",\r\n color: theme.text ?? \"#374151\",\r\n ...(theme.fontFamilyDisplay ? { fontFamily: theme.fontFamilyDisplay } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n ) : (\r\n <View style={{ flex: 1 }} />\r\n )}\r\n {showPercentage && (\r\n <Text style={[percentageTextStyle, { textAlign: \"right\" }]}>{clampedValue}%</Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n <View style={trackStyle}>\r\n <View style={fillStyle} />\r\n </View>\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"progressbar\"\r\n accessibilityValue={{ now: clampedValue, min: 0, max: 100 }}\r\n style={[{ flexDirection: \"row\", alignItems: \"center\", gap: 8 }, style]}\r\n >\r\n <View style={[trackStyle, { flex: 1, width: undefined }]}>\r\n <View style={fillStyle} />\r\n </View>\r\n\r\n {showPercentage && (\r\n <Text style={[percentageTextStyle, { minWidth: 40, textAlign: \"right\" }]}>\r\n {clampedValue}%\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n"]}
1
+ {"version":3,"sources":["../src/provider/theme.native.ts","../src/provider/RehagroNativeContext.ts","../src/provider/RehagroNativeProvider.tsx","../src/components/Button/Button.native.tsx","../src/components/IconButton/IconButton.native.tsx","../src/components/TextInput/TextInput.native.tsx","../src/components/TextArea/TextArea.native.tsx","../src/components/Checkbox/Checkbox.native.tsx","../src/components/Avatar/Avatar.native.tsx","../src/components/ActivityIndicator/ActivityIndicator.native.tsx","../src/components/Text/Text.native.tsx","../src/components/Tag/Tag.native.tsx","../src/components/Card/Card.native.tsx","../src/components/Select/Select.native.tsx","../src/components/Radio/Radio.native.tsx","../src/components/ProgressBar/ProgressBar.native.tsx"],"names":["Button","jsx","darkenColor","PRESET_COLORS","isPresetColor","forwardRef","IconButton","Pressable","ActivityIndicator","View","TextInput","paddingMap","radiusMap","jsxs","Text","RNTextInput","TextArea","useState","Checkbox","Avatar","useMemo","RNActivityIndicator","RNText","Tag","Fragment","CardHeader","CardContent","CardFooter","Card","CheckIcon","Select","useCallback","createContext","useContext","Radio","RadioOption","RadioGroup","resolveColor","ProgressBar"],"mappings":"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","file":"native.mjs","sourcesContent":["import type { RehagroTheme } from \"./theme\";\r\n\r\n/** React Native theme — reuses the same token names as the web theme.\r\n * Color values are plain CSS hex strings (e.g. \"#16a34a\").\r\n * Spacing/radius/border values are numbers (device-independent pixels).\r\n */\r\nexport type RehagroNativeTheme = {\r\n // Brand colors\r\n primary?: string;\r\n primaryHover?: string;\r\n secondary?: string;\r\n secondaryHover?: string;\r\n danger?: string;\r\n dangerHover?: string;\r\n warning?: string;\r\n success?: string;\r\n info?: string;\r\n infoHover?: string;\r\n\r\n // Semantic colors\r\n text?: string;\r\n textMuted?: string;\r\n surface?: string;\r\n background?: string;\r\n border?: string;\r\n\r\n // Border radius (numbers = dp)\r\n radiusXxs?: number;\r\n radiusXs?: number;\r\n radiusSm?: number;\r\n radiusMd?: number;\r\n radiusLg?: number;\r\n radiusXl?: number;\r\n\r\n // Border width\r\n borderWidthSm?: number;\r\n borderWidthMd?: number;\r\n borderWidthLg?: number;\r\n\r\n // Input sizes\r\n inputHeightSm?: number;\r\n inputHeightMd?: number;\r\n inputHeightLg?: number;\r\n\r\n // Button heights\r\n buttonHeightXxs?: number;\r\n buttonHeightXs?: number;\r\n buttonHeightSm?: number;\r\n buttonHeightMd?: number;\r\n buttonHeightLg?: number;\r\n buttonHeightXl?: number;\r\n\r\n // Typography — must be loaded by the app (e.g. via expo-font / useFonts)\r\n // Inter for body/labels, Sora for headings/display\r\n fontFamilyBody?: string;\r\n fontFamilyDisplay?: string;\r\n\r\n // Text size scale (font size in dp)\r\n fontSizeXs?: number;\r\n fontSizeSm?: number;\r\n fontSizeMd?: number;\r\n fontSizeLg?: number;\r\n fontSizeXl?: number;\r\n fontSizeXxl?: number;\r\n fontSizeXxl2?: number;\r\n\r\n // Text line height scale (in dp)\r\n lineHeightXs?: number;\r\n lineHeightSm?: number;\r\n lineHeightMd?: number;\r\n lineHeightLg?: number;\r\n lineHeightXl?: number;\r\n lineHeightXxl?: number;\r\n lineHeightXxl2?: number;\r\n};\r\n\r\nexport type RehagroNativeProviderProps = {\r\n /** Theme overrides — any token not provided keeps the default value */\r\n theme: RehagroNativeTheme;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport const DEFAULT_NATIVE_THEME: RehagroNativeTheme = {\r\n primary: \"#16a34a\",\r\n secondary: \"#6b7280\",\r\n danger: \"#dc2626\",\r\n warning: \"#d97706\",\r\n success: \"#16a34a\",\r\n info: \"#0284c7\",\r\n infoHover: \"#0369a1\",\r\n\r\n text: \"#111827\",\r\n textMuted: \"#6b7280\",\r\n surface: \"#ffffff\",\r\n background: \"#f9fafb\",\r\n border: \"#d1d5db\",\r\n\r\n radiusXxs: 4,\r\n radiusXs: 8,\r\n radiusSm: 12,\r\n radiusMd: 16,\r\n radiusLg: 24,\r\n radiusXl: 32,\r\n\r\n borderWidthSm: 1,\r\n borderWidthMd: 2,\r\n borderWidthLg: 3,\r\n\r\n inputHeightSm: 36,\r\n inputHeightMd: 44,\r\n inputHeightLg: 52,\r\n\r\n buttonHeightXxs: 16,\r\n buttonHeightXs: 24,\r\n buttonHeightSm: 36,\r\n buttonHeightMd: 44,\r\n buttonHeightLg: 52,\r\n buttonHeightXl: 60,\r\n\r\n fontFamilyBody: \"\",\r\n fontFamilyDisplay: \"\",\r\n\r\n fontSizeXs: 12,\r\n fontSizeSm: 14,\r\n fontSizeMd: 16,\r\n fontSizeLg: 18,\r\n fontSizeXl: 20,\r\n fontSizeXxl: 24,\r\n fontSizeXxl2: 32,\r\n\r\n lineHeightXs: 16,\r\n lineHeightSm: 20,\r\n lineHeightMd: 24,\r\n lineHeightLg: 26,\r\n lineHeightXl: 28,\r\n lineHeightXxl: 32,\r\n lineHeightXxl2: 40,\r\n};\r\n\r\n// Ensures RehagroNativeTheme color keys stay in sync with RehagroTheme\r\ntype _ColorKeysMatch = Pick<\r\n RehagroTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\ntype _NativeColorKeys = Pick<\r\n RehagroNativeTheme,\r\n | \"primary\"\r\n | \"primaryHover\"\r\n | \"secondary\"\r\n | \"secondaryHover\"\r\n | \"danger\"\r\n | \"dangerHover\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\"\r\n | \"infoHover\"\r\n | \"text\"\r\n | \"textMuted\"\r\n | \"surface\"\r\n | \"background\"\r\n | \"border\"\r\n>;\r\n// This line will error at compile time if the color keys diverge:\r\ntype _ColorKeysCheck = _ColorKeysMatch extends _NativeColorKeys ? true : never;\r\n","import { createContext, useContext } from \"react\";\r\nimport type { RehagroNativeTheme } from \"./theme.native\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\n\r\nexport const RehagroNativeContext = createContext<RehagroNativeTheme>(DEFAULT_NATIVE_THEME);\r\n\r\nexport function useRehagroTheme(): RehagroNativeTheme {\r\n return useContext(RehagroNativeContext);\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { RehagroNativeContext } from \"./RehagroNativeContext\";\r\nimport { DEFAULT_NATIVE_THEME } from \"./theme.native\";\r\nimport type { RehagroNativeProviderProps, RehagroNativeTheme } from \"./theme.native\";\r\n\r\nexport function RehagroNativeProvider({ theme, children }: RehagroNativeProviderProps) {\r\n const resolvedTheme = useMemo<RehagroNativeTheme>(\r\n () => ({ ...DEFAULT_NATIVE_THEME, ...theme }),\r\n [theme],\r\n );\r\n\r\n return (\r\n <RehagroNativeContext.Provider value={resolvedTheme}>\r\n {children}\r\n </RehagroNativeContext.Provider>\r\n );\r\n}\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type { ButtonColor };\r\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type ButtonSize = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: ButtonVariant;\r\n /** Button size */\r\n size?: ButtonSize;\r\n /** Border radius */\r\n radius?: ButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: ButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon rendered to the left of children (hidden when loading) */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of children (hidden when loading) */\r\n rightIcon?: React.ReactNode;\r\n /** Label text */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n /** Custom style applied to the inner text label (string children only) */\r\n labelStyle?: StyleProp<TextStyle>;\r\n /** Background color when the button is pressed (overrides default pressed color) */\r\n pressedColor?: string;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport const Button = forwardRef<View, ButtonProps>(function Button(\r\n {\r\n variant = \"solid\",\r\n size = \"md\",\r\n radius = \"sm\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n leftIcon,\r\n rightIcon,\r\n children,\r\n style,\r\n labelStyle,\r\n pressedColor,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n const preset = isPresetColor(color);\r\n\r\n const presetBase: Record<PresetColor, string> = {\r\n primary: theme.primary ?? \"#15607A\",\r\n secondary: theme.secondary ?? \"#718D44\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n warning: theme.warning ?? \"#d97706\",\r\n success: theme.success ?? \"#16a34a\",\r\n info: theme.info ?? \"#0284c7\",\r\n neutral: theme.textMuted ?? \"#6b7280\",\r\n };\r\n\r\n const presetHover: Record<PresetColor, string> = {\r\n primary: theme.primaryHover ?? darkenColor(presetBase.primary),\r\n secondary: theme.secondaryHover ?? darkenColor(presetBase.secondary),\r\n danger: theme.dangerHover ?? darkenColor(presetBase.danger),\r\n warning: theme.warning ?? darkenColor(presetBase.warning),\r\n success: theme.success ?? darkenColor(presetBase.success),\r\n info: theme.infoHover ?? darkenColor(presetBase.info),\r\n neutral: theme.text ?? darkenColor(presetBase.neutral),\r\n };\r\n\r\n const colorBase = preset ? presetBase[color as PresetColor] : color;\r\n const colorHover = preset ? presetHover[color as PresetColor] : darkenColor(color);\r\n\r\n const sizeStyleMap: Record<ButtonSize, ViewStyle> = {\r\n xxs: { paddingHorizontal: 6, height: theme.buttonHeightXxs ?? 16, gap: 4 },\r\n xs: { paddingHorizontal: 8, height: theme.buttonHeightXs ?? 24, gap: 4 },\r\n sm: { paddingHorizontal: 12, height: theme.buttonHeightSm ?? 36 },\r\n md: { paddingHorizontal: 16, height: theme.buttonHeightMd ?? 44 },\r\n lg: { paddingHorizontal: 20, height: theme.buttonHeightLg ?? 52 },\r\n xl: { paddingHorizontal: 24, height: theme.buttonHeightXl ?? 60 },\r\n };\r\n\r\n const fontSizeMap: Record<ButtonSize, number> = {\r\n xxs: 10,\r\n xs: 12,\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n xl: 18,\r\n };\r\n\r\n const radiusStyleMap: Record<ButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 8,\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n borderRadius: radiusStyleMap[radius],\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n const bg = isDisabled ? colorBase : pressed ? colorHover : colorBase;\r\n return { backgroundColor: bg, borderColor: bg };\r\n }\r\n if (variant === \"outline\") {\r\n const bg = pressed ? colorBase : \"transparent\";\r\n return {\r\n borderColor: isDisabled ? bg : colorBase,\r\n backgroundColor: bg,\r\n };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: \"transparent\" };\r\n };\r\n\r\n const textColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : colorBase;\r\n return colorBase;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={\r\n accessibilityLabel ?? (typeof children === \"string\" ? children : undefined)\r\n }\r\n android_ripple={{ color: pressedColor ?? colorHover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {loading && (\r\n <ActivityIndicator\r\n size=\"small\"\r\n color={variant === \"solid\" ? (theme.surface ?? \"#ffffff\") : colorBase}\r\n />\r\n )}\r\n {!loading && leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n {typeof children === \"string\" ? (\r\n <Text\r\n style={[{ color: textColor(pressed), fontSize: fontSizeMap[size], fontWeight: \"500\", ...(theme.fontFamilyDisplay ? { fontFamily: theme.fontFamilyDisplay } : {}) }, labelStyle]}\r\n >\r\n {children}\r\n </Text>\r\n ) : (\r\n children\r\n )}\r\n {!loading && rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator,\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\n/** Darkens a hex color (#rgb or #rrggbb) by the given factor (0–1). */\r\nfunction darkenColor(hex: string, factor = 0.2): string {\r\n if (!hex.startsWith(\"#\")) return hex;\r\n const clean = hex.replace(\"#\", \"\");\r\n const full = clean.length === 3\r\n ? clean.split(\"\").map((c) => c + c).join(\"\")\r\n : clean;\r\n const num = parseInt(full, 16);\r\n const r = Math.max(0, Math.round(((num >> 16) & 0xff) * (1 - factor)));\r\n const g = Math.max(0, Math.round(((num >> 8) & 0xff) * (1 - factor)));\r\n const b = Math.max(0, Math.round((num & 0xff) * (1 - factor)));\r\n return `#${[r, g, b].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n}\r\n\r\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type IconButtonSize = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\";\r\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type IconButtonColor = ButtonColor;\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nexport type IconButtonProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: IconButtonVariant;\r\n /** Button size */\r\n size?: IconButtonSize;\r\n /** Border radius */\r\n radius?: IconButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: IconButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon content */\r\n children?: React.ReactNode;\r\n /** Custom style for the outer Pressable */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const IconButton = forwardRef<View, IconButtonProps>(function IconButton(\r\n {\r\n variant = \"ghost\",\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n children,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isDisabled = disabled || loading;\r\n\r\n const sizePxMap: Record<IconButtonSize, number> = {\r\n xxs: 16,\r\n xs: 24,\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n };\r\n\r\n const radiusPxMap: Record<IconButtonRadius, number> = {\r\n none: 0,\r\n xxs: 2,\r\n xs: 4,\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n xl: 24,\r\n full: 9999,\r\n };\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#15607A\", hover: theme.primaryHover ?? darkenColor(theme.primary ?? \"#15607A\") },\r\n secondary: { main: theme.secondary ?? \"#718D44\", hover: theme.secondaryHover ?? darkenColor(theme.secondary ?? \"#718D44\") },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? darkenColor(theme.danger ?? \"#dc2626\") },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: darkenColor(theme.warning ?? \"#d97706\") },\r\n success: { main: theme.success ?? \"#16a34a\", hover: darkenColor(theme.success ?? \"#16a34a\") },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? darkenColor(theme.info ?? \"#0284c7\") },\r\n neutral: { main: theme.textMuted ?? \"#6b7280\", hover: theme.text ?? darkenColor(theme.textMuted ?? \"#6b7280\") },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const main = preset ? presetTokens[color as PresetColor].main : color;\r\n const hover = preset ? presetTokens[color as PresetColor].hover : darkenColor(color);\r\n const boxSize = sizePxMap[size];\r\n\r\n const baseStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: radiusPxMap[radius],\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderWidth: 1,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyle = (pressed: boolean): ViewStyle => {\r\n if (variant === \"solid\") {\r\n return { backgroundColor: pressed ? hover : main, borderColor: pressed ? hover : main };\r\n }\r\n if (variant === \"outline\") {\r\n return { borderColor: main, backgroundColor: pressed ? main : \"transparent\" };\r\n }\r\n return { borderColor: \"transparent\", backgroundColor: pressed ? `${main}1a` : \"transparent\" };\r\n };\r\n\r\n const iconColor = (pressed: boolean): string => {\r\n if (variant === \"solid\") return theme.surface ?? \"#ffffff\";\r\n if (variant === \"outline\") return pressed ? (theme.surface ?? \"#ffffff\") : main;\r\n return main;\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={isDisabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled: !!isDisabled, busy: loading }}\r\n accessibilityLabel={accessibilityLabel}\r\n android_ripple={{ color: hover, borderless: false }}\r\n style={({ pressed }) => [baseStyle, variantStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) =>\r\n loading ? (\r\n <ActivityIndicator size=\"small\" color={variant === \"solid\" ? theme.surface : main} />\r\n ) : (\r\n <View style={{ tintColor: iconColor(pressed) } as ViewStyle}>\r\n {children}\r\n </View>\r\n )\r\n }\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState } from \"react\";\r\nimport {\r\n TextInput as RNTextInput,\r\n Text,\r\n View,\r\n type TextInputProps as RNTextInputProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type TextInputBorderWidth = \"sm\" | \"md\" | \"lg\";\n\r\nexport type TextInputProps = Omit<RNTextInputProps, \"style\"> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Validation status */\r\n status?: TextInputStatus;\r\n /** Input size */\r\n size?: TextInputSize;\r\n /** Border radius */\r\n radius?: TextInputRadius;\r\n /** Icon rendered to the left of the input */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of the input */\r\n rightIcon?: React.ReactNode;\r\n /** Helper/error message displayed below the input */\r\n helperText?: React.ReactNode;\r\n /** Custom style for the outermost wrapper */\r\n wrapperStyle?: StyleProp<ViewStyle>;\r\n /** Custom style for the input container */\r\n style?: StyleProp<ViewStyle>;\r\n /**\r\n * Custom border color for the input container. When provided,\r\n * overrides the resting border color from `status`/`focused`.\r\n * Mirrors the web `TextInput#borderColor` prop. Useful for\r\n * highlighting cells in tables or custom themed states.\r\n */\r\n borderColor?: string;\n /**\n * Border width token for the input container.\n *\n * - `sm`: default 1px border.\n * - `md`: default 2px border.\n * - `lg`: default 3px border.\n */\n borderWidth?: TextInputBorderWidth;\n};\n\r\nexport const TextInput = forwardRef<RNTextInput, TextInputProps>(function TextInput(\r\n {\r\n label,\r\n subtitle,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n leftIcon,\r\n rightIcon,\r\n helperText,\r\n editable = true,\r\n wrapperStyle,\n style,\n borderColor,\n borderWidth = \"sm\",\n accessibilityLabel,\n ...rest\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [focused, setFocused] = useState(false);\r\n\r\n const isDisabled = editable === false;\r\n\r\n const heightMap: Record<TextInputSize, number> = {\r\n sm: theme.inputHeightSm ?? 36,\r\n md: theme.inputHeightMd ?? 44,\r\n lg: theme.inputHeightLg ?? 52,\r\n // `xl` (44) sits between md/lg — same height as web. Native\r\n // theme doesn't expose a token for it, so we fall back to a\r\n // hard-coded value matching the CSS `--rh-input-height-xl`.\r\n xl: 44,\r\n };\r\n\r\n const paddingMap: Record<TextInputSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 16,\r\n xl: 14,\r\n };\r\n\r\n const fontSizeMap: Record<TextInputSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n xl: 14,\r\n };\r\n\r\n const radiusMap: Record<TextInputRadius, number> = {\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusSm ?? 12,\r\n md: theme.radiusMd ?? 16,\r\n lg: theme.radiusLg ?? 24,\r\n xl: theme.radiusXl ?? 32,\r\n full: 9999,\r\n };\n\n const borderWidthMap: Record<TextInputBorderWidth, number> = {\n sm: theme.borderWidthSm ?? 1,\n md: theme.borderWidthMd ?? 2,\n lg: theme.borderWidthLg ?? 3,\n };\n\r\n const hasError = status === \"error\" || !!helperText;\r\n\r\n // Resting border color hierarchy: error > custom (`borderColor` prop) >\r\n // focused > theme default. Custom border color is honored only when\r\n // there's no error and the field is not focused, matching the web\r\n // behavior where focus ring keeps theming control.\r\n const effectiveBorderColor = hasError\r\n ? theme.danger\r\n : focused\r\n ? theme.primary\r\n : (borderColor ?? theme.border);\r\n\r\n const containerStyle: ViewStyle = {\r\n height: heightMap[size],\n paddingHorizontal: paddingMap[size],\n borderRadius: radiusMap[radius],\n borderWidth: borderWidthMap[borderWidth],\n borderColor: effectiveBorderColor,\r\n backgroundColor: isDisabled ? theme.background : theme.surface,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n opacity: isDisabled ? 0.5 : 1,\r\n };\r\n\r\n const inputId = accessibilityLabel ?? label;\r\n\r\n return (\r\n <View style={[{ gap: 4 }, wrapperStyle]}>\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\r\n <Text style={{ fontSize: 14, fontWeight: \"500\", color: theme.text }}>\r\n {label}\r\n </Text>\r\n {subtitle && (\r\n <Text\r\n style={{\r\n fontSize: 14,\r\n // Required-marker convention (matches web): a lone\r\n // `*` is rendered in danger color; any other text\r\n // stays muted.\r\n color: subtitle.trim() === \"*\" ? theme.danger : theme.textMuted,\r\n }}\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {/* Input container */}\r\n <View style={[containerStyle, style]}>\r\n {leftIcon && (\r\n <View accessibilityElementsHidden>\r\n {leftIcon}\r\n </View>\r\n )}\r\n\r\n <RNTextInput\r\n ref={ref}\r\n editable={editable}\r\n accessibilityLabel={inputId}\r\n accessibilityState={{ disabled: isDisabled }}\r\n aria-invalid={status === \"error\"}\r\n onFocus={(e) => {\r\n setFocused(true);\r\n rest.onFocus?.(e);\r\n }}\r\n onBlur={(e) => {\r\n setFocused(false);\r\n rest.onBlur?.(e);\r\n }}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n }}\r\n placeholderTextColor={theme.textMuted}\r\n {...rest}\r\n />\r\n\r\n {rightIcon && (\r\n <View accessibilityElementsHidden>\r\n {rightIcon}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <Text\r\n style={{\r\n fontSize: 12,\r\n color: hasError ? theme.danger : theme.textMuted,\r\n }}\r\n >\r\n {helperText}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef, useState } from \"react\";\nimport {\n TextInput as RNTextInput,\n Text,\n View,\n type TextInputProps as RNTextInputProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\n\nexport type TextAreaStatus = \"default\" | \"error\";\nexport type TextAreaSize = \"sm\" | \"md\" | \"lg\";\nexport type TextAreaRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type TextAreaBorderWidth = \"sm\" | \"md\" | \"lg\";\nexport type TextAreaResize = \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n\nexport type TextAreaProps = Omit<RNTextInputProps, \"style\" | \"multiline\"> & {\n /** Label text displayed above the textarea */\n label?: string;\n /** Subtitle displayed next to the label. Use \"*\" for the required marker. */\n subtitle?: string;\n /** Validation status */\n status?: TextAreaStatus;\n /** Text/padding size */\n size?: TextAreaSize;\n /** Border radius */\n radius?: TextAreaRadius;\n /** Helper/error message displayed below the textarea */\n helperText?: React.ReactNode;\n /** Number of visible text rows (default 3) */\n rows?: number;\n /** Custom style for the outermost wrapper */\n wrapperStyle?: StyleProp<ViewStyle>;\n /** Custom style for the textarea container */\n style?: StyleProp<ViewStyle>;\n /** Custom border color. Overrides the resting border color from `status`/`focused`. */\n borderColor?: string;\n /** Border width token (`sm` 1px, `md` 2px, `lg` 3px). */\n borderWidth?: TextAreaBorderWidth;\n};\n\nexport const TextArea = forwardRef<RNTextInput, TextAreaProps>(function TextArea(\n {\n label,\n subtitle,\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n helperText,\n rows = 3,\n editable = true,\n wrapperStyle,\n style,\n borderColor,\n borderWidth = \"sm\",\n accessibilityLabel,\n ...rest\n },\n ref,\n) {\n const theme = useRehagroTheme();\n const [focused, setFocused] = useState(false);\n\n const isDisabled = editable === false;\n\n const paddingMap: Record<TextAreaSize, number> = {\n sm: 12,\n md: 14,\n lg: 16,\n };\n\n const fontSizeMap: Record<TextAreaSize, number> = {\n sm: 14,\n md: 14,\n lg: 16,\n };\n\n const radiusMap: Record<TextAreaRadius, number> = {\n none: 0,\n xxs: theme.radiusXxs ?? 4,\n xs: theme.radiusXs ?? 8,\n sm: theme.radiusSm ?? 12,\n md: theme.radiusMd ?? 16,\n lg: theme.radiusLg ?? 24,\n xl: theme.radiusXl ?? 32,\n full: 9999,\n };\n\n const borderWidthMap: Record<TextAreaBorderWidth, number> = {\n sm: theme.borderWidthSm ?? 1,\n md: theme.borderWidthMd ?? 2,\n lg: theme.borderWidthLg ?? 3,\n };\n\n const hasError = status === \"error\" || !!helperText;\n\n const effectiveBorderColor = hasError\n ? theme.danger\n : focused\n ? theme.primary\n : (borderColor ?? theme.border);\n\n // Altura mínima aproximada por linha (fontSize * 1.4 + paddings).\n const lineHeight = fontSizeMap[size] * 1.4;\n const minHeight = lineHeight * Math.max(rows, 1) + paddingMap[size] * 2;\n\n const containerStyle: ViewStyle = {\n minHeight,\n paddingHorizontal: paddingMap[size],\n paddingVertical: paddingMap[size],\n borderRadius: radiusMap[radius],\n borderWidth: borderWidthMap[borderWidth],\n borderColor: effectiveBorderColor,\n backgroundColor: isDisabled ? theme.background : theme.surface,\n opacity: isDisabled ? 0.5 : 1,\n };\n\n const inputId = accessibilityLabel ?? label;\n\n return (\n <View style={[{ gap: 4 }, wrapperStyle]}>\n {/* Label + Subtitle */}\n {label && (\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\n <Text style={{ fontSize: 14, fontWeight: \"500\", color: theme.text }}>\n {label}\n </Text>\n {subtitle && (\n <Text\n style={{\n fontSize: 14,\n color: subtitle.trim() === \"*\" ? theme.danger : theme.textMuted,\n }}\n >\n {subtitle}\n </Text>\n )}\n </View>\n )}\n\n {/* Textarea container */}\n <View style={[containerStyle, style]}>\n <RNTextInput\n ref={ref}\n editable={editable}\n multiline\n textAlignVertical=\"top\"\n accessibilityLabel={inputId}\n accessibilityState={{ disabled: isDisabled }}\n aria-invalid={status === \"error\"}\n onFocus={(e) => {\n setFocused(true);\n rest.onFocus?.(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n rest.onBlur?.(e);\n }}\n style={{\n flex: 1,\n fontSize: fontSizeMap[size],\n color: theme.text,\n }}\n placeholderTextColor={theme.textMuted}\n {...rest}\n />\n </View>\n\n {/* Helper text */}\n {helperText && (\n <Text\n style={{\n fontSize: 12,\n color: hasError ? theme.danger : theme.textMuted,\n }}\n >\n {helperText}\n </Text>\n )}\n </View>\n );\n});\n","import React, { forwardRef, useCallback, useState } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CheckboxProps = Omit<PressableProps, \"style\" | \"onPress\"> & {\r\n /** Checkbox size */\r\n size?: CheckboxSize;\r\n /** Label text displayed next to the checkbox */\r\n label?: string;\r\n /** Controlled checked state */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Indeterminate state (partially checked) */\r\n indeterminate?: boolean;\r\n /** Callback fired when the value changes */\r\n onChange?: (checked: boolean) => void;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst CheckIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {/* Simple checkmark drawn with two Views rotated — no SVG dep needed */}\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n width: size * 0.55,\r\n height: size * 0.3,\r\n borderLeftWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [{ rotate: \"-45deg\" }, { translateY: -size * 0.05 }],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nconst MinusIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size * 0.7,\r\n height: 2,\r\n backgroundColor: color,\r\n }}\r\n />\r\n);\r\n\r\nexport const Checkbox = forwardRef<View, CheckboxProps>(function Checkbox(\r\n {\r\n size = \"md\",\r\n label,\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n indeterminate = false,\r\n disabled,\r\n onChange,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isControlled = controlledChecked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n const isActive = isChecked || indeterminate;\r\n\r\n const handlePress = useCallback(() => {\r\n if (disabled) return;\r\n const next = !isChecked;\r\n if (!isControlled) setInternalChecked(next);\r\n onChange?.(next);\r\n }, [disabled, isChecked, isControlled, onChange]);\r\n\r\n const boxSizeMap: Record<CheckboxSize, number> = {\r\n sm: 16,\r\n md: 20,\r\n lg: 24,\r\n };\r\n\r\n const iconSizeMap: Record<CheckboxSize, number> = {\r\n sm: 10,\r\n md: 12,\r\n lg: 14,\r\n };\r\n\r\n const fontSizeMap: Record<CheckboxSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const boxSize = boxSizeMap[size];\r\n const iconSize = iconSizeMap[size];\r\n\r\n const boxStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius: theme.radiusXxs,\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: isActive ? theme.primary : theme.border,\r\n backgroundColor: isActive ? theme.primary : theme.surface,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n };\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n onPress={handlePress}\r\n disabled={disabled}\r\n accessibilityRole=\"checkbox\"\r\n accessibilityState={{ checked: indeterminate ? \"mixed\" : isChecked, disabled: !!disabled }}\r\n accessibilityLabel={accessibilityLabel ?? label}\r\n style={[\r\n { flexDirection: \"row\", alignItems: \"center\", gap: 8, opacity: disabled ? 0.5 : 1 },\r\n style,\r\n ]}\r\n {...rest}\r\n >\r\n <View style={boxStyle}>\r\n {indeterminate ? (\r\n <MinusIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : isChecked ? (\r\n <CheckIcon size={iconSize} color={theme.surface ?? \"#ffffff\"} />\r\n ) : null}\r\n </View>\r\n\r\n {label && (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef, useState, useMemo } from \"react\";\r\nimport { Image, Text, View, type StyleProp, type ViewStyle, type ViewProps } from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type AvatarVariant = \"circle\" | \"square\";\r\n\r\n// Paleta de cores para avatares\r\nconst AVATAR_COLORS = [\r\n { bg: \"#FBF1E6\", text: \"#D6822D\" }, // Laranja\r\n { bg: \"#EDF3FA\", text: \"#538CC6\" }, // Azul\r\n { bg: \"#F3E5F5\", text: \"#9C27B0\" }, // Roxo\r\n { bg: \"#E8F5E9\", text: \"#4CAF50\" }, // Verde\r\n { bg: \"#FFF3E0\", text: \"#FF9800\" }, // Amarelo\r\n { bg: \"#FFEBEE\", text: \"#F44336\" }, // Vermelho\r\n { bg: \"#E3F2FD\", text: \"#2196F3\" }, // Azul claro\r\n { bg: \"#F3E5F5\", text: \"#673AB7\" }, // Violeta\r\n { bg: \"#E0F2F1\", text: \"#009688\" }, // Teal\r\n { bg: \"#FBE9E7\", text: \"#FF5722\" }, // Deep Orange\r\n];\r\n\r\n/**\r\n * Gera cores de avatar baseadas em uma string (nome)\r\n * Usa hash simples para garantir consistência\r\n */\r\nfunction getAvatarColors(name: string): { bg: string; text: string } {\r\n const hash = name.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\r\n const index = hash % AVATAR_COLORS.length;\r\n return AVATAR_COLORS[index];\r\n}\r\n\r\nexport type AvatarProps = Omit<ViewProps, \"style\"> & {\r\n /** Image source URL */\r\n src?: string;\r\n /** Alt text (used as accessibility label and initials fallback) */\r\n alt?: string;\r\n /** Fallback initials shown when image is unavailable */\r\n initials?: string;\r\n /** Avatar size */\r\n size?: AvatarSize;\r\n /** Shape variant */\r\n variant?: AvatarVariant;\r\n /** Generate background and text color automatically based on name/alt */\r\n colorFromName?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const Avatar = forwardRef<View, AvatarProps>(function Avatar(\r\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", colorFromName = false, style, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const [imgError, setImgError] = useState(false);\r\n const showImage = !!src && !imgError;\r\n\r\n // Gera cores baseadas no nome se colorFromName estiver ativo\r\n const avatarColors = useMemo(() => {\r\n if (!colorFromName) return null;\r\n const name = initials || alt || \"\";\r\n return name ? getAvatarColors(name) : null;\r\n }, [colorFromName, initials, alt]);\r\n\r\n const fallbackLabel = initials\r\n ? initials.slice(0, 2).toUpperCase()\r\n : alt\r\n ? alt\r\n .split(\" \")\r\n .slice(0, 2)\r\n .map((w) => w[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n : \"?\";\r\n\r\n const sizePxMap: Record<AvatarSize, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n xl: 64,\r\n };\r\n\r\n const fontSizeMap: Record<AvatarSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 18,\r\n xl: 20,\r\n };\r\n\r\n const boxSize = sizePxMap[size];\r\n const borderRadius = variant === \"circle\" ? boxSize / 2 : theme.radiusSm;\r\n\r\n const containerStyle: ViewStyle = {\r\n width: boxSize,\r\n height: boxSize,\r\n borderRadius,\r\n backgroundColor: avatarColors?.bg ?? theme.primary,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n };\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"image\"\r\n accessibilityLabel={alt || initials || fallbackLabel}\r\n style={[containerStyle, style]}\r\n {...rest}\r\n >\r\n {showImage ? (\r\n <Image\r\n source={{ uri: src }}\r\n style={{ width: boxSize, height: boxSize, borderRadius }}\r\n onError={() => setImgError(true)}\r\n accessibilityLabel={alt}\r\n />\r\n ) : (\r\n <Text\r\n style={{\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n color: avatarColors?.text ?? theme.surface,\r\n }}\r\n accessibilityElementsHidden\r\n >\r\n {fallbackLabel}\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n ActivityIndicator as RNActivityIndicator,\r\n View,\r\n type StyleProp,\r\n type ViewStyle,\r\n type ViewProps,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type ActivityIndicatorSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ActivityIndicatorColor = \"primary\" | \"surface\" | \"custom\";\r\n\r\nexport type ActivityIndicatorProps = Omit<ViewProps, \"style\"> & {\r\n /** Spinner size */\r\n size?: ActivityIndicatorSize;\r\n /** Color preset — use \"custom\" to provide a raw color via `color` prop */\r\n colorVariant?: ActivityIndicatorColor;\r\n /** Raw color value (used when colorVariant is \"custom\") */\r\n color?: string;\r\n /** Whether the indicator is visible */\r\n animating?: boolean;\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst sizeMap: Record<ActivityIndicatorSize, number | \"small\" | \"large\"> = {\r\n sm: \"small\",\r\n md: \"large\",\r\n lg: 48,\r\n};\r\n\r\nexport const ActivityIndicator = forwardRef<View, ActivityIndicatorProps>(\r\n function ActivityIndicator(\r\n {\r\n size = \"md\",\r\n colorVariant = \"primary\",\r\n color,\r\n animating = true,\r\n style,\r\n accessibilityLabel = \"Carregando\",\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n const theme = useRehagroTheme();\r\n\r\n const resolvedColor =\r\n colorVariant === \"custom\" && color\r\n ? color\r\n : colorVariant === \"surface\"\r\n ? theme.surface\r\n : theme.primary;\r\n\r\n const spinnerSize = sizeMap[size];\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessible\r\n accessibilityRole=\"progressbar\"\r\n accessibilityLabel={accessibilityLabel}\r\n accessibilityState={{ busy: animating }}\r\n style={style}\r\n {...rest}\r\n >\r\n <RNActivityIndicator\r\n animating={animating}\r\n size={spinnerSize as \"small\" | \"large\"}\r\n color={resolvedColor}\r\n />\r\n </View>\r\n );\r\n },\r\n);\r\n","import { forwardRef } from \"react\";\r\nimport {\r\n Text as RNText,\r\n type TextProps as RNTextProps,\r\n type StyleProp,\r\n type TextStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | \"xxl2\";\r\n\r\nexport type TextColor = \"default\" | \"muted\" | \"primary\" | \"danger\" | \"success\" | \"warning\";\r\n\r\nexport type TextProps = Omit<RNTextProps, \"style\"> & {\r\n /** Font size scale */\r\n size?: TextSize;\r\n /** Color preset */\r\n color?: TextColor;\r\n /** Bold weight */\r\n bold?: boolean;\r\n /** Custom style */\r\n style?: StyleProp<TextStyle>;\r\n};\r\n\r\n\r\nexport const Text = forwardRef<RNText, TextProps>(function Text(\r\n { size = \"sm\", color = \"default\", bold = false, style, children, ...rest },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const colorMap: Record<TextColor, string> = {\r\n default: theme.text ?? \"#111827\",\r\n muted: theme.textMuted ?? \"#6b7280\",\r\n primary: theme.primary ?? \"#16a34a\",\r\n danger: theme.danger ?? \"#dc2626\",\r\n success: theme.success ?? \"#16a34a\",\r\n warning: theme.warning ?? \"#d97706\",\r\n };\r\n\r\n const isDisplaySize = size === \"lg\" || size === \"xl\" || size === \"xxl\" || size === \"xxl2\";\r\n const fontFamily = isDisplaySize ? theme.fontFamilyDisplay : theme.fontFamilyBody;\r\n\r\n const fontSizeMap: Record<TextSize, number> = {\r\n xs: theme.fontSizeXs ?? 12,\r\n sm: theme.fontSizeSm ?? 14,\r\n md: theme.fontSizeMd ?? 16,\r\n lg: theme.fontSizeLg ?? 18,\r\n xl: theme.fontSizeXl ?? 20,\r\n xxl: theme.fontSizeXxl ?? 24,\r\n xxl2: theme.fontSizeXxl2 ?? 32,\r\n };\r\n\r\n const lineHeightMap: Record<TextSize, number> = {\r\n xs: theme.lineHeightXs ?? 16,\r\n sm: theme.lineHeightSm ?? 20,\r\n md: theme.lineHeightMd ?? 24,\r\n lg: theme.lineHeightLg ?? 26,\r\n xl: theme.lineHeightXl ?? 28,\r\n xxl: theme.lineHeightXxl ?? 32,\r\n xxl2: theme.lineHeightXxl2 ?? 40,\r\n };\r\n\r\n const resolvedStyle: TextStyle = {\r\n fontSize: fontSizeMap[size],\r\n lineHeight: lineHeightMap[size],\r\n color: colorMap[color],\r\n ...(fontFamily ? { fontFamily } : {}),\r\n ...(bold && !fontFamily ? { fontWeight: \"700\" } : {}),\r\n };\r\n\r\n return (\r\n <RNText ref={ref} style={[resolvedStyle, style]} {...rest}>\r\n {children}\r\n </RNText>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type TextStyle,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type TagColor = PresetColor | (string & {});\r\nexport type TagSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TagProps = Omit<PressableProps, \"style\"> & {\r\n /** Tag color — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\") */\r\n color?: TagColor;\r\n /** Tag size */\r\n size?: TagSize;\r\n /** Active (selected) state */\r\n active?: boolean;\r\n /** Disabled state */\r\n disabled?: boolean;\r\n /** Tag label text */\r\n title: string;\r\n /** Optional icon rendered on the left side */\r\n leftIcon?: React.ReactNode;\r\n /** Optional icon rendered on the right side */\r\n rightIcon?: React.ReactNode;\r\n /** Custom style for the outer container */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\n/** Appends a two-digit hex alpha to a 6-digit hex color string. */\r\nfunction hexAlpha(hex: string, alpha: string): string {\r\n return `${hex}${alpha}`;\r\n}\r\n\r\nexport const Tag = forwardRef<View, TagProps>(function Tag(\r\n {\r\n color = \"primary\",\r\n size = \"md\",\r\n active = false,\r\n disabled = false,\r\n title,\r\n leftIcon,\r\n rightIcon,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const clickable = !!rest.onPress && !disabled;\r\n\r\n const presetTokens: Record<PresetColor, { main: string; hover: string }> = {\r\n primary: { main: theme.primary ?? \"#16a34a\", hover: theme.primaryHover ?? \"#15803d\" },\r\n secondary: { main: theme.secondary ?? \"#6b7280\", hover: theme.secondaryHover ?? \"#4b5563\" },\r\n danger: { main: theme.danger ?? \"#dc2626\", hover: theme.dangerHover ?? \"#b91c1c\" },\r\n warning: { main: theme.warning ?? \"#d97706\", hover: theme.warning ?? \"#d97706\" },\r\n success: { main: theme.success ?? \"#16a34a\", hover: theme.success ?? \"#16a34a\" },\r\n info: { main: theme.info ?? \"#0284c7\", hover: theme.infoHover ?? \"#0369a1\" },\r\n neutral: { main: theme.textMuted ?? \"#6b7280\", hover: theme.text ?? \"#374151\" },\r\n };\r\n\r\n const preset = isPresetColor(color);\r\n const mainColor = preset ? presetTokens[color as PresetColor].main : color;\r\n const hoverColor = preset ? presetTokens[color as PresetColor].hover : color;\r\n\r\n const sizeStyleMap: Record<TagSize, ViewStyle> = {\r\n sm: { paddingHorizontal: 8, paddingVertical: 2, gap: 4 },\r\n md: { paddingHorizontal: 10, paddingVertical: 4, gap: 6 },\r\n lg: { paddingHorizontal: 12, paddingVertical: 6, gap: 6 },\r\n };\r\n\r\n const fontSizeMap: Record<TagSize, number> = {\r\n sm: 11,\r\n md: 12,\r\n lg: 13,\r\n };\r\n\r\n const baseStyle: ViewStyle = {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n alignSelf: \"flex-start\",\r\n borderRadius: 9999,\r\n borderWidth: 1,\r\n opacity: disabled ? 0.5 : 1,\r\n ...sizeStyleMap[size],\r\n };\r\n\r\n function containerStyle(pressed: boolean): ViewStyle {\r\n const resolvedColor = pressed && clickable ? hoverColor : mainColor;\r\n\r\n if (active) {\r\n return {\r\n backgroundColor: resolvedColor,\r\n borderColor: resolvedColor,\r\n };\r\n }\r\n\r\n // inactive\r\n const bg = pressed && clickable\r\n ? hexAlpha(mainColor, \"33\") // ~20% on press\r\n : hexAlpha(mainColor, \"1a\"); // ~10% resting\r\n const border = hexAlpha(mainColor, \"4d\"); // ~30%\r\n\r\n return { backgroundColor: bg, borderColor: border };\r\n }\r\n\r\n function resolvedTextColor(pressed: boolean): string {\r\n if (active) return theme.surface ?? \"#ffffff\";\r\n return pressed && clickable ? hoverColor : mainColor;\r\n }\r\n\r\n const textStyle = (pressed: boolean): TextStyle => ({\r\n color: resolvedTextColor(pressed),\r\n fontSize: fontSizeMap[size],\r\n fontWeight: \"500\",\r\n });\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"text\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={[baseStyle, containerStyle(false), style]}\r\n >\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(false)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled, selected: active }}\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n style={({ pressed }) => [baseStyle, containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {({ pressed }) => (\r\n <>\r\n {leftIcon && <View accessibilityElementsHidden>{leftIcon}</View>}\r\n <Text style={textStyle(pressed)}>{title}</Text>\r\n {rightIcon && <View accessibilityElementsHidden>{rightIcon}</View>}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport {\r\n Pressable,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\r\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CardProps = Omit<PressableProps, \"style\"> & {\r\n /** Visual style variant */\r\n variant?: CardVariant;\r\n /** Border radius */\r\n radius?: CardRadius;\r\n /** Internal padding */\r\n padding?: CardPadding;\r\n /** Makes the card clickable with press effects */\r\n clickable?: boolean;\r\n /** Disabled state (only applies when clickable) */\r\n disabled?: boolean;\r\n /** Children content */\r\n children?: React.ReactNode;\r\n /** Custom style */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nconst radiusMap: Record<CardRadius, number> = {\r\n none: 0,\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nconst paddingMap: Record<CardPadding, number> = {\r\n none: 0,\r\n sm: 12,\r\n md: 16,\r\n lg: 24,\r\n};\r\n\r\nconst CardRoot = forwardRef<View, CardProps>(function Card(\r\n {\r\n variant = \"outlined\",\r\n radius = \"sm\",\r\n padding = \"md\",\r\n clickable = false,\r\n disabled = false,\r\n children,\r\n style,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n const baseStyle: ViewStyle = {\r\n borderRadius: radiusMap[radius],\r\n padding: paddingMap[padding],\r\n opacity: disabled ? 0.5 : 1,\r\n };\r\n\r\n const variantStyles: Record<CardVariant, ViewStyle> = {\r\n elevated: {\r\n backgroundColor: theme.surface,\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 8,\r\n elevation: 4,\r\n },\r\n outlined: {\r\n backgroundColor: theme.surface,\r\n borderWidth: 1,\r\n borderColor: theme.border,\r\n },\r\n filled: {\r\n backgroundColor: theme.background,\r\n },\r\n };\r\n\r\n const containerStyle = (pressed: boolean): ViewStyle[] => {\r\n const styles: ViewStyle[] = [baseStyle, variantStyles[variant]];\r\n\r\n if (clickable && pressed) {\r\n styles.push({\r\n opacity: 0.8,\r\n transform: [{ scale: 0.99 }],\r\n });\r\n }\r\n\r\n return styles;\r\n };\r\n\r\n if (!clickable) {\r\n return (\r\n <View\r\n ref={ref}\r\n style={[baseStyle, variantStyles[variant], style]}\r\n accessibilityRole=\"none\"\r\n >\r\n {children}\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }) => [containerStyle(pressed), style]}\r\n {...rest}\r\n >\r\n {children}\r\n </Pressable>\r\n );\r\n});\r\n\r\nexport type CardHeaderProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardHeader = forwardRef<View, CardHeaderProps>(function CardHeader(\r\n { children, style },\r\n ref,\r\n) {\r\n return (\r\n <View\r\n ref={ref}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 16,\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport type CardContentProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardContent = forwardRef<View, CardContentProps>(function CardContent(\r\n { children, style },\r\n ref,\r\n) {\r\n return (\r\n <View ref={ref} style={[{ marginTop: 8 }, style]}>\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport type CardFooterProps = {\r\n children?: React.ReactNode;\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const CardFooter = forwardRef<View, CardFooterProps>(function CardFooter(\r\n { children, style },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n gap: 8,\r\n marginTop: 16,\r\n paddingTop: 16,\r\n borderTopWidth: 1,\r\n borderTopColor: theme.border,\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n );\r\n});\r\n\r\nexport const Card = Object.assign(CardRoot, {\r\n Header: CardHeader,\r\n Content: CardContent,\r\n Footer: CardFooter,\r\n});\r\n","import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\r\nimport {\r\n FlatList,\r\n Modal,\r\n Pressable,\r\n Text,\r\n View,\r\n type LayoutChangeEvent,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\n\r\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\r\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type SelectStatus = \"default\" | \"error\";\r\n\r\nexport type SelectOption = {\r\n /** Unique value for the option */\r\n value: string;\r\n /** Display label */\r\n label: string;\r\n /** Whether the option is disabled */\r\n disabled?: boolean;\r\n};\r\n\r\ntype SelectBaseProps = {\r\n /** List of available options */\r\n options: SelectOption[];\r\n /** Label text displayed above the select */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Placeholder text when no option is selected */\r\n placeholder?: string;\r\n /** Validation status */\r\n status?: SelectStatus;\r\n /** Select size */\r\n size?: SelectSize;\r\n /** Border radius */\r\n radius?: SelectRadius;\r\n /** Helper/error message displayed below the select */\r\n helperText?: React.ReactNode;\r\n /** Whether the select is disabled */\r\n disabled?: boolean;\r\n /** Custom style for the trigger container */\r\n style?: StyleProp<ViewStyle>;\r\n /** Custom style for the outermost wrapper */\r\n wrapperStyle?: StyleProp<ViewStyle>;\r\n /** Accessibility label */\r\n accessibilityLabel?: string;\r\n};\r\n\r\nexport type SelectSingleProps = SelectBaseProps & {\r\n /** Enables multi-select mode */\r\n multiple?: false;\r\n /** Currently selected value (single mode) */\r\n value?: string;\r\n /** Default selected value (single mode, uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes (single mode) */\r\n onChange?: (value: string) => void;\r\n};\r\n\r\nexport type SelectMultipleProps = SelectBaseProps & {\r\n /** Enables multi-select mode */\r\n multiple: true;\r\n /** Currently selected values (multi mode) */\r\n value?: string[];\r\n /** Default selected values (multi mode, uncontrolled) */\r\n defaultValue?: string[];\r\n /** Called when selection changes (multi mode) */\r\n onChange?: (value: string[]) => void;\r\n};\r\n\r\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\r\n\r\nconst ChevronIcon = ({ size, color, open }: { size: number; color: string; open: boolean }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n width: size * 0.5,\r\n height: size * 0.5,\r\n borderRightWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [\r\n { rotate: open ? \"225deg\" : \"45deg\" },\r\n { translateY: open ? size * 0.1 : -size * 0.1 },\r\n ],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nconst CheckIcon = ({ size, color }: { size: number; color: string }) => (\r\n <View\r\n style={{\r\n width: size,\r\n height: size,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n width: size * 0.55,\r\n height: size * 0.3,\r\n borderLeftWidth: 2,\r\n borderBottomWidth: 2,\r\n borderColor: color,\r\n transform: [{ rotate: \"-45deg\" }, { translateY: -size * 0.05 }],\r\n }}\r\n />\r\n </View>\r\n);\r\n\r\nexport const Select = forwardRef<View, SelectProps>(function Select(props, ref) {\r\n const {\r\n options,\r\n label,\r\n subtitle,\r\n placeholder = \"Selecione\",\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n helperText,\r\n disabled = false,\r\n style,\r\n wrapperStyle,\r\n accessibilityLabel,\r\n multiple = false,\r\n } = props;\r\n\r\n const theme = useRehagroTheme();\r\n\r\n const triggerRef = useRef<View | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [triggerLayout, setTriggerLayout] = useState<{\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n } | null>(null);\r\n\r\n const [internalValue, setInternalValue] = useState<string[]>(() => {\r\n if (props.defaultValue !== undefined) {\r\n return Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue];\r\n }\r\n return [];\r\n });\r\n\r\n const isControlled = props.value !== undefined;\r\n const selectedValues: string[] = isControlled\r\n ? Array.isArray(props.value)\r\n ? props.value\r\n : props.value !== undefined\r\n ? [props.value]\r\n : []\r\n : internalValue;\r\n\r\n const heightMap: Record<SelectSize, number> = {\r\n sm: theme.inputHeightSm ?? 36,\r\n md: theme.inputHeightMd ?? 44,\r\n lg: theme.inputHeightLg ?? 52,\r\n };\r\n\r\n const paddingMap: Record<SelectSize, number> = {\r\n sm: 12,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const fontSizeMap: Record<SelectSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n };\r\n\r\n const optionPaddingMap: Record<SelectSize, number> = {\r\n sm: 8,\r\n md: 10,\r\n lg: 12,\r\n };\r\n\r\n const radiusMap: Record<SelectRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusSm ?? 12,\r\n md: theme.radiusMd ?? 16,\r\n lg: theme.radiusLg ?? 24,\r\n xl: theme.radiusXl ?? 32,\r\n full: 9999,\r\n };\r\n\r\n const dropdownRadiusMap: Record<SelectRadius, number> = {\r\n none: 0,\r\n xxs: theme.radiusXxs ?? 4,\r\n xs: theme.radiusXs ?? 8,\r\n sm: theme.radiusXs ?? 8,\r\n md: theme.radiusXs ?? 8,\r\n lg: theme.radiusXs ?? 8,\r\n xl: theme.radiusXs ?? 8,\r\n full: theme.radiusXs ?? 8,\r\n };\r\n\r\n const hasError = status === \"error\";\r\n const borderColor = hasError ? theme.danger : isOpen ? theme.primary : theme.border;\r\n\r\n const containerStyle: ViewStyle = {\r\n height: heightMap[size],\r\n paddingHorizontal: paddingMap[size],\r\n borderRadius: radiusMap[radius],\r\n borderWidth: theme.borderWidthSm,\r\n borderColor,\r\n backgroundColor: disabled ? theme.background : theme.surface,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 8,\r\n opacity: disabled ? 0.5 : 1,\r\n };\r\n\r\n const displayText = useMemo(() => {\r\n if (selectedValues.length === 0) return null;\r\n\r\n if (!multiple) {\r\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\r\n }\r\n\r\n const selectedLabels = selectedValues\r\n .map((v) => options.find((o) => o.value === v)?.label)\r\n .filter(Boolean) as string[];\r\n\r\n if (selectedLabels.length === 0) return null;\r\n if (selectedLabels.length === 1) return selectedLabels[0];\r\n return `${selectedLabels.length} selecionados`;\r\n }, [selectedValues, options, multiple]);\r\n\r\n const handleSelect = useCallback(\r\n (optionValue: string) => {\r\n if (multiple) {\r\n const next = selectedValues.includes(optionValue)\r\n ? selectedValues.filter((v) => v !== optionValue)\r\n : [...selectedValues, optionValue];\r\n\r\n if (!isControlled) setInternalValue(next);\r\n (props as SelectMultipleProps).onChange?.(next);\r\n } else {\r\n const next = [optionValue];\r\n if (!isControlled) setInternalValue(next);\r\n (props as SelectSingleProps).onChange?.(optionValue);\r\n setIsOpen(false);\r\n }\r\n },\r\n [multiple, selectedValues, isControlled, props],\r\n );\r\n\r\n const openDropdown = useCallback(() => {\r\n if (disabled) return;\r\n triggerRef.current?.measureInWindow((x, y, width, height) => {\r\n setTriggerLayout({ x, y, width, height });\r\n setIsOpen(true);\r\n });\r\n }, [disabled]);\r\n\r\n const closeDropdown = useCallback(() => {\r\n setIsOpen(false);\r\n }, []);\r\n\r\n const handleTriggerLayout = (_e: LayoutChangeEvent) => {\r\n // triggers remeasure on layout change while open\r\n if (isOpen) {\r\n triggerRef.current?.measureInWindow((x, y, width, height) => {\r\n setTriggerLayout({ x, y, width, height });\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <View style={[{ gap: 4 }, wrapperStyle]}>\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <View style={{ flexDirection: \"row\", alignItems: \"baseline\", gap: 4 }}>\r\n <Text\r\n style={{\r\n fontSize: 14,\r\n fontWeight: \"500\",\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n {subtitle && (\r\n <Text\r\n style={{\r\n fontSize: 14,\r\n color: theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {/* Trigger */}\r\n <Pressable\r\n ref={(node) => {\r\n triggerRef.current = node as View | null;\r\n if (typeof ref === \"function\") ref(node as View);\r\n else if (ref) (ref as React.MutableRefObject<View | null>).current = node as View | null;\r\n }}\r\n onPress={openDropdown}\r\n onLayout={handleTriggerLayout}\r\n disabled={disabled}\r\n accessibilityRole=\"combobox\"\r\n accessibilityState={{ disabled, expanded: isOpen }}\r\n accessibilityLabel={accessibilityLabel ?? label}\r\n style={[containerStyle, style]}\r\n >\r\n <Text\r\n numberOfLines={1}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: displayText ? theme.text : theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {displayText ?? placeholder}\r\n </Text>\r\n\r\n <ChevronIcon size={18} color={theme.textMuted ?? \"#6b7280\"} open={isOpen} />\r\n </Pressable>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <Text\r\n style={{\r\n fontSize: 12,\r\n color: hasError ? theme.danger : theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {helperText}\r\n </Text>\r\n )}\r\n\r\n {/* Dropdown modal */}\r\n <Modal\r\n visible={isOpen}\r\n transparent\r\n animationType=\"fade\"\r\n onRequestClose={closeDropdown}\r\n statusBarTranslucent\r\n >\r\n <Pressable style={{ flex: 1, backgroundColor: \"transparent\" }} onPress={closeDropdown}>\r\n {triggerLayout && (\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n top: triggerLayout.y + triggerLayout.height + 36,\r\n left: triggerLayout.x,\r\n width: triggerLayout.width,\r\n maxHeight: 240,\r\n borderRadius: dropdownRadiusMap[radius],\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: theme.border,\r\n backgroundColor: theme.surface,\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 8,\r\n elevation: 4,\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <FlatList\r\n data={options}\r\n keyExtractor={(item) => item.value}\r\n keyboardShouldPersistTaps=\"handled\"\r\n renderItem={({ item }) => {\r\n const isSelected = selectedValues.includes(item.value);\r\n const isDisabled = !!item.disabled;\r\n\r\n return (\r\n <Pressable\r\n onPress={() => {\r\n if (!isDisabled) handleSelect(item.value);\r\n }}\r\n disabled={isDisabled}\r\n accessibilityRole=\"menuitem\"\r\n accessibilityState={{ selected: isSelected, disabled: isDisabled }}\r\n style={({ pressed }) => ({\r\n paddingHorizontal: paddingMap[size],\r\n paddingVertical: optionPaddingMap[size],\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: 8,\r\n backgroundColor: pressed && !isDisabled ? theme.background : \"transparent\",\r\n opacity: isDisabled ? 0.5 : 1,\r\n })}\r\n >\r\n <Text\r\n numberOfLines={1}\r\n style={{\r\n flex: 1,\r\n fontSize: fontSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {item.label}\r\n </Text>\r\n\r\n {multiple ? (\r\n <View\r\n style={{\r\n width: 18,\r\n height: 18,\r\n borderRadius: theme.radiusXxs,\r\n borderWidth: theme.borderWidthSm,\r\n borderColor: isSelected ? theme.primary : theme.border,\r\n backgroundColor: isSelected ? theme.primary : theme.surface,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {isSelected && <CheckIcon size={12} color={theme.surface ?? \"#ffffff\"} />}\r\n </View>\r\n ) : (\r\n isSelected && <CheckIcon size={14} color={theme.primary ?? \"#16a34a\"} />\r\n )}\r\n </Pressable>\r\n );\r\n }}\r\n />\r\n </View>\r\n )}\r\n </Pressable>\r\n </Modal>\r\n </View>\r\n );\r\n});\r\n","import React, { forwardRef, createContext, useCallback, useContext, useState } from \"react\";\r\nimport {\r\n Pressable,\r\n Text,\r\n View,\r\n type PressableProps,\r\n type StyleProp,\r\n type ViewStyle,\r\n} from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { RehagroNativeTheme } from \"../../provider/theme.native\";\r\n\r\nexport type RadioSize = \"sm\" | \"md\" | \"lg\";\r\nexport type RadioOrientation = \"horizontal\" | \"vertical\";\r\nexport type RadioColor = \"primary\" | \"secondary\" | \"danger\" | \"warning\" | \"success\" | \"info\";\r\n\r\ntype RadioBaseProps = Omit<PressableProps, \"style\" | \"onPress\"> & {\r\n /** Radio size */\r\n size?: RadioSize;\r\n /** Label text displayed next to the radio */\r\n label?: React.ReactNode;\r\n /** Description text below the label */\r\n description?: React.ReactNode;\r\n /** Color scheme for checked state — preset name or custom color string */\r\n color?: RadioColor | (string & {});\r\n /** Custom style for the outer wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport type RadioProps = RadioBaseProps & {\r\n /** Controlled checked state */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Callback fired when the value changes */\r\n onChange?: (checked: boolean) => void;\r\n};\r\n\r\nexport type RadioOptionProps = RadioBaseProps & {\r\n /** Unique value for this option */\r\n value: string;\r\n};\r\n\r\nexport type RadioGroupProps = {\r\n children?: React.ReactNode;\r\n /** Currently selected value */\r\n value?: string;\r\n /** Default value (uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes */\r\n onChange?: (value: string) => void;\r\n /** Radio size for all items */\r\n size?: RadioSize;\r\n /** Layout orientation */\r\n orientation?: RadioOrientation;\r\n /** Color scheme for checked state */\r\n color?: RadioColor | (string & {});\r\n /** Whether the entire group is disabled */\r\n disabled?: boolean;\r\n /** Gap between items */\r\n gap?: \"sm\" | \"md\" | \"lg\";\r\n /** Custom style for the group wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\n// ============================================\r\n// CONTEXT\r\n// ============================================\r\n\r\ntype RadioGroupContextType = {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n size?: RadioSize;\r\n color?: RadioColor | (string & {});\r\n disabled?: boolean;\r\n};\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextType | null>(null);\r\nconst useRadioGroup = () => useContext(RadioGroupContext);\r\n\r\n// ============================================\r\n// COLOR RESOLUTION\r\n// ============================================\r\n\r\nconst PRESET_COLORS = new Set<RadioColor>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (color: string): color is RadioColor =>\r\n PRESET_COLORS.has(color as RadioColor);\r\n\r\nconst resolveColor = (color: string, theme: RehagroNativeTheme): string => {\r\n if (isPresetColor(color)) {\r\n return theme[color] ?? \"#16a34a\";\r\n }\r\n return color;\r\n};\r\n\r\n// ============================================\r\n// SIZE MAPS\r\n// ============================================\r\n\r\nconst outerSizeMap: Record<RadioSize, number> = {\r\n sm: 16,\r\n md: 20,\r\n lg: 24,\r\n};\r\n\r\nconst innerSizeMap: Record<RadioSize, number> = {\r\n sm: 8,\r\n md: 10,\r\n lg: 12,\r\n};\r\n\r\nconst labelSizeMap: Record<RadioSize, number> = {\r\n sm: 14,\r\n md: 14,\r\n lg: 16,\r\n};\r\n\r\nconst descriptionSizeMap: Record<RadioSize, number> = {\r\n sm: 12,\r\n md: 12,\r\n lg: 14,\r\n};\r\n\r\nconst gapMap: Record<\"sm\" | \"md\" | \"lg\", number> = {\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n};\r\n\r\n// ============================================\r\n// RADIO COMPONENT\r\n// ============================================\r\n\r\nexport const Radio = forwardRef<View, RadioProps>(function Radio(\r\n {\r\n size = \"md\",\r\n label,\r\n description,\r\n color = \"primary\",\r\n disabled,\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n onChange,\r\n style,\r\n accessibilityLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const isControlled = controlledChecked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n const resolvedColor = resolveColor(color, theme);\r\n\r\n const handlePress = useCallback(() => {\r\n if (disabled) return;\r\n if (!isControlled) setInternalChecked(true);\r\n onChange?.(true);\r\n }, [disabled, isControlled, onChange]);\r\n\r\n const outerSize = outerSizeMap[size];\r\n const innerSize = innerSizeMap[size];\r\n\r\n const outerStyle: ViewStyle = {\r\n width: outerSize,\r\n height: outerSize,\r\n borderRadius: outerSize / 2,\r\n borderWidth: theme.borderWidthSm ?? 1,\r\n borderColor: isChecked ? resolvedColor : (theme.border ?? \"#d1d5db\"),\r\n backgroundColor: theme.surface ?? \"#ffffff\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n };\r\n\r\n const innerStyle: ViewStyle = {\r\n width: innerSize,\r\n height: innerSize,\r\n borderRadius: innerSize / 2,\r\n backgroundColor: resolvedColor,\r\n };\r\n\r\n const accessibilityText = accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\r\n\r\n return (\r\n <Pressable\r\n ref={ref}\r\n onPress={handlePress}\r\n disabled={disabled}\r\n accessibilityRole=\"radio\"\r\n accessibilityState={{ checked: isChecked, disabled: !!disabled }}\r\n accessibilityLabel={accessibilityText}\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n opacity: disabled ? 0.5 : 1,\r\n },\r\n style,\r\n ]}\r\n {...rest}\r\n >\r\n <View style={outerStyle}>{isChecked && <View style={innerStyle} />}</View>\r\n\r\n {(label || description) && (\r\n <View style={{ flex: 1, gap: 2 }}>\r\n {label && (\r\n <Text\r\n style={{\r\n fontSize: labelSizeMap[size],\r\n color: theme.text,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n {description && (\r\n <Text\r\n style={{\r\n fontSize: descriptionSizeMap[size],\r\n color: theme.textMuted,\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n }}\r\n >\r\n {description}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n </Pressable>\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO OPTION (for use inside RadioGroup)\r\n// ============================================\r\n\r\nexport const RadioOption = forwardRef<View, RadioOptionProps>(function RadioOption(\r\n { value, size, color, disabled, ...rest },\r\n ref,\r\n) {\r\n const group = useRadioGroup();\r\n\r\n const mergedSize = size ?? group?.size ?? \"md\";\r\n const mergedColor = color ?? group?.color ?? \"primary\";\r\n const mergedDisabled = disabled ?? group?.disabled ?? false;\r\n const isChecked = group?.value === value;\r\n\r\n const handleChange = () => {\r\n group?.onChange?.(value);\r\n };\r\n\r\n return (\r\n <Radio\r\n ref={ref}\r\n size={mergedSize}\r\n color={mergedColor}\r\n disabled={mergedDisabled}\r\n checked={isChecked}\r\n onChange={handleChange}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO GROUP COMPONENT\r\n// ============================================\r\n\r\nexport const RadioGroup = forwardRef<View, RadioGroupProps>(function RadioGroup(\r\n {\r\n children,\r\n value,\r\n defaultValue,\r\n onChange,\r\n size = \"md\",\r\n orientation = \"vertical\",\r\n color = \"primary\",\r\n disabled = false,\r\n gap = \"md\",\r\n style,\r\n },\r\n ref,\r\n) {\r\n const [internalValue, setInternalValue] = useState<string | undefined>(defaultValue);\r\n const isControlled = value !== undefined;\r\n const currentValue = isControlled ? value : internalValue;\r\n\r\n const handleChange = useCallback(\r\n (newValue: string) => {\r\n if (!isControlled) setInternalValue(newValue);\r\n onChange?.(newValue);\r\n },\r\n [isControlled, onChange],\r\n );\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n value: currentValue,\r\n onChange: handleChange,\r\n size,\r\n color,\r\n disabled,\r\n }}\r\n >\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"radiogroup\"\r\n style={[\r\n {\r\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\r\n flexWrap: orientation === \"horizontal\" ? \"wrap\" : \"nowrap\",\r\n gap: gapMap[gap],\r\n },\r\n style,\r\n ]}\r\n >\r\n {children}\r\n </View>\r\n </RadioGroupContext.Provider>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport { Text, View, type StyleProp, type ViewStyle } from \"react-native\";\r\nimport { useRehagroTheme } from \"../../provider/RehagroNativeContext\";\r\nimport type { RehagroNativeTheme } from \"../../provider/theme.native\";\r\n\r\nexport type ProgressBarVariant = \"inline\" | \"stacked\";\r\nexport type ProgressBarThickness = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type ProgressBarColor =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"danger\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"info\";\r\n\r\nconst THICKNESS_MAP: Record<ProgressBarThickness, number> = {\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nconst PRESET_COLORS = new Set<ProgressBarColor>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (color: string): color is ProgressBarColor =>\r\n PRESET_COLORS.has(color as ProgressBarColor);\r\n\r\nconst resolveColor = (color: string, theme: RehagroNativeTheme): string => {\r\n if (isPresetColor(color)) {\r\n return theme[color] ?? \"#538CC6\";\r\n }\r\n return color;\r\n};\r\n\r\nconst resolveThickness = (thickness: ProgressBarThickness | number): number =>\r\n typeof thickness === \"number\" ? thickness : THICKNESS_MAP[thickness];\r\n\r\nexport type ProgressBarProps = {\r\n /** Progress value from 0 to 100 */\r\n value: number;\r\n /** Label text (only shown in stacked variant) */\r\n label?: string;\r\n /** Layout variant */\r\n variant?: ProgressBarVariant;\r\n /** Bar thickness — preset token or custom value in dp */\r\n thickness?: ProgressBarThickness | number;\r\n /** Whether to show percentage text */\r\n showPercentage?: boolean;\r\n /** Bar color — preset name or custom color string */\r\n color?: ProgressBarColor | (string & {});\r\n /** Custom background color */\r\n bgColor?: string;\r\n /** Custom style for the wrapper */\r\n style?: StyleProp<ViewStyle>;\r\n};\r\n\r\nexport const ProgressBar = forwardRef<View, ProgressBarProps>(function ProgressBar(\r\n {\r\n value,\r\n label,\r\n variant = \"inline\",\r\n thickness = \"sm\",\r\n showPercentage = true,\r\n color = \"primary\",\r\n bgColor,\r\n style,\r\n },\r\n ref,\r\n) {\r\n const theme = useRehagroTheme();\r\n const clampedValue = Math.min(100, Math.max(0, value));\r\n const heightPx = resolveThickness(thickness);\r\n const resolvedBarColor = resolveColor(color, theme);\r\n const resolvedBgColor = bgColor ?? theme.border ?? \"#E5E7EB\";\r\n\r\n const trackStyle: ViewStyle = {\r\n width: \"100%\",\r\n height: heightPx,\r\n borderRadius: 40,\r\n overflow: \"hidden\",\r\n backgroundColor: resolvedBgColor,\r\n };\r\n\r\n const fillStyle: ViewStyle = {\r\n width: `${clampedValue}%`,\r\n height: \"100%\",\r\n borderRadius: 40,\r\n backgroundColor: resolvedBarColor,\r\n };\r\n\r\n const percentageTextStyle = {\r\n fontSize: theme.fontSizeSm ?? 14,\r\n color: theme.textMuted ?? \"#9CA3AF\",\r\n ...(theme.fontFamilyBody ? { fontFamily: theme.fontFamilyBody } : {}),\r\n };\r\n\r\n if (variant === \"stacked\") {\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"progressbar\"\r\n accessibilityValue={{ now: clampedValue, min: 0, max: 100 }}\r\n style={[{ flexDirection: \"column\", alignItems: \"stretch\", gap: 8 }, style]}\r\n >\r\n {(label || showPercentage) && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {label ? (\r\n <Text\r\n style={{\r\n flex: 1,\r\n fontSize: theme.fontSizeMd ?? 16,\r\n fontWeight: \"700\",\r\n color: theme.text ?? \"#374151\",\r\n ...(theme.fontFamilyDisplay ? { fontFamily: theme.fontFamilyDisplay } : {}),\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n ) : (\r\n <View style={{ flex: 1 }} />\r\n )}\r\n {showPercentage && (\r\n <Text style={[percentageTextStyle, { textAlign: \"right\" }]}>{clampedValue}%</Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n <View style={trackStyle}>\r\n <View style={fillStyle} />\r\n </View>\r\n </View>\r\n );\r\n }\r\n\r\n return (\r\n <View\r\n ref={ref}\r\n accessibilityRole=\"progressbar\"\r\n accessibilityValue={{ now: clampedValue, min: 0, max: 100 }}\r\n style={[{ flexDirection: \"row\", alignItems: \"center\", gap: 8 }, style]}\r\n >\r\n <View style={[trackStyle, { flex: 1, width: undefined }]}>\r\n <View style={fillStyle} />\r\n </View>\r\n\r\n {showPercentage && (\r\n <Text style={[percentageTextStyle, { minWidth: 40, textAlign: \"right\" }]}>\r\n {clampedValue}%\r\n </Text>\r\n )}\r\n </View>\r\n );\r\n});\r\n"]}